Files
ThingsBoard/LLM Integration/model.py
2025-05-27 21:01:53 -05:00

10358 lines
379 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# generated by datamodel-codegen:
# filename: thingsboardAPI.json
# timestamp: 2025-05-21T15:27:01+00:00
from __future__ import annotations
from enum import Enum
from typing import Any, Dict, List, Optional, Union
from uuid import UUID
from pydantic import BaseModel, RootModel, Field, confloat, conint, constr
class AcmeCertificateId(BaseModel):
id: UUID = Field(
..., description='string', example='784f394c-42b6-435a-983c-b7beff2784f9'
)
class ActivateUserRequest(BaseModel):
activateToken: Optional[str] = Field(
None, description='The activate token to verify', example='AAB254FF67D..'
)
password: Optional[str] = Field(
None, description='The new password to set', example='secret'
)
class AdminSettingsId(BaseModel):
id: UUID = Field(
..., description='string', example='784f394c-42b6-435a-983c-b7beff2784f9'
)
class Severity(Enum):
CRITICAL = 'CRITICAL'
MAJOR = 'MAJOR'
MINOR = 'MINOR'
WARNING = 'WARNING'
INDETERMINATE = 'INDETERMINATE'
class Status(Enum):
ACTIVE_UNACK = 'ACTIVE_UNACK'
ACTIVE_ACK = 'ACTIVE_ACK'
CLEARED_UNACK = 'CLEARED_UNACK'
CLEARED_ACK = 'CLEARED_ACK'
class AlarmSeverity(Enum):
CRITICAL = 'CRITICAL'
MAJOR = 'MAJOR'
MINOR = 'MINOR'
WARNING = 'WARNING'
INDETERMINATE = 'INDETERMINATE'
class AlarmStatus(Enum):
ANY = 'ANY'
ACTIVE = 'ACTIVE'
CLEARED = 'CLEARED'
ACK = 'ACK'
UNACK = 'UNACK'
class NotifyOnEnum(Enum):
ASSIGNED = 'ASSIGNED'
UNASSIGNED = 'UNASSIGNED'
class Type(Enum):
SYSTEM = 'SYSTEM'
OTHER = 'OTHER'
class AlarmCommentId(BaseModel):
id: UUID = Field(
..., description='string', example='784f394c-42b6-435a-983c-b7beff2784f9'
)
class ValueType(Enum):
STRING = 'STRING'
NUMERIC = 'NUMERIC'
BOOLEAN = 'BOOLEAN'
DATE_TIME = 'DATE_TIME'
class Type2(Enum):
ATTRIBUTE = 'ATTRIBUTE'
TIME_SERIES = 'TIME_SERIES'
ENTITY_FIELD = 'ENTITY_FIELD'
CONSTANT = 'CONSTANT'
class AlarmConditionFilterKey(BaseModel):
type: Optional[Type2] = Field(
None, description='The key type', example='TIME_SERIES'
)
key: Optional[str] = Field(
None, description='String value representing the key', example='temp'
)
class AlarmConditionSpec(BaseModel):
type: str
class StatusListEnum(Enum):
ANY = 'ANY'
ACTIVE = 'ACTIVE'
CLEARED = 'CLEARED'
ACK = 'ACK'
UNACK = 'UNACK'
class SeverityListEnum(Enum):
CRITICAL = 'CRITICAL'
MAJOR = 'MAJOR'
MINOR = 'MINOR'
WARNING = 'WARNING'
INDETERMINATE = 'INDETERMINATE'
class EntityType(Enum):
ALARM = 'ALARM'
class AlarmId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType = Field(..., description='string', example='ALARM')
class NotifyOnEnum1(Enum):
CREATED = 'CREATED'
SEVERITY_CHANGED = 'SEVERITY_CHANGED'
ACKNOWLEDGED = 'ACKNOWLEDGED'
CLEARED = 'CLEARED'
class Type3(Enum):
ANY_TIME = 'ANY_TIME'
SPECIFIC_TIME = 'SPECIFIC_TIME'
CUSTOM = 'CUSTOM'
class OperationsByResourceEnum(Enum):
ALL = 'ALL'
CREATE = 'CREATE'
READ = 'READ'
WRITE = 'WRITE'
DELETE = 'DELETE'
RPC_CALL = 'RPC_CALL'
READ_CREDENTIALS = 'READ_CREDENTIALS'
WRITE_CREDENTIALS = 'WRITE_CREDENTIALS'
READ_ATTRIBUTES = 'READ_ATTRIBUTES'
WRITE_ATTRIBUTES = 'WRITE_ATTRIBUTES'
READ_TELEMETRY = 'READ_TELEMETRY'
WRITE_TELEMETRY = 'WRITE_TELEMETRY'
ADD_TO_GROUP = 'ADD_TO_GROUP'
REMOVE_FROM_GROUP = 'REMOVE_FROM_GROUP'
CHANGE_OWNER = 'CHANGE_OWNER'
IMPERSONATE = 'IMPERSONATE'
CLAIM_DEVICES = 'CLAIM_DEVICES'
SHARE_GROUP = 'SHARE_GROUP'
ASSIGN_TO_TENANT = 'ASSIGN_TO_TENANT'
READ_CALCULATED_FIELD = 'READ_CALCULATED_FIELD'
WRITE_CALCULATED_FIELD = 'WRITE_CALCULATED_FIELD'
class AllowedForGroupRoleOperation(Enum):
ALL = 'ALL'
CREATE = 'CREATE'
READ = 'READ'
WRITE = 'WRITE'
DELETE = 'DELETE'
RPC_CALL = 'RPC_CALL'
READ_CREDENTIALS = 'READ_CREDENTIALS'
WRITE_CREDENTIALS = 'WRITE_CREDENTIALS'
READ_ATTRIBUTES = 'READ_ATTRIBUTES'
WRITE_ATTRIBUTES = 'WRITE_ATTRIBUTES'
READ_TELEMETRY = 'READ_TELEMETRY'
WRITE_TELEMETRY = 'WRITE_TELEMETRY'
ADD_TO_GROUP = 'ADD_TO_GROUP'
REMOVE_FROM_GROUP = 'REMOVE_FROM_GROUP'
CHANGE_OWNER = 'CHANGE_OWNER'
IMPERSONATE = 'IMPERSONATE'
CLAIM_DEVICES = 'CLAIM_DEVICES'
SHARE_GROUP = 'SHARE_GROUP'
ASSIGN_TO_TENANT = 'ASSIGN_TO_TENANT'
READ_CALCULATED_FIELD = 'READ_CALCULATED_FIELD'
WRITE_CALCULATED_FIELD = 'WRITE_CALCULATED_FIELD'
class AllowedForGroupOwnerOnlyOperation(Enum):
ALL = 'ALL'
CREATE = 'CREATE'
READ = 'READ'
WRITE = 'WRITE'
DELETE = 'DELETE'
RPC_CALL = 'RPC_CALL'
READ_CREDENTIALS = 'READ_CREDENTIALS'
WRITE_CREDENTIALS = 'WRITE_CREDENTIALS'
READ_ATTRIBUTES = 'READ_ATTRIBUTES'
WRITE_ATTRIBUTES = 'WRITE_ATTRIBUTES'
READ_TELEMETRY = 'READ_TELEMETRY'
WRITE_TELEMETRY = 'WRITE_TELEMETRY'
ADD_TO_GROUP = 'ADD_TO_GROUP'
REMOVE_FROM_GROUP = 'REMOVE_FROM_GROUP'
CHANGE_OWNER = 'CHANGE_OWNER'
IMPERSONATE = 'IMPERSONATE'
CLAIM_DEVICES = 'CLAIM_DEVICES'
SHARE_GROUP = 'SHARE_GROUP'
ASSIGN_TO_TENANT = 'ASSIGN_TO_TENANT'
READ_CALCULATED_FIELD = 'READ_CALCULATED_FIELD'
WRITE_CALCULATED_FIELD = 'WRITE_CALCULATED_FIELD'
class AllowedForGroupOwnerOnlyGroupOperation(Enum):
ALL = 'ALL'
CREATE = 'CREATE'
READ = 'READ'
WRITE = 'WRITE'
DELETE = 'DELETE'
RPC_CALL = 'RPC_CALL'
READ_CREDENTIALS = 'READ_CREDENTIALS'
WRITE_CREDENTIALS = 'WRITE_CREDENTIALS'
READ_ATTRIBUTES = 'READ_ATTRIBUTES'
WRITE_ATTRIBUTES = 'WRITE_ATTRIBUTES'
READ_TELEMETRY = 'READ_TELEMETRY'
WRITE_TELEMETRY = 'WRITE_TELEMETRY'
ADD_TO_GROUP = 'ADD_TO_GROUP'
REMOVE_FROM_GROUP = 'REMOVE_FROM_GROUP'
CHANGE_OWNER = 'CHANGE_OWNER'
IMPERSONATE = 'IMPERSONATE'
CLAIM_DEVICES = 'CLAIM_DEVICES'
SHARE_GROUP = 'SHARE_GROUP'
ASSIGN_TO_TENANT = 'ASSIGN_TO_TENANT'
READ_CALCULATED_FIELD = 'READ_CALCULATED_FIELD'
WRITE_CALCULATED_FIELD = 'WRITE_CALCULATED_FIELD'
class AllowedResource(Enum):
ALL = 'ALL'
PROFILE = 'PROFILE'
ADMIN_SETTINGS = 'ADMIN_SETTINGS'
ALARM = 'ALARM'
DEVICE = 'DEVICE'
ASSET = 'ASSET'
CUSTOMER = 'CUSTOMER'
DASHBOARD = 'DASHBOARD'
ENTITY_VIEW = 'ENTITY_VIEW'
EDGE = 'EDGE'
TENANT = 'TENANT'
RULE_CHAIN = 'RULE_CHAIN'
USER = 'USER'
WIDGETS_BUNDLE = 'WIDGETS_BUNDLE'
WIDGET_TYPE = 'WIDGET_TYPE'
OAUTH2_CLIENT = 'OAUTH2_CLIENT'
DOMAIN = 'DOMAIN'
MOBILE_APP = 'MOBILE_APP'
MOBILE_APP_BUNDLE = 'MOBILE_APP_BUNDLE'
OAUTH2_CONFIGURATION_TEMPLATE = 'OAUTH2_CONFIGURATION_TEMPLATE'
TENANT_PROFILE = 'TENANT_PROFILE'
DEVICE_PROFILE = 'DEVICE_PROFILE'
ASSET_PROFILE = 'ASSET_PROFILE'
CONVERTER = 'CONVERTER'
INTEGRATION = 'INTEGRATION'
SCHEDULER_EVENT = 'SCHEDULER_EVENT'
BLOB_ENTITY = 'BLOB_ENTITY'
CUSTOMER_GROUP = 'CUSTOMER_GROUP'
DEVICE_GROUP = 'DEVICE_GROUP'
ASSET_GROUP = 'ASSET_GROUP'
USER_GROUP = 'USER_GROUP'
ENTITY_VIEW_GROUP = 'ENTITY_VIEW_GROUP'
EDGE_GROUP = 'EDGE_GROUP'
DASHBOARD_GROUP = 'DASHBOARD_GROUP'
ROLE = 'ROLE'
GROUP_PERMISSION = 'GROUP_PERMISSION'
WHITE_LABELING = 'WHITE_LABELING'
AUDIT_LOG = 'AUDIT_LOG'
API_USAGE_STATE = 'API_USAGE_STATE'
BILLING = 'BILLING'
TB_RESOURCE = 'TB_RESOURCE'
OTA_PACKAGE = 'OTA_PACKAGE'
QUEUE = 'QUEUE'
QUEUE_STATS = 'QUEUE_STATS'
VERSION_CONTROL = 'VERSION_CONTROL'
NOTIFICATION = 'NOTIFICATION'
MOBILE_APP_SETTINGS = 'MOBILE_APP_SETTINGS'
CUSTOM_MENU = 'CUSTOM_MENU'
class ApiFeature(Enum):
TRANSPORT = 'TRANSPORT'
DB = 'DB'
RE = 'RE'
JS = 'JS'
TBEL = 'TBEL'
EMAIL = 'EMAIL'
SMS = 'SMS'
ALARM = 'ALARM'
class NotifyOnEnum2(Enum):
ENABLED = 'ENABLED'
WARNING = 'WARNING'
DISABLED = 'DISABLED'
class ArrayNode(RootModel):
root: Any
class EntityType1(Enum):
ASSET = 'ASSET'
class AssetId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType1 = Field(..., description='string', example='ASSET')
class EntityType2(Enum):
ASSET_PROFILE = 'ASSET_PROFILE'
class AssetProfileId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType2 = Field(..., description='string', example='ASSET_PROFILE')
class Direction(Enum):
FROM = 'FROM'
TO = 'TO'
class AttributeExportData(BaseModel):
key: Optional[str] = None
lastUpdateTs: Optional[int] = None
booleanValue: Optional[bool] = None
strValue: Optional[str] = None
longValue: Optional[int] = None
doubleValue: Optional[float] = None
jsonValue: Optional[str] = None
class AttributesEntityView(BaseModel):
cs: List[str] = Field(
...,
description='List of client-side attribute keys to expose',
example=['currentConfiguration'],
)
ss: List[str] = Field(
...,
description='List of server-side attribute keys to expose',
example=['model'],
)
sh: List[str] = Field(
...,
description='List of shared attribute keys to expose',
example=['targetConfiguration'],
)
class ActionType(Enum):
ADDED = 'ADDED'
DELETED = 'DELETED'
UPDATED = 'UPDATED'
ATTRIBUTES_UPDATED = 'ATTRIBUTES_UPDATED'
ATTRIBUTES_DELETED = 'ATTRIBUTES_DELETED'
TIMESERIES_UPDATED = 'TIMESERIES_UPDATED'
TIMESERIES_DELETED = 'TIMESERIES_DELETED'
RPC_CALL = 'RPC_CALL'
CREDENTIALS_UPDATED = 'CREDENTIALS_UPDATED'
ASSIGNED_TO_CUSTOMER = 'ASSIGNED_TO_CUSTOMER'
UNASSIGNED_FROM_CUSTOMER = 'UNASSIGNED_FROM_CUSTOMER'
CHANGE_OWNER = 'CHANGE_OWNER'
ACTIVATED = 'ACTIVATED'
SUSPENDED = 'SUSPENDED'
CREDENTIALS_READ = 'CREDENTIALS_READ'
ATTRIBUTES_READ = 'ATTRIBUTES_READ'
RELATION_ADD_OR_UPDATE = 'RELATION_ADD_OR_UPDATE'
RELATION_DELETED = 'RELATION_DELETED'
RELATIONS_DELETED = 'RELATIONS_DELETED'
ALARM_ACK = 'ALARM_ACK'
ALARM_CLEAR = 'ALARM_CLEAR'
ALARM_DELETE = 'ALARM_DELETE'
ALARM_ASSIGNED = 'ALARM_ASSIGNED'
ALARM_UNASSIGNED = 'ALARM_UNASSIGNED'
ADDED_TO_ENTITY_GROUP = 'ADDED_TO_ENTITY_GROUP'
REMOVED_FROM_ENTITY_GROUP = 'REMOVED_FROM_ENTITY_GROUP'
REST_API_RULE_ENGINE_CALL = 'REST_API_RULE_ENGINE_CALL'
MADE_PUBLIC = 'MADE_PUBLIC'
MADE_PRIVATE = 'MADE_PRIVATE'
LOGIN = 'LOGIN'
LOGOUT = 'LOGOUT'
LOCKOUT = 'LOCKOUT'
ASSIGNED_FROM_TENANT = 'ASSIGNED_FROM_TENANT'
ASSIGNED_TO_TENANT = 'ASSIGNED_TO_TENANT'
PROVISION_SUCCESS = 'PROVISION_SUCCESS'
PROVISION_FAILURE = 'PROVISION_FAILURE'
ASSIGNED_TO_EDGE = 'ASSIGNED_TO_EDGE'
UNASSIGNED_FROM_EDGE = 'UNASSIGNED_FROM_EDGE'
ADDED_COMMENT = 'ADDED_COMMENT'
UPDATED_COMMENT = 'UPDATED_COMMENT'
DELETED_COMMENT = 'DELETED_COMMENT'
SMS_SENT = 'SMS_SENT'
SUBSCRIPTION_CREATED = 'SUBSCRIPTION_CREATED'
SUBSCRIPTION_UPDATED = 'SUBSCRIPTION_UPDATED'
SUBSCRIPTION_CANCELED = 'SUBSCRIPTION_CANCELED'
SUBSCRIPTION_PLAN_UPDATED = 'SUBSCRIPTION_PLAN_UPDATED'
SUBSCRIPTION_COUPON_APPLIED = 'SUBSCRIPTION_COUPON_APPLIED'
class ActionStatus(Enum):
SUCCESS = 'SUCCESS'
FAILURE = 'FAILURE'
class AuditLogId(BaseModel):
id: UUID = Field(
..., description='string', example='784f394c-42b6-435a-983c-b7beff2784f9'
)
class AutoVersionCreateConfig(BaseModel):
saveRelations: Optional[bool] = None
saveAttributes: Optional[bool] = None
saveCredentials: Optional[bool] = None
saveCalculatedFields: Optional[bool] = None
savePermissions: Optional[bool] = None
saveGroupEntities: Optional[bool] = None
branch: Optional[str] = None
class EntityType3(Enum):
BLOB_ENTITY = 'BLOB_ENTITY'
class BlobEntityId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType3 = Field(..., description='string', example='BLOB_ENTITY')
class ContentType(Enum):
application_pdf = 'application/pdf'
image_jpeg = 'image/jpeg'
image_png = 'image/png'
class Operation(Enum):
EQUAL = 'EQUAL'
NOT_EQUAL = 'NOT_EQUAL'
class BranchInfo(BaseModel):
name: Optional[str] = None
default: Optional[bool] = None
class Created(BaseModel):
opaque: Optional[int] = None
acquire: Optional[int] = None
release: Optional[int] = None
andIncrement: Optional[int] = None
andDecrement: Optional[int] = None
plain: Optional[int] = None
class Updated(BaseModel):
opaque: Optional[int] = None
acquire: Optional[int] = None
release: Optional[int] = None
andIncrement: Optional[int] = None
andDecrement: Optional[int] = None
plain: Optional[int] = None
class Errors(BaseModel):
opaque: Optional[int] = None
acquire: Optional[int] = None
release: Optional[int] = None
andIncrement: Optional[int] = None
andDecrement: Optional[int] = None
plain: Optional[int] = None
class BulkImportResultAsset(BaseModel):
created: Optional[Created] = None
updated: Optional[Updated] = None
errors: Optional[Errors] = None
errorsList: Optional[List[str]] = None
class BulkImportResultDevice(BaseModel):
created: Optional[Created] = None
updated: Optional[Updated] = None
errors: Optional[Errors] = None
errorsList: Optional[List[str]] = None
class BulkImportResultEdge(BaseModel):
created: Optional[Created] = None
updated: Optional[Updated] = None
errors: Optional[Errors] = None
errorsList: Optional[List[str]] = None
class LinkType(Enum):
LINK = 'LINK'
DASHBOARD = 'DASHBOARD'
class Button(BaseModel):
enabled: Optional[bool] = None
text: Optional[str] = None
linkType: Optional[LinkType] = None
link: Optional[str] = None
dashboardId: Optional[UUID] = None
dashboardState: Optional[str] = None
setEntityIdInState: Optional[bool] = None
class Type4(Enum):
SIMPLE = 'SIMPLE'
SCRIPT = 'SCRIPT'
class EntityType4(Enum):
DEVICE = 'DEVICE'
class EntityType5(Enum):
CALCULATED_FIELD = 'CALCULATED_FIELD'
class CalculatedFieldId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType5 = Field(
..., description='string', example='CALCULATED_FIELD'
)
class CaptchaClientParams(BaseModel):
captchaSiteKey: Optional[str] = None
captchaVersion: Optional[str] = None
captchaAction: Optional[str] = None
class CaptchaParams(BaseModel):
version: Optional[str] = None
class Status3(Enum):
PENDING_VALIDATION = 'PENDING_VALIDATION'
ISSUED = 'ISSUED'
INACTIVE = 'INACTIVE'
EXPIRED = 'EXPIRED'
VALIDATION_TIMED_OUT = 'VALIDATION_TIMED_OUT'
REVOKED = 'REVOKED'
FAILED = 'FAILED'
UNKNOWN = 'UNKNOWN'
class CertificateInfo(BaseModel):
status: Optional[Status3] = None
domainName: Optional[str] = None
serialNumber: Optional[str] = None
notBefore: Optional[int] = None
notAfter: Optional[int] = None
requestedAt: Optional[int] = None
issuedAt: Optional[int] = None
acmeCertificateId: Optional[AcmeCertificateId] = None
class ChangePasswordRequest(BaseModel):
currentPassword: Optional[str] = Field(
None, description='The old password', example='OldPassword'
)
newPassword: Optional[str] = Field(
None, description='The new password', example='NewPassword'
)
class ClaimRequest(BaseModel):
secretKey: Optional[str] = None
class ClearRule(BaseModel):
alarmStatuses: Optional[List[AlarmStatus]] = Field(None, Set=True)
class PowerMode(Enum):
PSM = 'PSM'
DRX = 'DRX'
E_DRX = 'E_DRX'
class CoapDeviceTypeConfiguration(BaseModel):
coapDeviceType: str
class Type5(Enum):
NAME = 'NAME'
TYPE = 'TYPE'
LABEL = 'LABEL'
SHARED_ATTRIBUTE = 'SHARED_ATTRIBUTE'
SERVER_ATTRIBUTE = 'SERVER_ATTRIBUTE'
TIMESERIES = 'TIMESERIES'
ACCESS_TOKEN = 'ACCESS_TOKEN'
X509 = 'X509'
MQTT_CLIENT_ID = 'MQTT_CLIENT_ID'
MQTT_USER_NAME = 'MQTT_USER_NAME'
MQTT_PASSWORD = 'MQTT_PASSWORD'
LWM2M_CLIENT_ENDPOINT = 'LWM2M_CLIENT_ENDPOINT'
LWM2M_CLIENT_SECURITY_CONFIG_MODE = 'LWM2M_CLIENT_SECURITY_CONFIG_MODE'
LWM2M_CLIENT_IDENTITY = 'LWM2M_CLIENT_IDENTITY'
LWM2M_CLIENT_KEY = 'LWM2M_CLIENT_KEY'
LWM2M_CLIENT_CERT = 'LWM2M_CLIENT_CERT'
LWM2M_BOOTSTRAP_SERVER_SECURITY_MODE = 'LWM2M_BOOTSTRAP_SERVER_SECURITY_MODE'
LWM2M_BOOTSTRAP_SERVER_PUBLIC_KEY_OR_ID = 'LWM2M_BOOTSTRAP_SERVER_PUBLIC_KEY_OR_ID'
LWM2M_BOOTSTRAP_SERVER_SECRET_KEY = 'LWM2M_BOOTSTRAP_SERVER_SECRET_KEY'
LWM2M_SERVER_SECURITY_MODE = 'LWM2M_SERVER_SECURITY_MODE'
LWM2M_SERVER_CLIENT_PUBLIC_KEY_OR_ID = 'LWM2M_SERVER_CLIENT_PUBLIC_KEY_OR_ID'
LWM2M_SERVER_CLIENT_SECRET_KEY = 'LWM2M_SERVER_CLIENT_SECRET_KEY'
SNMP_HOST = 'SNMP_HOST'
SNMP_PORT = 'SNMP_PORT'
SNMP_VERSION = 'SNMP_VERSION'
SNMP_COMMUNITY_STRING = 'SNMP_COMMUNITY_STRING'
IS_GATEWAY = 'IS_GATEWAY'
DESCRIPTION = 'DESCRIPTION'
EDGE_LICENSE_KEY = 'EDGE_LICENSE_KEY'
CLOUD_ENDPOINT = 'CLOUD_ENDPOINT'
ROUTING_KEY = 'ROUTING_KEY'
SECRET = 'SECRET'
class ColumnMapping(BaseModel):
type: Optional[Type5] = None
key: Optional[str] = None
class Operation1(Enum):
AND = 'AND'
OR = 'OR'
class SyncStrategy(Enum):
MERGE = 'MERGE'
OVERWRITE = 'OVERWRITE'
class Type6(Enum):
ENRICHMENT = 'ENRICHMENT'
FILTER = 'FILTER'
TRANSFORMATION = 'TRANSFORMATION'
ACTION = 'ACTION'
ANALYTICS = 'ANALYTICS'
EXTERNAL = 'EXTERNAL'
FLOW = 'FLOW'
class Scope(Enum):
TENANT = 'TENANT'
class ClusteringMode(Enum):
USER_PREFERENCE = 'USER_PREFERENCE'
ENABLED = 'ENABLED'
SINGLETON = 'SINGLETON'
class ComponentDescriptorId(BaseModel):
id: UUID = Field(
..., description='string', example='784f394c-42b6-435a-983c-b7beff2784f9'
)
class Type7(Enum):
UPLINK = 'UPLINK'
DOWNLINK = 'DOWNLINK'
class IntegrationType(Enum):
OCEANCONNECT = 'OCEANCONNECT'
SIGFOX = 'SIGFOX'
THINGPARK = 'THINGPARK'
TPE = 'TPE'
CHIRPSTACK = 'CHIRPSTACK'
PARTICLE = 'PARTICLE'
TMOBILE_IOT_CDP = 'TMOBILE_IOT_CDP'
HTTP = 'HTTP'
MQTT = 'MQTT'
PUB_SUB = 'PUB_SUB'
AWS_IOT = 'AWS_IOT'
AWS_SQS = 'AWS_SQS'
AWS_KINESIS = 'AWS_KINESIS'
IBM_WATSON_IOT = 'IBM_WATSON_IOT'
TTN = 'TTN'
TTI = 'TTI'
AZURE_EVENT_HUB = 'AZURE_EVENT_HUB'
OPC_UA = 'OPC_UA'
CUSTOM = 'CUSTOM'
UDP = 'UDP'
TCP = 'TCP'
KAFKA = 'KAFKA'
AZURE_IOT_HUB = 'AZURE_IOT_HUB'
APACHE_PULSAR = 'APACHE_PULSAR'
RABBITMQ = 'RABBITMQ'
LORIOT = 'LORIOT'
COAP = 'COAP'
TUYA = 'TUYA'
AZURE_SERVICE_BUS = 'AZURE_SERVICE_BUS'
KPN = 'KPN'
class EntityType6(Enum):
CONVERTER = 'CONVERTER'
class ConverterId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType6 = Field(..., description='string', example='CONVERTER')
class ConvertersInfo(BaseModel):
library: Optional[bool] = None
existing: Optional[bool] = None
keys: Optional[List[str]] = Field(None, Set=True)
class Scope1(Enum):
SYSTEM = 'SYSTEM'
TENANT = 'TENANT'
CUSTOMER = 'CUSTOMER'
class AssigneeType(Enum):
NO_ASSIGN = 'NO_ASSIGN'
ALL = 'ALL'
CUSTOMERS = 'CUSTOMERS'
USERS = 'USERS'
class CustomMenuId(BaseModel):
id: UUID = Field(
..., description='string', example='784f394c-42b6-435a-983c-b7beff2784f9'
)
class MenuItemType(Enum):
LINK = 'LINK'
SECTION = 'SECTION'
class LinkType1(Enum):
URL = 'URL'
DASHBOARD = 'DASHBOARD'
class CustomTimeScheduleItem(BaseModel):
enabled: Optional[bool] = None
dayOfWeek: Optional[int] = None
startsOn: Optional[int] = None
endsOn: Optional[int] = None
class EntityType7(Enum):
CUSTOMER = 'CUSTOMER'
class CustomerId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType7 = Field(..., description='string', example='CUSTOMER')
class EntityType8(Enum):
DASHBOARD = 'DASHBOARD'
class DashboardId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType8 = Field(..., description='string', example='DASHBOARD')
class DebugSettings(BaseModel):
failuresEnabled: Optional[bool] = Field(
None, description='Debug failures. ', example=False
)
allEnabled: Optional[bool] = Field(
None,
description='Debug All. Used as a trigger for updating debugAllUntil.',
example=False,
)
allEnabledUntil: Optional[int] = Field(
None, description='Timestamp of the end time for the processing debug events.'
)
class DefaultDashboardParams(BaseModel):
id: Optional[str] = Field(
None,
description='Default dashboard Id to assign for the new user.',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
fullscreen: Optional[bool] = Field(
None, description='Set default dashboard to full screen mode.'
)
class Id(Enum):
HOME = 'HOME'
ALARMS = 'ALARMS'
DEVICES = 'DEVICES'
CUSTOMERS = 'CUSTOMERS'
ASSETS = 'ASSETS'
AUDIT_LOGS = 'AUDIT_LOGS'
NOTIFICATIONS = 'NOTIFICATIONS'
DEVICE_LIST = 'DEVICE_LIST'
DASHBOARDS = 'DASHBOARDS'
class DefaultRuleChainCreateRequest(BaseModel):
name: str = Field(
..., description='Name of the new rule chain', example='Root Rule Chain'
)
class DeleteTenantRequest(BaseModel):
reason: Optional[str] = None
additionalNotes: Optional[str] = None
class DeliveryMethodNotificationTemplate(BaseModel):
enabled: Optional[bool] = None
body: str
method: str
class NotifyOnEnum3(Enum):
ACTIVE = 'ACTIVE'
INACTIVE = 'INACTIVE'
class DeviceConfiguration(BaseModel):
type: str
class CredentialsType(Enum):
ACCESS_TOKEN = 'ACCESS_TOKEN'
X509_CERTIFICATE = 'X509_CERTIFICATE'
MQTT_BASIC = 'MQTT_BASIC'
LWM2M_CREDENTIALS = 'LWM2M_CREDENTIALS'
class DeviceCredentialsId(BaseModel):
id: UUID = Field(
..., description='string', example='784f394c-42b6-435a-983c-b7beff2784f9'
)
class OtaPackageType(Enum):
FIRMWARE = 'FIRMWARE'
SOFTWARE = 'SOFTWARE'
class EntityType9(Enum):
DEVICE = 'DEVICE'
class DeviceId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType9 = Field(..., description='string', example='DEVICE')
class Type8(Enum):
DEFAULT = 'DEFAULT'
class TransportType(Enum):
DEFAULT = 'DEFAULT'
MQTT = 'MQTT'
COAP = 'COAP'
LWM2M = 'LWM2M'
SNMP = 'SNMP'
class ProvisionType(Enum):
DISABLED = 'DISABLED'
ALLOW_CREATE_NEW_DEVICES = 'ALLOW_CREATE_NEW_DEVICES'
CHECK_PRE_PROVISIONED_DEVICES = 'CHECK_PRE_PROVISIONED_DEVICES'
X509_CERTIFICATE_CHAIN = 'X509_CERTIFICATE_CHAIN'
class DeviceProfileConfiguration(BaseModel):
type: str
class EntityType10(Enum):
DEVICE_PROFILE = 'DEVICE_PROFILE'
class DeviceProfileId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType10 = Field(
..., description='string', example='DEVICE_PROFILE'
)
class DeviceProfileProvisionConfiguration(BaseModel):
provisionDeviceSecret: Optional[str] = None
type: str
class DeviceProfileTransportConfiguration(BaseModel):
type: str
class DeviceTransportConfiguration(BaseModel):
type: str
class DisabledDeviceProfileProvisionConfiguration(DeviceProfileProvisionConfiguration):
pass
class EntityType11(Enum):
TENANT = 'TENANT'
CUSTOMER = 'CUSTOMER'
USER = 'USER'
DASHBOARD = 'DASHBOARD'
ASSET = 'ASSET'
DEVICE = 'DEVICE'
ALARM = 'ALARM'
ENTITY_GROUP = 'ENTITY_GROUP'
CONVERTER = 'CONVERTER'
INTEGRATION = 'INTEGRATION'
RULE_CHAIN = 'RULE_CHAIN'
RULE_NODE = 'RULE_NODE'
SCHEDULER_EVENT = 'SCHEDULER_EVENT'
BLOB_ENTITY = 'BLOB_ENTITY'
ENTITY_VIEW = 'ENTITY_VIEW'
WIDGETS_BUNDLE = 'WIDGETS_BUNDLE'
WIDGET_TYPE = 'WIDGET_TYPE'
ROLE = 'ROLE'
GROUP_PERMISSION = 'GROUP_PERMISSION'
TENANT_PROFILE = 'TENANT_PROFILE'
DEVICE_PROFILE = 'DEVICE_PROFILE'
ASSET_PROFILE = 'ASSET_PROFILE'
API_USAGE_STATE = 'API_USAGE_STATE'
TB_RESOURCE = 'TB_RESOURCE'
OTA_PACKAGE = 'OTA_PACKAGE'
EDGE = 'EDGE'
RPC = 'RPC'
QUEUE = 'QUEUE'
NOTIFICATION_TARGET = 'NOTIFICATION_TARGET'
NOTIFICATION_TEMPLATE = 'NOTIFICATION_TEMPLATE'
NOTIFICATION_REQUEST = 'NOTIFICATION_REQUEST'
NOTIFICATION = 'NOTIFICATION'
NOTIFICATION_RULE = 'NOTIFICATION_RULE'
QUEUE_STATS = 'QUEUE_STATS'
OAUTH2_CLIENT = 'OAUTH2_CLIENT'
DOMAIN = 'DOMAIN'
MOBILE_APP = 'MOBILE_APP'
MOBILE_APP_BUNDLE = 'MOBILE_APP_BUNDLE'
CALCULATED_FIELD = 'CALCULATED_FIELD'
CALCULATED_FIELD_LINK = 'CALCULATED_FIELD_LINK'
BILLING_CUSTOMER = 'BILLING_CUSTOMER'
SUBSCRIPTION_PLAN = 'SUBSCRIPTION_PLAN'
SUBSCRIPTION = 'SUBSCRIPTION'
COUPON = 'COUPON'
class DomainId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType11 = Field(..., example='DEVICE')
class Unit(Enum):
NANOSECONDS = 'NANOSECONDS'
MICROSECONDS = 'MICROSECONDS'
MILLISECONDS = 'MILLISECONDS'
SECONDS = 'SECONDS'
MINUTES = 'MINUTES'
HOURS = 'HOURS'
DAYS = 'DAYS'
class SourceType(Enum):
CURRENT_TENANT = 'CURRENT_TENANT'
CURRENT_CUSTOMER = 'CURRENT_CUSTOMER'
CURRENT_USER = 'CURRENT_USER'
CURRENT_DEVICE = 'CURRENT_DEVICE'
class DynamicValueBoolean(BaseModel):
sourceType: Optional[SourceType] = None
sourceAttribute: Optional[str] = None
inherit: Optional[bool] = None
resolvedValue: Optional[bool] = None
class DynamicValueDouble(BaseModel):
sourceType: Optional[SourceType] = None
sourceAttribute: Optional[str] = None
inherit: Optional[bool] = None
resolvedValue: Optional[float] = None
class DynamicValueInteger(BaseModel):
sourceType: Optional[SourceType] = None
sourceAttribute: Optional[str] = None
inherit: Optional[bool] = None
resolvedValue: Optional[int] = None
class DynamicValueLong(BaseModel):
sourceType: Optional[SourceType] = None
sourceAttribute: Optional[str] = None
inherit: Optional[bool] = None
resolvedValue: Optional[int] = None
class DynamicValueString(BaseModel):
sourceType: Optional[SourceType] = None
sourceAttribute: Optional[str] = None
inherit: Optional[bool] = None
resolvedValue: Optional[str] = None
class NotifyOnEnum4(Enum):
CONNECTED = 'CONNECTED'
DISCONNECTED = 'DISCONNECTED'
class Action(Enum):
ADDED = 'ADDED'
UPDATED = 'UPDATED'
DELETED = 'DELETED'
POST_ATTRIBUTES = 'POST_ATTRIBUTES'
ATTRIBUTES_UPDATED = 'ATTRIBUTES_UPDATED'
ATTRIBUTES_DELETED = 'ATTRIBUTES_DELETED'
TIMESERIES_UPDATED = 'TIMESERIES_UPDATED'
CREDENTIALS_UPDATED = 'CREDENTIALS_UPDATED'
RELATION_ADD_OR_UPDATE = 'RELATION_ADD_OR_UPDATE'
RELATION_DELETED = 'RELATION_DELETED'
RPC_CALL = 'RPC_CALL'
ALARM_ACK = 'ALARM_ACK'
ALARM_CLEAR = 'ALARM_CLEAR'
ALARM_DELETE = 'ALARM_DELETE'
ALARM_ASSIGNED = 'ALARM_ASSIGNED'
ALARM_UNASSIGNED = 'ALARM_UNASSIGNED'
ADDED_COMMENT = 'ADDED_COMMENT'
UPDATED_COMMENT = 'UPDATED_COMMENT'
DELETED_COMMENT = 'DELETED_COMMENT'
ASSIGNED_TO_EDGE = 'ASSIGNED_TO_EDGE'
UNASSIGNED_FROM_EDGE = 'UNASSIGNED_FROM_EDGE'
CREDENTIALS_REQUEST = 'CREDENTIALS_REQUEST'
ADDED_TO_ENTITY_GROUP = 'ADDED_TO_ENTITY_GROUP'
REMOVED_FROM_ENTITY_GROUP = 'REMOVED_FROM_ENTITY_GROUP'
CHANGE_OWNER = 'CHANGE_OWNER'
ENTITY_MERGE_REQUEST = 'ENTITY_MERGE_REQUEST'
class Type10(Enum):
DASHBOARD = 'DASHBOARD'
ASSET = 'ASSET'
DEVICE = 'DEVICE'
DEVICE_PROFILE = 'DEVICE_PROFILE'
ASSET_PROFILE = 'ASSET_PROFILE'
ENTITY_VIEW = 'ENTITY_VIEW'
ALARM = 'ALARM'
ALARM_COMMENT = 'ALARM_COMMENT'
RULE_CHAIN = 'RULE_CHAIN'
RULE_CHAIN_METADATA = 'RULE_CHAIN_METADATA'
EDGE = 'EDGE'
USER = 'USER'
CUSTOMER = 'CUSTOMER'
RELATION = 'RELATION'
TENANT = 'TENANT'
TENANT_PROFILE = 'TENANT_PROFILE'
WIDGETS_BUNDLE = 'WIDGETS_BUNDLE'
WIDGET_TYPE = 'WIDGET_TYPE'
ADMIN_SETTINGS = 'ADMIN_SETTINGS'
OTA_PACKAGE = 'OTA_PACKAGE'
QUEUE = 'QUEUE'
ENTITY_GROUP = 'ENTITY_GROUP'
SCHEDULER_EVENT = 'SCHEDULER_EVENT'
WHITE_LABELING = 'WHITE_LABELING'
LOGIN_WHITE_LABELING = 'LOGIN_WHITE_LABELING'
MAIL_TEMPLATES = 'MAIL_TEMPLATES'
CUSTOM_TRANSLATION = 'CUSTOM_TRANSLATION'
CUSTOM_MENU = 'CUSTOM_MENU'
ROLE = 'ROLE'
GROUP_PERMISSION = 'GROUP_PERMISSION'
CONVERTER = 'CONVERTER'
INTEGRATION = 'INTEGRATION'
NOTIFICATION_RULE = 'NOTIFICATION_RULE'
NOTIFICATION_TARGET = 'NOTIFICATION_TARGET'
NOTIFICATION_TEMPLATE = 'NOTIFICATION_TEMPLATE'
TB_RESOURCE = 'TB_RESOURCE'
DEVICE_GROUP_OTA = 'DEVICE_GROUP_OTA'
OAUTH2_CLIENT = 'OAUTH2_CLIENT'
DOMAIN = 'DOMAIN'
class EdgeEventId(BaseModel):
id: UUID = Field(
..., description='string', example='784f394c-42b6-435a-983c-b7beff2784f9'
)
class EntityType12(Enum):
EDGE = 'EDGE'
class EdgeId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType12 = Field(..., description='string', example='EDGE')
class EdgeInstructions(BaseModel):
instructions: Optional[str] = Field(
None, description='Markdown with install/upgrade instructions'
)
class EdqsSyncRequest(RootModel):
root: Any
class EfentoCoapDeviceTypeConfiguration(CoapDeviceTypeConfiguration):
pass
class EmailDeliveryMethodNotificationTemplate(DeliveryMethodNotificationTemplate):
subject: str
body: str
class EnterpriseCaptchaParams(CaptchaParams):
projectId: Optional[str] = Field(None, description='Your Google Cloud project ID')
serviceAccountCredentials: Optional[str] = Field(
None, description='Service account credentials'
)
serviceAccountCredentialsFileName: Optional[str] = Field(
None, description='Service account credentials file name'
)
androidKey: Optional[str] = Field(
None, description='The reCAPTCHA key associated with android app.'
)
iosKey: Optional[str] = Field(
None, description='The reCAPTCHA key associated with iOS app.'
)
logActionName: Optional[str] = Field(
None, description='Optional action name used for logging'
)
class GroupType(Enum):
TENANT = 'TENANT'
CUSTOMER = 'CUSTOMER'
USER = 'USER'
DASHBOARD = 'DASHBOARD'
ASSET = 'ASSET'
DEVICE = 'DEVICE'
ALARM = 'ALARM'
ENTITY_GROUP = 'ENTITY_GROUP'
CONVERTER = 'CONVERTER'
INTEGRATION = 'INTEGRATION'
RULE_CHAIN = 'RULE_CHAIN'
RULE_NODE = 'RULE_NODE'
SCHEDULER_EVENT = 'SCHEDULER_EVENT'
BLOB_ENTITY = 'BLOB_ENTITY'
ENTITY_VIEW = 'ENTITY_VIEW'
WIDGETS_BUNDLE = 'WIDGETS_BUNDLE'
WIDGET_TYPE = 'WIDGET_TYPE'
ROLE = 'ROLE'
GROUP_PERMISSION = 'GROUP_PERMISSION'
TENANT_PROFILE = 'TENANT_PROFILE'
DEVICE_PROFILE = 'DEVICE_PROFILE'
ASSET_PROFILE = 'ASSET_PROFILE'
API_USAGE_STATE = 'API_USAGE_STATE'
TB_RESOURCE = 'TB_RESOURCE'
OTA_PACKAGE = 'OTA_PACKAGE'
EDGE = 'EDGE'
RPC = 'RPC'
QUEUE = 'QUEUE'
NOTIFICATION_TARGET = 'NOTIFICATION_TARGET'
NOTIFICATION_TEMPLATE = 'NOTIFICATION_TEMPLATE'
NOTIFICATION_REQUEST = 'NOTIFICATION_REQUEST'
NOTIFICATION = 'NOTIFICATION'
NOTIFICATION_RULE = 'NOTIFICATION_RULE'
QUEUE_STATS = 'QUEUE_STATS'
OAUTH2_CLIENT = 'OAUTH2_CLIENT'
DOMAIN = 'DOMAIN'
MOBILE_APP = 'MOBILE_APP'
MOBILE_APP_BUNDLE = 'MOBILE_APP_BUNDLE'
CALCULATED_FIELD = 'CALCULATED_FIELD'
CALCULATED_FIELD_LINK = 'CALCULATED_FIELD_LINK'
BILLING_CUSTOMER = 'BILLING_CUSTOMER'
SUBSCRIPTION_PLAN = 'SUBSCRIPTION_PLAN'
SUBSCRIPTION = 'SUBSCRIPTION'
COUPON = 'COUPON'
class EntityType13(Enum):
TENANT = 'TENANT'
CUSTOMER = 'CUSTOMER'
USER = 'USER'
DASHBOARD = 'DASHBOARD'
ASSET = 'ASSET'
DEVICE = 'DEVICE'
ALARM = 'ALARM'
ENTITY_GROUP = 'ENTITY_GROUP'
CONVERTER = 'CONVERTER'
INTEGRATION = 'INTEGRATION'
RULE_CHAIN = 'RULE_CHAIN'
RULE_NODE = 'RULE_NODE'
SCHEDULER_EVENT = 'SCHEDULER_EVENT'
BLOB_ENTITY = 'BLOB_ENTITY'
ENTITY_VIEW = 'ENTITY_VIEW'
WIDGETS_BUNDLE = 'WIDGETS_BUNDLE'
WIDGET_TYPE = 'WIDGET_TYPE'
ROLE = 'ROLE'
GROUP_PERMISSION = 'GROUP_PERMISSION'
TENANT_PROFILE = 'TENANT_PROFILE'
DEVICE_PROFILE = 'DEVICE_PROFILE'
ASSET_PROFILE = 'ASSET_PROFILE'
API_USAGE_STATE = 'API_USAGE_STATE'
TB_RESOURCE = 'TB_RESOURCE'
OTA_PACKAGE = 'OTA_PACKAGE'
EDGE = 'EDGE'
RPC = 'RPC'
QUEUE = 'QUEUE'
NOTIFICATION_TARGET = 'NOTIFICATION_TARGET'
NOTIFICATION_TEMPLATE = 'NOTIFICATION_TEMPLATE'
NOTIFICATION_REQUEST = 'NOTIFICATION_REQUEST'
NOTIFICATION = 'NOTIFICATION'
NOTIFICATION_RULE = 'NOTIFICATION_RULE'
QUEUE_STATS = 'QUEUE_STATS'
OAUTH2_CLIENT = 'OAUTH2_CLIENT'
DOMAIN = 'DOMAIN'
MOBILE_APP = 'MOBILE_APP'
MOBILE_APP_BUNDLE = 'MOBILE_APP_BUNDLE'
CALCULATED_FIELD = 'CALCULATED_FIELD'
CALCULATED_FIELD_LINK = 'CALCULATED_FIELD_LINK'
BILLING_CUSTOMER = 'BILLING_CUSTOMER'
SUBSCRIPTION_PLAN = 'SUBSCRIPTION_PLAN'
SUBSCRIPTION = 'SUBSCRIPTION'
COUPON = 'COUPON'
class EntityDataInfo(BaseModel):
hasRelations: Optional[bool] = None
hasAttributes: Optional[bool] = None
hasCredentials: Optional[bool] = None
hasCalculatedFields: Optional[bool] = None
hasPermissions: Optional[bool] = None
hasGroupEntities: Optional[bool] = None
class Direction3(Enum):
ASC = 'ASC'
DESC = 'DESC'
class EntityFilter(BaseModel):
type: str
class Type11(Enum):
CUSTOMER = 'CUSTOMER'
ASSET = 'ASSET'
DEVICE = 'DEVICE'
USER = 'USER'
ENTITY_VIEW = 'ENTITY_VIEW'
DASHBOARD = 'DASHBOARD'
EDGE = 'EDGE'
class EntityGroupFilter(EntityFilter):
groupType: Optional[GroupType] = None
entityGroup: Optional[str] = None
class EntityType16(Enum):
ENTITY_GROUP = 'ENTITY_GROUP'
class EntityGroupId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType16 = Field(..., description='string', example='ENTITY_GROUP')
class EntityGroupListFilter(EntityFilter):
groupType: Optional[GroupType] = None
entityGroupList: Optional[List[str]] = None
class EntityGroupNameFilter(EntityFilter):
groupType: Optional[GroupType] = None
entityGroupNameFilter: Optional[str] = None
class EntityType17(Enum):
TENANT = 'TENANT'
CUSTOMER = 'CUSTOMER'
USER = 'USER'
DASHBOARD = 'DASHBOARD'
ASSET = 'ASSET'
DEVICE = 'DEVICE'
ALARM = 'ALARM'
ENTITY_GROUP = 'ENTITY_GROUP'
CONVERTER = 'CONVERTER'
INTEGRATION = 'INTEGRATION'
RULE_CHAIN = 'RULE_CHAIN'
RULE_NODE = 'RULE_NODE'
SCHEDULER_EVENT = 'SCHEDULER_EVENT'
BLOB_ENTITY = 'BLOB_ENTITY'
ENTITY_VIEW = 'ENTITY_VIEW'
WIDGETS_BUNDLE = 'WIDGETS_BUNDLE'
WIDGET_TYPE = 'WIDGET_TYPE'
ROLE = 'ROLE'
GROUP_PERMISSION = 'GROUP_PERMISSION'
TENANT_PROFILE = 'TENANT_PROFILE'
DEVICE_PROFILE = 'DEVICE_PROFILE'
ASSET_PROFILE = 'ASSET_PROFILE'
API_USAGE_STATE = 'API_USAGE_STATE'
TB_RESOURCE = 'TB_RESOURCE'
OTA_PACKAGE = 'OTA_PACKAGE'
EDGE = 'EDGE'
RPC = 'RPC'
QUEUE = 'QUEUE'
NOTIFICATION_TARGET = 'NOTIFICATION_TARGET'
NOTIFICATION_TEMPLATE = 'NOTIFICATION_TEMPLATE'
NOTIFICATION_REQUEST = 'NOTIFICATION_REQUEST'
NOTIFICATION = 'NOTIFICATION'
NOTIFICATION_RULE = 'NOTIFICATION_RULE'
QUEUE_STATS = 'QUEUE_STATS'
OAUTH2_CLIENT = 'OAUTH2_CLIENT'
DOMAIN = 'DOMAIN'
MOBILE_APP = 'MOBILE_APP'
MOBILE_APP_BUNDLE = 'MOBILE_APP_BUNDLE'
CALCULATED_FIELD = 'CALCULATED_FIELD'
CALCULATED_FIELD_LINK = 'CALCULATED_FIELD_LINK'
BILLING_CUSTOMER = 'BILLING_CUSTOMER'
SUBSCRIPTION_PLAN = 'SUBSCRIPTION_PLAN'
SUBSCRIPTION = 'SUBSCRIPTION'
COUPON = 'COUPON'
class EntityId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType17 = Field(..., example='DEVICE')
class EntityInfo(BaseModel):
id: Optional[EntityId] = Field(None, description='JSON object with the entity Id. ')
name: Optional[str] = Field(None, description='Entity Name')
class Type13(Enum):
ATTRIBUTE = 'ATTRIBUTE'
CLIENT_ATTRIBUTE = 'CLIENT_ATTRIBUTE'
SHARED_ATTRIBUTE = 'SHARED_ATTRIBUTE'
SERVER_ATTRIBUTE = 'SERVER_ATTRIBUTE'
TIME_SERIES = 'TIME_SERIES'
ENTITY_FIELD = 'ENTITY_FIELD'
ALARM_FIELD = 'ALARM_FIELD'
class EntityKey(BaseModel):
type: Optional[Type13] = None
key: Optional[str] = None
class EntityListFilter(EntityFilter):
entityType: Optional[EntityType17] = None
entityList: Optional[List[str]] = None
class EntityLoadError(BaseModel):
type: Optional[str] = None
source: Optional[EntityId] = None
target: Optional[EntityId] = None
message: Optional[str] = None
class EntityNameFilter(EntityFilter):
entityType: Optional[EntityType17] = None
entityNameFilter: Optional[str] = None
class TypeGroup(Enum):
COMMON = 'COMMON'
DASHBOARD = 'DASHBOARD'
FROM_ENTITY_GROUP = 'FROM_ENTITY_GROUP'
RULE_CHAIN = 'RULE_CHAIN'
RULE_NODE = 'RULE_NODE'
EDGE = 'EDGE'
EDGE_AUTO_ASSIGN_RULE_CHAIN = 'EDGE_AUTO_ASSIGN_RULE_CHAIN'
class EntityTypeFilter(EntityFilter):
entityType: Optional[EntityType17] = None
class EntityTypeLoadResult(BaseModel):
entityType: Optional[EntityType17] = None
created: Optional[int] = None
updated: Optional[int] = None
deleted: Optional[int] = None
groupsCreated: Optional[int] = None
groupsUpdated: Optional[int] = None
groupsDeleted: Optional[int] = None
class EntityTypeVersionCreateConfig(BaseModel):
saveRelations: Optional[bool] = None
saveAttributes: Optional[bool] = None
saveCredentials: Optional[bool] = None
saveCalculatedFields: Optional[bool] = None
savePermissions: Optional[bool] = None
saveGroupEntities: Optional[bool] = None
syncStrategy: Optional[SyncStrategy] = None
entityIds: Optional[List[UUID]] = None
allEntities: Optional[bool] = None
class EntityTypeVersionLoadConfig(BaseModel):
loadRelations: Optional[bool] = None
loadAttributes: Optional[bool] = None
loadCredentials: Optional[bool] = None
loadCalculatedFields: Optional[bool] = None
loadPermissions: Optional[bool] = None
loadGroupEntities: Optional[bool] = None
autoGenerateIntegrationKey: Optional[bool] = None
removeOtherEntities: Optional[bool] = None
findExistingEntityByName: Optional[bool] = None
class EntityVersion(BaseModel):
timestamp: Optional[int] = None
id: Optional[str] = None
name: Optional[str] = None
author: Optional[str] = None
class EntityType23(Enum):
ENTITY_VIEW = 'ENTITY_VIEW'
class EntityViewId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType23 = Field(..., description='string', example='ENTITY_VIEW')
class Direction4(Enum):
FROM = 'FROM'
TO = 'TO'
class EntityViewSearchQueryFilter(EntityFilter):
rootEntity: Optional[EntityId] = None
relationType: Optional[str] = None
direction: Optional[Direction4] = None
maxLevel: Optional[int] = None
fetchLastLevelOnly: Optional[bool] = None
entityViewTypes: Optional[List[str]] = None
class EntityViewTypeFilter(EntityFilter):
entityViewType: Optional[str] = None
entityViewTypes: Optional[List[str]] = None
entityViewNameFilter: Optional[str] = None
class EventType(Enum):
ERROR = 'ERROR'
LC_EVENT = 'LC_EVENT'
STATS = 'STATS'
RAW_DATA = 'RAW_DATA'
DEBUG_RULE_NODE = 'DEBUG_RULE_NODE'
DEBUG_RULE_CHAIN = 'DEBUG_RULE_CHAIN'
DEBUG_CONVERTER = 'DEBUG_CONVERTER'
DEBUG_INTEGRATION = 'DEBUG_INTEGRATION'
DEBUG_CALCULATED_FIELD = 'DEBUG_CALCULATED_FIELD'
class EventFilter(BaseModel):
eventType: EventType = Field(
..., description='String value representing the event type', example='STATS'
)
notEmpty: Optional[bool] = None
class EventId(BaseModel):
id: UUID = Field(
..., description='string', example='784f394c-42b6-435a-983c-b7beff2784f9'
)
class ExportableEntityEntityId(BaseModel):
id: Optional[EntityId] = None
name: Optional[str] = None
class Favicon(BaseModel):
url: Optional[str] = None
class FeaturesInfo(BaseModel):
smsEnabled: Optional[bool] = None
oauthEnabled: Optional[bool] = None
notificationEnabled: Optional[bool] = None
twoFaEnabled: Optional[bool] = None
whiteLabelingEnabled: Optional[bool] = None
emailEnabled: Optional[bool] = None
class FilterPredicateValueBoolean(BaseModel):
defaultValue: Optional[bool] = None
userValue: Optional[bool] = None
dynamicValue: Optional[DynamicValueBoolean] = None
class FilterPredicateValueDouble(BaseModel):
defaultValue: Optional[float] = None
userValue: Optional[float] = None
dynamicValue: Optional[DynamicValueDouble] = None
class FilterPredicateValueInteger(BaseModel):
defaultValue: Optional[int] = None
userValue: Optional[int] = None
dynamicValue: Optional[DynamicValueInteger] = None
class FilterPredicateValueLong(BaseModel):
defaultValue: Optional[int] = None
userValue: Optional[int] = None
dynamicValue: Optional[DynamicValueLong] = None
class FilterPredicateValueString(BaseModel):
defaultValue: Optional[str] = None
userValue: Optional[str] = None
dynamicValue: Optional[DynamicValueString] = None
class EntityGroupType(Enum):
TENANT = 'TENANT'
CUSTOMER = 'CUSTOMER'
USER = 'USER'
DASHBOARD = 'DASHBOARD'
ASSET = 'ASSET'
DEVICE = 'DEVICE'
ALARM = 'ALARM'
ENTITY_GROUP = 'ENTITY_GROUP'
CONVERTER = 'CONVERTER'
INTEGRATION = 'INTEGRATION'
RULE_CHAIN = 'RULE_CHAIN'
RULE_NODE = 'RULE_NODE'
SCHEDULER_EVENT = 'SCHEDULER_EVENT'
BLOB_ENTITY = 'BLOB_ENTITY'
ENTITY_VIEW = 'ENTITY_VIEW'
WIDGETS_BUNDLE = 'WIDGETS_BUNDLE'
WIDGET_TYPE = 'WIDGET_TYPE'
ROLE = 'ROLE'
GROUP_PERMISSION = 'GROUP_PERMISSION'
TENANT_PROFILE = 'TENANT_PROFILE'
DEVICE_PROFILE = 'DEVICE_PROFILE'
ASSET_PROFILE = 'ASSET_PROFILE'
API_USAGE_STATE = 'API_USAGE_STATE'
TB_RESOURCE = 'TB_RESOURCE'
OTA_PACKAGE = 'OTA_PACKAGE'
EDGE = 'EDGE'
RPC = 'RPC'
QUEUE = 'QUEUE'
NOTIFICATION_TARGET = 'NOTIFICATION_TARGET'
NOTIFICATION_TEMPLATE = 'NOTIFICATION_TEMPLATE'
NOTIFICATION_REQUEST = 'NOTIFICATION_REQUEST'
NOTIFICATION = 'NOTIFICATION'
NOTIFICATION_RULE = 'NOTIFICATION_RULE'
QUEUE_STATS = 'QUEUE_STATS'
OAUTH2_CLIENT = 'OAUTH2_CLIENT'
DOMAIN = 'DOMAIN'
MOBILE_APP = 'MOBILE_APP'
MOBILE_APP_BUNDLE = 'MOBILE_APP_BUNDLE'
CALCULATED_FIELD = 'CALCULATED_FIELD'
CALCULATED_FIELD_LINK = 'CALCULATED_FIELD_LINK'
BILLING_CUSTOMER = 'BILLING_CUSTOMER'
SUBSCRIPTION_PLAN = 'SUBSCRIPTION_PLAN'
SUBSCRIPTION = 'SUBSCRIPTION'
COUPON = 'COUPON'
class EntityType24(Enum):
GROUP_PERMISSION = 'GROUP_PERMISSION'
class GroupPermissionId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType24 = Field(
..., description='string', example='GROUP_PERMISSION'
)
class HasIdObject(BaseModel):
id: Optional[Any] = None
class HomeDashboardInfo(BaseModel):
dashboardId: Optional[DashboardId] = Field(
None, description='JSON object with the dashboard Id.'
)
hideDashboardToolbar: Optional[bool] = Field(
None,
description='Hide dashboard toolbar flag. Useful for rendering dashboards on mobile.',
)
class HomeDashboardParams(BaseModel):
id: Optional[str] = Field(
None,
description='Home dashboard Id to assign for the new user.',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
hideToolbar: Optional[bool] = Field(
None, description='Indicates if hide toolbar should be hidden.'
)
class HomeType(Enum):
DEFAULT = 'DEFAULT'
DASHBOARD = 'DASHBOARD'
class Type14(Enum):
OCEANCONNECT = 'OCEANCONNECT'
SIGFOX = 'SIGFOX'
THINGPARK = 'THINGPARK'
TPE = 'TPE'
CHIRPSTACK = 'CHIRPSTACK'
PARTICLE = 'PARTICLE'
TMOBILE_IOT_CDP = 'TMOBILE_IOT_CDP'
HTTP = 'HTTP'
MQTT = 'MQTT'
PUB_SUB = 'PUB_SUB'
AWS_IOT = 'AWS_IOT'
AWS_SQS = 'AWS_SQS'
AWS_KINESIS = 'AWS_KINESIS'
IBM_WATSON_IOT = 'IBM_WATSON_IOT'
TTN = 'TTN'
TTI = 'TTI'
AZURE_EVENT_HUB = 'AZURE_EVENT_HUB'
OPC_UA = 'OPC_UA'
CUSTOM = 'CUSTOM'
UDP = 'UDP'
TCP = 'TCP'
KAFKA = 'KAFKA'
AZURE_IOT_HUB = 'AZURE_IOT_HUB'
APACHE_PULSAR = 'APACHE_PULSAR'
RABBITMQ = 'RABBITMQ'
LORIOT = 'LORIOT'
COAP = 'COAP'
TUYA = 'TUYA'
AZURE_SERVICE_BUS = 'AZURE_SERVICE_BUS'
KPN = 'KPN'
class IntegrationConvertersInfo(BaseModel):
uplink: Optional[ConvertersInfo] = None
downlink: Optional[ConvertersInfo] = None
class EntityType25(Enum):
INTEGRATION = 'INTEGRATION'
class IntegrationId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType25 = Field(..., description='string', example='INTEGRATION')
class NotifyOnEnum5(Enum):
CREATED = 'CREATED'
STARTED = 'STARTED'
ACTIVATED = 'ACTIVATED'
SUSPENDED = 'SUSPENDED'
UPDATED = 'UPDATED'
STOPPED = 'STOPPED'
DELETED = 'DELETED'
FAILED = 'FAILED'
DEACTIVATED = 'DEACTIVATED'
class JsonNode(RootModel):
root: Any = Field(
...,
description='A JSON value representing the custom translation. See API call notes above for valid example.',
examples=[{}],
)
class Scope3(Enum):
SYS_ADMIN = 'SYS_ADMIN'
TENANT_ADMIN = 'TENANT_ADMIN'
CUSTOMER_USER = 'CUSTOMER_USER'
BILLING_ADMIN = 'BILLING_ADMIN'
BILLING_SERVICE = 'BILLING_SERVICE'
REFRESH_TOKEN = 'REFRESH_TOKEN'
PRE_VERIFICATION_TOKEN = 'PRE_VERIFICATION_TOKEN'
class JwtPair(BaseModel):
token: Optional[str] = Field(
None,
description='The JWT Access Token. Used to perform API calls.',
example='AAB254FF67D..',
)
refreshToken: Optional[str] = Field(
None,
description='The JWT Refresh Token. Used to get new JWT Access Token if old one has expired.',
example='AAB254FF67D..',
)
scope: Optional[Scope3] = None
class JwtSettings(BaseModel):
tokenExpirationTime: Optional[int] = Field(
None, description='The JWT will expire after seconds.', example=9000
)
refreshTokenExpTime: Optional[int] = Field(
None, description='The JWT can be refreshed during seconds.', example=604800
)
tokenIssuer: Optional[str] = Field(
None, description='The JWT issuer.', example='thingsboard.io'
)
tokenSigningKey: Optional[str] = Field(
None,
description='The JWT key is used to sing token. Base64 encoded.',
example='dkVTUzU2M2VMWUNwVVltTUhQU2o5SUM0Tkc3M0k2Ykdwcm85QTl6R0RaQ252OFlmVDk2OEptZXBNcndGeExFZg==',
)
class KeyFilterPredicate(BaseModel):
type: str
class LastVisitedDashboardInfo(BaseModel):
id: Optional[UUID] = Field(None, description='JSON object with Dashboard id.')
title: Optional[str] = Field(None, description='Title of the dashboard.')
starred: Optional[bool] = Field(None, description='Starred flag')
lastVisited: Optional[int] = Field(None, description='Last visit timestamp')
class LicenseUsageInfo(BaseModel):
maxDevices: Optional[int] = None
maxAssets: Optional[int] = None
whiteLabelingEnabled: Optional[bool] = None
development: Optional[bool] = None
plan: Optional[str] = None
devicesCount: Optional[int] = None
assetsCount: Optional[int] = None
dashboardsCount: Optional[int] = None
integrationsCount: Optional[int] = None
class Status4(Enum):
Success = 'Success'
Failure = 'Failure'
class LifeCycleEventFilter(EventFilter):
server: Optional[str] = Field(
None,
description='String value representing the server name, identifier or ip address where the platform is running',
example='ip-172-31-24-152',
)
event: Optional[str] = Field(
None,
description='String value representing the lifecycle event type',
example='STARTED',
)
status: Optional[Status4] = Field(
None, description='String value representing status of the lifecycle event'
)
errorStr: Optional[str] = Field(
None,
description="The case insensitive 'contains' filter based on error message",
example='not present in the DB',
)
eventType: EventType = Field(
..., description='String value representing the event type', example='STATS'
)
class LoginRequest(BaseModel):
username: str = Field(
..., description='User email', example='tenant@thingsboard.org'
)
password: str = Field(..., description='User password', example='tenant')
class LoginResponse(BaseModel):
token: str = Field(
...,
description='JWT token',
example='eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ0ZW5hbnRAdGhpbmdzYm9hcmQub3JnIi...',
)
refreshToken: str = Field(
...,
description='Refresh token',
example='eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ0ZW5hbnRAdGhpbmdzYm9hcmQub3JnIi...',
)
class LwM2MBootstrapServerCredential(BaseModel):
securityMode: str
class LwM2MServerSecurityConfigDefault(BaseModel):
shortServerId: Optional[int] = Field(
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:1 and ID:65534 values MUST NOT be used for identifying the LwM2M Server.",
example=123,
)
bootstrapServerIs: Optional[bool] = Field(
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.',
example=True,
)
host: Optional[str] = Field(
None, description="Host for 'No Security' mode", example='0.0.0.0'
)
port: Optional[int] = Field(
None,
description="Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server",
example="'5685' or '5687'",
)
clientHoldOffTime: Optional[int] = Field(
None,
description='Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.)',
example=1,
)
serverPublicKey: Optional[str] = Field(
None,
description="Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded",
example='MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAZ0pSaGKHk/GrDaUDnQZpeEdGwX7m3Ws+U/kiVat\n+44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==',
)
serverCertificate: Optional[str] = Field(
None,
description="Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded",
example='MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs\nxEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM\nJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/\nBAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp\nAWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+7XmIXNClmizNJigj908mw=',
)
bootstrapServerAccountTimeout: Optional[int] = Field(
None,
description='Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.)',
example=0,
)
lifetime: Optional[int] = Field(
None,
description='Specify the lifetime of the registration in seconds.',
example=300,
)
defaultMinPeriod: Optional[int] = Field(
None,
description='The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesnt exist, the default value is 0.',
example=1,
)
notifIfDisabled: Optional[bool] = Field(
None,
description='If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true.',
example=True,
)
binding: Optional[str] = Field(
None,
description='This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode.',
example='U',
)
securityHost: Optional[str] = Field(
None, description="Host for 'Security' mode (DTLS)", example='0.0.0.0'
)
securityPort: Optional[int] = Field(
None,
description="Port for 'Security' mode (DTLS): Lwm2m Server or Bootstrap Server",
example=5686,
)
class LwM2mResourceObserve(BaseModel):
id: Optional[int] = Field(
None, description='LwM2M Resource Observe id.', example=0
)
name: Optional[str] = Field(
None, description='LwM2M Resource Observe name.', example='Data'
)
observe: Optional[bool] = Field(
None, description='LwM2M Resource Observe observe.', example=False
)
attribute: Optional[bool] = Field(
None, description='LwM2M Resource Observe attribute.', example=False
)
telemetry: Optional[bool] = Field(
None, description='LwM2M Resource Observe telemetry.', example=False
)
keyName: Optional[str] = Field(
None, description='LwM2M Resource Observe key name.', example='data'
)
class LwM2mVersion(BaseModel):
supported: Optional[bool] = None
class Lwm2mDeviceTransportConfiguration(DeviceTransportConfiguration):
powerMode: Optional[PowerMode] = None
psmActivityTimer: Optional[int] = None
edrxCycle: Optional[int] = None
pagingTransmissionWindow: Optional[int] = None
class Mapping(BaseModel):
columns: Optional[List[ColumnMapping]] = None
delimiter: Optional[str] = None
update: Optional[bool] = None
header: Optional[bool] = None
class Type16(Enum):
HOME = 'HOME'
DEFAULT = 'DEFAULT'
CUSTOM = 'CUSTOM'
class MenuItem(BaseModel):
type: Optional[Type16] = None
visible: Optional[bool] = None
class EntityType26(Enum):
TENANT = 'TENANT'
CUSTOMER = 'CUSTOMER'
USER = 'USER'
DASHBOARD = 'DASHBOARD'
ASSET = 'ASSET'
DEVICE = 'DEVICE'
ALARM = 'ALARM'
ENTITY_GROUP = 'ENTITY_GROUP'
CONVERTER = 'CONVERTER'
INTEGRATION = 'INTEGRATION'
RULE_CHAIN = 'RULE_CHAIN'
RULE_NODE = 'RULE_NODE'
SCHEDULER_EVENT = 'SCHEDULER_EVENT'
BLOB_ENTITY = 'BLOB_ENTITY'
ENTITY_VIEW = 'ENTITY_VIEW'
WIDGETS_BUNDLE = 'WIDGETS_BUNDLE'
WIDGET_TYPE = 'WIDGET_TYPE'
ROLE = 'ROLE'
GROUP_PERMISSION = 'GROUP_PERMISSION'
TENANT_PROFILE = 'TENANT_PROFILE'
DEVICE_PROFILE = 'DEVICE_PROFILE'
ASSET_PROFILE = 'ASSET_PROFILE'
API_USAGE_STATE = 'API_USAGE_STATE'
TB_RESOURCE = 'TB_RESOURCE'
OTA_PACKAGE = 'OTA_PACKAGE'
EDGE = 'EDGE'
RPC = 'RPC'
QUEUE = 'QUEUE'
NOTIFICATION_TARGET = 'NOTIFICATION_TARGET'
NOTIFICATION_TEMPLATE = 'NOTIFICATION_TEMPLATE'
NOTIFICATION_REQUEST = 'NOTIFICATION_REQUEST'
NOTIFICATION = 'NOTIFICATION'
NOTIFICATION_RULE = 'NOTIFICATION_RULE'
QUEUE_STATS = 'QUEUE_STATS'
OAUTH2_CLIENT = 'OAUTH2_CLIENT'
DOMAIN = 'DOMAIN'
MOBILE_APP = 'MOBILE_APP'
MOBILE_APP_BUNDLE = 'MOBILE_APP_BUNDLE'
CALCULATED_FIELD = 'CALCULATED_FIELD'
CALCULATED_FIELD_LINK = 'CALCULATED_FIELD_LINK'
BILLING_CUSTOMER = 'BILLING_CUSTOMER'
SUBSCRIPTION_PLAN = 'SUBSCRIPTION_PLAN'
SUBSCRIPTION = 'SUBSCRIPTION'
COUPON = 'COUPON'
class Operation2(Enum):
ALL = 'ALL'
CREATE = 'CREATE'
READ = 'READ'
WRITE = 'WRITE'
DELETE = 'DELETE'
RPC_CALL = 'RPC_CALL'
READ_CREDENTIALS = 'READ_CREDENTIALS'
WRITE_CREDENTIALS = 'WRITE_CREDENTIALS'
READ_ATTRIBUTES = 'READ_ATTRIBUTES'
WRITE_ATTRIBUTES = 'WRITE_ATTRIBUTES'
READ_TELEMETRY = 'READ_TELEMETRY'
WRITE_TELEMETRY = 'WRITE_TELEMETRY'
ADD_TO_GROUP = 'ADD_TO_GROUP'
REMOVE_FROM_GROUP = 'REMOVE_FROM_GROUP'
CHANGE_OWNER = 'CHANGE_OWNER'
IMPERSONATE = 'IMPERSONATE'
CLAIM_DEVICES = 'CLAIM_DEVICES'
SHARE_GROUP = 'SHARE_GROUP'
ASSIGN_TO_TENANT = 'ASSIGN_TO_TENANT'
READ_CALCULATED_FIELD = 'READ_CALCULATED_FIELD'
WRITE_CALCULATED_FIELD = 'WRITE_CALCULATED_FIELD'
class MergedGroupPermissionInfo(BaseModel):
entityType: Optional[EntityType26] = None
operations: Optional[List[Operation2]] = Field(None, Set=True)
class MergedGroupTypePermissionInfo(BaseModel):
entityGroupIds: Optional[List[EntityGroupId]] = Field(
None,
description='List of Entity Groups in case of group roles are assigned to the user (user group)',
)
hasGenericRead: Optional[bool] = Field(
None, description='Indicates if generic permission assigned to the user group.'
)
class GenericPermission(Enum):
ALL = 'ALL'
CREATE = 'CREATE'
READ = 'READ'
WRITE = 'WRITE'
DELETE = 'DELETE'
RPC_CALL = 'RPC_CALL'
READ_CREDENTIALS = 'READ_CREDENTIALS'
WRITE_CREDENTIALS = 'WRITE_CREDENTIALS'
READ_ATTRIBUTES = 'READ_ATTRIBUTES'
WRITE_ATTRIBUTES = 'WRITE_ATTRIBUTES'
READ_TELEMETRY = 'READ_TELEMETRY'
WRITE_TELEMETRY = 'WRITE_TELEMETRY'
ADD_TO_GROUP = 'ADD_TO_GROUP'
REMOVE_FROM_GROUP = 'REMOVE_FROM_GROUP'
CHANGE_OWNER = 'CHANGE_OWNER'
IMPERSONATE = 'IMPERSONATE'
CLAIM_DEVICES = 'CLAIM_DEVICES'
SHARE_GROUP = 'SHARE_GROUP'
ASSIGN_TO_TENANT = 'ASSIGN_TO_TENANT'
READ_CALCULATED_FIELD = 'READ_CALCULATED_FIELD'
WRITE_CALCULATED_FIELD = 'WRITE_CALCULATED_FIELD'
class MergedUserPermissions(BaseModel):
genericPermissions: Optional[Dict[str, List[GenericPermission]]] = Field(
None,
description="Map of permissions defined using generic roles ('Customer Administrator', etc)",
)
groupPermissions: Optional[Dict[str, MergedGroupPermissionInfo]] = Field(
None,
description="Map of permissions defined using group roles ('Read' or 'Write' access to specific entity group, etc)",
)
readGroupPermissions: Optional[Dict[str, MergedGroupTypePermissionInfo]] = Field(
None,
description='Map of read permissions per entity type. Used on the UI to enable/disable certain components.',
)
readEntityPermissions: Optional[Dict[str, MergedGroupTypePermissionInfo]] = Field(
None,
description='Map of read permissions per resource. Used on the UI to enable/disable certain components.',
)
readAttrPermissions: Optional[Dict[str, MergedGroupTypePermissionInfo]] = Field(
None,
description='Map of read entity attributes permissions per resource. Used on the UI to enable/disable certain tabs.',
)
readTsPermissions: Optional[Dict[str, MergedGroupTypePermissionInfo]] = Field(
None,
description='Map of read entity time-series permissions per resource. Used on the UI to enable/disable certain tabs.',
)
class MicrosoftTeamsDeliveryMethodNotificationTemplate(
DeliveryMethodNotificationTemplate
):
subject: Optional[str] = None
themeColor: Optional[str] = None
button: Optional[Button] = None
body: str
class PlatformType(Enum):
WEB = 'WEB'
ANDROID = 'ANDROID'
IOS = 'IOS'
class Status5(Enum):
DRAFT = 'DRAFT'
PUBLISHED = 'PUBLISHED'
DEPRECATED = 'DEPRECATED'
SUSPENDED = 'SUSPENDED'
class MobileAppBundleId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType26 = Field(..., example='DEVICE')
class MobileAppDeliveryMethodNotificationTemplate(DeliveryMethodNotificationTemplate):
subject: str
additionalConfig: Optional[Any] = None
body: str
class MobileAppId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType26 = Field(..., example='DEVICE')
class MobileAppVersionInfo(BaseModel):
minVersion: Optional[str] = Field(None, description='Minimum supported version')
minVersionReleaseNotes: Optional[str] = Field(
None, description='Release notes of minimum supported version'
)
latestVersion: Optional[str] = Field(None, description='Latest supported version')
latestVersionReleaseNotes: Optional[str] = Field(
None, description='Release notes of latest supported version'
)
class Type17(Enum):
DEFAULT = 'DEFAULT'
DASHBOARD = 'DASHBOARD'
WEB_VIEW = 'WEB_VIEW'
CUSTOM = 'CUSTOM'
class MobilePage(BaseModel):
type: Optional[Type17] = None
visible: Optional[bool] = None
class MobileRedirectParams(BaseModel):
scheme: Optional[str] = Field(
None,
description='Mobile application verification settings. Used for callback to mobile application once user is registered.',
)
host: Optional[str] = Field(
None,
description='Mobile application verification settings. Used for callback to mobile application once user is registered.',
)
class MobileSessionInfo(BaseModel):
fcmTokenTimestamp: Optional[int] = None
class Model(BaseModel):
name: Optional[str] = None
info: Optional[JsonNode] = None
photo: Optional[str] = None
class MqttDeviceTransportConfiguration(DeviceTransportConfiguration):
pass
class NoSecLwM2MBootstrapServerCredential(LwM2MBootstrapServerCredential):
shortServerId: Optional[int] = Field(
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:1 and ID:65534 values MUST NOT be used for identifying the LwM2M Server.",
example=123,
)
bootstrapServerIs: Optional[bool] = Field(
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.',
example=True,
)
host: Optional[str] = Field(
None, description="Host for 'No Security' mode", example='0.0.0.0'
)
port: Optional[int] = Field(
None,
description="Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server",
example="'5685' or '5687'",
)
clientHoldOffTime: Optional[int] = Field(
None,
description='Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.)',
example=1,
)
serverPublicKey: Optional[str] = Field(
None,
description="Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded",
example='MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAZ0pSaGKHk/GrDaUDnQZpeEdGwX7m3Ws+U/kiVat\n+44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==',
)
serverCertificate: Optional[str] = Field(
None,
description="Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded",
example='MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs\nxEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM\nJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/\nBAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp\nAWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+7XmIXNClmizNJigj908mw=',
)
bootstrapServerAccountTimeout: Optional[int] = Field(
None,
description='Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.)',
example=0,
)
lifetime: Optional[int] = Field(
None,
description='Specify the lifetime of the registration in seconds.',
example=300,
)
defaultMinPeriod: Optional[int] = Field(
None,
description='The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesnt exist, the default value is 0.',
example=1,
)
notifIfDisabled: Optional[bool] = Field(
None,
description='If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true.',
example=True,
)
binding: Optional[str] = Field(
None,
description='This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode.',
example='U',
)
class NodeConnectionInfo(BaseModel):
fromIndex: int = Field(
...,
description="Index of rule node in the 'nodes' array of the RuleChainMetaData. Indicates the 'from' part of the connection.",
)
toIndex: int = Field(
...,
description="Index of rule node in the 'nodes' array of the RuleChainMetaData. Indicates the 'to' part of the connection.",
)
type: str = Field(
...,
description="Type of the relation. Typically indicated the result of processing by the 'from' rule node. For example, 'Success' or 'Failure'",
)
class Type18(Enum):
GENERAL = 'GENERAL'
ALARM = 'ALARM'
DEVICE_ACTIVITY = 'DEVICE_ACTIVITY'
ENTITY_ACTION = 'ENTITY_ACTION'
ALARM_COMMENT = 'ALARM_COMMENT'
RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT = 'RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT'
ALARM_ASSIGNMENT = 'ALARM_ASSIGNMENT'
NEW_PLATFORM_VERSION = 'NEW_PLATFORM_VERSION'
ENTITIES_LIMIT = 'ENTITIES_LIMIT'
API_USAGE_LIMIT = 'API_USAGE_LIMIT'
RULE_NODE = 'RULE_NODE'
INTEGRATION_LIFECYCLE_EVENT = 'INTEGRATION_LIFECYCLE_EVENT'
RATE_LIMITS = 'RATE_LIMITS'
EDGE_CONNECTION = 'EDGE_CONNECTION'
EDGE_COMMUNICATION_FAILURE = 'EDGE_COMMUNICATION_FAILURE'
TASK_PROCESSING_FAILURE = 'TASK_PROCESSING_FAILURE'
USER_ACTIVATED = 'USER_ACTIVATED'
USER_REGISTERED = 'USER_REGISTERED'
class DeliveryMethod(Enum):
WEB = 'WEB'
EMAIL = 'EMAIL'
SMS = 'SMS'
SLACK = 'SLACK'
MICROSOFT_TEAMS = 'MICROSOFT_TEAMS'
MOBILE_APP = 'MOBILE_APP'
class Status6(Enum):
SENT = 'SENT'
READ = 'READ'
class NotificationDeliveryMethodConfig(BaseModel):
method: str
class EntityType29(Enum):
NOTIFICATION = 'NOTIFICATION'
class NotificationId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType29 = Field(..., description='string', example='NOTIFICATION')
class NotificationInfo(BaseModel):
stateEntityId: Optional[EntityId] = None
dashboardId: Optional[DashboardId] = None
type: str
class NotificationPref(BaseModel):
enabled: Optional[bool] = None
enabledDeliveryMethods: Dict[str, bool]
class Status7(Enum):
PROCESSING = 'PROCESSING'
SENT = 'SENT'
SCHEDULED = 'SCHEDULED'
class NotificationRequestConfig(BaseModel):
sendingDelayInSec: Optional[conint(le=604800)] = None
class EntityType30(Enum):
NOTIFICATION_REQUEST = 'NOTIFICATION_REQUEST'
class NotificationRequestId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType30 = Field(
..., description='string', example='NOTIFICATION_REQUEST'
)
class Sent(BaseModel):
opaque: Optional[int] = None
acquire: Optional[int] = None
release: Optional[int] = None
andIncrement: Optional[int] = None
andDecrement: Optional[int] = None
plain: Optional[int] = None
class TotalErrors(BaseModel):
opaque: Optional[int] = None
acquire: Optional[int] = None
release: Optional[int] = None
andIncrement: Optional[int] = None
andDecrement: Optional[int] = None
plain: Optional[int] = None
class NotificationRequestStats(BaseModel):
sent: Optional[Dict[str, Sent]] = None
errors: Optional[Dict[str, Dict[str, str]]] = None
totalErrors: Optional[TotalErrors] = None
error: Optional[str] = None
class TriggerType(Enum):
ENTITY_ACTION = 'ENTITY_ACTION'
ALARM = 'ALARM'
ALARM_COMMENT = 'ALARM_COMMENT'
ALARM_ASSIGNMENT = 'ALARM_ASSIGNMENT'
DEVICE_ACTIVITY = 'DEVICE_ACTIVITY'
RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT = 'RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT'
INTEGRATION_LIFECYCLE_EVENT = 'INTEGRATION_LIFECYCLE_EVENT'
EDGE_CONNECTION = 'EDGE_CONNECTION'
EDGE_COMMUNICATION_FAILURE = 'EDGE_COMMUNICATION_FAILURE'
NEW_PLATFORM_VERSION = 'NEW_PLATFORM_VERSION'
ENTITIES_LIMIT = 'ENTITIES_LIMIT'
API_USAGE_LIMIT = 'API_USAGE_LIMIT'
RATE_LIMITS = 'RATE_LIMITS'
TASK_PROCESSING_FAILURE = 'TASK_PROCESSING_FAILURE'
class NotificationRuleConfig(BaseModel):
description: Optional[str] = None
class EntityType31(Enum):
NOTIFICATION_RULE = 'NOTIFICATION_RULE'
class NotificationRuleId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType31 = Field(
..., description='string', example='NOTIFICATION_RULE'
)
class NotificationRuleRecipientsConfig(BaseModel):
triggerType: TriggerType
class NotificationRuleTriggerConfig(BaseModel):
triggerType: Optional[TriggerType] = None
class NotificationTargetConfig(BaseModel):
description: Optional[str] = None
type: str
class EntityType32(Enum):
NOTIFICATION_TARGET = 'NOTIFICATION_TARGET'
class NotificationTargetId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType32 = Field(
..., description='string', example='NOTIFICATION_TARGET'
)
class NotificationType(Enum):
GENERAL = 'GENERAL'
ALARM = 'ALARM'
DEVICE_ACTIVITY = 'DEVICE_ACTIVITY'
ENTITY_ACTION = 'ENTITY_ACTION'
ALARM_COMMENT = 'ALARM_COMMENT'
RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT = 'RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT'
ALARM_ASSIGNMENT = 'ALARM_ASSIGNMENT'
NEW_PLATFORM_VERSION = 'NEW_PLATFORM_VERSION'
ENTITIES_LIMIT = 'ENTITIES_LIMIT'
API_USAGE_LIMIT = 'API_USAGE_LIMIT'
RULE_NODE = 'RULE_NODE'
INTEGRATION_LIFECYCLE_EVENT = 'INTEGRATION_LIFECYCLE_EVENT'
RATE_LIMITS = 'RATE_LIMITS'
EDGE_CONNECTION = 'EDGE_CONNECTION'
EDGE_COMMUNICATION_FAILURE = 'EDGE_COMMUNICATION_FAILURE'
TASK_PROCESSING_FAILURE = 'TASK_PROCESSING_FAILURE'
USER_ACTIVATED = 'USER_ACTIVATED'
USER_REGISTERED = 'USER_REGISTERED'
class EntityType33(Enum):
NOTIFICATION_TEMPLATE = 'NOTIFICATION_TEMPLATE'
class NotificationTemplateId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType33 = Field(
..., description='string', example='NOTIFICATION_TEMPLATE'
)
class Operation3(Enum):
EQUAL = 'EQUAL'
NOT_EQUAL = 'NOT_EQUAL'
GREATER = 'GREATER'
LESS = 'LESS'
GREATER_OR_EQUAL = 'GREATER_OR_EQUAL'
LESS_OR_EQUAL = 'LESS_OR_EQUAL'
class NumericFilterPredicate(KeyFilterPredicate):
operation: Optional[Operation3] = None
value: Optional[FilterPredicateValueDouble] = None
class TenantNameStrategy(Enum):
DOMAIN = 'DOMAIN'
EMAIL = 'EMAIL'
CUSTOM = 'CUSTOM'
class OAuth2BasicMapperConfig(BaseModel):
emailAttributeKey: Optional[str] = Field(
None,
description='Email attribute key of OAuth2 principal attributes. Must be specified for BASIC mapper type and cannot be specified for GITHUB type',
)
firstNameAttributeKey: Optional[str] = Field(
None, description='First name attribute key'
)
lastNameAttributeKey: Optional[str] = Field(
None, description='Last name attribute key'
)
tenantNameStrategy: TenantNameStrategy = Field(
...,
description="Tenant naming strategy. For DOMAIN type, domain for tenant name will be taken from the email (substring before '@')",
)
tenantNamePattern: Optional[str] = Field(
None,
description="Tenant name pattern for CUSTOM naming strategy. OAuth2 attributes in the pattern can be used by enclosing attribute key in '%{' and '}'",
example='%{email}',
)
customerNamePattern: Optional[str] = Field(
None,
description='Customer name pattern. When creating a user on the first OAuth2 log in, if specified, customer name will be used to create or find existing customer in the platform and assign customerId to the user',
)
defaultDashboardName: Optional[str] = Field(
None,
description="Name of the tenant's dashboard to set as default dashboard for newly created user",
)
alwaysFullScreen: Optional[bool] = Field(
None, description='Whether default dashboard should be open in full screen'
)
parentCustomerNamePattern: Optional[str] = None
userGroupsNamePattern: Optional[List[str]] = None
class Platform(Enum):
WEB = 'WEB'
ANDROID = 'ANDROID'
IOS = 'IOS'
class EntityType34(Enum):
TENANT = 'TENANT'
CUSTOMER = 'CUSTOMER'
USER = 'USER'
DASHBOARD = 'DASHBOARD'
ASSET = 'ASSET'
DEVICE = 'DEVICE'
ALARM = 'ALARM'
ENTITY_GROUP = 'ENTITY_GROUP'
CONVERTER = 'CONVERTER'
INTEGRATION = 'INTEGRATION'
RULE_CHAIN = 'RULE_CHAIN'
RULE_NODE = 'RULE_NODE'
SCHEDULER_EVENT = 'SCHEDULER_EVENT'
BLOB_ENTITY = 'BLOB_ENTITY'
ENTITY_VIEW = 'ENTITY_VIEW'
WIDGETS_BUNDLE = 'WIDGETS_BUNDLE'
WIDGET_TYPE = 'WIDGET_TYPE'
ROLE = 'ROLE'
GROUP_PERMISSION = 'GROUP_PERMISSION'
TENANT_PROFILE = 'TENANT_PROFILE'
DEVICE_PROFILE = 'DEVICE_PROFILE'
ASSET_PROFILE = 'ASSET_PROFILE'
API_USAGE_STATE = 'API_USAGE_STATE'
TB_RESOURCE = 'TB_RESOURCE'
OTA_PACKAGE = 'OTA_PACKAGE'
EDGE = 'EDGE'
RPC = 'RPC'
QUEUE = 'QUEUE'
NOTIFICATION_TARGET = 'NOTIFICATION_TARGET'
NOTIFICATION_TEMPLATE = 'NOTIFICATION_TEMPLATE'
NOTIFICATION_REQUEST = 'NOTIFICATION_REQUEST'
NOTIFICATION = 'NOTIFICATION'
NOTIFICATION_RULE = 'NOTIFICATION_RULE'
QUEUE_STATS = 'QUEUE_STATS'
OAUTH2_CLIENT = 'OAUTH2_CLIENT'
DOMAIN = 'DOMAIN'
MOBILE_APP = 'MOBILE_APP'
MOBILE_APP_BUNDLE = 'MOBILE_APP_BUNDLE'
CALCULATED_FIELD = 'CALCULATED_FIELD'
CALCULATED_FIELD_LINK = 'CALCULATED_FIELD_LINK'
BILLING_CUSTOMER = 'BILLING_CUSTOMER'
SUBSCRIPTION_PLAN = 'SUBSCRIPTION_PLAN'
SUBSCRIPTION = 'SUBSCRIPTION'
COUPON = 'COUPON'
class OAuth2ClientId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType34 = Field(..., example='DEVICE')
class OAuth2ClientInfo(BaseModel):
id: Optional[OAuth2ClientId] = None
createdTime: Optional[int] = None
title: Optional[str] = Field(
None, description='Oauth2 client registration title (e.g. My google)'
)
providerName: Optional[str] = Field(
None, description='Oauth2 client provider name (e.g. Google)'
)
platforms: Optional[List[Platform]] = Field(
None,
description='List of platforms for which usage of the OAuth2 client is allowed (empty for all allowed)',
)
name: Optional[str] = None
class OAuth2ClientLoginInfo(BaseModel):
name: Optional[str] = Field(
None, description='OAuth2 client name', example='GitHub'
)
icon: Optional[str] = Field(
None,
description='Name of the icon, displayed on OAuth2 log in button',
example='github-logo',
)
url: Optional[str] = Field(
None,
description='URI for OAuth2 log in. On HTTP GET request to this URI, it redirects to the OAuth2 provider page',
example='/oauth2/authorization/8352f191-2b4d-11ec-9ed1-cbf57c026ecc',
)
class OAuth2ClientRegistrationTemplateId(BaseModel):
id: UUID = Field(
..., description='string', example='784f394c-42b6-435a-983c-b7beff2784f9'
)
class OAuth2CustomMapperConfig(BaseModel):
url: Optional[str] = None
username: Optional[str] = None
password: Optional[str] = None
sendToken: Optional[bool] = None
class Type19(Enum):
BASIC = 'BASIC'
CUSTOM = 'CUSTOM'
GITHUB = 'GITHUB'
APPLE = 'APPLE'
class OAuth2MapperConfig(BaseModel):
allowUserCreation: Optional[bool] = Field(
None,
description='Whether user should be created if not yet present on the platform after successful authentication',
)
activateUser: Optional[bool] = Field(
None,
description='Whether user credentials should be activated when user is created after successful authentication',
)
type: Type19 = Field(
...,
description='Type of OAuth2 mapper. Depending on this param, different mapper config fields must be specified',
)
basic: Optional[OAuth2BasicMapperConfig] = Field(
None, description='Mapper config for BASIC and GITHUB mapper types'
)
custom: Optional[OAuth2CustomMapperConfig] = Field(
None, description='Mapper config for CUSTOM mapper type'
)
class ObjectAttributes(BaseModel):
dim: Optional[int] = None
ssid: Optional[int] = None
uri: Optional[str] = None
ver: Optional[Any] = None
lwm2m: Optional[LwM2mVersion] = None
pmin: Optional[int] = None
pmax: Optional[int] = None
gt: Optional[float] = None
lt: Optional[float] = None
st: Optional[float] = None
epmin: Optional[int] = None
epmax: Optional[int] = None
class Type20(Enum):
FIRMWARE = 'FIRMWARE'
SOFTWARE = 'SOFTWARE'
class ChecksumAlgorithm(Enum):
MD5 = 'MD5'
SHA256 = 'SHA256'
SHA384 = 'SHA384'
SHA512 = 'SHA512'
CRC32 = 'CRC32'
MURMUR3_32 = 'MURMUR3_32'
MURMUR3_128 = 'MURMUR3_128'
class Data(BaseModel):
short: Optional[int] = None
char: Optional[str] = None
int: Optional[int] = None
long: Optional[int] = None
float: Optional[float] = None
double: Optional[float] = None
direct: Optional[bool] = None
readOnly: Optional[bool] = None
class EntityType35(Enum):
OTA_PACKAGE = 'OTA_PACKAGE'
class OtaPackageId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType35 = Field(..., description='string', example='OTA_PACKAGE')
class OtherConfiguration(BaseModel):
fwUpdateStrategy: Optional[int] = None
swUpdateStrategy: Optional[int] = None
clientOnlyObserveAfterConnect: Optional[int] = None
powerMode: Optional[PowerMode] = None
psmActivityTimer: Optional[int] = None
edrxCycle: Optional[int] = None
pagingTransmissionWindow: Optional[int] = None
fwUpdateResource: Optional[str] = None
swUpdateResource: Optional[str] = None
defaultObjectIDVer: Optional[str] = None
class Type22(Enum):
TIME_SERIES = 'TIME_SERIES'
ATTRIBUTES = 'ATTRIBUTES'
class Scope4(Enum):
CLIENT_SCOPE = 'CLIENT_SCOPE'
SERVER_SCOPE = 'SERVER_SCOPE'
SHARED_SCOPE = 'SHARED_SCOPE'
class Output(BaseModel):
name: Optional[str] = None
type: Optional[Type22] = None
scope: Optional[Scope4] = None
decimalsByDefault: Optional[int] = None
class PSKLwM2MBootstrapServerCredential(LwM2MBootstrapServerCredential):
shortServerId: Optional[int] = Field(
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:1 and ID:65534 values MUST NOT be used for identifying the LwM2M Server.",
example=123,
)
bootstrapServerIs: Optional[bool] = Field(
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.',
example=True,
)
host: Optional[str] = Field(
None, description="Host for 'No Security' mode", example='0.0.0.0'
)
port: Optional[int] = Field(
None,
description="Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server",
example="'5685' or '5687'",
)
clientHoldOffTime: Optional[int] = Field(
None,
description='Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.)',
example=1,
)
serverPublicKey: Optional[str] = Field(
None,
description="Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded",
example='MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAZ0pSaGKHk/GrDaUDnQZpeEdGwX7m3Ws+U/kiVat\n+44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==',
)
serverCertificate: Optional[str] = Field(
None,
description="Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded",
example='MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs\nxEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM\nJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/\nBAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp\nAWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+7XmIXNClmizNJigj908mw=',
)
bootstrapServerAccountTimeout: Optional[int] = Field(
None,
description='Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.)',
example=0,
)
lifetime: Optional[int] = Field(
None,
description='Specify the lifetime of the registration in seconds.',
example=300,
)
defaultMinPeriod: Optional[int] = Field(
None,
description='The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesnt exist, the default value is 0.',
example=1,
)
notifIfDisabled: Optional[bool] = Field(
None,
description='If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true.',
example=True,
)
binding: Optional[str] = Field(
None,
description='This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode.',
example='U',
)
class PageDataEntityInfo(BaseModel):
data: Optional[List[EntityInfo]] = Field(None, description='Array of the entities')
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataEntityVersion(BaseModel):
data: Optional[List[EntityVersion]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataOAuth2ClientInfo(BaseModel):
data: Optional[List[OAuth2ClientInfo]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class Palette(BaseModel):
type: str = Field(
...,
description="Name of the pre-defined palette, or 'custom'",
example='custom',
)
colors: Optional[Dict[str, str]] = Field(
None, description='Mapping of hue identifier number to the rgb(a) color code'
)
extends: Optional[str] = Field(
None,
description='Pre-defined palette name that the custom palette extends',
example='purple',
)
class PaletteSettings(BaseModel):
primaryPalette: Palette = Field(..., description='Primary palette JSON')
accentPalette: Palette = Field(..., description='Accent palette JSON')
class PowerSavingConfiguration(BaseModel):
powerMode: Optional[PowerMode] = None
psmActivityTimer: Optional[int] = None
edrxCycle: Optional[int] = None
pagingTransmissionWindow: Optional[int] = None
class Type23(Enum):
SKIP_ALL_FAILURES = 'SKIP_ALL_FAILURES'
SKIP_ALL_FAILURES_AND_TIMED_OUT = 'SKIP_ALL_FAILURES_AND_TIMED_OUT'
RETRY_ALL = 'RETRY_ALL'
RETRY_FAILED = 'RETRY_FAILED'
RETRY_TIMED_OUT = 'RETRY_TIMED_OUT'
RETRY_FAILED_AND_TIMED_OUT = 'RETRY_FAILED_AND_TIMED_OUT'
class ProcessingStrategy(BaseModel):
type: Optional[Type23] = None
retries: Optional[int] = None
failurePercentage: Optional[float] = None
pauseBetweenRetries: Optional[int] = None
maxPauseBetweenRetries: Optional[int] = None
class BadgePosition(Enum):
RIGHT = 'RIGHT'
LEFT = 'LEFT'
class QRCodeConfig(BaseModel):
showOnHomePage: Optional[bool] = None
badgeEnabled: Optional[bool] = None
qrCodeLabelEnabled: Optional[bool] = None
badgePosition: Optional[BadgePosition] = None
qrCodeLabel: Optional[str] = None
class QrCodeSettingsId(BaseModel):
id: UUID = Field(
..., description='string', example='784f394c-42b6-435a-983c-b7beff2784f9'
)
class EntityType36(Enum):
QUEUE = 'QUEUE'
class QueueId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType36 = Field(..., description='string', example='QUEUE')
class EntityType37(Enum):
QUEUE_STATS = 'QUEUE_STATS'
class QueueStatsId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType37 = Field(..., description='string', example='QUEUE_STATS')
class RPKLwM2MBootstrapServerCredential(LwM2MBootstrapServerCredential):
shortServerId: Optional[int] = Field(
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:1 and ID:65534 values MUST NOT be used for identifying the LwM2M Server.",
example=123,
)
bootstrapServerIs: Optional[bool] = Field(
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.',
example=True,
)
host: Optional[str] = Field(
None, description="Host for 'No Security' mode", example='0.0.0.0'
)
port: Optional[int] = Field(
None,
description="Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server",
example="'5685' or '5687'",
)
clientHoldOffTime: Optional[int] = Field(
None,
description='Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.)',
example=1,
)
serverPublicKey: Optional[str] = Field(
None,
description="Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded",
example='MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAZ0pSaGKHk/GrDaUDnQZpeEdGwX7m3Ws+U/kiVat\n+44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==',
)
serverCertificate: Optional[str] = Field(
None,
description="Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded",
example='MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs\nxEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM\nJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/\nBAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp\nAWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+7XmIXNClmizNJigj908mw=',
)
bootstrapServerAccountTimeout: Optional[int] = Field(
None,
description='Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.)',
example=0,
)
lifetime: Optional[int] = Field(
None,
description='Specify the lifetime of the registration in seconds.',
example=300,
)
defaultMinPeriod: Optional[int] = Field(
None,
description='The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesnt exist, the default value is 0.',
example=1,
)
notifIfDisabled: Optional[bool] = Field(
None,
description='If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true.',
example=True,
)
binding: Optional[str] = Field(
None,
description='This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode.',
example='U',
)
class Api(Enum):
ENTITY_EXPORT = 'ENTITY_EXPORT'
ENTITY_IMPORT = 'ENTITY_IMPORT'
NOTIFICATION_REQUESTS = 'NOTIFICATION_REQUESTS'
NOTIFICATION_REQUESTS_PER_RULE = 'NOTIFICATION_REQUESTS_PER_RULE'
REST_REQUESTS_PER_TENANT = 'REST_REQUESTS_PER_TENANT'
REST_REQUESTS_PER_CUSTOMER = 'REST_REQUESTS_PER_CUSTOMER'
WS_UPDATES_PER_SESSION = 'WS_UPDATES_PER_SESSION'
CASSANDRA_QUERIES = 'CASSANDRA_QUERIES'
EDGE_EVENTS = 'EDGE_EVENTS'
EDGE_EVENTS_PER_EDGE = 'EDGE_EVENTS_PER_EDGE'
EDGE_UPLINK_MESSAGES = 'EDGE_UPLINK_MESSAGES'
EDGE_UPLINK_MESSAGES_PER_EDGE = 'EDGE_UPLINK_MESSAGES_PER_EDGE'
INTEGRATION_MSGS_PER_TENANT = 'INTEGRATION_MSGS_PER_TENANT'
INTEGRATION_MSGS_PER_DEVICE = 'INTEGRATION_MSGS_PER_DEVICE'
INTEGRATION_MSGS_PER_ASSET = 'INTEGRATION_MSGS_PER_ASSET'
INTEGRATION_EVENTS = 'INTEGRATION_EVENTS'
CONVERTER_EVENTS = 'CONVERTER_EVENTS'
REPORTS = 'REPORTS'
PASSWORD_RESET = 'PASSWORD_RESET'
TWO_FA_VERIFICATION_CODE_SEND = 'TWO_FA_VERIFICATION_CODE_SEND'
TWO_FA_VERIFICATION_CODE_CHECK = 'TWO_FA_VERIFICATION_CODE_CHECK'
TRANSPORT_MESSAGES_PER_TENANT = 'TRANSPORT_MESSAGES_PER_TENANT'
TRANSPORT_MESSAGES_PER_DEVICE = 'TRANSPORT_MESSAGES_PER_DEVICE'
TRANSPORT_MESSAGES_PER_GATEWAY = 'TRANSPORT_MESSAGES_PER_GATEWAY'
TRANSPORT_MESSAGES_PER_GATEWAY_DEVICE = 'TRANSPORT_MESSAGES_PER_GATEWAY_DEVICE'
EMAILS = 'EMAILS'
WS_SUBSCRIPTIONS = 'WS_SUBSCRIPTIONS'
CALCULATED_FIELD_DEBUG_EVENTS = 'CALCULATED_FIELD_DEBUG_EVENTS'
class RateLimitsNotificationRuleTriggerConfig(NotificationRuleTriggerConfig):
apis: Optional[List[Api]] = Field(None, Set=True)
class RawDataEventFilter(EventFilter):
server: Optional[str] = Field(
None,
description='String value representing the server name, identifier or ip address where the platform is running',
example='ip-172-31-24-152',
)
uuid: Optional[str] = Field(
None, description='String value representing the uuid', example='STARTED'
)
messageType: Optional[str] = Field(
None, description='String value representing the message type'
)
message: Optional[str] = Field(
None, description='String value representing the message'
)
eventType: EventType = Field(
..., description='String value representing the event type', example='STATS'
)
class Type24(Enum):
TS_LATEST = 'TS_LATEST'
ATTRIBUTE = 'ATTRIBUTE'
TS_ROLLING = 'TS_ROLLING'
class ReferencedEntityKey(BaseModel):
key: Optional[str] = None
type: Optional[Type24] = None
scope: Optional[Scope4] = None
class EntityType38(Enum):
TENANT = 'TENANT'
CUSTOMER = 'CUSTOMER'
USER = 'USER'
DASHBOARD = 'DASHBOARD'
ASSET = 'ASSET'
DEVICE = 'DEVICE'
ALARM = 'ALARM'
ENTITY_GROUP = 'ENTITY_GROUP'
CONVERTER = 'CONVERTER'
INTEGRATION = 'INTEGRATION'
RULE_CHAIN = 'RULE_CHAIN'
RULE_NODE = 'RULE_NODE'
SCHEDULER_EVENT = 'SCHEDULER_EVENT'
BLOB_ENTITY = 'BLOB_ENTITY'
ENTITY_VIEW = 'ENTITY_VIEW'
WIDGETS_BUNDLE = 'WIDGETS_BUNDLE'
WIDGET_TYPE = 'WIDGET_TYPE'
ROLE = 'ROLE'
GROUP_PERMISSION = 'GROUP_PERMISSION'
TENANT_PROFILE = 'TENANT_PROFILE'
DEVICE_PROFILE = 'DEVICE_PROFILE'
ASSET_PROFILE = 'ASSET_PROFILE'
API_USAGE_STATE = 'API_USAGE_STATE'
TB_RESOURCE = 'TB_RESOURCE'
OTA_PACKAGE = 'OTA_PACKAGE'
EDGE = 'EDGE'
RPC = 'RPC'
QUEUE = 'QUEUE'
NOTIFICATION_TARGET = 'NOTIFICATION_TARGET'
NOTIFICATION_TEMPLATE = 'NOTIFICATION_TEMPLATE'
NOTIFICATION_REQUEST = 'NOTIFICATION_REQUEST'
NOTIFICATION = 'NOTIFICATION'
NOTIFICATION_RULE = 'NOTIFICATION_RULE'
QUEUE_STATS = 'QUEUE_STATS'
OAUTH2_CLIENT = 'OAUTH2_CLIENT'
DOMAIN = 'DOMAIN'
MOBILE_APP = 'MOBILE_APP'
MOBILE_APP_BUNDLE = 'MOBILE_APP_BUNDLE'
CALCULATED_FIELD = 'CALCULATED_FIELD'
CALCULATED_FIELD_LINK = 'CALCULATED_FIELD_LINK'
BILLING_CUSTOMER = 'BILLING_CUSTOMER'
SUBSCRIPTION_PLAN = 'SUBSCRIPTION_PLAN'
SUBSCRIPTION = 'SUBSCRIPTION'
COUPON = 'COUPON'
class RelationEntityTypeFilter(BaseModel):
relationType: Optional[str] = Field(
None,
description="Type of the relation between root entity and other entity (e.g. 'Contains' or 'Manages').",
example='Contains',
)
entityTypes: Optional[List[EntityType38]] = Field(
None,
description="Array of entity types to filter the related entities (e.g. 'DEVICE', 'ASSET').",
)
negate: Optional[bool] = Field(
None, description='Negate relation type between root entity and other entity.'
)
class MultiRootEntitiesType(Enum):
TENANT = 'TENANT'
CUSTOMER = 'CUSTOMER'
USER = 'USER'
DASHBOARD = 'DASHBOARD'
ASSET = 'ASSET'
DEVICE = 'DEVICE'
ALARM = 'ALARM'
ENTITY_GROUP = 'ENTITY_GROUP'
CONVERTER = 'CONVERTER'
INTEGRATION = 'INTEGRATION'
RULE_CHAIN = 'RULE_CHAIN'
RULE_NODE = 'RULE_NODE'
SCHEDULER_EVENT = 'SCHEDULER_EVENT'
BLOB_ENTITY = 'BLOB_ENTITY'
ENTITY_VIEW = 'ENTITY_VIEW'
WIDGETS_BUNDLE = 'WIDGETS_BUNDLE'
WIDGET_TYPE = 'WIDGET_TYPE'
ROLE = 'ROLE'
GROUP_PERMISSION = 'GROUP_PERMISSION'
TENANT_PROFILE = 'TENANT_PROFILE'
DEVICE_PROFILE = 'DEVICE_PROFILE'
ASSET_PROFILE = 'ASSET_PROFILE'
API_USAGE_STATE = 'API_USAGE_STATE'
TB_RESOURCE = 'TB_RESOURCE'
OTA_PACKAGE = 'OTA_PACKAGE'
EDGE = 'EDGE'
RPC = 'RPC'
QUEUE = 'QUEUE'
NOTIFICATION_TARGET = 'NOTIFICATION_TARGET'
NOTIFICATION_TEMPLATE = 'NOTIFICATION_TEMPLATE'
NOTIFICATION_REQUEST = 'NOTIFICATION_REQUEST'
NOTIFICATION = 'NOTIFICATION'
NOTIFICATION_RULE = 'NOTIFICATION_RULE'
QUEUE_STATS = 'QUEUE_STATS'
OAUTH2_CLIENT = 'OAUTH2_CLIENT'
DOMAIN = 'DOMAIN'
MOBILE_APP = 'MOBILE_APP'
MOBILE_APP_BUNDLE = 'MOBILE_APP_BUNDLE'
CALCULATED_FIELD = 'CALCULATED_FIELD'
CALCULATED_FIELD_LINK = 'CALCULATED_FIELD_LINK'
BILLING_CUSTOMER = 'BILLING_CUSTOMER'
SUBSCRIPTION_PLAN = 'SUBSCRIPTION_PLAN'
SUBSCRIPTION = 'SUBSCRIPTION'
COUPON = 'COUPON'
class RelationsQueryFilter(EntityFilter):
rootEntity: Optional[EntityId] = None
multiRootEntitiesType: Optional[MultiRootEntitiesType] = None
multiRootEntityIds: Optional[List[str]] = Field(None, Set=True)
direction: Optional[Direction4] = None
filters: Optional[List[RelationEntityTypeFilter]] = None
maxLevel: Optional[int] = None
fetchLastLevelOnly: Optional[bool] = None
negate: Optional[bool] = None
multiRoot: Optional[bool] = None
class RootType(Enum):
TENANT = 'TENANT'
CUSTOMER = 'CUSTOMER'
USER = 'USER'
DASHBOARD = 'DASHBOARD'
ASSET = 'ASSET'
DEVICE = 'DEVICE'
ALARM = 'ALARM'
ENTITY_GROUP = 'ENTITY_GROUP'
CONVERTER = 'CONVERTER'
INTEGRATION = 'INTEGRATION'
RULE_CHAIN = 'RULE_CHAIN'
RULE_NODE = 'RULE_NODE'
SCHEDULER_EVENT = 'SCHEDULER_EVENT'
BLOB_ENTITY = 'BLOB_ENTITY'
ENTITY_VIEW = 'ENTITY_VIEW'
WIDGETS_BUNDLE = 'WIDGETS_BUNDLE'
WIDGET_TYPE = 'WIDGET_TYPE'
ROLE = 'ROLE'
GROUP_PERMISSION = 'GROUP_PERMISSION'
TENANT_PROFILE = 'TENANT_PROFILE'
DEVICE_PROFILE = 'DEVICE_PROFILE'
ASSET_PROFILE = 'ASSET_PROFILE'
API_USAGE_STATE = 'API_USAGE_STATE'
TB_RESOURCE = 'TB_RESOURCE'
OTA_PACKAGE = 'OTA_PACKAGE'
EDGE = 'EDGE'
RPC = 'RPC'
QUEUE = 'QUEUE'
NOTIFICATION_TARGET = 'NOTIFICATION_TARGET'
NOTIFICATION_TEMPLATE = 'NOTIFICATION_TEMPLATE'
NOTIFICATION_REQUEST = 'NOTIFICATION_REQUEST'
NOTIFICATION = 'NOTIFICATION'
NOTIFICATION_RULE = 'NOTIFICATION_RULE'
QUEUE_STATS = 'QUEUE_STATS'
OAUTH2_CLIENT = 'OAUTH2_CLIENT'
DOMAIN = 'DOMAIN'
MOBILE_APP = 'MOBILE_APP'
MOBILE_APP_BUNDLE = 'MOBILE_APP_BUNDLE'
CALCULATED_FIELD = 'CALCULATED_FIELD'
CALCULATED_FIELD_LINK = 'CALCULATED_FIELD_LINK'
BILLING_CUSTOMER = 'BILLING_CUSTOMER'
SUBSCRIPTION_PLAN = 'SUBSCRIPTION_PLAN'
SUBSCRIPTION = 'SUBSCRIPTION'
COUPON = 'COUPON'
class RelationTypeGroup(Enum):
COMMON = 'COMMON'
DASHBOARD = 'DASHBOARD'
FROM_ENTITY_GROUP = 'FROM_ENTITY_GROUP'
RULE_CHAIN = 'RULE_CHAIN'
RULE_NODE = 'RULE_NODE'
EDGE = 'EDGE'
EDGE_AUTO_ASSIGN_RULE_CHAIN = 'EDGE_AUTO_ASSIGN_RULE_CHAIN'
class RelationsSearchParameters(BaseModel):
rootId: Optional[UUID] = Field(
None,
description='Root entity id to start search from.',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
rootType: Optional[RootType] = Field(None, description='Type of the root entity.')
direction: Optional[Direction4] = Field(
None, description='Type of the root entity.'
)
relationTypeGroup: Optional[RelationTypeGroup] = Field(
None, description='Type of the relation.'
)
maxLevel: Optional[int] = Field(
None, description='Maximum level of the search depth.'
)
fetchLastLevelOnly: Optional[bool] = Field(
None,
description="Fetch entities that match the last level of search. Useful to find Devices that are strictly 'maxLevel' relations away from the root entity.",
)
class RepeatingAlarmConditionSpec(AlarmConditionSpec):
predicate: Optional[FilterPredicateValueInteger] = None
class ReportConfig(BaseModel):
baseUrl: str = Field(
...,
description='Base URL of ThingsBoard UI that should be accessible by Report Server.',
example='https:thingsboard.cloud',
)
dashboardId: str = Field(
...,
description='A string value representing the dashboard id.',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
state: Optional[str] = Field(
None, description='Target dashboard state for report generation.'
)
timezone: str = Field(
...,
description='Timezone in which target dashboard will be presented in report.',
example='Europe/Kiev',
)
useDashboardTimewindow: Optional[bool] = Field(
None,
description='If set, timewindow configured in the target dashboard will be used during report generation.',
example=True,
)
timewindow: Optional[JsonNode] = Field(
None,
description='Specific dashboard timewindow that will be used during report generation.',
)
namePattern: str = Field(
...,
description='If set, timewindow configured in the target dashboard will be used during report generation.',
example='report-%d{yyyy-MM-dd_HH:mm:ss}',
)
type: Optional[str] = Field(
None, description='Report file type, can be PDF | PNG | JPEG.', example='pdf'
)
useCurrentUserCredentials: Optional[bool] = Field(
None,
description='If set, credentials of user created this report configuration will be used to open dashboard UI during report generation.',
example=True,
)
userId: str = Field(
...,
description='A string value representing the user id.',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
class AuthMethod(Enum):
USERNAME_PASSWORD = 'USERNAME_PASSWORD'
PRIVATE_KEY = 'PRIVATE_KEY'
class RepositorySettings(BaseModel):
repositoryUri: Optional[str] = None
authMethod: Optional[AuthMethod] = None
username: Optional[str] = None
password: Optional[str] = None
privateKeyFileName: Optional[str] = None
privateKey: Optional[str] = None
privateKeyPassword: Optional[str] = None
defaultBranch: Optional[str] = None
readOnly: Optional[bool] = None
showMergeCommits: Optional[bool] = None
localOnly: Optional[bool] = None
class RepositorySettingsInfo(BaseModel):
configured: Optional[bool] = None
readOnly: Optional[bool] = None
class ResetPasswordEmailRequest(BaseModel):
email: Optional[str] = Field(
None, description='The email of the user', example='user@example.com'
)
class ResetPasswordRequest(BaseModel):
resetToken: Optional[str] = Field(
None, description='The reset token to verify', example='AAB254FF67D..'
)
password: Optional[str] = Field(
None, description='The new password to set', example='secret'
)
class Type25(Enum):
LWM2M_MODEL = 'LWM2M_MODEL'
JKS = 'JKS'
PKCS_12 = 'PKCS_12'
JS_MODULE = 'JS_MODULE'
IMAGE = 'IMAGE'
DASHBOARD = 'DASHBOARD'
class SubType(Enum):
IMAGE = 'IMAGE'
SCADA_SYMBOL = 'SCADA_SYMBOL'
EXTENSION = 'EXTENSION'
MODULE = 'MODULE'
class ResourceExportData(BaseModel):
link: Optional[str] = None
title: Optional[str] = None
type: Optional[Type25] = None
subType: Optional[SubType] = None
resourceKey: Optional[str] = None
fileName: Optional[str] = None
publicResourceKey: Optional[str] = None
isPublic: Optional[bool] = None
mediaType: Optional[str] = None
data: Optional[str] = None
public: Optional[bool] = None
class Type26(Enum):
GENERIC = 'GENERIC'
GROUP = 'GROUP'
class EntityType39(Enum):
ROLE = 'ROLE'
class RoleId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType39 = Field(..., description='string', example='ROLE')
class Status9(Enum):
QUEUED = 'QUEUED'
SENT = 'SENT'
DELIVERED = 'DELIVERED'
SUCCESSFUL = 'SUCCESSFUL'
TIMEOUT = 'TIMEOUT'
EXPIRED = 'EXPIRED'
FAILED = 'FAILED'
DELETED = 'DELETED'
class EntityType40(Enum):
RPC = 'RPC'
class RpcId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType40 = Field(..., description='string', example='RPC')
class Type27(Enum):
CORE = 'CORE'
EDGE = 'EDGE'
class RuleChainDebugEventFilter(EventFilter):
server: Optional[str] = Field(
None,
description='String value representing the server name, identifier or ip address where the platform is running',
example='ip-172-31-24-152',
)
isError: Optional[bool] = None
errorStr: Optional[str] = Field(
None,
description="The case insensitive 'contains' filter based on error message",
example='not present in the DB',
)
message: Optional[str] = Field(
None, description='String value representing the message'
)
error: Optional[bool] = None
eventType: EventType = Field(
..., description='String value representing the event type', example='STATS'
)
class EntityType41(Enum):
RULE_CHAIN = 'RULE_CHAIN'
class RuleChainId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType41 = Field(..., description='string', example='RULE_CHAIN')
class RuleChainImportResult(BaseModel):
ruleChainId: Optional[RuleChainId] = None
ruleChainName: Optional[str] = None
updated: Optional[bool] = None
error: Optional[str] = None
class RuleChainEvent(Enum):
CREATED = 'CREATED'
STARTED = 'STARTED'
ACTIVATED = 'ACTIVATED'
SUSPENDED = 'SUSPENDED'
UPDATED = 'UPDATED'
STOPPED = 'STOPPED'
DELETED = 'DELETED'
FAILED = 'FAILED'
DEACTIVATED = 'DEACTIVATED'
class RuleNodeEvent(Enum):
CREATED = 'CREATED'
STARTED = 'STARTED'
ACTIVATED = 'ACTIVATED'
SUSPENDED = 'SUSPENDED'
UPDATED = 'UPDATED'
STOPPED = 'STOPPED'
DELETED = 'DELETED'
FAILED = 'FAILED'
DEACTIVATED = 'DEACTIVATED'
class RuleEngineComponentLifecycleEventNotificationRuleTriggerConfig(
NotificationRuleTriggerConfig
):
ruleChains: Optional[List[UUID]] = Field(None, Set=True)
ruleChainEvents: Optional[List[RuleChainEvent]] = Field(None, Set=True)
onlyRuleChainLifecycleFailures: Optional[bool] = None
trackRuleNodeEvents: Optional[bool] = None
ruleNodeEvents: Optional[List[RuleNodeEvent]] = Field(None, Set=True)
onlyRuleNodeLifecycleFailures: Optional[bool] = None
class MsgDirectionType(Enum):
IN = 'IN'
OUT = 'OUT'
class EntityType42(Enum):
DEVICE = 'DEVICE'
class RuleNodeDebugEventFilter(EventFilter):
server: Optional[str] = Field(
None,
description='String value representing the server name, identifier or ip address where the platform is running',
example='ip-172-31-24-152',
)
isError: Optional[bool] = None
errorStr: Optional[str] = Field(
None,
description="The case insensitive 'contains' filter based on error message",
example='not present in the DB',
)
msgDirectionType: Optional[MsgDirectionType] = Field(
None,
description='String value representing msg direction type (incoming to entity or outcoming from entity)',
)
entityId: Optional[str] = Field(
None,
description='String value representing the entity id in the event body (originator of the message)',
example='de9d54a0-2b7a-11ec-a3cc-23386423d98f',
)
entityType: Optional[EntityType42] = Field(
None, description='String value representing the entity type'
)
msgId: Optional[str] = Field(
None,
description='String value representing the message id in the rule engine',
example='de9d54a0-2b7a-11ec-a3cc-23386423d98f',
)
msgType: Optional[str] = Field(
None,
description='String value representing the message type',
example='POST_TELEMETRY_REQUEST',
)
relationType: Optional[str] = Field(
None,
description='String value representing the type of message routing',
example='Success',
)
dataSearch: Optional[str] = Field(
None,
description="The case insensitive 'contains' filter based on data (key and value) for the message.",
example='humidity',
)
metadataSearch: Optional[str] = Field(
None,
description="The case insensitive 'contains' filter based on metadata (key and value) for the message.",
example='deviceName',
)
error: Optional[bool] = None
eventType: EventType = Field(
..., description='String value representing the event type', example='STATS'
)
class EntityType43(Enum):
RULE_NODE = 'RULE_NODE'
class RuleNodeId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType43 = Field(..., description='string', example='RULE_NODE')
class Type28(Enum):
FIRMWARE = 'FIRMWARE'
SOFTWARE = 'SOFTWARE'
class SchedulerEventFilter(EntityFilter):
originator: Optional[EntityId] = None
eventType: Optional[str] = None
class EntityType44(Enum):
SCHEDULER_EVENT = 'SCHEDULER_EVENT'
class SchedulerEventId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType44 = Field(
..., description='string', example='SCHEDULER_EVENT'
)
class Type29(Enum):
WEB = 'WEB'
MOBILE = 'MOBILE'
class ShareGroupRequest(BaseModel):
ownerId: Optional[EntityId] = Field(
None,
description="In case 'allUserGroup' is set to true, this property specifies the owner of the user group 'All'. Either Tenant or Customer Id.",
)
allUserGroup: bool = Field(
...,
description="Indicate that the group should be shared with user group 'All' that belongs to Tenant or Customer (see 'ownerId' property description).",
)
userGroupId: Optional[EntityGroupId] = Field(
None,
description="In case 'allUserGroup' is set to false, this property specifies the specific user group that the entity group should be shared with.",
)
readElseWrite: Optional[bool] = Field(
None,
description="Used if 'roleIds' property is not present. if the value is 'true', creates role with read-only permissions. If the value is 'false', creates role with write permissions.",
)
roleIds: Optional[List[RoleId]] = Field(
None,
description="List of group role Ids that should be used to share the entity group with the user group. If not set, the platform will create new role (see 'readElseWrite' property description)",
)
class ShortCustomerInfo(BaseModel):
customerId: Optional[CustomerId] = Field(
None, description='JSON object with the customer Id.'
)
title: Optional[str] = Field(None, description='Title of the customer.')
isPublic: Optional[bool] = None
public: Optional[bool] = None
class ShortEntityView(BaseModel):
id: EntityId = Field(..., description='Entity Id object')
name: str = Field(..., description='Name of the entity')
class Id1(Enum):
EMAIL = 'EMAIL'
PASSWORD = 'PASSWORD'
REPEAT_PASSWORD = 'REPEAT_PASSWORD'
FIRST_NAME = 'FIRST_NAME'
LAST_NAME = 'LAST_NAME'
PHONE = 'PHONE'
COUNTRY = 'COUNTRY'
CITY = 'CITY'
STATE = 'STATE'
ZIP = 'ZIP'
ADDRESS = 'ADDRESS'
ADDRESS2 = 'ADDRESS2'
class SignUpField(BaseModel):
id: Id1 = Field(..., description='Signup field id')
label: str = Field(..., description='Signup field label')
required: Optional[bool] = Field(None, description='Indicates if field is required')
class SignUpRequest(BaseModel):
fields: Optional[Dict[str, str]] = Field(
None, description='List of sign-up form fields'
)
recaptchaResponse: Optional[str] = Field(
None, description='Response from reCAPTCHA validation'
)
pkgName: Optional[str] = Field(
None, description='For mobile apps only. Mobile app package name'
)
platform: Optional[Platform] = Field(
None, description='For mobile apps only. Mobile app package platform'
)
appSecret: Optional[str] = Field(
None, description='For mobile apps only. Mobile app secret'
)
class SimpleAlarmConditionSpec(AlarmConditionSpec):
pass
class SingleEntityFilter(EntityFilter):
singleEntity: Optional[EntityId] = None
class Type30(Enum):
DIRECT = 'DIRECT'
PUBLIC_CHANNEL = 'PUBLIC_CHANNEL'
PRIVATE_CHANNEL = 'PRIVATE_CHANNEL'
class SlackConversation(BaseModel):
type: Type30
id: str
name: str
wholeName: Optional[str] = None
email: Optional[str] = None
title: Optional[str] = None
class SlackDeliveryMethodNotificationTemplate(DeliveryMethodNotificationTemplate):
body: str
class SlackNotificationDeliveryMethodConfig(NotificationDeliveryMethodConfig):
botToken: str
class ConversationType(Enum):
DIRECT = 'DIRECT'
PUBLIC_CHANNEL = 'PUBLIC_CHANNEL'
PRIVATE_CHANNEL = 'PRIVATE_CHANNEL'
class SlackNotificationTargetConfig(NotificationTargetConfig):
conversationType: Optional[ConversationType] = None
conversation: SlackConversation
class ProtocolVersion(Enum):
field_3_3__3_4 = '3.3, 3.4'
class BindType(Enum):
TX = 'TX'
RX = 'RX'
TRX = 'TRX'
class CodingScheme(Enum):
field_0_10 = '0-10'
field_13_14 = '13-14'
class SmsDeliveryMethodNotificationTemplate(DeliveryMethodNotificationTemplate):
body: str
class SmsProviderConfiguration(BaseModel):
type: str
class Spec(Enum):
TELEMETRY_QUERYING = 'TELEMETRY_QUERYING'
CLIENT_ATTRIBUTES_QUERYING = 'CLIENT_ATTRIBUTES_QUERYING'
SHARED_ATTRIBUTES_SETTING = 'SHARED_ATTRIBUTES_SETTING'
TO_DEVICE_RPC_REQUEST = 'TO_DEVICE_RPC_REQUEST'
TO_SERVER_RPC_REQUEST = 'TO_SERVER_RPC_REQUEST'
class SnmpCommunicationConfig(BaseModel):
spec: Optional[Spec] = None
class SnmpDeviceProfileTransportConfiguration(DeviceProfileTransportConfiguration):
timeoutMs: Optional[int] = None
retries: Optional[int] = None
communicationConfigs: Optional[List[SnmpCommunicationConfig]] = None
class ProtocolVersion1(Enum):
V1 = 'V1'
V2C = 'V2C'
V3 = 'V3'
class AuthenticationProtocol(Enum):
SHA_1 = 'SHA_1'
SHA_224 = 'SHA_224'
SHA_256 = 'SHA_256'
SHA_384 = 'SHA_384'
SHA_512 = 'SHA_512'
MD5 = 'MD5'
class PrivacyProtocol(Enum):
DES = 'DES'
AES_128 = 'AES_128'
AES_192 = 'AES_192'
AES_256 = 'AES_256'
class SnmpDeviceTransportConfiguration(DeviceTransportConfiguration):
host: Optional[str] = None
port: Optional[int] = None
protocolVersion: Optional[ProtocolVersion1] = None
community: Optional[str] = None
username: Optional[str] = None
securityName: Optional[str] = None
contextName: Optional[str] = None
authenticationProtocol: Optional[AuthenticationProtocol] = None
authenticationPassphrase: Optional[str] = None
privacyProtocol: Optional[PrivacyProtocol] = None
privacyPassphrase: Optional[str] = None
engineId: Optional[str] = None
class DataType(Enum):
BOOLEAN = 'BOOLEAN'
LONG = 'LONG'
DOUBLE = 'DOUBLE'
STRING = 'STRING'
JSON = 'JSON'
class SnmpMapping(BaseModel):
oid: Optional[str] = None
key: Optional[str] = None
dataType: Optional[DataType] = None
class SolutionInstallResponse(BaseModel):
dashboardGroupId: Optional[EntityGroupId] = Field(
None, description='Id of the group that contains main dashboard of the solution'
)
dashboardId: Optional[DashboardId] = Field(
None, description='Id of the main dashboard of the solution'
)
publicId: Optional[CustomerId] = Field(
None, description='Id of the public customer if solution has public entities'
)
mainDashboardPublic: Optional[bool] = Field(
None, description='Is the main dashboard public'
)
details: Optional[str] = Field(
None, description='Markdown with solution usage instructions'
)
success: Optional[bool] = Field(
None, description='Indicates that template was installed successfully'
)
class StarredDashboardInfo(BaseModel):
id: Optional[UUID] = Field(None, description='JSON object with Dashboard id.')
title: Optional[str] = Field(None, description='Title of the dashboard.')
starredAt: Optional[int] = Field(None, description='Starred timestamp')
class StateEntityOwnerFilter(EntityFilter):
singleEntity: Optional[EntityId] = None
class StatisticsEventFilter(EventFilter):
server: Optional[str] = Field(
None,
description='String value representing the server name, identifier or ip address where the platform is running',
example='ip-172-31-24-152',
)
minMessagesProcessed: Optional[int] = Field(
None,
description='The minimum number of successfully processed messages',
example=25,
)
maxMessagesProcessed: Optional[int] = Field(
None,
description='The maximum number of successfully processed messages',
example=250,
)
minErrorsOccurred: Optional[int] = Field(
None,
description='The minimum number of errors occurred during messages processing',
example=30,
)
maxErrorsOccurred: Optional[int] = Field(
None,
description='The maximum number of errors occurred during messages processing',
example=300,
)
eventType: EventType = Field(
..., description='String value representing the event type', example='STATS'
)
class StoreInfo(BaseModel):
appId: Optional[str] = None
sha256CertFingerprints: Optional[str] = None
storeLink: Optional[str] = None
class Operation4(Enum):
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'
class StringFilterPredicate(KeyFilterPredicate):
operation: Optional[Operation4] = None
value: Optional[FilterPredicateValueString] = None
ignoreCase: Optional[bool] = None
class Type31(Enum):
BURST = 'BURST'
BATCH = 'BATCH'
SEQUENTIAL_BY_ORIGINATOR = 'SEQUENTIAL_BY_ORIGINATOR'
SEQUENTIAL_BY_TENANT = 'SEQUENTIAL_BY_TENANT'
SEQUENTIAL = 'SEQUENTIAL'
class SubmitStrategy(BaseModel):
type: Optional[Type31] = None
batchSize: Optional[int] = None
class SubscriptionUsage(BaseModel):
devices: Optional[int] = None
assets: Optional[int] = None
customers: Optional[int] = None
users: Optional[int] = None
dashboards: Optional[int] = None
ruleChains: Optional[int] = None
integrations: Optional[int] = None
converters: Optional[int] = None
schedulerEvents: Optional[int] = None
transportMessages: Optional[int] = None
transportDataPoints: Optional[int] = None
reExecutions: Optional[int] = None
jsExecutions: Optional[int] = None
dpStorageDays: Optional[int] = None
emails: Optional[int] = None
sms: Optional[int] = None
alarms: Optional[int] = None
class SystemInfoData(BaseModel):
serviceId: Optional[str] = Field(None, description='Service Id.')
serviceType: Optional[str] = Field(None, description='Service type.')
cpuUsage: Optional[int] = Field(None, description='CPU usage, in percent.')
cpuCount: Optional[int] = Field(None, description='Total CPU usage.')
memoryUsage: Optional[int] = Field(
None, description='Memory usage, in percent.'
)
totalMemory: Optional[int] = Field(
None, description='Total memory in bytes.'
)
discUsage: Optional[int] = Field(
None, description='Disk usage, in percent.'
)
totalDiscSpace: Optional[int] = Field(
None, description='Total disc space in bytes.'
)
class TaskProcessingFailureNotificationRuleTriggerConfig(NotificationRuleTriggerConfig):
pass
class ResourceType(Enum):
LWM2M_MODEL = 'LWM2M_MODEL'
JKS = 'JKS'
PKCS_12 = 'PKCS_12'
JS_MODULE = 'JS_MODULE'
IMAGE = 'IMAGE'
DASHBOARD = 'DASHBOARD'
class ResourceSubType(Enum):
IMAGE = 'IMAGE'
SCADA_SYMBOL = 'SCADA_SYMBOL'
EXTENSION = 'EXTENSION'
MODULE = 'MODULE'
class TbResourceDeleteResult(BaseModel):
success: Optional[bool] = None
references: Optional[Dict[str, List[HasIdObject]]] = None
class EntityType45(Enum):
TB_RESOURCE = 'TB_RESOURCE'
class TbResourceId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType45 = Field(..., description='string', example='TB_RESOURCE')
class TelemetryEntityView(BaseModel):
timeseries: List[str] = Field(
...,
description='List of time-series data keys to expose',
example=['temperature', 'humidity'],
)
attributes: AttributesEntityView = Field(
..., description='JSON object with attributes to expose'
)
class TelemetryMappingConfiguration(BaseModel):
keyName: Optional[Dict[str, str]] = None
observe: Optional[List[str]] = Field(None, Set=True)
attribute: Optional[List[str]] = Field(None, Set=True)
telemetry: Optional[List[str]] = Field(None, Set=True)
attributeLwm2m: Optional[Dict[str, ObjectAttributes]] = None
class TelemetryQueryingSnmpCommunicationConfig(SnmpCommunicationConfig):
mappings: Optional[List[SnmpMapping]] = None
queryingFrequencyMs: Optional[int] = None
class EntityType46(Enum):
TENANT = 'TENANT'
class TenantId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType46 = Field(..., description='string', example='TENANT')
class TenantProfileConfiguration(BaseModel):
type: str
class EntityType47(Enum):
TENANT_PROFILE = 'TENANT_PROFILE'
class TenantProfileId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType47 = Field(
..., description='string', example='TENANT_PROFILE'
)
class TenantProfileQueueConfiguration(BaseModel):
name: Optional[str] = None
topic: Optional[str] = None
pollInterval: Optional[int] = None
partitions: Optional[int] = None
consumerPerPartition: Optional[bool] = None
packProcessingTimeout: Optional[int] = None
submitStrategy: Optional[SubmitStrategy] = None
processingStrategy: Optional[ProcessingStrategy] = None
additionalInfo: Optional[JsonNode] = None
class Level(Enum):
MAKER = 'MAKER'
PROTOTYPE = 'PROTOTYPE'
STARTUP = 'STARTUP'
class TenantSolutionTemplateDetails(BaseModel):
id: Optional[str] = Field(
None,
description='ID of the solution template',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
title: Optional[str] = Field(
None, description='Template Title', example='Smart office'
)
level: Optional[Level] = Field(
None,
description='Level of the subscription that is required to unlock the template',
example='PROTOTYPE',
)
installTimeoutMs: Optional[int] = Field(
None,
description='Timeout for the installation UI to wait while template is installing',
)
tenantTelemetryKeys: Optional[List[str]] = Field(
None, description='What keys to delete during template uninstall'
)
tenantAttributeKeys: Optional[List[str]] = Field(
None, description='What attributes to delete during template uninstall'
)
imageUrls: Optional[List[str]] = None
highlights: Optional[str] = None
description: Optional[str] = None
installed: Optional[bool] = None
class TenantSolutionTemplateInfo(BaseModel):
id: Optional[str] = Field(
None,
description='ID of the solution template',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
title: Optional[str] = Field(
None, description='Template Title', example='Smart office'
)
level: Optional[Level] = Field(
None,
description='Level of the subscription that is required to unlock the template',
example='PROTOTYPE',
)
installTimeoutMs: Optional[int] = Field(
None,
description='Timeout for the installation UI to wait while template is installing',
)
tenantTelemetryKeys: Optional[List[str]] = Field(
None, description='What keys to delete during template uninstall'
)
tenantAttributeKeys: Optional[List[str]] = Field(
None, description='What attributes to delete during template uninstall'
)
previewImageUrl: Optional[str] = Field(None, description='URL of the preview image')
videoPreviewImageUrl: Optional[str] = Field(
None, description='Video preview image URL'
)
previewMp4Url: Optional[str] = Field(None, description='Video MP4 URL')
previewWebmUrl: Optional[str] = Field(None, description='Video WEBM URL')
installed: Optional[bool] = Field(
None,
description='Indicates that template is already installed for the current tenant',
)
class TenantSolutionTemplateInstructions(BaseModel):
dashboardGroupId: Optional[EntityGroupId] = Field(
None, description='Id of the group that contains main dashboard of the solution'
)
dashboardId: Optional[DashboardId] = Field(
None, description='Id of the main dashboard of the solution'
)
publicId: Optional[CustomerId] = Field(
None, description='Id of the public customer if solution has public entities'
)
mainDashboardPublic: Optional[bool] = Field(
None, description='Is the main dashboard public'
)
details: Optional[str] = Field(
None, description='Markdown with solution usage instructions'
)
class ThingsboardCredentialsExpiredResponse(BaseModel):
status: Optional[int] = Field(
None, description='HTTP Response Status Code', example=401
)
message: Optional[str] = Field(
None, description='Error message', example='Authentication failed'
)
errorCode: Optional[int] = Field(
None,
description='Platform error code:\n* `2` - General error (HTTP: 500 - Internal Server Error)\n\n* `10` - Authentication failed (HTTP: 401 - Unauthorized)\n\n* `11` - JWT token expired (HTTP: 401 - Unauthorized)\n\n* `15` - Credentials expired (HTTP: 401 - Unauthorized)\n\n* `20` - Permission denied (HTTP: 403 - Forbidden)\n\n* `30` - Invalid arguments (HTTP: 400 - Bad Request)\n\n* `31` - Bad request params (HTTP: 400 - Bad Request)\n\n* `32` - Item not found (HTTP: 404 - Not Found)\n\n* `33` - Too many requests (HTTP: 429 - Too Many Requests)\n\n* `34` - Too many updates (Too many updates over Websocket session)\n\n* `40` - Subscription violation (HTTP: 403 - Forbidden)',
example=10,
)
timestamp: Optional[int] = Field(None, description='Timestamp')
subscriptionErrorCode: Optional[int] = Field(
None,
description="Subscription error code:\n* `1` - Entities limit reached (HTTP: 403 - Forbidden)\n\n* `2` - Feature disabled (HTTP: 403 - Forbidden)\n\n* `3` - Subscription is not active (HTTP: 403 - Forbidden)\n\n* `4` - Billing error (HTTP: 400 - Bad Request)\n\n* `5` - Permission denied (HTTP: 403 - Forbidden)\n\n* `6` - Unable to change plan due to entities limits overflow (HTTP: 403 - Forbidden)\n\n* `7` - Solution template level doesn't meet subscription plan (HTTP: 403 - Forbidden)",
example=1,
)
subscriptionEntry: Optional[int] = Field(
None,
description='Subscription entry:\n* `1` - Devices count\n\n* `2` - Assets count\n\n* `3` - Customers count\n\n* `4` - Users count\n\n* `5` - Dashboards count\n\n* `6` - Rule chains count\n\n* `7` - Integrations count\n\n* `8` - Converters count\n\n* `9` - Scheduler events count\n\n* `30` - White-labeling',
example=1,
)
subscriptionValue: Optional[JsonNode] = None
resetToken: Optional[str] = Field(None, description='Password reset token')
class ThingsboardErrorResponse(BaseModel):
message: Optional[str] = Field(
None, description='Error message', example='Authentication failed'
)
errorCode: Optional[int] = Field(
None,
description='Platform error code:\n* `2` - General error (HTTP: 500 - Internal Server Error)\n\n* `10` - Authentication failed (HTTP: 401 - Unauthorized)\n\n* `11` - JWT token expired (HTTP: 401 - Unauthorized)\n\n* `15` - Credentials expired (HTTP: 401 - Unauthorized)\n\n* `20` - Permission denied (HTTP: 403 - Forbidden)\n\n* `30` - Invalid arguments (HTTP: 400 - Bad Request)\n\n* `31` - Bad request params (HTTP: 400 - Bad Request)\n\n* `32` - Item not found (HTTP: 404 - Not Found)\n\n* `33` - Too many requests (HTTP: 429 - Too Many Requests)\n\n* `34` - Too many updates (Too many updates over Websocket session)\n\n* `40` - Subscription violation (HTTP: 403 - Forbidden)',
example=10,
)
status: Optional[int] = Field(
None, description='HTTP Response Status Code', example=401
)
subscriptionErrorCode: Optional[int] = Field(
None,
description="Subscription error code:\n* `1` - Entities limit reached (HTTP: 403 - Forbidden)\n\n* `2` - Feature disabled (HTTP: 403 - Forbidden)\n\n* `3` - Subscription is not active (HTTP: 403 - Forbidden)\n\n* `4` - Billing error (HTTP: 400 - Bad Request)\n\n* `5` - Permission denied (HTTP: 403 - Forbidden)\n\n* `6` - Unable to change plan due to entities limits overflow (HTTP: 403 - Forbidden)\n\n* `7` - Solution template level doesn't meet subscription plan (HTTP: 403 - Forbidden)",
example=1,
)
subscriptionEntry: Optional[int] = Field(
None,
description='Subscription entry:\n* `1` - Devices count\n\n* `2` - Assets count\n\n* `3` - Customers count\n\n* `4` - Users count\n\n* `5` - Dashboards count\n\n* `6` - Rule chains count\n\n* `7` - Integrations count\n\n* `8` - Converters count\n\n* `9` - Scheduler events count\n\n* `30` - White-labeling',
example=1,
)
subscriptionValue: Optional[JsonNode] = None
timestamp: Optional[int] = Field(None, description='Timestamp')
class ToCoreEdqsRequest(BaseModel):
syncRequest: Optional[EdqsSyncRequest] = None
apiEnabled: Optional[bool] = None
class ToDeviceRpcRequestSnmpCommunicationConfig(SnmpCommunicationConfig):
mappings: Optional[List[SnmpMapping]] = None
class ToServerRpcRequestSnmpCommunicationConfig(SnmpCommunicationConfig):
mappings: Optional[List[SnmpMapping]] = None
class TranslationInfo(BaseModel):
localeCode: Optional[str] = Field(
None,
description='Locale code formed by combining the ISO 639-1 language code and the ISO 3166-1 region code. For example, "en_US"',
)
language: Optional[str] = Field(
None,
description='Locale code language display name. For example, "Polish (Polski)"',
)
country: Optional[str] = Field(
None, description='Locale code country display name. For example, "Poland"'
)
progress: Optional[int] = Field(
None,
description='Number representing translation percentage progress. For example, 40 that means 40% of all keys are translated.',
)
customized: Optional[bool] = Field(
None, description='Boolean representing if current language has customization.'
)
class TransportPayloadTypeConfiguration(BaseModel):
transportPayloadType: str
class TsValue(BaseModel):
ts: Optional[int] = None
value: Optional[str] = None
count: Optional[int] = None
class TwilioSmsProviderConfiguration(SmsProviderConfiguration):
accountSid: Optional[str] = Field(None, description='Twilio account Sid.')
accountToken: Optional[str] = Field(None, description='Twilio account Token.')
numberFrom: Optional[str] = Field(None, description='The number/id of a sender.')
class TwoFaAccountConfig(BaseModel):
useByDefault: Optional[bool] = None
providerType: str
class TwoFaAccountConfigUpdateRequest(BaseModel):
useByDefault: Optional[bool] = None
class TwoFaProviderConfig(BaseModel):
providerType: str
class Type32(Enum):
TOTP = 'TOTP'
SMS = 'SMS'
EMAIL = 'EMAIL'
BACKUP_CODE = 'BACKUP_CODE'
class TwoFaProviderInfo(BaseModel):
type: Optional[Type32] = None
isDefault: Optional[bool] = None
contact: Optional[str] = None
minVerificationCodeSendPeriod: Optional[int] = None
default: Optional[bool] = None
class UpdateMessage(BaseModel):
updateAvailable: Optional[bool] = Field(
None, description="'True' if new platform update is available."
)
currentVersion: Optional[str] = Field(
None, description='Current ThingsBoard version.'
)
latestVersion: Optional[str] = Field(
None, description='Latest ThingsBoard version.'
)
upgradeInstructionsUrl: Optional[str] = Field(
None, description='Upgrade instructions URL.'
)
currentVersionReleaseNotesUrl: Optional[str] = Field(
None, description='Current ThingsBoard version release notes URL.'
)
latestVersionReleaseNotesUrl: Optional[str] = Field(
None, description='Latest ThingsBoard version release notes URL.'
)
class UsageInfo(BaseModel):
devices: Optional[int] = None
maxDevices: Optional[int] = None
assets: Optional[int] = None
maxAssets: Optional[int] = None
customers: Optional[int] = None
maxCustomers: Optional[int] = None
users: Optional[int] = None
maxUsers: Optional[int] = None
dashboards: Optional[int] = None
maxDashboards: Optional[int] = None
edges: Optional[int] = None
maxEdges: Optional[int] = None
transportMessages: Optional[int] = None
maxTransportMessages: Optional[int] = None
jsExecutions: Optional[int] = None
tbelExecutions: Optional[int] = None
maxJsExecutions: Optional[int] = None
maxTbelExecutions: Optional[int] = None
emails: Optional[int] = None
maxEmails: Optional[int] = None
sms: Optional[int] = None
maxSms: Optional[int] = None
smsEnabled: Optional[bool] = None
alarms: Optional[int] = None
maxAlarms: Optional[int] = None
class Authority(Enum):
SYS_ADMIN = 'SYS_ADMIN'
TENANT_ADMIN = 'TENANT_ADMIN'
CUSTOMER_USER = 'CUSTOMER_USER'
BILLING_ADMIN = 'BILLING_ADMIN'
BILLING_SERVICE = 'BILLING_SERVICE'
REFRESH_TOKEN = 'REFRESH_TOKEN'
PRE_VERIFICATION_TOKEN = 'PRE_VERIFICATION_TOKEN'
class UserActivationLink(BaseModel):
value: Optional[str] = None
ttlMs: Optional[int] = None
class UserDashboardsInfo(BaseModel):
last: Optional[List[LastVisitedDashboardInfo]] = Field(
None, description='List of last visited dashboards.'
)
starred: Optional[List[StarredDashboardInfo]] = Field(
None, description='List of starred dashboards.'
)
class EntityType48(Enum):
USER = 'USER'
class UserId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType48 = Field(..., description='string', example='USER')
class UserInfo(BaseModel):
id: Optional[UserId] = Field(
None,
description='JSON object with the User Id. Specify this field to update the device. Referencing non-existing User Id will cause error. Omit this field to create new customer.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the user creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(
None, description='JSON object with the Tenant Id.'
)
customerId: Optional[CustomerId] = Field(
None, description='JSON object with the Customer Id.'
)
email: str = Field(..., description='Email of the user', example='user@example.com')
authority: Authority = Field(
..., description='Authority', example='SYS_ADMIN, TENANT_ADMIN or CUSTOMER_USER'
)
firstName: Optional[str] = Field(
None, description='First name of the user', example='John'
)
lastName: Optional[str] = Field(
None, description='Last name of the user', example='Doe'
)
phone: Optional[str] = Field(
None, description='Phone number of the user', example=38012345123
)
customMenuId: Optional[CustomMenuId] = None
version: Optional[int] = None
ownerName: Optional[str] = Field(None, description='Owner name')
groups: Optional[List[EntityInfo]] = Field(None, description='Groups')
name: Optional[str] = Field(
None,
description='Duplicates the email of the user, readonly',
example='user@example.com',
)
additionalInfo: Optional[JsonNode] = Field(
None, description='Additional parameters of the user'
)
ownerId: Optional[EntityId] = Field(
None, description='JSON object with Customer or Tenant Id'
)
class UserNotificationSettings(BaseModel):
prefs: Dict[str, NotificationPref]
class UserPasswordPolicy(BaseModel):
minimumLength: Optional[int] = Field(
None, description='Minimum number of symbols in the password.'
)
maximumLength: Optional[int] = Field(
None, description='Maximum number of symbols in the password.'
)
minimumUppercaseLetters: Optional[int] = Field(
None, description='Minimum number of uppercase letters in the password.'
)
minimumLowercaseLetters: Optional[int] = Field(
None, description='Minimum number of lowercase letters in the password.'
)
minimumDigits: Optional[int] = Field(
None, description='Minimum number of digits in the password.'
)
minimumSpecialCharacters: Optional[int] = Field(
None, description='Minimum number of special in the password.'
)
allowWhitespaces: Optional[bool] = Field(None, description='Allow whitespaces')
forceUserToResetPasswordIfNotValid: Optional[bool] = Field(
None,
description='Force user to update password if existing one does not pass validation',
)
passwordExpirationPeriodDays: Optional[int] = Field(
None,
description='Password expiration period (days). Force expiration of the password.',
)
passwordReuseFrequencyDays: Optional[int] = Field(
None,
description='Password reuse frequency (days). Disallow to use the same password for the defined number of days',
)
class UsersFilter(BaseModel):
type: str
class V2CaptchaParams(CaptchaParams):
siteKey: Optional[str] = Field(
None, description="Captcha site key for 'I'm not a robot' validation"
)
logActionName: Optional[str] = Field(
None,
description="Optional action name used for logging (for captcha version 'v3' and 'enterprise')",
)
secretKey: Optional[str] = Field(
None,
description='Secret key to validate the Captcha. Should match the Captcha Site Key.',
)
class V3CaptchaParams(CaptchaParams):
siteKey: Optional[str] = Field(
None, description="Captcha site key for 'I'm not a robot' validation"
)
logActionName: Optional[str] = Field(
None,
description="Optional action name used for logging (for captcha version 'v3' and 'enterprise')",
)
secretKey: Optional[str] = Field(
None,
description='Secret key to validate the Captcha. Should match the Captcha Site Key.',
)
class Vendor(BaseModel):
name: Optional[str] = None
logo: Optional[str] = None
class Version(RootModel):
root: Any
class VersionCreateConfig(BaseModel):
saveRelations: Optional[bool] = None
saveAttributes: Optional[bool] = None
saveCredentials: Optional[bool] = None
saveCalculatedFields: Optional[bool] = None
savePermissions: Optional[bool] = None
saveGroupEntities: Optional[bool] = None
class Type33(Enum):
SINGLE_ENTITY = 'SINGLE_ENTITY'
COMPLEX = 'COMPLEX'
class VersionCreateRequest(BaseModel):
versionName: Optional[str] = None
branch: Optional[str] = None
type: Optional[Type33] = None
class VersionCreationResult(BaseModel):
version: Optional[EntityVersion] = None
added: Optional[int] = None
modified: Optional[int] = None
removed: Optional[int] = None
error: Optional[str] = None
done: Optional[bool] = None
class VersionLoadConfig(BaseModel):
loadRelations: Optional[bool] = None
loadAttributes: Optional[bool] = None
loadCredentials: Optional[bool] = None
loadCalculatedFields: Optional[bool] = None
loadPermissions: Optional[bool] = None
loadGroupEntities: Optional[bool] = None
autoGenerateIntegrationKey: Optional[bool] = None
class Type34(Enum):
SINGLE_ENTITY = 'SINGLE_ENTITY'
ENTITY_TYPE = 'ENTITY_TYPE'
class VersionLoadRequest(BaseModel):
versionId: Optional[str] = None
type: Optional[Type34] = None
class VersionLoadResult(BaseModel):
result: Optional[List[EntityTypeLoadResult]] = None
error: Optional[EntityLoadError] = None
done: Optional[bool] = None
class VersionedEntityInfo(BaseModel):
externalId: Optional[EntityId] = None
path: Optional[str] = None
class WebDeliveryMethodNotificationTemplate(DeliveryMethodNotificationTemplate):
subject: str
additionalConfig: Optional[Any] = None
body: str
class WebViewPage(MobilePage):
url: Optional[str] = Field(None, description='Url', example='/url')
label: Optional[str] = Field(None, description='Page label', example='Air quality')
visible: bool = Field(..., description='Indicates if page is visible', example=True)
icon: Optional[str] = Field(
None, description='URL of the page icon', example='home_icon'
)
class Type35(Enum):
LOGIN = 'LOGIN'
GENERAL = 'GENERAL'
MAIL_TEMPLATES = 'MAIL_TEMPLATES'
SELF_REGISTRATION = 'SELF_REGISTRATION'
TERMS_OF_USE = 'TERMS_OF_USE'
PRIVACY_POLICY = 'PRIVACY_POLICY'
class WhiteLabeling(BaseModel):
tenantId: Optional[TenantId] = None
customerId: Optional[CustomerId] = None
type: Optional[Type35] = None
settings: Optional[JsonNode] = None
legacyDomain: Optional[str] = None
domainId: Optional[DomainId] = None
class WhiteLabelingParams(BaseModel):
logoImageUrl: Optional[str] = Field(
None,
description='Logo image URL',
example='https://company.com/images/logo.png',
)
logoImageHeight: Optional[int] = Field(
None,
description='The height of a logo container. Logo image will be automatically scaled.',
)
appTitle: Optional[str] = Field(
None,
description='White-labeled name of the platform',
example='My Company IoT Platform',
)
favicon: Optional[Favicon] = Field(
None, description='JSON object that contains website icon url and type'
)
paletteSettings: Optional[PaletteSettings] = Field(
None,
description='Complex JSON that describes structure of the Angular Material Palette. See [theming](https://material.angular.io/guide/theming) for more details',
)
helpLinkBaseUrl: Optional[str] = Field(None, description='Base URL for help link')
uiHelpBaseUrl: Optional[str] = Field(
None,
description='Base URL for the repository with the UI help components (markdown)',
)
enableHelpLinks: Optional[bool] = Field(
None, description='Enable or Disable help links'
)
whiteLabelingEnabled: Optional[bool] = Field(
None, description='Enable white-labeling'
)
showNameVersion: Optional[bool] = Field(
None, description='Show platform name and version on UI and login screen'
)
platformName: Optional[str] = Field(None, description='White-labeled platform name')
platformVersion: Optional[str] = Field(
None, description='White-labeled platform version'
)
customCss: Optional[str] = Field(None, description='Custom CSS content')
hideConnectivityDialog: Optional[bool] = Field(
None, description='Hide device connectivity dialog'
)
class WidgetBundleInfo(BaseModel):
id: Optional[EntityId] = Field(None, description='JSON object with the entity Id. ')
name: Optional[str] = Field(None, description='Entity Name')
class EntityType49(Enum):
WIDGET_TYPE = 'WIDGET_TYPE'
class WidgetTypeId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType49 = Field(..., description='string', example='WIDGET_TYPE')
class WidgetTypeInfo(BaseModel):
id: Optional[WidgetTypeId] = Field(
None,
description='JSON object with the Widget Type Id. Specify this field to update the Widget Type. Referencing non-existing Widget Type Id will cause error. Omit this field to create new Widget Type.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the Widget Type creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(
None, description='JSON object with Tenant Id.'
)
fqn: Optional[str] = Field(
None,
description='Unique FQN that is used in dashboards as a reference widget type',
)
name: Optional[str] = Field(None, description='Widget name used in search and UI')
deprecated: Optional[bool] = Field(
None, description='Whether widget type is deprecated.', example=True
)
scada: Optional[bool] = Field(
None, description='Whether widget type is SCADA symbol.', example=True
)
version: Optional[int] = None
image: Optional[str] = Field(None, description='Base64 encoded widget thumbnail')
description: Optional[str] = Field(
None, description='Description of the widget type'
)
tags: Optional[List[str]] = Field(None, description='Tags of the widget type')
widgetType: Optional[str] = Field(
None,
description='Type of the widget (timeseries, latest, control, alarm or static)',
)
bundles: Optional[List[WidgetBundleInfo]] = Field(None, description='Bundles')
class EntityType50(Enum):
WIDGETS_BUNDLE = 'WIDGETS_BUNDLE'
class WidgetsBundleId(BaseModel):
id: UUID = Field(
...,
description='ID of the entity, time-based UUID v1',
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
entityType: EntityType50 = Field(
..., description='string', example='WIDGETS_BUNDLE'
)
class X509CertificateChainProvisionConfiguration(DeviceProfileProvisionConfiguration):
certificateRegExPattern: Optional[str] = None
allowCreateNewDevicesByX509Certificate: Optional[bool] = None
class X509LwM2MBootstrapServerCredential(LwM2MBootstrapServerCredential):
shortServerId: Optional[int] = Field(
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:1 and ID:65534 values MUST NOT be used for identifying the LwM2M Server.",
example=123,
)
bootstrapServerIs: Optional[bool] = Field(
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.',
example=True,
)
host: Optional[str] = Field(
None, description="Host for 'No Security' mode", example='0.0.0.0'
)
port: Optional[int] = Field(
None,
description="Port for Lwm2m Server: 'No Security' mode: Lwm2m Server or Bootstrap Server",
example="'5685' or '5687'",
)
clientHoldOffTime: Optional[int] = Field(
None,
description='Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.)',
example=1,
)
serverPublicKey: Optional[str] = Field(
None,
description="Server Public Key for 'Security' mode (DTLS): RPK or X509. Format: base64 encoded",
example='MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAZ0pSaGKHk/GrDaUDnQZpeEdGwX7m3Ws+U/kiVat\n+44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==',
)
serverCertificate: Optional[str] = Field(
None,
description="Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded",
example='MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs\nxEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM\nJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/\nBAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp\nAWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+7XmIXNClmizNJigj908mw=',
)
bootstrapServerAccountTimeout: Optional[int] = Field(
None,
description='Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.)',
example=0,
)
lifetime: Optional[int] = Field(
None,
description='Specify the lifetime of the registration in seconds.',
example=300,
)
defaultMinPeriod: Optional[int] = Field(
None,
description='The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesnt exist, the default value is 0.',
example=1,
)
notifIfDisabled: Optional[bool] = Field(
None,
description='If true, the LwM2M Client stores “Notify” operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true.',
example=True,
)
binding: Optional[str] = Field(
None,
description='This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode.',
example='U',
)
class AdminSettings(BaseModel):
id: Optional[AdminSettingsId] = Field(
None, description='The Id of the Administration Settings, auto-generated, UUID'
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the settings creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(
None, description='JSON object with Tenant Id.'
)
key: Optional[str] = Field(
None,
description="The Administration Settings key, (e.g. 'general' or 'mail')",
example='mail',
)
jsonValue: Optional[JsonNode] = Field(
None, description='JSON representation of the Administration Settings value'
)
class AffectedTenantAdministratorsFilter(UsersFilter):
pass
class AffectedUserFilter(UsersFilter):
pass
class Alarm(BaseModel):
tenantId: Optional[TenantId] = Field(None, description='JSON object with Tenant Id')
customerId: Optional[CustomerId] = Field(
None, description='JSON object with Customer Id'
)
type: str = Field(
...,
description='representing type of the Alarm',
example='High Temperature Alarm',
)
originator: EntityId = Field(
..., description='JSON object with alarm originator id'
)
severity: Severity = Field(..., description='Alarm severity', example='CRITICAL')
acknowledged: bool = Field(..., description='Acknowledged', example=True)
cleared: bool = Field(..., description='Cleared', example=False)
assigneeId: Optional[UserId] = Field(None, description='Alarm assignee user id')
startTs: Optional[int] = Field(
None,
description='Timestamp of the alarm start time, in milliseconds',
example=1634058704565,
)
endTs: Optional[int] = Field(
None,
description='Timestamp of the alarm end time(last time update), in milliseconds',
example=1634111163522,
)
ackTs: Optional[int] = Field(
None,
description='Timestamp of the alarm acknowledgement, in milliseconds',
example=1634115221948,
)
clearTs: Optional[int] = Field(
None,
description='Timestamp of the alarm clearing, in milliseconds',
example=1634114528465,
)
assignTs: Optional[int] = Field(
None,
description='Timestamp of the alarm assignment, in milliseconds',
example=1634115928465,
)
details: Optional[JsonNode] = None
propagate: Optional[bool] = Field(
None,
description='Propagation flag to specify if alarm should be propagated to parent entities of alarm originator',
example=True,
)
propagateToOwner: Optional[bool] = Field(
None,
description='Propagation flag to specify if alarm should be propagated to the owner (tenant or customer) of alarm originator',
example=True,
)
propagateToOwnerHierarchy: Optional[bool] = Field(
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',
example=True,
)
propagateToTenant: Optional[bool] = Field(
None,
description='Propagation flag to specify if alarm should be propagated to the tenant entity',
example=True,
)
propagateRelationTypes: Optional[List[str]] = Field(
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.",
)
id: Optional[AlarmId] = Field(
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.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the alarm creation, in milliseconds',
example=1634058704567,
)
name: str = Field(
...,
description='representing type of the Alarm',
example='High Temperature Alarm',
)
status: Status = Field(
..., description='status of the Alarm', example='ACTIVE_UNACK'
)
class AlarmAssignee(BaseModel):
id: Optional[UserId] = None
firstName: Optional[str] = None
lastName: Optional[str] = None
email: Optional[str] = None
class AlarmAssignmentNotificationRuleTriggerConfig(NotificationRuleTriggerConfig):
alarmTypes: Optional[List[str]] = Field(None, Set=True)
alarmSeverities: Optional[List[AlarmSeverity]] = Field(None, Set=True)
alarmStatuses: Optional[List[AlarmStatus]] = Field(None, Set=True)
notifyOn: List[NotifyOnEnum] = Field(..., Set=True)
class AlarmComment(BaseModel):
alarmId: Optional[AlarmId] = Field(None, description='JSON object with Alarm id.')
userId: Optional[UserId] = Field(None, description='JSON object with User id.')
type: Optional[Type] = Field(
None,
description='Defines origination of comment. System type means comment was created by TB. OTHER type means comment was created by user.',
example='SYSTEM/OTHER',
)
comment: Optional[JsonNode] = Field(
None, description='JSON object with text of comment.'
)
id: Optional[AlarmCommentId] = Field(
None,
description='JSON object with the alarm comment Id. Specify this field to update the alarm comment. Referencing non-existing alarm Id will cause error. Omit this field to create new alarm.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the alarm comment creation, in milliseconds',
example=1634058704567,
)
name: Optional[str] = Field(
None, description='representing comment text', example='Please take a look'
)
class AlarmCommentInfo(BaseModel):
id: Optional[AlarmCommentId] = Field(
None,
description='JSON object with the alarm comment Id. Specify this field to update the alarm comment. Referencing non-existing alarm Id will cause error. Omit this field to create new alarm.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the alarm comment creation, in milliseconds',
example=1634058704567,
)
alarmId: Optional[AlarmId] = Field(None, description='JSON object with Alarm id.')
userId: Optional[UserId] = Field(None, description='JSON object with User id.')
type: Optional[Type] = Field(
None,
description='Defines origination of comment. System type means comment was created by TB. OTHER type means comment was created by user.',
example='SYSTEM/OTHER',
)
comment: Optional[JsonNode] = Field(
None, description='JSON object with text of comment.'
)
firstName: Optional[str] = Field(
None, description='User first name', example='John'
)
lastName: Optional[str] = Field(None, description='User last name', example='Brown')
email: Optional[str] = Field(
None, description='User email address', example='johnBrown@gmail.com'
)
name: Optional[str] = Field(
None, description='representing comment text', example='Please take a look'
)
class AlarmCommentNotificationRuleTriggerConfig(NotificationRuleTriggerConfig):
alarmTypes: Optional[List[str]] = Field(None, Set=True)
alarmSeverities: Optional[List[AlarmSeverity]] = Field(None, Set=True)
alarmStatuses: Optional[List[AlarmStatus]] = Field(None, Set=True)
onlyUserComments: Optional[bool] = None
notifyOnCommentUpdate: Optional[bool] = None
class AlarmData(BaseModel):
id: Optional[AlarmId] = Field(
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.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the alarm creation, in milliseconds',
example=1634058704567,
)
tenantId: Optional[TenantId] = Field(None, description='JSON object with Tenant Id')
customerId: Optional[CustomerId] = Field(
None, description='JSON object with Customer Id'
)
type: str = Field(
...,
description='representing type of the Alarm',
example='High Temperature Alarm',
)
originator: EntityId = Field(
..., description='JSON object with alarm originator id'
)
severity: Severity = Field(..., description='Alarm severity', example='CRITICAL')
acknowledged: bool = Field(..., description='Acknowledged', example=True)
cleared: bool = Field(..., description='Cleared', example=False)
assigneeId: Optional[UserId] = Field(None, description='Alarm assignee user id')
startTs: Optional[int] = Field(
None,
description='Timestamp of the alarm start time, in milliseconds',
example=1634058704565,
)
endTs: Optional[int] = Field(
None,
description='Timestamp of the alarm end time(last time update), in milliseconds',
example=1634111163522,
)
ackTs: Optional[int] = Field(
None,
description='Timestamp of the alarm acknowledgement, in milliseconds',
example=1634115221948,
)
clearTs: Optional[int] = Field(
None,
description='Timestamp of the alarm clearing, in milliseconds',
example=1634114528465,
)
assignTs: Optional[int] = Field(
None,
description='Timestamp of the alarm assignment, in milliseconds',
example=1634115928465,
)
propagate: Optional[bool] = Field(
None,
description='Propagation flag to specify if alarm should be propagated to parent entities of alarm originator',
example=True,
)
propagateToOwner: Optional[bool] = Field(
None,
description='Propagation flag to specify if alarm should be propagated to the owner (tenant or customer) of alarm originator',
example=True,
)
propagateToOwnerHierarchy: Optional[bool] = Field(
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',
example=True,
)
propagateToTenant: Optional[bool] = Field(
None,
description='Propagation flag to specify if alarm should be propagated to the tenant entity',
example=True,
)
propagateRelationTypes: Optional[List[str]] = Field(
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.",
)
originatorName: Optional[str] = Field(
None, description='Alarm originator name', example='Thermostat'
)
originatorLabel: Optional[str] = Field(
None, description='Alarm originator label', example='Thermostat label'
)
assignee: Optional[AlarmAssignee] = Field(None, description='Alarm assignee')
entityId: Optional[EntityId] = None
latest: Optional[Dict[str, Dict[str, TsValue]]] = None
name: str = Field(
...,
description='representing type of the Alarm',
example='High Temperature Alarm',
)
status: Status = Field(
..., description='status of the Alarm', example='ACTIVE_UNACK'
)
details: Optional[JsonNode] = None
class AlarmInfo(BaseModel):
id: Optional[AlarmId] = Field(
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.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the alarm creation, in milliseconds',
example=1634058704567,
)
tenantId: Optional[TenantId] = Field(None, description='JSON object with Tenant Id')
customerId: Optional[CustomerId] = Field(
None, description='JSON object with Customer Id'
)
type: str = Field(
...,
description='representing type of the Alarm',
example='High Temperature Alarm',
)
originator: EntityId = Field(
..., description='JSON object with alarm originator id'
)
severity: Severity = Field(..., description='Alarm severity', example='CRITICAL')
acknowledged: bool = Field(..., description='Acknowledged', example=True)
cleared: bool = Field(..., description='Cleared', example=False)
assigneeId: Optional[UserId] = Field(None, description='Alarm assignee user id')
startTs: Optional[int] = Field(
None,
description='Timestamp of the alarm start time, in milliseconds',
example=1634058704565,
)
endTs: Optional[int] = Field(
None,
description='Timestamp of the alarm end time(last time update), in milliseconds',
example=1634111163522,
)
ackTs: Optional[int] = Field(
None,
description='Timestamp of the alarm acknowledgement, in milliseconds',
example=1634115221948,
)
clearTs: Optional[int] = Field(
None,
description='Timestamp of the alarm clearing, in milliseconds',
example=1634114528465,
)
assignTs: Optional[int] = Field(
None,
description='Timestamp of the alarm assignment, in milliseconds',
example=1634115928465,
)
propagate: Optional[bool] = Field(
None,
description='Propagation flag to specify if alarm should be propagated to parent entities of alarm originator',
example=True,
)
propagateToOwner: Optional[bool] = Field(
None,
description='Propagation flag to specify if alarm should be propagated to the owner (tenant or customer) of alarm originator',
example=True,
)
propagateToOwnerHierarchy: Optional[bool] = Field(
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',
example=True,
)
propagateToTenant: Optional[bool] = Field(
None,
description='Propagation flag to specify if alarm should be propagated to the tenant entity',
example=True,
)
propagateRelationTypes: Optional[List[str]] = Field(
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.",
)
originatorName: Optional[str] = Field(
None, description='Alarm originator name', example='Thermostat'
)
originatorLabel: Optional[str] = Field(
None, description='Alarm originator label', example='Thermostat label'
)
assignee: Optional[AlarmAssignee] = Field(None, description='Alarm assignee')
name: str = Field(
...,
description='representing type of the Alarm',
example='High Temperature Alarm',
)
status: Status = Field(
..., description='status of the Alarm', example='ACTIVE_UNACK'
)
details: Optional[JsonNode] = None
class AlarmNotificationRuleTriggerConfig(NotificationRuleTriggerConfig):
alarmTypes: Optional[List[str]] = Field(None, Set=True)
alarmSeverities: Optional[List[AlarmSeverity]] = Field(None, Set=True)
notifyOn: List[NotifyOnEnum1] = Field(..., Set=True)
clearRule: Optional[ClearRule] = None
class AlarmSchedule(BaseModel):
type: Optional[Type3] = None
dynamicValue: Optional[DynamicValueString] = None
class AllUsersFilter(UsersFilter):
pass
class AllowCreateNewDevicesDeviceProfileProvisionConfiguration(
DeviceProfileProvisionConfiguration
):
pass
class AllowedPermissionsInfo(BaseModel):
operationsByResource: Optional[Dict[str, List[OperationsByResourceEnum]]] = Field(
None,
description='Static map (vocabulary) of allowed operations by resource type',
)
allowedForGroupRoleOperations: Optional[List[AllowedForGroupRoleOperation]] = Field(
None,
description='Static set (vocabulary) of allowed operations for group roles',
Set=True,
)
allowedForGroupOwnerOnlyOperations: Optional[
List[AllowedForGroupOwnerOnlyOperation]
] = Field(
None,
description='Static set (vocabulary) of allowed operations for group owner',
Set=True,
)
allowedForGroupOwnerOnlyGroupOperations: Optional[
List[AllowedForGroupOwnerOnlyGroupOperation]
] = Field(
None,
description='Static set (vocabulary) of allowed group operations for group owner',
Set=True,
)
allowedResources: Optional[List[AllowedResource]] = Field(
None,
description='Static set (vocabulary) of all possibly allowed resources. Static and depends only on the authority of the user',
Set=True,
)
userPermissions: Optional[MergedUserPermissions] = Field(
None,
description='JSON object with merged permission for all generic and group roles assigned to all user groups the user belongs to',
)
userOwnerId: Optional[EntityId] = Field(
None, description='Owner Id of the user (Tenant or Customer)'
)
class AnyTimeSchedule(AlarmSchedule):
pass
class ApiUsageLimitNotificationRuleTriggerConfig(NotificationRuleTriggerConfig):
apiFeatures: Optional[List[ApiFeature]] = Field(None, Set=True)
notifyOn: Optional[List[NotifyOnEnum2]] = Field(None, Set=True)
class ApiUsageStateFilter(EntityFilter):
customerId: Optional[CustomerId] = None
class Argument(BaseModel):
refEntityId: Optional[EntityId] = None
refEntityKey: Optional[ReferencedEntityKey] = None
defaultValue: Optional[str] = None
limit: Optional[int] = None
timeWindow: Optional[int] = None
class Asset(BaseModel):
id: Optional[AssetId] = Field(
None,
description='JSON object with the asset Id. Specify this field to update the asset. Referencing non-existing asset Id will cause error. Omit this field to create new asset.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the asset creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(
None, description='JSON object with Tenant Id.'
)
customerId: Optional[CustomerId] = Field(
None,
description="JSON object with Customer Id. Use 'assignAssetToCustomer' to change the Customer Id.",
)
name: str = Field(
...,
description='Unique Asset Name in scope of Tenant',
example='Empire State Building',
)
type: Optional[str] = Field(None, description='Asset type', example='Building')
label: Optional[str] = Field(
None, description='Label that may be used in widgets', example='NY Building'
)
assetProfileId: Optional[AssetProfileId] = Field(
None, description='JSON object with Asset Profile Id.'
)
version: Optional[int] = None
additionalInfo: Optional[JsonNode] = Field(
None, description='Additional parameters of the asset'
)
ownerId: Optional[EntityId] = Field(
None, description='JSON object with Customer or Tenant Id'
)
class AssetInfo(BaseModel):
id: Optional[AssetId] = Field(
None,
description='JSON object with the asset Id. Specify this field to update the asset. Referencing non-existing asset Id will cause error. Omit this field to create new asset.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the asset creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(
None, description='JSON object with Tenant Id.'
)
customerId: Optional[CustomerId] = Field(
None,
description="JSON object with Customer Id. Use 'assignAssetToCustomer' to change the Customer Id.",
)
name: str = Field(
...,
description='Unique Asset Name in scope of Tenant',
example='Empire State Building',
)
type: Optional[str] = Field(None, description='Asset type', example='Building')
label: Optional[str] = Field(
None, description='Label that may be used in widgets', example='NY Building'
)
assetProfileId: Optional[AssetProfileId] = Field(
None, description='JSON object with Asset Profile Id.'
)
version: Optional[int] = None
ownerName: Optional[str] = Field(None, description='Owner name')
groups: Optional[List[EntityInfo]] = Field(None, description='Groups')
additionalInfo: Optional[JsonNode] = Field(
None, description='Additional parameters of the asset'
)
ownerId: Optional[EntityId] = Field(
None, description='JSON object with Customer or Tenant Id'
)
class AssetProfile(BaseModel):
id: Optional[AssetProfileId] = Field(
None,
description='JSON object with the asset profile Id. Specify this field to update the asset profile. Referencing non-existing asset profile Id will cause error. Omit this field to create new asset profile.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the profile creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(
None, description='JSON object with Tenant Id that owns the profile.'
)
name: Optional[str] = Field(
None,
description='Unique Asset Profile Name in scope of Tenant.',
example='Building',
)
description: Optional[str] = Field(None, description='Asset Profile description. ')
image: Optional[str] = Field(
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. ',
)
defaultRuleChainId: Optional[RuleChainId] = Field(
None,
description='Reference to the rule chain. If present, the specified rule chain will be used to process all messages related to asset, including asset updates, telemetry, attribute updates, etc. Otherwise, the root rule chain will be used to process those messages.',
)
defaultDashboardId: Optional[DashboardId] = Field(
None,
description='Reference to the dashboard. Used in the mobile application to open the default dashboard when user navigates to asset details.',
)
defaultQueueName: Optional[str] = Field(
None,
description="Rule engine queue name. If present, the specified queue will be used to store all unprocessed messages related to asset, including asset updates, telemetry, attribute updates, etc. Otherwise, the 'Main' queue will be used to store those messages.",
)
defaultEdgeRuleChainId: Optional[RuleChainId] = Field(
None,
description='Reference to the edge rule chain. If present, the specified edge rule chain will be used on the edge to process all messages related to asset, including asset updates, telemetry, attribute updates, etc. Otherwise, the edge root rule chain will be used to process those messages.',
)
version: Optional[int] = None
default: Optional[bool] = Field(
None,
description='Used to mark the default profile. Default profile is used when the asset profile is not specified during asset creation.',
)
class AssetProfileInfo(BaseModel):
id: Optional[EntityId] = Field(None, description='JSON object with the entity Id. ')
tenantId: Optional[TenantId] = Field(None, description='Tenant id.')
name: Optional[str] = Field(None, description='Entity Name')
image: Optional[str] = Field(
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. ',
)
defaultDashboardId: Optional[DashboardId] = Field(
None,
description='Reference to the dashboard. Used in the mobile application to open the default dashboard when user navigates to asset details.',
)
class AssetSearchQuery(BaseModel):
parameters: Optional[RelationsSearchParameters] = Field(
None, description='Main search parameters.'
)
relationType: Optional[str] = Field(
None,
description="Type of the relation between root entity and asset (e.g. 'Contains' or 'Manages').",
)
assetTypes: Optional[List[str]] = Field(
None,
description="Array of asset types to filter the related entities (e.g. 'Building', 'Vehicle').",
)
class AssetSearchQueryFilter(EntityFilter):
rootEntity: Optional[EntityId] = None
relationType: Optional[str] = None
direction: Optional[Direction] = None
maxLevel: Optional[int] = None
fetchLastLevelOnly: Optional[bool] = None
assetTypes: Optional[List[str]] = None
class AssetTypeFilter(EntityFilter):
assetType: Optional[str] = None
assetTypes: Optional[List[str]] = None
assetNameFilter: Optional[str] = None
class AuditLog(BaseModel):
id: Optional[AuditLogId] = Field(
None, description='JSON object with the auditLog Id'
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the auditLog creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(None, description='JSON object with Tenant Id')
customerId: Optional[CustomerId] = Field(
None, description='JSON object with Customer Id'
)
entityId: Optional[EntityId] = Field(None, description='JSON object with Entity id')
entityName: Optional[str] = Field(
None, description='Name of the logged entity', example='Thermometer'
)
userId: Optional[UserId] = Field(None, description='JSON object with User id.')
userName: Optional[str] = Field(
None,
description='Unique user name(email) of the user that performed some action on logged entity',
example='tenant@thingsboard.org',
)
actionType: Optional[ActionType] = Field(
None, description='String represented Action type', example='ADDED'
)
actionData: Optional[JsonNode] = Field(
None, description='JsonNode represented action data'
)
actionStatus: Optional[ActionStatus] = Field(
None, description='String represented Action status', example='SUCCESS'
)
actionFailureDetails: Optional[str] = Field(
None,
description="Failure action details info. An empty string in case of action status type 'SUCCESS', otherwise includes stack trace of the caused exception.",
)
class AutoCommitSettings(RootModel):
root: Optional[Dict[str, AutoVersionCreateConfig]] = None
class AwsSnsSmsProviderConfiguration(SmsProviderConfiguration):
accessKeyId: Optional[str] = Field(None, description='The AWS SNS Access Key ID.')
secretAccessKey: Optional[str] = Field(None, description='The AWS SNS Access Key.')
region: Optional[str] = Field(None, description='The AWS region.')
class BackupCodeTwoFaAccountConfig(TwoFaAccountConfig):
codes: List[str] = Field(..., Set=True)
codesLeft: Optional[int] = None
class BackupCodeTwoFaProviderConfig(TwoFaProviderConfig):
codesQuantity: Optional[conint(ge=1)] = None
class BlobEntityInfo(BaseModel):
id: Optional[BlobEntityId] = Field(
None,
description='JSON object with the blob entity Id. Referencing non-existing blob entity Id will cause error',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the blob entity creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(None, description='JSON object with Tenant Id')
customerId: Optional[CustomerId] = Field(
None, description='JSON object with Customer Id'
)
name: Optional[str] = Field(
None, description='blob entity name', example='report-2021-10-29_14:00:00.pdf'
)
type: Optional[str] = Field(None, description='blob entity type', example='report')
contentType: Optional[ContentType] = Field(
None, description='blob content type', example='application/pdf'
)
additionalInfo: Optional[JsonNode] = Field(
None, description='Additional parameters of the blob entity'
)
ownerId: Optional[EntityId] = Field(
None, description='JSON object with Customer or Tenant Id'
)
class BlobEntityWithCustomerInfo(BaseModel):
id: Optional[BlobEntityId] = Field(
None,
description='JSON object with the blob entity Id. Referencing non-existing blob entity Id will cause error',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the blob entity creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(None, description='JSON object with Tenant Id')
customerId: Optional[CustomerId] = Field(
None, description='JSON object with Customer Id'
)
name: Optional[str] = Field(
None, description='blob entity name', example='report-2021-10-29_14:00:00.pdf'
)
type: Optional[str] = Field(None, description='blob entity type', example='report')
contentType: Optional[ContentType] = Field(
None, description='blob content type', example='application/pdf'
)
customerTitle: Optional[str] = Field(
None, description='Title of the customer', example='Company A'
)
customerIsPublic: Optional[bool] = Field(
None, description='Parameter that specifies if customer is public'
)
additionalInfo: Optional[JsonNode] = Field(
None, description='Additional parameters of the blob entity'
)
ownerId: Optional[EntityId] = Field(
None, description='JSON object with Customer or Tenant Id'
)
class BooleanFilterPredicate(KeyFilterPredicate):
operation: Optional[Operation] = None
value: Optional[FilterPredicateValueBoolean] = None
class BulkImportRequest(BaseModel):
file: Optional[str] = None
mapping: Optional[Mapping] = None
customerId: Optional[CustomerId] = None
entityGroupId: Optional[str] = None
class CalculatedFieldConfiguration(BaseModel):
arguments: Optional[Dict[str, Argument]] = None
expression: Optional[str] = None
output: Optional[Output] = None
type: str
class CalculatedFieldDebugEventFilter(EventFilter):
server: Optional[str] = Field(
None,
description='String value representing the server name, identifier or ip address where the platform is running',
example='ip-172-31-24-152',
)
isError: Optional[bool] = None
errorStr: Optional[str] = Field(
None,
description="The case insensitive 'contains' filter based on error message",
example='not present in the DB',
)
entityId: Optional[str] = Field(
None,
description='String value representing the entity id in the event body',
example='57b6bafe-d600-423c-9267-fe31e5218986',
)
entityType: Optional[EntityType4] = Field(
None, description='String value representing the entity type'
)
msgId: Optional[str] = Field(
None,
description='String value representing the message id in the rule engine',
example='dcf44612-2ce4-4e5d-b462-ebb9c5628228',
)
msgType: Optional[str] = Field(
None,
description='String value representing the message type',
example='POST_TELEMETRY_REQUEST',
)
arguments: Optional[str] = Field(
None,
description='String value representing the arguments that were used in the calculation performed',
example={
'x': {'ts': 1739432016629, 'value': 20},
'y': {'ts': 1739429717656, 'value': 12},
},
)
result: Optional[str] = Field(
None,
description='String value representing the result of a calculation',
example={'x + y': 32},
)
error: Optional[bool] = None
eventType: EventType = Field(
..., description='String value representing the event type', example='STATS'
)
class CheckPreProvisionedDevicesDeviceProfileProvisionConfiguration(
DeviceProfileProvisionConfiguration
):
pass
class ClientAttributesQueryingSnmpCommunicationConfig(SnmpCommunicationConfig):
mappings: Optional[List[SnmpMapping]] = None
queryingFrequencyMs: Optional[int] = None
class CoapDeviceProfileTransportConfiguration(DeviceProfileTransportConfiguration):
coapDeviceTypeConfiguration: Optional[CoapDeviceTypeConfiguration] = None
clientSettings: Optional[PowerSavingConfiguration] = None
class CoapDeviceTransportConfiguration(DeviceTransportConfiguration):
powerMode: Optional[PowerMode] = None
psmActivityTimer: Optional[int] = None
edrxCycle: Optional[int] = None
pagingTransmissionWindow: Optional[int] = None
class ComparisonTsValue(BaseModel):
current: Optional[TsValue] = None
previous: Optional[TsValue] = None
class ComplexFilterPredicate(KeyFilterPredicate):
operation: Optional[Operation1] = None
predicates: Optional[List[KeyFilterPredicate]] = None
class ComplexVersionCreateRequest(VersionCreateRequest):
syncStrategy: Optional[SyncStrategy] = None
entityTypes: Optional[Dict[str, EntityTypeVersionCreateConfig]] = None
class ComponentDescriptor(BaseModel):
id: Optional[ComponentDescriptorId] = Field(
None,
description='JSON object with the descriptor Id. Specify existing descriptor id to update the descriptor. Referencing non-existing descriptor Id will cause error. Omit this field to create new descriptor.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the descriptor creation, in milliseconds',
example=1609459200000,
)
type: Optional[Type6] = Field(None, description='Type of the Rule Node')
scope: Optional[Scope] = Field(
None,
description="Scope of the Rule Node. Always set to 'TENANT', since no rule chains on the 'SYSTEM' level yet.",
example='TENANT',
)
clusteringMode: Optional[ClusteringMode] = Field(
None,
description='Clustering mode of the RuleNode. This mode represents the ability to start Rule Node in multiple microservices.',
example='ENABLED',
)
name: Optional[str] = Field(
None,
description='Name of the Rule Node. Taken from the @RuleNode annotation.',
example='Custom Rule Node',
)
clazz: Optional[str] = Field(
None,
description='Full name of the Java class that implements the Rule Engine Node interface.',
example='com.mycompany.CustomRuleNode',
)
configurationVersion: Optional[int] = Field(
None,
description='Rule node configuration version. By default, this value is 0. If the rule node is a versioned node, this value might be greater than 0.',
)
actions: Optional[str] = Field(
None, description='Rule Node Actions. Deprecated. Always null.'
)
hasQueueName: Optional[bool] = Field(
None,
description='Indicates that the RuleNode supports queue name configuration.',
example=True,
)
configurationDescriptor: Optional[JsonNode] = None
class ContactBasedObject(BaseModel):
id: Optional[Any] = None
createdTime: Optional[int] = None
country: Optional[str] = None
state: Optional[str] = None
city: Optional[str] = None
address: Optional[str] = None
address2: Optional[str] = None
zip: Optional[str] = None
phone: Optional[str] = None
email: Optional[str] = None
name: Optional[str] = None
additionalInfo: Optional[JsonNode] = None
class Converter(BaseModel):
id: Optional[ConverterId] = Field(
None,
description='JSON object with the Converter Id. Specify this field to update the Converter. Referencing non-existing Converter Id will cause error. Omit this field to create new Converter.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the converter creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(None, description='JSON object with Tenant Id')
name: str = Field(
...,
description='Unique Converter Name in scope of Tenant',
example='Http Converter',
)
type: Type7 = Field(
...,
description='The type of the converter to process incoming or outgoing messages',
)
integrationType: Optional[IntegrationType] = Field(
None,
description='The type of the integration to which the converter is dedicated',
)
debugMode: Optional[bool] = Field(
None, description='Enable/disable debug. ', example=False
)
debugSettings: Optional[DebugSettings] = Field(
None, description='Debug settings object.'
)
configuration: Optional[JsonNode] = Field(
None,
description="JSON object representing converter configuration. It 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'",
)
additionalInfo: Optional[JsonNode] = Field(
None, description='Additional parameters of the converter'
)
edgeTemplate: Optional[bool] = Field(
None,
description='Boolean flag that specifies that is regular or edge template converter',
)
converterVersion: Optional[int] = None
version: Optional[int] = None
class CustomMenuDeleteResult(BaseModel):
success: Optional[bool] = None
assigneeType: Optional[AssigneeType] = None
assigneeList: Optional[List[EntityInfo]] = None
class CustomMenuInfo(BaseModel):
id: Optional[CustomMenuId] = None
createdTime: Optional[int] = None
tenantId: Optional[TenantId] = Field(
None, description='JSON object with Tenant Id that owns the menu.'
)
customerId: Optional[CustomerId] = Field(
None, description='JSON object with Customer Id that owns the menu.'
)
name: str = Field(
..., description='Custom menu name', example='Customer A custom menu'
)
scope: Scope1 = Field(
...,
description='Custom menu scope. Possible values: SYSTEM, TENANT, CUSTOMER',
example='TENANT',
)
assigneeType: AssigneeType = Field(
...,
description='Custom menu assignee type. Possible values are: All (all users of specified scope), CUSTOMERS (specified customers), USERS (specified list of users), NO_ASSIGN (no assignees)',
example='ALL',
)
class CustomMenuItem(MenuItem):
name: str = Field(
..., description='Name of the menu item', example='My Custom Menu'
)
icon: Optional[str] = Field(
None,
description="URL of the menu item icon. Overrides 'materialIcon'",
example='My Custom Menu',
)
menuItemType: MenuItemType = Field(
...,
description='Type of menu item (LINK or SECTION). LINK type means item has no child items, SECTION type should have at least one child',
example='LINK',
)
linkType: Optional[LinkType1] = Field(
None, description='Type of menu item (URL or DASHBOARD)', example='URL'
)
dashboardId: Optional[str] = Field(
None,
description='Id of the Dashboard to open, when user clicks the menu item',
example='https://mycompany.com',
)
hideDashboardToolbar: Optional[bool] = Field(
None, description='Hide the dashboard toolbar'
)
url: Optional[str] = Field(
None,
description='URL to open in the iframe, when user clicks the menu item',
example='https://myexternalurl.com',
)
setAccessToken: Optional[bool] = Field(
None, description='Set the access token of the current user to a new dashboard'
)
visible: Optional[bool] = Field(
None, description='Mark if menu item is visible for user'
)
pages: Optional[List[CustomMenuItem]] = Field(
None, description='List of child menu items'
)
class CustomMobilePage(MobilePage):
path: Optional[str] = Field(
None,
description='Path to custom page',
example='/alarmDetails/868c7083-032d-4f52-b8b4-7859aebb6a4e',
)
label: Optional[str] = Field(None, description='Page label', example='Air quality')
visible: bool = Field(..., description='Indicates if page is visible', example=True)
icon: Optional[str] = Field(
None, description='URL of the page icon', example='home_icon'
)
class CustomTimeSchedule(AlarmSchedule):
timezone: Optional[str] = None
items: Optional[List[CustomTimeScheduleItem]] = None
class Customer(BaseModel):
id: Optional[CustomerId] = Field(
None,
description='JSON object with the customer Id. Specify this field to update the customer. Referencing non-existing customer Id will cause error. Omit this field to create new customer.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the customer creation, in milliseconds',
example=1609459200000,
)
country: Optional[str] = Field(None, description='Country', example='US')
state: Optional[str] = Field(None, description='State', example='NY')
city: Optional[str] = Field(None, description='City', example='New York')
address: Optional[str] = Field(None, description='Address Line 1', example=42)
address2: Optional[str] = Field(None, description='Address Line 2')
zip: Optional[str] = Field(None, description='Zip code', example=10004)
phone: Optional[str] = Field(
None, description='Phone number', example='+1(415)777-7777'
)
email: Optional[str] = Field(..., description='Email', example='example@company.com')
title: Optional[str] = Field(...,
description='Title of the customer', example='Company A')
tenantId: Optional[TenantId] = Field(None, description='JSON object with Tenant Id')
parentCustomerId: Optional[CustomerId] = Field(
None, description='JSON object with parent Customer Id'
)
version: Optional[int] = None
customMenuId: Optional[CustomMenuId] = None
name: Optional[str] = Field(
None,
description='Name of the customer. Read-only, duplicated from title for backward compatibility',
example='Company A',
)
additionalInfo: Optional[JsonNode] = Field(
None, description='Additional parameters of the device'
)
customerId: Optional[CustomerId] = Field(
None, description='JSON object with parent Customer Id'
)
ownerId: Optional[EntityId] = Field(
None, description='JSON object with Customer or Tenant Id'
)
class CustomerInfo(BaseModel):
id: Optional[CustomerId] = Field(
None,
description='JSON object with the customer Id. Specify this field to update the customer. Referencing non-existing customer Id will cause error. Omit this field to create new customer.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the customer creation, in milliseconds',
example=1609459200000,
)
country: Optional[str] = Field(None, description='Country', example='US')
state: Optional[str] = Field(None, description='State', example='NY')
city: Optional[str] = Field(None, description='City', example='New York')
address: Optional[str] = Field(None, description='Address Line 1', example=42)
address2: Optional[str] = Field(None, description='Address Line 2')
zip: Optional[str] = Field(None, description='Zip code', example=10004)
phone: Optional[str] = Field(
None, description='Phone number', example='+1(415)777-7777'
)
email: str = Field(..., description='Email', example='example@company.com')
title: str = Field(..., description='Title of the customer', example='Company A')
tenantId: Optional[TenantId] = Field(None, description='JSON object with Tenant Id')
parentCustomerId: Optional[CustomerId] = Field(
None, description='JSON object with parent Customer Id'
)
version: Optional[int] = None
customMenuId: Optional[CustomMenuId] = None
ownerName: Optional[str] = Field(None, description='Owner name')
groups: Optional[List[EntityInfo]] = Field(None, description='Groups')
name: Optional[str] = Field(
None,
description='Name of the customer. Read-only, duplicated from title for backward compatibility',
example='Company A',
)
additionalInfo: Optional[JsonNode] = Field(
None, description='Additional parameters of the device'
)
customerId: Optional[CustomerId] = Field(
None, description='JSON object with parent Customer Id'
)
ownerId: Optional[EntityId] = Field(
None, description='JSON object with Customer or Tenant Id'
)
class CustomerUsersFilter(UsersFilter):
customerId: UUID
class Dashboard(BaseModel):
title: Optional[str] = Field(None, description='Title of the dashboard.')
image: Optional[str] = Field(
None,
description='Thumbnail picture for rendering of the dashboards in a grid view on mobile devices.',
)
mobileHide: Optional[bool] = Field(
None,
description='Hide dashboard from mobile devices. Useful if the dashboard is not designed for small screens.',
)
mobileOrder: Optional[int] = Field(
None,
description='Order on mobile devices. Useful to adjust sorting of the dashboards for mobile applications',
)
configuration: Optional[JsonNode] = Field(
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.',
)
name: Optional[str] = Field(
None,
description="Same as title of the dashboard. Read-only field. Update the 'title' to change the 'name' of the dashboard.",
)
resources: Optional[List[ResourceExportData]] = None
id: Optional[DashboardId] = Field(
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.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the dashboard creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(
None,
description="JSON object with Tenant Id. Tenant Id of the dashboard can't be changed.",
)
customerId: Optional[CustomerId] = Field(
None, description='JSON object with Customer Id. '
)
assignedCustomers: Optional[List[ShortCustomerInfo]] = Field(
None,
description='List of assigned customers with their info.',
Set=True,
)
version: Optional[int] = None
ownerId: Optional[EntityId] = Field(
None, description='JSON object with Customer or Tenant Id'
)
class DashboardInfo(BaseModel):
title: Optional[str] = Field(None, description='Title of the dashboard.')
image: Optional[str] = Field(
None,
description='Thumbnail picture for rendering of the dashboards in a grid view on mobile devices.',
)
mobileHide: Optional[bool] = Field(
None,
description='Hide dashboard from mobile devices. Useful if the dashboard is not designed for small screens.',
)
mobileOrder: Optional[int] = Field(
None,
description='Order on mobile devices. Useful to adjust sorting of the dashboards for mobile applications',
)
configuration: Optional[JsonNode] = Field(
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.',
)
name: Optional[str] = Field(
None,
description="Same as title of the dashboard. Read-only field. Update the 'title' to change the 'name' of the dashboard.",
)
resources: Optional[List[ResourceExportData]] = None
id: Optional[DashboardId] = Field(
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.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the dashboard creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(
None,
description="JSON object with Tenant Id. Tenant Id of the dashboard can't be changed.",
)
customerId: Optional[CustomerId] = Field(
None, description='JSON object with Customer Id. '
)
assignedCustomers: Optional[List[ShortCustomerInfo]] = Field(
None,
description='List of assigned customers with their info.',
Set=True,
)
version: Optional[int] = None
ownerName: Optional[str] = Field(None, description='Owner name')
groups: Optional[List[EntityInfo]] = Field(None, description='Groups')
ownerId: Optional[EntityId] = Field(
None, description='JSON object with Customer or Tenant Id'
)
class DashboardPage(MobilePage):
dashboardId: Optional[str] = Field(
None, description='Dashboard id', example='784f394c-42b6-435a-983c-b7beff2784f9'
)
label: Optional[str] = Field(None, description='Page label', example='Air quality')
visible: bool = Field(..., description='Indicates if page is visible', example=True)
icon: Optional[str] = Field(
None, description='URL of the page icon', example='home_icon'
)
class DebugConverterEventFilter(EventFilter):
server: Optional[str] = Field(
None,
description='String value representing the server name, identifier or ip address where the platform is running',
example='ip-172-31-24-152',
)
isError: Optional[bool] = None
errorStr: Optional[str] = Field(
None,
description="The case insensitive 'contains' filter based on error message",
example='not present in the DB',
)
type: Optional[str] = None
in_: Optional[str] = Field(None, alias='in')
out: Optional[str] = None
metadata: Optional[str] = None
error: Optional[bool] = None
eventType: EventType = Field(
..., description='String value representing the event type', example='STATS'
)
class DebugIntegrationEventFilter(EventFilter):
server: Optional[str] = Field(
None,
description='String value representing the server name, identifier or ip address where the platform is running',
example='ip-172-31-24-152',
)
isError: Optional[bool] = None
errorStr: Optional[str] = Field(
None,
description="The case insensitive 'contains' filter based on error message",
example='not present in the DB',
)
type: Optional[str] = None
message: Optional[str] = None
statusIntegration: Optional[str] = None
error: Optional[bool] = None
eventType: EventType = Field(
..., description='String value representing the event type', example='STATS'
)
class DefaultCoapDeviceTypeConfiguration(CoapDeviceTypeConfiguration):
transportPayloadTypeConfiguration: Optional[TransportPayloadTypeConfiguration] = (
None
)
class DefaultDeviceConfiguration(DeviceConfiguration):
pass
class DefaultDeviceProfileConfiguration(DeviceProfileConfiguration):
pass
class DefaultDeviceProfileTransportConfiguration(DeviceProfileTransportConfiguration):
pass
class DefaultDeviceTransportConfiguration(DeviceTransportConfiguration):
pass
class DefaultMenuItem(MenuItem):
id: Optional[str] = Field(
None, description='Unique identifier for predefined menu items', example='home'
)
name: Optional[str] = Field(
None, description='Name of the menu item', example='My Custom Menu'
)
icon: Optional[str] = Field(
None,
description="URL of the menu item icon. Overrides 'materialIcon'",
example='My Custom Menu',
)
visible: Optional[bool] = Field(
None, description='Mark if menu item is visible for user'
)
pages: Optional[List[DefaultMenuItem]] = Field(
None, description='List of child menu items'
)
class DefaultMobilePage(MobilePage):
id: Optional[Id] = Field(
None, description='Identifier for default page', example='HOME'
)
label: Optional[str] = Field(None, description='Page label', example='Air quality')
visible: bool = Field(..., description='Indicates if page is visible', example=True)
icon: Optional[str] = Field(
None, description='URL of the page icon', example='home_icon'
)
class DefaultTenantProfileConfiguration(TenantProfileConfiguration):
maxDevices: Optional[int] = None
maxAssets: Optional[int] = None
maxCustomers: Optional[int] = None
maxUsers: Optional[int] = None
maxDashboards: Optional[int] = None
maxRuleChains: Optional[int] = None
maxEdges: Optional[int] = None
maxResourcesInBytes: Optional[int] = None
maxOtaPackagesInBytes: Optional[int] = None
maxResourceSize: Optional[int] = None
maxIntegrations: Optional[int] = None
maxConverters: Optional[int] = None
maxSchedulerEvents: Optional[int] = None
whiteLabelingEnabled: Optional[bool] = None
trendzEnabled: Optional[bool] = None
transportTenantMsgRateLimit: Optional[str] = Field(None, example='1000:1,20000:60')
transportTenantTelemetryMsgRateLimit: Optional[str] = Field(
None, example='1000:1,20000:60'
)
transportTenantTelemetryDataPointsRateLimit: Optional[str] = Field(
None, example='1000:1,20000:60'
)
transportDeviceMsgRateLimit: Optional[str] = Field(None, example='20:1,600:60')
transportDeviceTelemetryMsgRateLimit: Optional[str] = Field(
None, example='20:1,600:60'
)
transportDeviceTelemetryDataPointsRateLimit: Optional[str] = Field(
None, example='20:1,600:60'
)
transportGatewayMsgRateLimit: Optional[str] = Field(None, example='20:1,600:60')
transportGatewayTelemetryMsgRateLimit: Optional[str] = Field(
None, example='20:1,600:60'
)
transportGatewayTelemetryDataPointsRateLimit: Optional[str] = Field(
None, example='20:1,600:60'
)
transportGatewayDeviceMsgRateLimit: Optional[str] = Field(
None, example='20:1,600:60'
)
transportGatewayDeviceTelemetryMsgRateLimit: Optional[str] = Field(
None, example='20:1,600:60'
)
transportGatewayDeviceTelemetryDataPointsRateLimit: Optional[str] = Field(
None, example='20:1,600:60'
)
integrationMsgsPerTenantRateLimit: Optional[str] = Field(
None, example='20:1,600:60'
)
integrationMsgsPerDeviceRateLimit: Optional[str] = Field(
None, example='20:1,600:60'
)
integrationMsgsPerAssetRateLimit: Optional[str] = None
tenantEntityExportRateLimit: Optional[str] = Field(None, example='20:1,600:60')
tenantEntityImportRateLimit: Optional[str] = Field(None, example='20:1,600:60')
tenantNotificationRequestsRateLimit: Optional[str] = Field(
None, example='20:1,600:60'
)
tenantNotificationRequestsPerRuleRateLimit: Optional[str] = Field(
None, example='20:1,600:60'
)
maxTransportMessages: Optional[int] = Field(None, example=10000000)
maxTransportDataPoints: Optional[int] = Field(None, example=10000000)
maxREExecutions: Optional[int] = Field(None, example=4000000)
maxJSExecutions: Optional[int] = Field(None, example=5000000)
maxTbelExecutions: Optional[int] = Field(None, example=5000000)
maxDPStorageDays: Optional[int] = Field(None, example=0)
maxRuleNodeExecutionsPerMessage: Optional[int] = Field(None, example=50)
maxDebugModeDurationMinutes: Optional[int] = Field(None, example=15)
maxEmails: Optional[int] = Field(None, example=0)
smsEnabled: Optional[bool] = Field(None, example=True)
maxSms: Optional[int] = Field(None, example=0)
maxCreatedAlarms: Optional[int] = Field(None, example=1000)
tenantServerRestLimitsConfiguration: Optional[str] = None
customerServerRestLimitsConfiguration: Optional[str] = None
maxWsSessionsPerTenant: Optional[int] = None
maxWsSessionsPerCustomer: Optional[int] = None
maxWsSessionsPerRegularUser: Optional[int] = None
maxWsSessionsPerPublicUser: Optional[int] = None
wsMsgQueueLimitPerSession: Optional[int] = None
maxWsSubscriptionsPerTenant: Optional[int] = None
maxWsSubscriptionsPerCustomer: Optional[int] = None
maxWsSubscriptionsPerRegularUser: Optional[int] = None
maxWsSubscriptionsPerPublicUser: Optional[int] = None
wsUpdatesPerSessionRateLimit: Optional[str] = None
cassandraQueryTenantRateLimitsConfiguration: Optional[str] = None
edgeEventRateLimits: Optional[str] = None
edgeEventRateLimitsPerEdge: Optional[str] = None
edgeUplinkMessagesRateLimits: Optional[str] = None
edgeUplinkMessagesRateLimitsPerEdge: Optional[str] = None
defaultStorageTtlDays: Optional[int] = None
alarmsTtlDays: Optional[int] = None
rpcTtlDays: Optional[int] = None
queueStatsTtlDays: Optional[int] = None
ruleEngineExceptionsTtlDays: Optional[int] = None
blobEntityTtlDays: Optional[int] = None
warnThreshold: Optional[float] = None
maxCalculatedFieldsPerEntity: Optional[int] = Field(None, example=5)
maxArgumentsPerCF: Optional[int] = Field(None, example=10)
maxDataPointsPerRollingArg: Optional[conint(ge=1)] = Field(None, example=1000)
maxStateSizeInKBytes: Optional[int] = Field(None, example=32)
maxSingleValueArgumentSizeInKBytes: Optional[int] = Field(None, example=2)
class DeviceActivityNotificationRuleTriggerConfig(NotificationRuleTriggerConfig):
devices: Optional[List[UUID]] = Field(None, Set=True)
deviceProfiles: Optional[List[UUID]] = Field(None, Set=True)
notifyOn: List[NotifyOnEnum3] = Field(..., Set=True)
class DeviceCredentials(BaseModel):
id: DeviceCredentialsId = Field(
...,
description="The Id is automatically generated during device creation. Use 'getDeviceCredentialsByDeviceId' to obtain the id based on device id. Use 'updateDeviceCredentials' to update device credentials. ",
example='784f394c-42b6-435a-983c-b7beff2784f9',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the device credentials creation, in milliseconds',
example=1609459200000,
)
deviceId: DeviceId = Field(..., description='JSON object with the device Id.')
credentialsType: Optional[CredentialsType] = Field(
None, description='Type of the credentials'
)
credentialsId: str = Field(
...,
description='Unique Credentials Id per platform instance. Used to lookup credentials from the database. By default, new access token for your device. Depends on the type of the credentials.',
example='Access token or other value that depends on the credentials type',
)
credentialsValue: Optional[str] = Field(
None,
description='Value of the credentials. Null in case of ACCESS_TOKEN credentials type. Base64 value in case of X509_CERTIFICATE. Complex object in case of MQTT_BASIC and LWM2M_CREDENTIALS',
example='Null in case of ACCESS_TOKEN. See model definition.',
)
version: Optional[int] = None
class DeviceData(BaseModel):
configuration: Optional[DefaultDeviceConfiguration] = Field(
None,
description='Device configuration for device profile type. DEFAULT is only supported value for now',
)
transportConfiguration: Optional[
Union[
CoapDeviceTransportConfiguration,
DefaultDeviceTransportConfiguration,
Lwm2mDeviceTransportConfiguration,
MqttDeviceTransportConfiguration,
SnmpDeviceTransportConfiguration,
]
] = Field(
None, description='Device transport configuration used to connect the device'
)
class DeviceGroupOtaPackage(BaseModel):
id: Optional[UUID] = None
groupId: Optional[EntityGroupId] = None
otaPackageType: Optional[OtaPackageType] = None
otaPackageId: Optional[OtaPackageId] = None
otaPackageUpdateTime: Optional[int] = None
class DeviceInfo(BaseModel):
id: Optional[DeviceId] = Field(
None,
description='JSON object with the Device Id. Specify this field to update the Device. Referencing non-existing Device Id will cause error. Omit this field to create new Device.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the device creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(
None,
description="JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id.",
)
customerId: Optional[CustomerId] = Field(
None,
description="JSON object with Customer Id. Use 'assignDeviceToCustomer' to change the Customer Id.",
)
name: Optional[str] = Field(
None,
description='Unique Device Name in scope of Tenant',
example='A4B72CCDFF33',
)
type: Optional[str] = Field(
None, description='Device Profile Name', example='Temperature Sensor'
)
label: Optional[str] = Field(
None, description='Label that may be used in widgets', example='Room 234 Sensor'
)
deviceProfileId: DeviceProfileId = Field(
..., description='JSON object with Device Profile Id.'
)
firmwareId: Optional[OtaPackageId] = Field(
None, description='JSON object with Ota Package Id.'
)
softwareId: Optional[OtaPackageId] = Field(
None, description='JSON object with Ota Package Id.'
)
version: Optional[int] = None
ownerName: Optional[str] = Field(None, description='Owner name')
groups: Optional[List[EntityInfo]] = Field(None, description='Groups')
active: Optional[bool] = Field(None, description='Device active flag.')
additionalInfo: Optional[JsonNode] = Field(
None, description='Additional parameters of the device'
)
ownerId: Optional[EntityId] = Field(
None, description='JSON object with Customer or Tenant Id'
)
deviceData: Optional[DeviceData] = Field(
None,
description='JSON object with content specific to type of transport in the device profile.',
)
class DeviceProfileInfo(BaseModel):
id: Optional[EntityId] = Field(None, description='JSON object with the entity Id. ')
tenantId: Optional[TenantId] = Field(None, description='Tenant id.')
name: Optional[str] = Field(None, description='Entity Name')
image: Optional[str] = Field(
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. ',
)
defaultDashboardId: Optional[DashboardId] = Field(
None,
description='Reference to the dashboard. Used in the mobile application to open the default dashboard when user navigates to device details.',
)
type: Optional[Type8] = Field(
None,
description="Type of the profile. Always 'DEFAULT' for now. Reserved for future use.",
)
transportType: Optional[TransportType] = Field(
None,
description='Type of the transport used to connect the device. Default transport supports HTTP, CoAP and MQTT.',
)
class DeviceSearchQuery(BaseModel):
parameters: Optional[RelationsSearchParameters] = Field(
None, description='Main search parameters.'
)
relationType: Optional[str] = Field(
None,
description="Type of the relation between root entity and device (e.g. 'Contains' or 'Manages').",
)
deviceTypes: Optional[List[str]] = Field(
None,
description="Array of device types to filter the related entities (e.g. 'Temperature Sensor', 'Smoke Sensor').",
)
class DeviceSearchQueryFilter(EntityFilter):
rootEntity: Optional[EntityId] = None
relationType: Optional[str] = None
direction: Optional[Direction] = None
maxLevel: Optional[int] = None
fetchLastLevelOnly: Optional[bool] = None
deviceTypes: Optional[List[str]] = None
class DeviceTypeFilter(EntityFilter):
deviceType: Optional[str] = None
deviceTypes: Optional[List[str]] = None
deviceNameFilter: Optional[str] = None
class Domain(BaseModel):
id: Optional[DomainId] = None
createdTime: Optional[int] = None
tenantId: Optional[TenantId] = Field(None, description='JSON object with Tenant Id')
customerId: Optional[CustomerId] = Field(
None, description='JSON object with Customer Id'
)
name: str = Field(..., description='Domain name. Cannot be empty')
oauth2Enabled: Optional[bool] = Field(
None, description='Whether OAuth2 settings are enabled or not'
)
propagateToEdge: Optional[bool] = Field(
None, description='Whether OAuth2 settings are enabled on Edge or not'
)
ownerId: Optional[EntityId] = Field(
None, description='JSON object with Customer or Tenant Id'
)
class DomainInfo(BaseModel):
id: Optional[DomainId] = None
createdTime: Optional[int] = None
tenantId: Optional[TenantId] = Field(None, description='JSON object with Tenant Id')
customerId: Optional[CustomerId] = Field(
None, description='JSON object with Customer Id'
)
name: str = Field(..., description='Domain name. Cannot be empty')
oauth2Enabled: Optional[bool] = Field(
None, description='Whether OAuth2 settings are enabled or not'
)
propagateToEdge: Optional[bool] = Field(
None, description='Whether OAuth2 settings are enabled on Edge or not'
)
oauth2ClientInfos: Optional[List[OAuth2ClientInfo]] = Field(
None, description='List of available oauth2 clients'
)
ownerId: Optional[EntityId] = Field(
None, description='JSON object with Customer or Tenant Id'
)
class DurationAlarmConditionSpec(AlarmConditionSpec):
unit: Optional[Unit] = None
predicate: Optional[FilterPredicateValueLong] = None
class Edge(BaseModel):
id: Optional[EdgeId] = Field(
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.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the edge creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(
None,
description="JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id.",
)
customerId: Optional[CustomerId] = Field(
None,
description="JSON object with Customer Id. Use 'assignEdgeToCustomer' to change the Customer Id.",
)
rootRuleChainId: Optional[RuleChainId] = Field(
None,
description="JSON object with Root Rule Chain Id. Use 'setEdgeRootRuleChain' to change the Root Rule Chain Id.",
)
name: str = Field(
..., description='Unique Edge Name in scope of Tenant', example='Silo_A_Edge'
)
type: str = Field(..., description='Edge type', example='Silos')
label: Optional[str] = Field(
None,
description='Label that may be used in widgets',
example='Silo Edge on far field',
)
routingKey: str = Field(
..., description="Edge routing key ('username') to authorize on cloud"
)
secret: str = Field(
..., description="Edge secret ('password') to authorize on cloud"
)
edgeLicenseKey: str = Field(
...,
description='Edge license key obtained from license portal',
example='AgcnI24Z06XC&m6Sxsdgf',
)
cloudEndpoint: str = Field(
...,
description="Edge uses this cloud URL to activate and periodically check it's license",
example='https://thingsboard.cloud',
)
version: Optional[int] = None
ownerId: Optional[EntityId] = None
additionalInfo: Optional[JsonNode] = None
class EdgeCommunicationFailureNotificationRuleTriggerConfig(
NotificationRuleTriggerConfig
):
edges: Optional[List[UUID]] = Field(None, Set=True)
class EdgeConnectionNotificationRuleTriggerConfig(NotificationRuleTriggerConfig):
edges: Optional[List[UUID]] = Field(None, Set=True)
notifyOn: Optional[List[NotifyOnEnum4]] = Field(None, Set=True)
class EdgeEvent(BaseModel):
id: Optional[EdgeEventId] = None
createdTime: Optional[int] = None
seqId: Optional[int] = None
tenantId: Optional[TenantId] = None
edgeId: Optional[EdgeId] = None
action: Optional[Action] = None
entityId: Optional[UUID] = None
uid: Optional[str] = None
type: Optional[Type10] = None
entityGroupId: Optional[UUID] = None
body: Optional[JsonNode] = None
class EdgeInfo(BaseModel):
id: Optional[EdgeId] = Field(
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.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the edge creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(
None,
description="JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id.",
)
customerId: Optional[CustomerId] = Field(
None,
description="JSON object with Customer Id. Use 'assignEdgeToCustomer' to change the Customer Id.",
)
rootRuleChainId: Optional[RuleChainId] = Field(
None,
description="JSON object with Root Rule Chain Id. Use 'setEdgeRootRuleChain' to change the Root Rule Chain Id.",
)
name: str = Field(
..., description='Unique Edge Name in scope of Tenant', example='Silo_A_Edge'
)
type: str = Field(..., description='Edge type', example='Silos')
label: Optional[str] = Field(
None,
description='Label that may be used in widgets',
example='Silo Edge on far field',
)
routingKey: str = Field(
..., description="Edge routing key ('username') to authorize on cloud"
)
secret: str = Field(
..., description="Edge secret ('password') to authorize on cloud"
)
edgeLicenseKey: str = Field(
...,
description='Edge license key obtained from license portal',
example='AgcnI24Z06XC&m6Sxsdgf',
)
cloudEndpoint: str = Field(
...,
description="Edge uses this cloud URL to activate and periodically check it's license",
example='https://thingsboard.cloud',
)
version: Optional[int] = None
ownerName: Optional[str] = Field(None, description='Owner name')
groups: Optional[List[EntityInfo]] = Field(None, description='Groups')
ownerId: Optional[EntityId] = None
additionalInfo: Optional[JsonNode] = None
class EdgeSearchQuery(BaseModel):
parameters: Optional[RelationsSearchParameters] = Field(
None, description='Main search parameters.'
)
relationType: Optional[str] = Field(
None,
description="Type of the relation between root entity and edge (e.g. 'Contains' or 'Manages').",
)
edgeTypes: Optional[List[str]] = Field(
None,
description="Array of edge types to filter the related entities (e.g. 'Silos', 'Stores').",
)
class EdgeSearchQueryFilter(EntityFilter):
rootEntity: Optional[EntityId] = None
relationType: Optional[str] = None
direction: Optional[Direction] = None
maxLevel: Optional[int] = None
fetchLastLevelOnly: Optional[bool] = None
edgeTypes: Optional[List[str]] = None
class EdgeTypeFilter(EntityFilter):
edgeType: Optional[str] = None
edgeTypes: Optional[List[str]] = None
edgeNameFilter: Optional[str] = None
class EmailTwoFaAccountConfig(TwoFaAccountConfig):
email: str
class EmailTwoFaProviderConfig(TwoFaProviderConfig):
verificationCodeLifetime: Optional[conint(ge=1)] = None
class EntitiesByGroupNameFilter(EntityFilter):
groupType: Optional[GroupType] = None
ownerId: Optional[EntityId] = None
entityGroupNameFilter: Optional[str] = None
class EntitiesLimitNotificationRuleTriggerConfig(NotificationRuleTriggerConfig):
entityTypes: Optional[List[EntityType13]] = Field(None, Set=True)
threshold: Optional[confloat(le=1.0)] = None
class EntityActionNotificationRuleTriggerConfig(NotificationRuleTriggerConfig):
entityTypes: Optional[List[EntityType13]] = Field(None, Set=True)
created: Optional[bool] = None
updated: Optional[bool] = None
deleted: Optional[bool] = None
class EntityData(BaseModel):
entityId: Optional[EntityId] = None
readAttrs: Optional[bool] = None
readTs: Optional[bool] = None
latest: Optional[Dict[str, Dict[str, TsValue]]] = None
timeseries: Optional[Dict[str, List[TsValue]]] = None
aggLatest: Optional[Dict[str, ComparisonTsValue]] = None
class EntityDataSortOrder(BaseModel):
key: Optional[EntityKey] = None
direction: Optional[Direction3] = None
class EntityGroup(BaseModel):
id: Optional[EntityGroupId] = Field(
None,
description='JSON object with the EntityGroupId Id. Specify this field to update the Entity Group. Referencing non-existing Entity Group Id will cause error. Omit this field to create new Entity Group.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the entity group creation, in milliseconds',
example=1609459200000,
)
type: Type11
name: str = Field(
..., description='Name of the entity group', example='Water meters'
)
ownerId: Optional[EntityId] = Field(
None,
description='JSON object with the owner of the group - Tenant or Customer Id.',
)
additionalInfo: Optional[JsonNode] = Field(
None, description='Arbitrary JSON with additional information about the group'
)
configuration: Optional[JsonNode] = Field(
None,
description='JSON with the configuration for UI components: list of columns, settings, actions, etc ',
)
version: Optional[int] = None
groupAll: Optional[bool] = Field(
None,
description="Indicates special group 'All' that contains all entities and can't be deleted.",
)
edgeGroupAll: Optional[bool] = Field(
None,
description="Indicates special edge group 'All' that contains all entities and can't be deleted.",
)
tenantId: Optional[TenantId] = None
class EntityGroupInfo(BaseModel):
id: Optional[EntityGroupId] = Field(
None,
description='JSON object with the EntityGroupId Id. Specify this field to update the Entity Group. Referencing non-existing Entity Group Id will cause error. Omit this field to create new Entity Group.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the entity group creation, in milliseconds',
example=1609459200000,
)
type: Type11
name: str = Field(
..., description='Name of the entity group', example='Water meters'
)
ownerId: Optional[EntityId] = Field(
None,
description='JSON object with the owner of the group - Tenant or Customer Id.',
)
additionalInfo: Optional[JsonNode] = Field(
None, description='Arbitrary JSON with additional information about the group'
)
configuration: Optional[JsonNode] = Field(
None,
description='JSON with the configuration for UI components: list of columns, settings, actions, etc ',
)
version: Optional[int] = None
ownerIds: List[EntityId] = Field(
..., description='List of the entity group owners.', Set=True
)
groupAll: Optional[bool] = Field(
None,
description="Indicates special group 'All' that contains all entities and can't be deleted.",
)
edgeGroupAll: Optional[bool] = Field(
None,
description="Indicates special edge group 'All' that contains all entities and can't be deleted.",
)
tenantId: Optional[TenantId] = None
class EntityRelation(BaseModel):
from_: Optional[EntityId] = Field(
None, alias='from', description='JSON object with [from] Entity Id.'
)
to: Optional[EntityId] = Field(None, description='JSON object with [to] Entity Id.')
type: Optional[str] = Field(
None, description='String value of relation type.', example='Contains'
)
typeGroup: Optional[TypeGroup] = Field(
None, description='Represents the type group of the relation.', example='COMMON'
)
version: Optional[int] = None
additionalInfo: Optional[JsonNode] = Field(
None, description='Additional parameters of the relation'
)
class EntityRelationInfo(BaseModel):
from_: Optional[EntityId] = Field(
None, alias='from', description='JSON object with [from] Entity Id.'
)
to: Optional[EntityId] = Field(None, description='JSON object with [to] Entity Id.')
type: Optional[str] = Field(
None, description='String value of relation type.', example='Contains'
)
typeGroup: Optional[TypeGroup] = Field(
None, description='Represents the type group of the relation.', example='COMMON'
)
version: Optional[int] = None
fromName: Optional[str] = Field(
None,
description='Name of the entity for [from] direction.',
example='A4B72CCDFF33',
)
toName: Optional[str] = Field(
None,
description='Name of the entity for [to] direction.',
example='A4B72CCDFF35',
)
additionalInfo: Optional[JsonNode] = Field(
None, description='Additional parameters of the relation'
)
class EntityRelationsQuery(BaseModel):
parameters: Optional[RelationsSearchParameters] = Field(
None, description='Main search parameters.'
)
filters: Optional[List[RelationEntityTypeFilter]] = Field(
None, description='Main filters.'
)
class EntitySubtype(BaseModel):
tenantId: Optional[TenantId] = None
entityType: Optional[EntityType17] = None
type: Optional[str] = None
class EntityTypeVersionLoadRequest(VersionLoadRequest):
entityTypes: Optional[Dict[str, EntityTypeVersionLoadConfig]] = None
rollbackOnError: Optional[bool] = None
class EntityView(BaseModel):
entityId: EntityId = Field(
..., description='JSON object with the referenced Entity Id (Device or Asset).'
)
tenantId: Optional[TenantId] = Field(
None, description='JSON object with Tenant Id.'
)
customerId: Optional[CustomerId] = Field(
None,
description="JSON object with Customer Id. Use 'assignEntityViewToCustomer' to change the Customer Id.",
)
name: str = Field(..., description='Entity View name', example='A4B72CCDFF33')
type: str = Field(
..., description='Device Profile Name', example='Temperature Sensor'
)
keys: Optional[TelemetryEntityView] = Field(
None,
description='Set of telemetry and attribute keys to expose via Entity View.',
)
startTimeMs: Optional[int] = Field(
None,
description='Represents the start time of the interval that is used to limit access to target device telemetry. Customer will not be able to see entity telemetry that is outside the specified interval;',
)
endTimeMs: Optional[int] = Field(
None,
description='Represents the end time of the interval that is used to limit access to target device telemetry. Customer will not be able to see entity telemetry that is outside the specified interval;',
)
version: Optional[int] = None
id: Optional[EntityViewId] = Field(
None,
description='JSON object with the Entity View Id. Specify this field to update the Entity View. Referencing non-existing Entity View Id will cause error. Omit this field to create new Entity View.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the Entity View creation, in milliseconds',
example=1609459200000,
)
additionalInfo: Optional[JsonNode] = Field(
None, description='Additional parameters of the device'
)
ownerId: Optional[EntityId] = Field(
None, description='JSON object with Customer or Tenant Id'
)
class EntityViewInfo(BaseModel):
id: Optional[EntityViewId] = Field(
None,
description='JSON object with the Entity View Id. Specify this field to update the Entity View. Referencing non-existing Entity View Id will cause error. Omit this field to create new Entity View.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the Entity View creation, in milliseconds',
example=1609459200000,
)
entityId: EntityId = Field(
..., description='JSON object with the referenced Entity Id (Device or Asset).'
)
tenantId: Optional[TenantId] = Field(
None, description='JSON object with Tenant Id.'
)
customerId: Optional[CustomerId] = Field(
None,
description="JSON object with Customer Id. Use 'assignEntityViewToCustomer' to change the Customer Id.",
)
name: str = Field(..., description='Entity View name', example='A4B72CCDFF33')
type: str = Field(
..., description='Device Profile Name', example='Temperature Sensor'
)
keys: Optional[TelemetryEntityView] = Field(
None,
description='Set of telemetry and attribute keys to expose via Entity View.',
)
startTimeMs: Optional[int] = Field(
None,
description='Represents the start time of the interval that is used to limit access to target device telemetry. Customer will not be able to see entity telemetry that is outside the specified interval;',
)
endTimeMs: Optional[int] = Field(
None,
description='Represents the end time of the interval that is used to limit access to target device telemetry. Customer will not be able to see entity telemetry that is outside the specified interval;',
)
version: Optional[int] = None
ownerName: Optional[str] = Field(None, description='Owner name')
groups: Optional[List[EntityInfo]] = Field(None, description='Groups')
additionalInfo: Optional[JsonNode] = Field(
None, description='Additional parameters of the device'
)
ownerId: Optional[EntityId] = Field(
None, description='JSON object with Customer or Tenant Id'
)
class EntityViewSearchQuery(BaseModel):
parameters: Optional[RelationsSearchParameters] = Field(
None, description='Main search parameters.'
)
relationType: Optional[str] = Field(
None,
description="Type of the relation between root entity and device (e.g. 'Contains' or 'Manages').",
)
entityViewTypes: Optional[List[str]] = Field(
None,
description="Array of entity view types to filter the related entities (e.g. 'Temperature Sensor', 'Smoke Sensor').",
)
class ErrorEventFilter(EventFilter):
server: Optional[str] = Field(
None,
description='String value representing the server name, identifier or ip address where the platform is running',
example='ip-172-31-24-152',
)
method: Optional[str] = Field(
None,
description='String value representing the method name when the error happened',
example='onClusterEventMsg',
)
errorStr: Optional[str] = Field(
None,
description="The case insensitive 'contains' filter based on error message",
example='not present in the DB',
)
eventType: EventType = Field(
..., description='String value representing the event type', example='STATS'
)
class EscalatedNotificationRuleRecipientsConfig(NotificationRuleRecipientsConfig):
escalationTable: Dict[str, List[UUID]]
triggerType: TriggerType
class EventInfo(BaseModel):
id: Optional[EventId] = None
createdTime: Optional[int] = Field(
None,
description='Timestamp of the event creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(
None, description='JSON object with Tenant Id.'
)
type: Optional[str] = Field(None, description='Event type', example='STATS')
uid: Optional[str] = Field(
None, description='string', example='784f394c-42b6-435a-983c-b7beff2784f9'
)
entityId: Optional[EntityId] = Field(
None, description='JSON object with Entity Id for which event is created.'
)
body: Optional[JsonNode] = None
class GroupPermission(BaseModel):
tenantId: Optional[TenantId] = Field(
None, description='JSON object with the Tenant Id.'
)
userGroupId: Optional[EntityGroupId] = Field(
None,
description='JSON object with the User Group Id. Represent user group that will have permissions to perform operations against corresponding Entity Group.',
)
roleId: Optional[RoleId] = Field(
None, description='JSON object with the Role Id. Represent set of permissions.'
)
entityGroupId: Optional[EntityGroupId] = Field(
None,
description='JSON object with the Entity Group Id. Represent entity (device, asset, etc.) group.',
)
entityGroupType: Optional[EntityGroupType] = Field(
None,
description='Type of the entities in the group: DEVICE, ASSET, CUSTOMER, etc.',
)
isPublic: Optional[bool] = None
id: Optional[GroupPermissionId] = Field(
None,
description='JSON object with the Group Permission Id. Specify this field to update the Group Permission. Referencing non-existing Group Permission Id will cause error. Omit this field to create new Group Permission.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the group permission creation, in milliseconds',
example=1609459200000,
)
name: Optional[str] = Field(
None, description='Name of the Group Permissions. Auto-generated'
)
public: Optional[bool] = None
class HomeMenuItem(MenuItem):
id: Optional[str] = Field(
None, description='Unique identifier for predefined menu items', example='home'
)
name: Optional[str] = Field(
None, description='Name of the menu item', example='My Custom Menu'
)
icon: Optional[str] = Field(
None,
description="URL of the menu item icon. Overrides 'materialIcon'",
example='My Custom Menu',
)
visible: Optional[bool] = Field(
None, description='Mark if menu item is visible for user'
)
pages: Optional[List[DefaultMenuItem]] = Field(
None, description='List of child menu items'
)
homeType: Optional[HomeType] = Field(
None,
description='DEFAULT or DASHBOARD. DASHBOARD means default home page presentation changed to refer to dashboard',
)
dashboardId: Optional[str] = Field(
None, description='Id of the Dashboard to open, when user clicks the menu item'
)
hideDashboardToolbar: Optional[bool] = Field(
None, description='Hide the dashboard toolbar'
)
class Integration(BaseModel):
id: Optional[IntegrationId] = Field(
None,
description='JSON object with the Integration Id. Specify this field to update the Integration. Referencing non-existing Integration Id will cause error. Omit this field to create new Integration.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the integration creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(None, description='JSON object with Tenant Id')
name: str = Field(..., description='Integration Name', example='Http Integration')
type: Type14 = Field(..., description='The type of the integration')
debugMode: Optional[bool] = Field(
None, description='Enable/disable debug. ', example=False
)
debugSettings: Optional[DebugSettings] = Field(
None, description='Debug settings object.'
)
enabled: Optional[bool] = Field(
None, description='Boolean flag to enable/disable the integration'
)
allowCreateDevicesOrAssets: Optional[bool] = Field(
None,
description='Boolean flag to allow/disallow the integration to create devices or assets that send message and do not exist in the system yet',
)
version: Optional[int] = None
defaultConverterId: ConverterId = Field(
..., description='JSON object with the Uplink Converter Id'
)
downlinkConverterId: Optional[ConverterId] = Field(
None, description='JSON object with the Downlink Converter Id'
)
routingKey: str = Field(
...,
description="String value used by HTTP based integrations for the base URL construction and by the remote integrations. Remote integration uses this value along with the 'secret' for kind of security and validation to be able to connect to the platform using Grpc",
example='ca1a01b6-4ca1-3da5-54e4-a07090b65644',
)
secret: Optional[str] = Field(
None,
description="String value used by the remote integrations. Remote integration uses this value along with the 'routingKey' for kind of security and validation to be able to connect to the platform using Grpc",
example='nl83m1ktpwpwwmww29sm',
)
configuration: JsonNode = Field(
...,
description="JSON object representing integration configuration. Each integration type has specific configuration with the connectivity parameters (like 'host' and 'port' for MQTT type or 'baseUrl' for HTTP based type, etc.) and other important parameters dependent on the integration type",
)
additionalInfo: Optional[JsonNode] = Field(
None, description='Additional parameters of the integration'
)
edgeTemplate: Optional[bool] = Field(
None,
description='Boolean flag that specifies that is regular or edge template integration',
)
remote: Optional[bool] = Field(
None,
description='Boolean flag to enable/disable the integration to be executed remotely. Remote integration is launched in a separate microservice. Local integration is executed by the platform core',
)
class IntegrationInfo(BaseModel):
id: Optional[IntegrationId] = Field(
None,
description='JSON object with the Integration Id. Specify this field to update the Integration. Referencing non-existing Integration Id will cause error. Omit this field to create new Integration.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the integration creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(None, description='JSON object with Tenant Id')
name: str = Field(..., description='Integration Name', example='Http Integration')
type: Type14 = Field(..., description='The type of the integration')
debugMode: Optional[bool] = Field(
None, description='Enable/disable debug. ', example=False
)
debugSettings: Optional[DebugSettings] = Field(
None, description='Debug settings object.'
)
enabled: Optional[bool] = Field(
None, description='Boolean flag to enable/disable the integration'
)
allowCreateDevicesOrAssets: Optional[bool] = Field(
None,
description='Boolean flag to allow/disallow the integration to create devices or assets that send message and do not exist in the system yet',
)
version: Optional[int] = None
status: Optional[Dict[str, Any]] = None
stats: Optional[ArrayNode] = None
edgeTemplate: Optional[bool] = Field(
None,
description='Boolean flag that specifies that is regular or edge template integration',
)
remote: Optional[bool] = Field(
None,
description='Boolean flag to enable/disable the integration to be executed remotely. Remote integration is launched in a separate microservice. Local integration is executed by the platform core',
)
class IntegrationLifecycleEventNotificationRuleTriggerConfig(
NotificationRuleTriggerConfig
):
integrationTypes: Optional[List[IntegrationType]] = Field(None, Set=True)
integrations: Optional[List[UUID]] = Field(None, Set=True)
notifyOn: Optional[List[NotifyOnEnum5]] = Field(None, Set=True)
onlyOnError: Optional[bool] = None
class JsonTransportPayloadConfiguration(TransportPayloadTypeConfiguration):
pass
class KeyFilter(BaseModel):
key: Optional[EntityKey] = None
valueType: Optional[ValueType] = None
predicate: Optional[
Union[
BooleanFilterPredicate,
ComplexFilterPredicate,
NumericFilterPredicate,
StringFilterPredicate,
]
] = None
class LoginWhiteLabelingParams(BaseModel):
logoImageUrl: Optional[str] = Field(
None,
description='Logo image URL',
example='https://company.com/images/logo.png',
)
logoImageHeight: Optional[int] = Field(
None,
description='The height of a logo container. Logo image will be automatically scaled.',
)
appTitle: Optional[str] = Field(
None,
description='White-labeled name of the platform',
example='My Company IoT Platform',
)
favicon: Optional[Favicon] = Field(
None, description='JSON object that contains website icon url and type'
)
paletteSettings: Optional[PaletteSettings] = Field(
None,
description='Complex JSON that describes structure of the Angular Material Palette. See [theming](https://material.angular.io/guide/theming) for more details',
)
helpLinkBaseUrl: Optional[str] = Field(None, description='Base URL for help link')
uiHelpBaseUrl: Optional[str] = Field(
None,
description='Base URL for the repository with the UI help components (markdown)',
)
enableHelpLinks: Optional[bool] = Field(
None, description='Enable or Disable help links'
)
whiteLabelingEnabled: Optional[bool] = Field(
None, description='Enable white-labeling'
)
showNameVersion: Optional[bool] = Field(
None, description='Show platform name and version on UI and login screen'
)
platformName: Optional[str] = Field(None, description='White-labeled platform name')
platformVersion: Optional[str] = Field(
None, description='White-labeled platform version'
)
customCss: Optional[str] = Field(None, description='Custom CSS content')
hideConnectivityDialog: Optional[bool] = Field(
None, description='Hide device connectivity dialog'
)
pageBackgroundColor: Optional[str] = Field(
None, description='Login page background color', example='#d90f0f'
)
darkForeground: Optional[bool] = Field(
None, description='Enable/Disable dark foreground'
)
domainId: Optional[DomainId] = Field(None, description='Domain id')
baseUrl: Optional[str] = Field(
None,
description='Base URL for the activation link, etc',
example='https://iot.mycompany.com',
)
prohibitDifferentUrl: Optional[bool] = Field(
None,
description='Prohibit use of other URLs. It is recommended to enable this setting',
example=True,
)
adminSettingsId: Optional[str] = Field(
None, description='Id of the settings object that store this parameters'
)
showNameBottom: Optional[bool] = Field(
None, description='Show platform name and version on login page'
)
class LwM2mInstance(BaseModel):
id: Optional[int] = Field(None, description='LwM2M Instance id.', example=0)
resources: Optional[List[LwM2mResourceObserve]] = Field(
None, description='LwM2M Resource observe.'
)
class LwM2mObject(BaseModel):
id: Optional[int] = Field(None, description='LwM2M Object id.', example=19)
keyId: Optional[str] = Field(
None, description='LwM2M Object key id.', example='19_1.0'
)
name: Optional[str] = Field(
None, description='LwM2M Object name.', example='BinaryAppDataContainer'
)
multiple: Optional[bool] = Field(
None, description='LwM2M Object multiple.', example=True
)
mandatory: Optional[bool] = Field(
None, description='LwM2M Object mandatory.', example=False
)
instances: Optional[List[LwM2mInstance]] = Field(
None, description='LwM2M Object instances.'
)
class Lwm2mDeviceProfileTransportConfiguration(DeviceProfileTransportConfiguration):
observeAttr: Optional[TelemetryMappingConfiguration] = None
bootstrapServerUpdateEnable: Optional[bool] = None
bootstrap: Optional[List[LwM2MBootstrapServerCredential]] = None
clientLwM2mSettings: Optional[OtherConfiguration] = None
class MicrosoftTeamsNotificationTargetConfig(NotificationTargetConfig):
webhookUrl: str
channelName: str
useOldApi: Optional[bool] = None
id: Optional[Any] = None
title: Optional[str] = None
firstName: Optional[str] = None
lastName: Optional[str] = None
email: Optional[str] = None
class MobileApp(BaseModel):
id: Optional[MobileAppId] = None
createdTime: Optional[int] = None
tenantId: Optional[TenantId] = Field(None, description='JSON object with Tenant Id')
pkgName: str = Field(..., description='Application package name. Cannot be empty')
appSecret: str = Field(
..., description='Application secret. The length must be at least 16 characters'
)
platformType: PlatformType = Field(
..., description='Application platform type: ANDROID or IOS'
)
status: Status5 = Field(
..., description='Application status: PUBLISHED, DEPRECATED, SUSPENDED, DRAFT'
)
versionInfo: Optional[MobileAppVersionInfo] = Field(
None, description='Application version info'
)
storeInfo: Optional[StoreInfo] = Field(
None, description='Application store information'
)
name: Optional[str] = Field(
None, description='Mobile app package name', example='my.mobile.app'
)
class MobileAppNotificationDeliveryMethodConfig(NotificationDeliveryMethodConfig):
firebaseServiceAccountCredentialsFileName: Optional[str] = None
firebaseServiceAccountCredentials: Optional[str] = None
useSystemSettings: Optional[bool] = None
class MobileLayoutConfig(BaseModel):
pages: Optional[
List[Union[CustomMobilePage, DashboardPage, DefaultMobilePage, WebViewPage]]
] = Field(None, description='List of pages')
class MqttDeviceProfileTransportConfiguration(DeviceProfileTransportConfiguration):
deviceTelemetryTopic: Optional[str] = None
deviceAttributesTopic: Optional[str] = None
deviceAttributesSubscribeTopic: Optional[str] = None
transportPayloadTypeConfiguration: Optional[TransportPayloadTypeConfiguration] = (
None
)
sparkplug: Optional[bool] = None
sparkplugAttributesMetricNames: Optional[List[str]] = Field(None, Set=True)
sendAckOnValidationException: Optional[bool] = None
class NewPlatformVersionNotificationRuleTriggerConfig(NotificationRuleTriggerConfig):
pass
class Notification(BaseModel):
requestId: Optional[NotificationRequestId] = None
recipientId: Optional[UserId] = None
type: Optional[Type18] = None
deliveryMethod: Optional[DeliveryMethod] = None
subject: Optional[str] = None
text: Optional[str] = None
additionalConfig: Optional[JsonNode] = None
info: Optional[NotificationInfo] = None
status: Optional[Status6] = None
id: Optional[NotificationId] = None
createdTime: Optional[int] = None
class NotificationRequestPreview(BaseModel):
processedTemplates: Optional[
Dict[
str,
Union[
EmailDeliveryMethodNotificationTemplate,
MicrosoftTeamsDeliveryMethodNotificationTemplate,
MobileAppDeliveryMethodNotificationTemplate,
SlackDeliveryMethodNotificationTemplate,
SmsDeliveryMethodNotificationTemplate,
WebDeliveryMethodNotificationTemplate,
],
]
] = None
totalRecipientsCount: Optional[int] = None
recipientsCountByTarget: Optional[Dict[str, int]] = None
recipientsPreview: Optional[List[str]] = None
class NotificationRule(BaseModel):
id: Optional[NotificationRuleId] = None
createdTime: Optional[int] = None
tenantId: Optional[TenantId] = None
name: str
enabled: Optional[bool] = None
templateId: NotificationTemplateId
triggerType: TriggerType
triggerConfig: Union[
AlarmAssignmentNotificationRuleTriggerConfig,
AlarmCommentNotificationRuleTriggerConfig,
AlarmNotificationRuleTriggerConfig,
ApiUsageLimitNotificationRuleTriggerConfig,
DeviceActivityNotificationRuleTriggerConfig,
EdgeCommunicationFailureNotificationRuleTriggerConfig,
EdgeConnectionNotificationRuleTriggerConfig,
EntitiesLimitNotificationRuleTriggerConfig,
EntityActionNotificationRuleTriggerConfig,
IntegrationLifecycleEventNotificationRuleTriggerConfig,
NewPlatformVersionNotificationRuleTriggerConfig,
RateLimitsNotificationRuleTriggerConfig,
RuleEngineComponentLifecycleEventNotificationRuleTriggerConfig,
TaskProcessingFailureNotificationRuleTriggerConfig,
]
recipientsConfig: EscalatedNotificationRuleRecipientsConfig
additionalConfig: Optional[NotificationRuleConfig] = None
class NotificationRuleInfo(BaseModel):
id: Optional[NotificationRuleId] = None
createdTime: Optional[int] = None
tenantId: Optional[TenantId] = None
name: str
enabled: Optional[bool] = None
templateId: NotificationTemplateId
triggerType: TriggerType
triggerConfig: Union[
AlarmAssignmentNotificationRuleTriggerConfig,
AlarmCommentNotificationRuleTriggerConfig,
AlarmNotificationRuleTriggerConfig,
ApiUsageLimitNotificationRuleTriggerConfig,
DeviceActivityNotificationRuleTriggerConfig,
EdgeCommunicationFailureNotificationRuleTriggerConfig,
EdgeConnectionNotificationRuleTriggerConfig,
EntitiesLimitNotificationRuleTriggerConfig,
EntityActionNotificationRuleTriggerConfig,
IntegrationLifecycleEventNotificationRuleTriggerConfig,
NewPlatformVersionNotificationRuleTriggerConfig,
RateLimitsNotificationRuleTriggerConfig,
RuleEngineComponentLifecycleEventNotificationRuleTriggerConfig,
TaskProcessingFailureNotificationRuleTriggerConfig,
]
recipientsConfig: EscalatedNotificationRuleRecipientsConfig
additionalConfig: Optional[NotificationRuleConfig] = None
templateName: Optional[str] = None
deliveryMethods: Optional[List[DeliveryMethod]] = None
class NotificationSettings(BaseModel):
deliveryMethodsConfigs: Dict[
str,
Union[
MobileAppNotificationDeliveryMethodConfig,
SlackNotificationDeliveryMethodConfig,
],
]
class NotificationTemplateConfig(BaseModel):
deliveryMethodsTemplates: Dict[
str,
Union[
EmailDeliveryMethodNotificationTemplate,
MicrosoftTeamsDeliveryMethodNotificationTemplate,
MobileAppDeliveryMethodNotificationTemplate,
SlackDeliveryMethodNotificationTemplate,
SmsDeliveryMethodNotificationTemplate,
WebDeliveryMethodNotificationTemplate,
],
]
class OAuth2Client(BaseModel):
id: Optional[OAuth2ClientId] = None
createdTime: Optional[int] = None
additionalInfo: JsonNode = Field(
..., description='Additional info of OAuth2 client (e.g. providerName)'
)
tenantId: Optional[TenantId] = Field(None, description='JSON object with Tenant Id')
customerId: Optional[CustomerId] = Field(
None, description='JSON object with Customer Id'
)
title: str = Field(..., description='Oauth2 client title')
mapperConfig: OAuth2MapperConfig = Field(
...,
description='Config for mapping OAuth2 log in response to platform entities',
)
clientId: str = Field(..., description='OAuth2 client ID. Cannot be empty')
clientSecret: str = Field(..., description='OAuth2 client secret. Cannot be empty')
authorizationUri: str = Field(
..., description='Authorization URI of the OAuth2 provider. Cannot be empty'
)
accessTokenUri: str = Field(
..., description='Access token URI of the OAuth2 provider. Cannot be empty'
)
scope: List[str] = Field(
...,
description='OAuth scopes that will be requested from OAuth2 platform. Cannot be empty',
)
userInfoUri: Optional[str] = Field(
None, description='User info URI of the OAuth2 provider'
)
userNameAttributeName: str = Field(
...,
description='Name of the username attribute in OAuth2 provider response. Cannot be empty',
)
jwkSetUri: Optional[str] = Field(
None, description='JSON Web Key URI of the OAuth2 provider'
)
clientAuthenticationMethod: str = Field(
...,
description="Client authentication method to use: 'BASIC' or 'POST'. Cannot be empty",
)
loginButtonLabel: str = Field(
..., description='OAuth2 provider label. Cannot be empty'
)
loginButtonIcon: Optional[str] = Field(
None, description='Log in button icon for OAuth2 provider'
)
platforms: Optional[List[Platform]] = Field(
None,
description='List of platforms for which usage of the OAuth2 client is allowed (empty for all allowed)',
)
name: Optional[str] = None
ownerId: Optional[EntityId] = None
class OAuth2ClientRegistrationTemplate(BaseModel):
id: Optional[OAuth2ClientRegistrationTemplateId] = None
createdTime: Optional[int] = None
providerId: str = Field(
..., description='OAuth2 provider identifier (e.g. its name)'
)
mapperConfig: Optional[OAuth2MapperConfig] = Field(
None,
description='Default config for mapping OAuth2 log in response to platform entities',
)
authorizationUri: Optional[str] = Field(
None, description='Default authorization URI of the OAuth2 provider'
)
accessTokenUri: Optional[str] = Field(
None, description='Default access token URI of the OAuth2 provider'
)
scope: Optional[List[str]] = Field(
None,
description='Default OAuth scopes that will be requested from OAuth2 platform',
)
userInfoUri: Optional[str] = Field(
None, description='Default user info URI of the OAuth2 provider'
)
userNameAttributeName: Optional[str] = Field(
None,
description='Default name of the username attribute in OAuth2 provider log in response',
)
jwkSetUri: Optional[str] = Field(
None, description='Default JSON Web Key URI of the OAuth2 provider'
)
clientAuthenticationMethod: Optional[str] = Field(
None,
description="Default client authentication method to use: 'BASIC' or 'POST'",
)
comment: Optional[str] = Field(None, description='Comment for OAuth2 provider')
loginButtonIcon: Optional[str] = Field(
None, description='Default log in button icon for OAuth2 provider'
)
loginButtonLabel: Optional[str] = Field(
None, description='Default OAuth2 provider label'
)
helpLink: Optional[str] = Field(None, description='Help link for OAuth2 provider')
name: Optional[str] = None
additionalInfo: Optional[JsonNode] = None
class OriginatorEntityOwnerUsersFilter(UsersFilter):
pass
class OtaPackage(BaseModel):
id: Optional[OtaPackageId] = Field(
None,
description='JSON object with the ota package Id. Specify existing ota package Id to update the ota package. Referencing non-existing ota package id will cause error. Omit this field to create new ota package.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the ota package creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(
None,
description="JSON object with Tenant Id. Tenant Id of the ota package can't be changed.",
)
deviceProfileId: Optional[DeviceProfileId] = Field(
None,
description="JSON object with Device Profile Id. Device Profile Id of the ota package can't be changed.",
)
type: Optional[Type20] = Field(
None, description='OTA Package type.', example='FIRMWARE'
)
title: Optional[str] = Field(None, description='OTA Package title.', example='fw')
version: Optional[str] = Field(
None, description='OTA Package version.', example=1.0
)
tag: Optional[str] = Field(None, description='OTA Package tag.', example='fw_1.0')
url: Optional[str] = Field(
None, description='OTA Package url.', example='http://thingsboard.org/fw/1'
)
hasData: Optional[bool] = Field(
None,
description="Indicates OTA Package 'has data'. Field is returned from DB ('true' if data exists or url is set). If OTA Package 'has data' is 'false' we can not assign the OTA Package to the Device or Device Profile.",
example=True,
)
fileName: Optional[str] = Field(
None, description='OTA Package file name.', example='fw_1.0'
)
contentType: Optional[str] = Field(
None,
description='OTA Package content type.',
example='APPLICATION_OCTET_STREAM',
)
checksumAlgorithm: Optional[ChecksumAlgorithm] = Field(
None, description='OTA Package checksum algorithm.', example='CRC32'
)
checksum: Optional[str] = Field(
None, description='OTA Package checksum.', example='0xd87f7e0c'
)
dataSize: Optional[int] = Field(
None, description='OTA Package data size.', example=8
)
data: Optional[Data] = None
additionalInfo: Optional[JsonNode] = Field(
None,
description='OTA Package description.',
example='Description for the OTA Package fw_1.0',
)
class OtaPackageInfo(BaseModel):
id: Optional[OtaPackageId] = Field(
None,
description='JSON object with the ota package Id. Specify existing ota package Id to update the ota package. Referencing non-existing ota package id will cause error. Omit this field to create new ota package.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the ota package creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(
None,
description="JSON object with Tenant Id. Tenant Id of the ota package can't be changed.",
)
deviceProfileId: Optional[DeviceProfileId] = Field(
None,
description="JSON object with Device Profile Id. Device Profile Id of the ota package can't be changed.",
)
type: Optional[Type20] = Field(
None, description='OTA Package type.', example='FIRMWARE'
)
title: Optional[str] = Field(None, description='OTA Package title.', example='fw')
version: Optional[str] = Field(
None, description='OTA Package version.', example=1.0
)
tag: Optional[str] = Field(None, description='OTA Package tag.', example='fw_1.0')
url: Optional[str] = Field(
None, description='OTA Package url.', example='http://thingsboard.org/fw/1'
)
hasData: Optional[bool] = Field(
None,
description="Indicates OTA Package 'has data'. Field is returned from DB ('true' if data exists or url is set). If OTA Package 'has data' is 'false' we can not assign the OTA Package to the Device or Device Profile.",
example=True,
)
fileName: Optional[str] = Field(
None, description='OTA Package file name.', example='fw_1.0'
)
contentType: Optional[str] = Field(
None,
description='OTA Package content type.',
example='APPLICATION_OCTET_STREAM',
)
checksumAlgorithm: Optional[ChecksumAlgorithm] = Field(
None, description='OTA Package checksum algorithm.', example='CRC32'
)
checksum: Optional[str] = Field(
None, description='OTA Package checksum.', example='0xd87f7e0c'
)
dataSize: Optional[int] = Field(
None, description='OTA Package data size.', example=8
)
additionalInfo: Optional[JsonNode] = Field(
None,
description='OTA Package description.',
example='Description for the OTA Package fw_1.0',
)
class PageDataAlarmCommentInfo(BaseModel):
data: Optional[List[AlarmCommentInfo]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataAlarmData(BaseModel):
data: Optional[List[AlarmData]] = Field(None, description='Array of the entities')
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataAlarmInfo(BaseModel):
data: Optional[List[AlarmInfo]] = Field(None, description='Array of the entities')
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataAsset(BaseModel):
data: Optional[List[Asset]] = Field(None, description='Array of the entities')
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataAssetInfo(BaseModel):
data: Optional[List[AssetInfo]] = Field(None, description='Array of the entities')
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataAssetProfile(BaseModel):
data: Optional[List[AssetProfile]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataAssetProfileInfo(BaseModel):
data: Optional[List[AssetProfileInfo]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataAuditLog(BaseModel):
data: Optional[List[AuditLog]] = Field(None, description='Array of the entities')
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataBlobEntityWithCustomerInfo(BaseModel):
data: Optional[List[BlobEntityWithCustomerInfo]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataContactBasedObject(BaseModel):
data: Optional[List[ContactBasedObject]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataConverter(BaseModel):
data: Optional[List[Converter]] = Field(None, description='Array of the entities')
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataCustomMenuInfo(BaseModel):
data: Optional[List[CustomMenuInfo]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataCustomer(BaseModel):
data: Optional[List[Customer]] = Field(None, description='Array of the entities')
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataCustomerInfo(BaseModel):
data: Optional[List[CustomerInfo]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataDashboardInfo(BaseModel):
data: Optional[List[DashboardInfo]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataDeviceInfo(BaseModel):
data: Optional[List[DeviceInfo]] = Field(None, description='Array of the entities')
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataDeviceProfileInfo(BaseModel):
data: Optional[List[DeviceProfileInfo]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataDomainInfo(BaseModel):
data: Optional[List[DomainInfo]] = Field(None, description='Array of the entities')
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataEdge(BaseModel):
data: Optional[List[Edge]] = Field(None, description='Array of the entities')
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataEdgeEvent(BaseModel):
data: Optional[List[EdgeEvent]] = Field(None, description='Array of the entities')
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataEdgeInfo(BaseModel):
data: Optional[List[EdgeInfo]] = Field(None, description='Array of the entities')
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataEntityData(BaseModel):
data: Optional[List[EntityData]] = Field(None, description='Array of the entities')
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataEntityGroupInfo(BaseModel):
data: Optional[List[EntityGroupInfo]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataEntitySubtype(BaseModel):
data: Optional[List[EntitySubtype]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataEntityView(BaseModel):
data: Optional[List[EntityView]] = Field(None, description='Array of the entities')
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataEntityViewInfo(BaseModel):
data: Optional[List[EntityViewInfo]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataEventInfo(BaseModel):
data: Optional[List[EventInfo]] = Field(None, description='Array of the entities')
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataIntegration(BaseModel):
data: Optional[List[Integration]] = Field(None, description='Array of the entities')
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataIntegrationInfo(BaseModel):
data: Optional[List[IntegrationInfo]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataMobileApp(BaseModel):
data: Optional[List[MobileApp]] = Field(None, description='Array of the entities')
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataNotification(BaseModel):
data: Optional[List[Notification]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataNotificationRuleInfo(BaseModel):
data: Optional[List[NotificationRuleInfo]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataOtaPackageInfo(BaseModel):
data: Optional[List[OtaPackageInfo]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataShortEntityView(BaseModel):
data: Optional[List[ShortEntityView]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataUserInfo(BaseModel):
data: Optional[List[UserInfo]] = Field(None, description='Array of the entities')
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataWidgetTypeInfo(BaseModel):
data: Optional[List[WidgetTypeInfo]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PlatformUsersNotificationTargetConfig(NotificationTargetConfig):
usersFilter: UsersFilter
class ProtoTransportPayloadConfiguration(TransportPayloadTypeConfiguration):
deviceTelemetryProtoSchema: Optional[str] = None
deviceAttributesProtoSchema: Optional[str] = None
deviceRpcRequestProtoSchema: Optional[str] = None
deviceRpcResponseProtoSchema: Optional[str] = None
enableCompatibilityWithJsonPayloadFormat: Optional[bool] = None
useJsonPayloadFormatForDefaultDownlinkTopics: Optional[bool] = None
class QrCodeSettings(BaseModel):
id: Optional[QrCodeSettingsId] = None
createdTime: Optional[int] = None
tenantId: Optional[TenantId] = Field(
None, description='JSON object with Tenant Id.'
)
useSystemSettings: Optional[bool] = Field(
None, description='Use settings from system level', example=True
)
useDefaultApp: Optional[bool] = Field(
None,
description='Type of application: true means use default Thingsboard app',
example=True,
)
mobileAppBundleId: Optional[MobileAppBundleId] = Field(
None, description='Mobile app bundle.'
)
qrCodeConfig: QRCodeConfig = Field(..., description='QR code config configuration.')
androidEnabled: Optional[bool] = Field(
None, description='Indicates if google play link is available', example=True
)
iosEnabled: Optional[bool] = Field(
None, description='Indicates if apple store link is available', example=True
)
googlePlayLink: Optional[str] = None
appStoreLink: Optional[str] = None
class Queue(BaseModel):
id: Optional[QueueId] = None
createdTime: Optional[int] = None
tenantId: Optional[TenantId] = None
name: Optional[str] = None
topic: Optional[str] = None
pollInterval: Optional[int] = None
partitions: Optional[int] = None
consumerPerPartition: Optional[bool] = None
packProcessingTimeout: Optional[int] = None
submitStrategy: Optional[SubmitStrategy] = None
processingStrategy: Optional[ProcessingStrategy] = None
additionalInfo: Optional[JsonNode] = None
class QueueStats(BaseModel):
id: Optional[QueueStatsId] = None
createdTime: Optional[int] = None
tenantId: Optional[TenantId] = None
queueName: Optional[str] = None
serviceId: Optional[str] = None
class Role(BaseModel):
tenantId: TenantId = Field(..., description='JSON object with Tenant Id.')
customerId: Optional[CustomerId] = Field(
None, description='JSON object with Customer Id. '
)
name: str = Field(..., description='Role Name', example='Read-Only')
type: Type26 = Field(
..., description='Type of the role: generic or group', example='GROUP'
)
permissions: Optional[JsonNode] = None
version: Optional[int] = None
id: Optional[RoleId] = Field(
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.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the role creation, in milliseconds',
example=1609459200000,
)
additionalInfo: Optional[JsonNode] = Field(
None, description='Additional parameters of the role'
)
ownerId: Optional[EntityId] = Field(
None, description='JSON object with Customer or Tenant Id'
)
class Rpc(BaseModel):
id: Optional[RpcId] = Field(
None,
description='JSON object with the rpc Id. Referencing non-existing rpc Id will cause error.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the rpc creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(
None, description='JSON object with Tenant Id.'
)
deviceId: Optional[DeviceId] = Field(
None, description='JSON object with Device Id.'
)
expirationTime: Optional[int] = Field(
None, description='Expiration time of the request.'
)
request: Optional[JsonNode] = Field(
None,
description='The request body that will be used to send message to device.',
)
response: Optional[JsonNode] = Field(
None, description='The response from the device.'
)
status: Optional[Status9] = Field(
None, description='The current status of the RPC call.'
)
additionalInfo: Optional[JsonNode] = Field(
None,
description='Additional info used in the rule engine to process the updates to the RPC state.',
)
class RuleChain(BaseModel):
id: Optional[RuleChainId] = Field(
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.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the rule chain creation, in milliseconds',
example=1609459200000,
)
tenantId: TenantId = Field(..., description='JSON object with Tenant Id.')
name: str = Field(
..., description='Rule Chain name', example='Humidity data processing'
)
type: Optional[Type27] = Field(
None,
description="Rule Chain type. 'EDGE' rule chains are processing messages on the edge devices only.",
example='A4B72CCDFF33',
)
firstRuleNodeId: Optional[RuleNodeId] = Field(
None,
description='JSON object with Rule Chain Id. Pointer to the first rule node that should receive all messages pushed to this rule chain.',
)
root: Optional[bool] = Field(
None,
description='Indicates root rule chain. The root rule chain process messages from all devices and entities by default. User may configure default rule chain per device profile.',
)
debugMode: Optional[bool] = Field(None, description='Reserved for future usage.')
version: Optional[int] = None
configuration: Optional[JsonNode] = None
additionalInfo: Optional[JsonNode] = None
class RuleChainConnectionInfo(BaseModel):
fromIndex: int = Field(
...,
description="Index of rule node in the 'nodes' array of the RuleChainMetaData. Indicates the 'from' part of the connection.",
)
targetRuleChainId: RuleChainId = Field(
..., description='JSON object with the Rule Chain Id.'
)
additionalInfo: JsonNode = Field(
...,
description='JSON object with the additional information about the connection.',
)
type: str = Field(
...,
description="Type of the relation. Typically indicated the result of processing by the 'from' rule node. For example, 'Success' or 'Failure'",
)
class RuleChainOutputLabelsUsage(BaseModel):
ruleChainId: RuleChainId = Field(..., description='Rule Chain Id')
ruleNodeId: RuleNodeId = Field(..., description='Rule Node Id')
ruleChainName: str = Field(..., description='Rule Chain Name')
ruleNodeName: str = Field(..., description='Rule Node Name')
labels: List[str] = Field(..., description='Output labels', Set=True)
class RuleNode(BaseModel):
id: Optional[RuleNodeId] = Field(
None,
description='JSON object with the Rule Node Id. Specify this field to update the Rule Node. Referencing non-existing Rule Node Id will cause error. Omit this field to create new rule node.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the rule node creation, in milliseconds',
example=1609459200000,
)
ruleChainId: Optional[RuleChainId] = Field(
None, description='JSON object with the Rule Chain Id. '
)
type: Optional[str] = Field(
None,
description='Full Java Class Name of the rule node implementation. ',
example='com.mycompany.iot.rule.engine.ProcessingNode',
)
name: Optional[str] = Field(
None,
description='User defined name of the rule node. Used on UI and for logging. ',
example='Process sensor reading',
)
debugMode: Optional[bool] = None
debugSettings: Optional[DebugSettings] = Field(
None, description='Debug settings object.'
)
singletonMode: Optional[bool] = Field(
None, description='Enable/disable singleton mode. ', example=False
)
queueName: Optional[str] = Field(None, description='Queue name. ', example='Main')
configurationVersion: Optional[int] = Field(
None, description='Version of rule node configuration. ', example=0
)
externalId: Optional[RuleNodeId] = None
configuration: Optional[JsonNode] = None
additionalInfo: Optional[JsonNode] = Field(
None,
description="Additional parameters of the rule node. Contains 'layoutX' and 'layoutY' properties for visualization.",
)
class SaveOtaPackageInfoRequest(BaseModel):
id: Optional[OtaPackageId] = Field(
None,
description='JSON object with the ota package Id. Specify existing ota package Id to update the ota package. Referencing non-existing ota package id will cause error. Omit this field to create new ota package.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the ota package creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(
None,
description="JSON object with Tenant Id. Tenant Id of the ota package can't be changed.",
)
deviceProfileId: Optional[DeviceProfileId] = Field(
None,
description="JSON object with Device Profile Id. Device Profile Id of the ota package can't be changed.",
)
type: Optional[Type28] = Field(
None, description='OTA Package type.', example='FIRMWARE'
)
title: Optional[str] = Field(None, description='OTA Package title.', example='fw')
version: Optional[str] = Field(
None, description='OTA Package version.', example=1.0
)
tag: Optional[str] = Field(None, description='OTA Package tag.', example='fw_1.0')
url: Optional[str] = Field(
None, description='OTA Package url.', example='http://thingsboard.org/fw/1'
)
hasData: Optional[bool] = Field(
None,
description="Indicates OTA Package 'has data'. Field is returned from DB ('true' if data exists or url is set). If OTA Package 'has data' is 'false' we can not assign the OTA Package to the Device or Device Profile.",
example=True,
)
fileName: Optional[str] = Field(
None, description='OTA Package file name.', example='fw_1.0'
)
contentType: Optional[str] = Field(
None,
description='OTA Package content type.',
example='APPLICATION_OCTET_STREAM',
)
checksumAlgorithm: Optional[ChecksumAlgorithm] = Field(
None, description='OTA Package checksum algorithm.', example='CRC32'
)
checksum: Optional[str] = Field(
None, description='OTA Package checksum.', example='0xd87f7e0c'
)
dataSize: Optional[int] = Field(
None, description='OTA Package data size.', example=8
)
usesUrl: Optional[bool] = Field(
None,
description="Indicates OTA Package uses url. Should be 'true' if uses url or 'false' if will be used data.",
example=True,
)
additionalInfo: Optional[JsonNode] = Field(
None,
description='OTA Package description.',
example='Description for the OTA Package fw_1.0',
)
class SchedulerEvent(BaseModel):
id: Optional[SchedulerEventId] = Field(
None,
description='JSON object with the scheduler event Id. Specify this field to update the scheduler event. Referencing non-existing scheduler event Id will cause error. Omit this field to create new scheduler event',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the scheduler event creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(None, description='JSON object with Tenant Id')
customerId: Optional[CustomerId] = Field(
None, description='JSON object with Customer Id'
)
originatorId: Optional[EntityId] = Field(
None, description='JSON object with Originator Id'
)
name: Optional[str] = Field(
None, description='scheduler event name', example='Weekly Dashboard Report'
)
type: Optional[str] = Field(
None, description='scheduler event type', example='generateReport'
)
enabled: Optional[bool] = Field(
None, description='Enable/disable scheduler', example=True
)
version: Optional[int] = None
configuration: Optional[JsonNode] = None
additionalInfo: Optional[JsonNode] = Field(
None, description='Additional parameters of the scheduler event'
)
ownerId: Optional[EntityId] = Field(
None, description='JSON object with Customer or Tenant Id'
)
schedule: Optional[JsonNode] = None
class SchedulerEventInfo(BaseModel):
id: Optional[SchedulerEventId] = Field(
None,
description='JSON object with the scheduler event Id. Specify this field to update the scheduler event. Referencing non-existing scheduler event Id will cause error. Omit this field to create new scheduler event',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the scheduler event creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(None, description='JSON object with Tenant Id')
customerId: Optional[CustomerId] = Field(
None, description='JSON object with Customer Id'
)
originatorId: Optional[EntityId] = Field(
None, description='JSON object with Originator Id'
)
name: Optional[str] = Field(
None, description='scheduler event name', example='Weekly Dashboard Report'
)
type: Optional[str] = Field(
None, description='scheduler event type', example='generateReport'
)
enabled: Optional[bool] = Field(
None, description='Enable/disable scheduler', example=True
)
version: Optional[int] = None
additionalInfo: Optional[JsonNode] = Field(
None, description='Additional parameters of the scheduler event'
)
ownerId: Optional[EntityId] = Field(
None, description='JSON object with Customer or Tenant Id'
)
schedule: Optional[JsonNode] = None
class SchedulerEventWithCustomerInfo(BaseModel):
id: Optional[SchedulerEventId] = Field(
None,
description='JSON object with the scheduler event Id. Specify this field to update the scheduler event. Referencing non-existing scheduler event Id will cause error. Omit this field to create new scheduler event',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the scheduler event creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(None, description='JSON object with Tenant Id')
customerId: Optional[CustomerId] = Field(
None, description='JSON object with Customer Id'
)
originatorId: Optional[EntityId] = Field(
None, description='JSON object with Originator Id'
)
name: Optional[str] = Field(
None, description='scheduler event name', example='Weekly Dashboard Report'
)
type: Optional[str] = Field(
None, description='scheduler event type', example='generateReport'
)
enabled: Optional[bool] = Field(
None, description='Enable/disable scheduler', example=True
)
version: Optional[int] = None
customerTitle: Optional[str] = Field(
None, description='Title of the customer', example='Company A'
)
customerIsPublic: Optional[bool] = Field(
None, description='Parameter that specifies if customer is public'
)
additionalInfo: Optional[JsonNode] = Field(
None, description='Additional parameters of the scheduler event'
)
ownerId: Optional[EntityId] = Field(
None, description='JSON object with Customer or Tenant Id'
)
schedule: Optional[JsonNode] = None
class ScriptCalculatedFieldConfiguration(CalculatedFieldConfiguration):
pass
class SecuritySettings(BaseModel):
passwordPolicy: Optional[UserPasswordPolicy] = Field(
None, description='The user password policy object.'
)
maxFailedLoginAttempts: Optional[int] = Field(
None,
description='Maximum number of failed login attempts allowed before user account is locked.',
)
userLockoutNotificationEmail: Optional[str] = Field(
None, description='Email to use for notifications about locked users.'
)
mobileSecretKeyLength: Optional[int] = Field(
None, description='Mobile secret key length'
)
userActivationTokenTtl: conint(ge=1, le=24) = Field(
..., description='TTL in hours for user activation link'
)
passwordResetTokenTtl: conint(ge=1, le=24) = Field(
..., description='TTL in hours for password reset link'
)
class SelfRegistrationParams(BaseModel):
permissions: Optional[List[GroupPermission]] = None
type: Optional[Type29] = None
showPrivacyPolicy: Optional[bool] = None
showTermsOfUse: Optional[bool] = None
title: Optional[str] = None
enabled: Optional[bool] = None
homeDashboard: Optional[HomeDashboardParams] = None
customMenuId: Optional[CustomMenuId] = None
notificationRecipient: Optional[NotificationTargetId] = None
captcha: Optional[
Union[EnterpriseCaptchaParams, V2CaptchaParams, V3CaptchaParams]
] = None
signUpFields: Optional[List[SignUpField]] = None
defaultDashboard: Optional[DefaultDashboardParams] = None
customerTitlePrefix: Optional[str] = None
customerGroupId: Optional[EntityGroupId] = None
class SharedAttributesSettingSnmpCommunicationConfig(SnmpCommunicationConfig):
mappings: Optional[List[SnmpMapping]] = None
class SignUpSelfRegistrationParams(BaseModel):
title: Optional[str] = None
captcha: Optional[
Union[EnterpriseCaptchaParams, V2CaptchaParams, V3CaptchaParams]
] = None
fields: Optional[List[SignUpField]] = None
showPrivacyPolicy: Optional[bool] = None
showTermsOfUse: Optional[bool] = None
class SimpleCalculatedFieldConfiguration(CalculatedFieldConfiguration):
pass
class SingleEntityVersionCreateRequest(VersionCreateRequest):
entityId: Optional[EntityId] = None
config: Optional[VersionCreateConfig] = None
class SingleEntityVersionLoadRequest(VersionLoadRequest):
internalEntityId: Optional[EntityId] = None
externalEntityId: Optional[EntityId] = None
config: Optional[VersionLoadConfig] = None
class SmppSmsProviderConfiguration(SmsProviderConfiguration):
protocolVersion: ProtocolVersion = Field(..., description='SMPP version')
host: str = Field(..., description='SMPP host')
port: int = Field(..., description='SMPP port')
systemId: str = Field(..., description='System ID')
password: str = Field(..., description='Password')
systemType: Optional[str] = Field(None, description='System type')
bindType: Optional[BindType] = Field(
None,
description='TX - Transmitter, RX - Receiver, TRX - Transciever. By default TX is used',
)
serviceType: Optional[str] = Field(None, description='Service type')
sourceAddress: Optional[str] = Field(None, description='Source address')
sourceTon: Optional[str] = Field(
None,
description='Source TON (Type of Number). Needed is source address is set. 5 by default.\n0 - Unknown\n1 - International\n2 - National\n3 - Network Specific\n4 - Subscriber Number\n5 - Alphanumeric\n6 - Abbreviated',
)
sourceNpi: Optional[str] = Field(
None,
description='Source NPI (Numbering Plan Identification). Needed is source address is set. 0 by default.\n0 - Unknown\n1 - ISDN/telephone numbering plan (E163/E164)\n3 - Data numbering plan (X.121)\n4 - Telex numbering plan (F.69)\n6 - Land Mobile (E.212) =6\n8 - National numbering plan\n9 - Private numbering plan\n10 - ERMES numbering plan (ETSI DE/PS 3 01-3)\n13 - Internet (IP)\n18 - WAP Client Id (to be defined by WAP Forum)',
)
destinationTon: Optional[str] = Field(
None,
description='Destination TON (Type of Number). 5 by default.\n0 - Unknown\n1 - International\n2 - National\n3 - Network Specific\n4 - Subscriber Number\n5 - Alphanumeric\n6 - Abbreviated',
)
destinationNpi: Optional[str] = Field(
None,
description='Destination NPI (Numbering Plan Identification). 0 by default.\n0 - Unknown\n1 - ISDN/telephone numbering plan (E163/E164)\n3 - Data numbering plan (X.121)\n4 - Telex numbering plan (F.69)\n6 - Land Mobile (E.212) =6\n8 - National numbering plan\n9 - Private numbering plan\n10 - ERMES numbering plan (ETSI DE/PS 3 01-3)\n13 - Internet (IP)\n18 - WAP Client Id (to be defined by WAP Forum)',
)
addressRange: Optional[str] = Field(None, description='Address range')
codingScheme: Optional[CodingScheme] = Field(
None,
description='0 - SMSC Default Alphabet (ASCII for short and long code and to GSM for toll-free, used as default)\n1 - IA5 (ASCII for short and long code, Latin 9 for toll-free (ISO-8859-9))\n2 - Octet Unspecified (8-bit binary)\n3 - Latin 1 (ISO-8859-1)\n4 - Octet Unspecified (8-bit binary)\n5 - JIS (X 0208-1990)\n6 - Cyrillic (ISO-8859-5)\n7 - Latin/Hebrew (ISO-8859-8)\n8 - UCS2/UTF-16 (ISO/IEC-10646)\n9 - Pictogram Encoding\n10 - Music Codes (ISO-2022-JP)\n13 - Extended Kanji JIS (X 0212-1990)\n14 - Korean Graphic Character Set (KS C 5601/KS X 1001)',
)
class SmsTwoFaAccountConfig(TwoFaAccountConfig):
phoneNumber: constr(pattern=r'^\+[1-9]\d{1,14}$')
class SmsTwoFaProviderConfig(TwoFaProviderConfig):
verificationCodeLifetime: Optional[conint(ge=1)] = None
smsVerificationMessageTemplate: constr(pattern=r'.*\$\{code}.*')
class SpecificTimeSchedule(AlarmSchedule):
timezone: Optional[str] = None
daysOfWeek: Optional[List[int]] = Field(None, Set=True)
startsOn: Optional[int] = None
endsOn: Optional[int] = None
class SystemAdministratorsFilter(UsersFilter):
pass
class SystemInfo(BaseModel):
systemData: Optional[List[SystemInfoData]] = Field(None, description='System data.')
monolith: Optional[bool] = None
class TbImageDeleteResult(BaseModel):
success: Optional[bool] = None
whiteLabelingList: Optional[List[WhiteLabeling]] = None
references: Optional[Dict[str, List[HasIdObject]]] = None
class TbResource(BaseModel):
id: Optional[TbResourceId] = Field(
None,
description='JSON object with the Resource Id. Specify this field to update the Resource. Referencing non-existing Resource Id will cause error. Omit this field to create new Resource.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the resource creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(
None,
description="JSON object with Tenant Id. Tenant Id of the resource can't be changed.",
)
customerId: Optional[CustomerId] = Field(
None,
description="JSON object with Customer Id. Customer Id of the resource can't be changed.",
)
title: Optional[str] = Field(
None, description='Resource title.', example='BinaryAppDataContainer id=19 v1.0'
)
resourceType: Optional[ResourceType] = Field(
None, description='Resource type.', example='LWM2M_MODEL'
)
resourceSubType: Optional[ResourceSubType] = Field(
None, description='Resource sub type.', example='IOT_SVG'
)
resourceKey: Optional[str] = Field(
None, description='Resource key.', example='19_1.0'
)
publicResourceKey: Optional[str] = None
etag: Optional[str] = Field(
None,
description='Resource etag.',
example='33a64df551425fcc55e4d42a148795d9f25f89d4',
)
fileName: Optional[str] = Field(
None, description='Resource file name.', example='19.xml'
)
descriptor: Optional[JsonNode] = None
data: Optional[str] = Field(
None,
description='Resource data.',
example='77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLQpGSUxFIElORk9STUFUSU9OCgpPTUEgUGVybWFuZW50IERvY3VtZW50CiAgIEZpbGU6IE9NQS1TVVAtTHdNMk1fQmluYXJ5QXBwRGF0YUNvbnRhaW5lci1WMV8wXzEtMjAxOTAyMjEtQQogICBUeXBlOiB4bWwKClB1YmxpYyBSZWFjaGFibGUgSW5mb3JtYXRpb24KICAgUGF0aDogaHR0cDovL3d3dy5vcGVubW9iaWxlYWxsaWFuY2Uub3JnL3RlY2gvcHJvZmlsZXMKICAgTmFtZTogTHdNMk1fQmluYXJ5QXBwRGF0YUNvbnRhaW5lci12MV8wXzEueG1sCgpOT1JNQVRJVkUgSU5GT1JNQVRJT04KCiAgSW5mb3JtYXRpb24gYWJvdXQgdGhpcyBmaWxlIGNhbiBiZSBmb3VuZCBpbiB0aGUgbGF0ZXN0IHJldmlzaW9uIG9mCgogIE9NQS1UUy1MV00yTV9CaW5hcnlBcHBEYXRhQ29udGFpbmVyLVYxXzBfMQoKICBUaGlzIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3Lm9wZW5tb2JpbGVhbGxpYW5jZS5vcmcvCgogIFNlbmQgY29tbWVudHMgdG8gaHR0cHM6Ly9naXRodWIuY29tL09wZW5Nb2JpbGVBbGxpYW5jZS9PTUFfTHdNMk1fZm9yX0RldmVsb3BlcnMvaXNzdWVzCgpDSEFOR0UgSElTVE9SWQoKMTUwNjIwMTggU3RhdHVzIGNoYW5nZWQgdG8gQXBwcm92ZWQgYnkgRE0sIERvYyBSZWYgIyBPTUEtRE0mU0UtMjAxOC0wMDYxLUlOUF9MV00yTV9BUFBEQVRBX1YxXzBfRVJQX2Zvcl9maW5hbF9BcHByb3ZhbAoyMTAyMjAxOSBTdGF0dXMgY2hhbmdlZCB0byBBcHByb3ZlZCBieSBJUFNPLCBEb2MgUmVmICMgT01BLUlQU08tMjAxOS0wMDI1LUlOUF9Md00yTV9PYmplY3RfQXBwX0RhdGFfQ29udGFpbmVyXzFfMF8xX2Zvcl9GaW5hbF9BcHByb3ZhbAoKTEVHQUwgRElTQ0xBSU1FUgoKQ29weXJpZ2h0IDIwMTkgT3BlbiBNb2JpbGUgQWxsaWFuY2UuCgpSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCmFyZSBtZXQ6CgoxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodApub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCjIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cwpjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgoKVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwoiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVApMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUwpGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQpDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULApJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLApCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CkxPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCkxJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOCkFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQpQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KClRoZSBhYm92ZSBsaWNlbnNlIGlzIHVzZWQgYXMgYSBsaWNlbnNlIHVuZGVyIGNvcHlyaWdodCBvbmx5LiBQbGVhc2UKcmVmZXJlbmNlIHRoZSBPTUEgSVBSIFBvbGljeSBmb3IgcGF0ZW50IGxpY2Vuc2luZyB0ZXJtczoKaHR0cHM6Ly93d3cub21hc3BlY3dvcmtzLm9yZy9hYm91dC9pbnRlbGxlY3R1YWwtcHJvcGVydHktcmlnaHRzLwoKLS0+CjxMV00yTSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0iaHR0cDovL29wZW5tb2JpbGVhbGxpYW5jZS5vcmcvdGVjaC9wcm9maWxlcy9MV00yTS54c2QiPgoJPE9iamVjdCBPYmplY3RUeXBlPSJNT0RlZmluaXRpb24iPgoJCTxOYW1lPkJpbmFyeUFwcERhdGFDb250YWluZXI8L05hbWU+CgkJPERlc2NyaXB0aW9uMT48IVtDREFUQVtUaGlzIEx3TTJNIE9iamVjdHMgcHJvdmlkZXMgdGhlIGFwcGxpY2F0aW9uIHNlcnZpY2UgZGF0YSByZWxhdGVkIHRvIGEgTHdNMk0gU2VydmVyLCBlZy4gV2F0ZXIgbWV0ZXIgZGF0YS4gClRoZXJlIGFyZSBzZXZlcmFsIG1ldGhvZHMgdG8gY3JlYXRlIGluc3RhbmNlIHRvIGluZGljYXRlIHRoZSBtZXNzYWdlIGRpcmVjdGlvbiBiYXNlZCBvbiB0aGUgbmVnb3RpYXRpb24gYmV0d2VlbiBBcHBsaWNhdGlvbiBhbmQgTHdNMk0uIFRoZSBDbGllbnQgYW5kIFNlcnZlciBzaG91bGQgbmVnb3RpYXRlIHRoZSBpbnN0YW5jZShzKSB1c2VkIHRvIGV4Y2hhbmdlIHRoZSBkYXRhLiBGb3IgZXhhbXBsZToKIC0gVXNpbmcgYSBzaW5nbGUgaW5zdGFuY2UgZm9yIGJvdGggZGlyZWN0aW9ucyBjb21tdW5pY2F0aW9uLCBmcm9tIENsaWVudCB0byBTZXJ2ZXIgYW5kIGZyb20gU2VydmVyIHRvIENsaWVudC4KIC0gVXNpbmcgYW4gaW5zdGFuY2UgZm9yIGNvbW11bmljYXRpb24gZnJvbSBDbGllbnQgdG8gU2VydmVyIGFuZCBhbm90aGVyIG9uZSBmb3IgY29tbXVuaWNhdGlvbiBmcm9tIFNlcnZlciB0byBDbGllbnQKIC0gVXNpbmcgc2V2ZXJhbCBpbnN0YW5jZXMKXV0+PC9EZXNjcmlwdGlvbjE+CgkJPE9iamVjdElEPjE5PC9PYmplY3RJRD4KCQk8T2JqZWN0VVJOPnVybjpvbWE6bHdtMm06b21hOjE5PC9PYmplY3RVUk4+CgkJPExXTTJNVmVyc2lvbj4xLjA8L0xXTTJNVmVyc2lvbj4KCQk8T2JqZWN0VmVyc2lvbj4xLjA8L09iamVjdFZlcnNpb24+CgkJPE11bHRpcGxlSW5zdGFuY2VzPk11bHRpcGxlPC9NdWx0aXBsZUluc3RhbmNlcz4KCQk8TWFuZGF0b3J5Pk9wdGlvbmFsPC9NYW5kYXRvcnk+CgkJPFJlc291cmNlcz4KCQkJPEl0ZW0gSUQ9IjAiPjxOYW1lPkRhdGE8L05hbWU+CgkJCQk8T3BlcmF0aW9ucz5SVzwvT3BlcmF0aW9ucz4KCQkJCTxNdWx0aXBsZUluc3RhbmNlcz5NdWx0aXBsZTwvTXVsdGlwbGVJbnN0YW5jZXM+CgkJCQk8TWFuZGF0b3J5Pk1hbmRhdG9yeTwvTWFuZGF0b3J5PgoJCQkJPFR5cGU+T3BhcXVlPC9UeXBlPgoJCQkJPFJhbmdlRW51bWVyYXRpb24gLz4KCQkJCTxVbml0cyAvPgoJCQkJPERlc2NyaXB0aW9uPjwhW0NEQVRBW0luZGljYXRlcyB0aGUgYXBwbGljYXRpb24gZGF0YSBjb250ZW50Ll1dPjwvRGVzY3JpcHRpb24+CgkJCTwvSXRlbT4KCQkJPEl0ZW0gSUQ9IjEiPjxOYW1lPkRhdGEgUHJpb3JpdHk8L05hbWU+CgkJCQk8T3BlcmF0aW9ucz5SVzwvT3BlcmF0aW9ucz4KCQkJCTxNdWx0aXBsZUluc3RhbmNlcz5TaW5nbGU8L011bHRpcGxlSW5zdGFuY2VzPgoJCQkJPE1hbmRhdG9yeT5PcHRpb25hbDwvTWFuZGF0b3J5PgoJCQkJPFR5cGU+SW50ZWdlcjwvVHlwZT4KCQkJCTxSYW5nZUVudW1lcmF0aW9uPjEgYnl0ZXM8L1JhbmdlRW51bWVyYXRpb24+CgkJCQk8VW5pdHMgLz4KCQkJCTxEZXNjcmlwdGlvbj48IVtDREFUQVtJbmRpY2F0ZXMgdGhlIEFwcGxpY2F0aW9uIGRhdGEgcHJpb3JpdHk6CjA6SW1tZWRpYXRlCjE6QmVzdEVmZm9ydAoyOkxhdGVzdAozLTEwMDogUmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UuCjEwMS0yNTQ6IFByb3ByaWV0YXJ5IG1vZGUuXV0+PC9EZXNjcmlwdGlvbj4KCQkJPC9JdGVtPgoJCQk8SXRlbSBJRD0iMiI+PE5hbWU+RGF0YSBDcmVhdGlvbiBUaW1lPC9OYW1lPgoJCQkJPE9wZXJhdGlvbnM+Ulc8L09wZXJhdGlvbnM+CgkJCQk8TXVsdGlwbGVJbnN0YW5jZXM+U2luZ2xlPC9NdWx0aXBsZUluc3RhbmNlcz4KCQkJCTxNYW5kYXRvcnk+T3B0aW9uYWw8L01hbmRhdG9yeT4KCQkJCTxUeXBlPlRpbWU8L1R5cGU+CgkJCQk8UmFuZ2VFbnVtZXJhdGlvbiAvPgoJCQkJPFVuaXRzIC8+CgkJCQk8RGVzY3JpcHRpb24+PCFbQ0RBVEFbSW5kaWNhdGVzIHRoZSBEYXRhIGluc3RhbmNlIGNyZWF0aW9uIHRpbWVzdGFtcC5dXT48L0Rlc2NyaXB0aW9uPgoJCQk8L0l0ZW0+CgkJCTxJdGVtIElEPSIzIj48TmFtZT5EYXRhIERlc2NyaXB0aW9uPC9OYW1lPgoJCQkJPE9wZXJhdGlvbnM+Ulc8L09wZXJhdGlvbnM+CgkJCQk8TXVsdGlwbGVJbnN0YW5jZXM+U2luZ2xlPC9NdWx0aXBsZUluc3RhbmNlcz4KCQkJCTxNYW5kYXRvcnk+T3B0aW9uYWw8L01hbmRhdG9yeT4KCQkJCTxUeXBlPlN0cmluZzwvVHlwZT4KCQkJCTxSYW5nZUVudW1lcmF0aW9uPjMyIGJ5dGVzPC9SYW5nZUVudW1lcmF0aW9uPgoJCQkJPFVuaXRzIC8+CgkJCQk8RGVzY3JpcHRpb24+PCFbQ0RBVEFbSW5kaWNhdGVzIHRoZSBkYXRhIGRlc2NyaXB0aW9uLgplLmcuICJtZXRlciByZWFkaW5nIi5dXT48L0Rlc2NyaXB0aW9uPgoJCQk8L0l0ZW0+CgkJCTxJdGVtIElEPSI0Ij48TmFtZT5EYXRhIEZvcm1hdDwvTmFtZT4KCQkJCTxPcGVyYXRpb25zPlJXPC9PcGVyYXRpb25zPgoJCQkJPE11bHRpcGxlSW5zdGFuY2VzPlNpbmdsZTwvTXVsdGlwbGVJbnN0YW5jZXM+CgkJCQk8TWFuZGF0b3J5Pk9wdGlvbmFsPC9NYW5kYXRvcnk+CgkJCQk8VHlwZT5TdHJpbmc8L1R5cGU+CgkJCQk8UmFuZ2VFbnVtZXJhdGlvbj4zMiBieXRlczwvUmFuZ2VFbnVtZXJhdGlvbj4KCQkJCTxVbml0cyAvPgoJCQkJPERlc2NyaXB0aW9uPjwhW0NEQVRBW0luZGljYXRlcyB0aGUgZm9ybWF0IG9mIHRoZSBBcHBsaWNhdGlvbiBEYXRhLgplLmcuIFlHLU1ldGVyLVdhdGVyLVJlYWRpbmcKVVRGOC1zdHJpbmcKXV0+PC9EZXNjcmlwdGlvbj4KCQkJPC9JdGVtPgoJCQk8SXRlbSBJRD0iNSI+PE5hbWU+QXBwIElEPC9OYW1lPgoJCQkJPE9wZXJhdGlvbnM+Ulc8L09wZXJhdGlvbnM+CgkJCQk8TXVsdGlwbGVJbnN0YW5jZXM+U2luZ2xlPC9NdWx0aXBsZUluc3RhbmNlcz4KCQkJCTxNYW5kYXRvcnk+T3B0aW9uYWw8L01hbmRhdG9yeT4KCQkJCTxUeXBlPkludGVnZXI8L1R5cGU+CgkJCQk8UmFuZ2VFbnVtZXJhdGlvbj4yIGJ5dGVzPC9SYW5nZUVudW1lcmF0aW9uPgoJCQkJPFVuaXRzIC8+CgkJCQk8RGVzY3JpcHRpb24+PCFbQ0RBVEFbSW5kaWNhdGVzIHRoZSBkZXN0aW5hdGlvbiBBcHBsaWNhdGlvbiBJRC5dXT48L0Rlc2NyaXB0aW9uPgoJCQk8L0l0ZW0+PC9SZXNvdXJjZXM+CgkJPERlc2NyaXB0aW9uMj48IVtDREFUQVtdXT48L0Rlc2NyaXB0aW9uMj4KCTwvT2JqZWN0Pgo8L0xXTTJNPgo=',
)
preview: Optional[str] = None
name: Optional[str] = None
public: Optional[bool] = None
link: Optional[str] = None
publicLink: Optional[str] = None
class TbResourceInfo(BaseModel):
id: Optional[TbResourceId] = Field(
None,
description='JSON object with the Resource Id. Specify this field to update the Resource. Referencing non-existing Resource Id will cause error. Omit this field to create new Resource.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the resource creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(
None,
description="JSON object with Tenant Id. Tenant Id of the resource can't be changed.",
)
customerId: Optional[CustomerId] = Field(
None,
description="JSON object with Customer Id. Customer Id of the resource can't be changed.",
)
title: Optional[str] = Field(
None, description='Resource title.', example='BinaryAppDataContainer id=19 v1.0'
)
resourceType: Optional[ResourceType] = Field(
None, description='Resource type.', example='LWM2M_MODEL'
)
resourceSubType: Optional[ResourceSubType] = Field(
None, description='Resource sub type.', example='IOT_SVG'
)
resourceKey: Optional[str] = Field(
None, description='Resource key.', example='19_1.0'
)
publicResourceKey: Optional[str] = None
etag: Optional[str] = Field(
None,
description='Resource etag.',
example='33a64df551425fcc55e4d42a148795d9f25f89d4',
)
fileName: Optional[str] = Field(
None, description='Resource file name.', example='19.xml'
)
descriptor: Optional[JsonNode] = None
name: Optional[str] = None
public: Optional[bool] = None
link: Optional[str] = None
publicLink: Optional[str] = None
class Tenant(BaseModel):
id: Optional[TenantId] = Field(
None,
description='JSON object with the tenant Id. Specify this field to update the tenant. Referencing non-existing tenant Id will cause error. Omit this field to create new tenant.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the tenant creation, in milliseconds',
example=1609459200000,
)
country: Optional[str] = Field(None, description='Country', example='US')
state: Optional[str] = Field(None, description='State', example='NY')
city: Optional[str] = Field(None, description='City', example='New York')
address: Optional[str] = Field(None, description='Address Line 1', example=42)
address2: Optional[str] = Field(None, description='Address Line 2')
zip: Optional[str] = Field(None, description='Zip code', example=10004)
phone: Optional[str] = Field(
None, description='Phone number', example='+1(415)777-7777'
)
email: Optional[str] = Field(
None, description='Email', example='example@company.com'
)
title: str = Field(..., description='Title of the tenant', example='Company A')
region: Optional[str] = Field(
None, description='Geo region of the tenant', example='North America'
)
tenantProfileId: Optional[TenantProfileId] = Field(
None, description='JSON object with Tenant Profile Id'
)
version: Optional[int] = None
active: Optional[bool] = None
lastInactiveTs: Optional[int] = None
currentPeriodStartTs: Optional[int] = None
name: Optional[str] = Field(
None,
description='Name of the tenant. Read-only, duplicated from title for backward compatibility',
example='Company A',
)
additionalInfo: Optional[JsonNode] = Field(
None, description='Additional parameters of the device'
)
class TenantAdministratorsFilter(UsersFilter):
tenantsIds: Optional[List[UUID]] = Field(None, Set=True)
tenantProfilesIds: Optional[List[UUID]] = Field(None, Set=True)
class TenantInfo(BaseModel):
id: Optional[TenantId] = Field(
None,
description='JSON object with the tenant Id. Specify this field to update the tenant. Referencing non-existing tenant Id will cause error. Omit this field to create new tenant.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the tenant creation, in milliseconds',
example=1609459200000,
)
country: Optional[str] = Field(None, description='Country', example='US')
state: Optional[str] = Field(None, description='State', example='NY')
city: Optional[str] = Field(None, description='City', example='New York')
address: Optional[str] = Field(None, description='Address Line 1', example=42)
address2: Optional[str] = Field(None, description='Address Line 2')
zip: Optional[str] = Field(None, description='Zip code', example=10004)
phone: Optional[str] = Field(
None, description='Phone number', example='+1(415)777-7777'
)
email: Optional[str] = Field(
None, description='Email', example='example@company.com'
)
title: str = Field(..., description='Title of the tenant', example='Company A')
region: Optional[str] = Field(
None, description='Geo region of the tenant', example='North America'
)
tenantProfileId: Optional[TenantProfileId] = Field(
None, description='JSON object with Tenant Profile Id'
)
version: Optional[int] = None
active: Optional[bool] = None
lastInactiveTs: Optional[int] = None
currentPeriodStartTs: Optional[int] = None
tenantProfileName: Optional[str] = Field(
None, description='Tenant Profile name', example='Default'
)
name: Optional[str] = Field(
None,
description='Name of the tenant. Read-only, duplicated from title for backward compatibility',
example='Company A',
)
additionalInfo: Optional[JsonNode] = Field(
None, description='Additional parameters of the device'
)
class TenantProfileData(BaseModel):
configuration: Optional[DefaultTenantProfileConfiguration] = Field(
None,
description='Complex JSON object that contains profile settings: max devices, max assets, rate limits, etc.',
)
queueConfiguration: Optional[List[TenantProfileQueueConfiguration]] = Field(
None, description='JSON array of queue configuration per tenant profile'
)
class TestSmsRequest(BaseModel):
providerConfiguration: Optional[
Union[
AwsSnsSmsProviderConfiguration,
SmppSmsProviderConfiguration,
TwilioSmsProviderConfiguration,
]
] = Field(None, description='The SMS provider configuration')
numberTo: Optional[str] = Field(
None,
description='The phone number or other identifier to specify as a recipient of the SMS.',
)
message: Optional[str] = Field(None, description='The test message')
class TotpTwoFaAccountConfig(TwoFaAccountConfig):
authUrl: constr(pattern=r'otpauth://totp/(\S+?):(\S+?)\?issuer=(\S+?)&secret=(\w+?)')
class TotpTwoFaProviderConfig(TwoFaProviderConfig):
issuerName: str
class User(BaseModel):
id: Optional[UserId] = Field(
None,
description='JSON object with the User Id. Specify this field to update the device. Referencing non-existing User Id will cause error. Omit this field to create new customer.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the user creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(
None, description='JSON object with the Tenant Id.'
)
customerId: Optional[CustomerId] = Field(
None, description='JSON object with the Customer Id.'
)
email: str = Field(..., description='Email of the user', example='user@example.com')
authority: Authority = Field(
..., description='Authority', example='SYS_ADMIN, TENANT_ADMIN or CUSTOMER_USER'
)
firstName: Optional[str] = Field(
None, description='First name of the user', example='John'
)
lastName: Optional[str] = Field(
None, description='Last name of the user', example='Doe'
)
phone: Optional[str] = Field(
None, description='Phone number of the user', example=38012345123
)
customMenuId: Optional[CustomMenuId] = None
version: Optional[int] = None
name: Optional[str] = Field(
None,
description='Duplicates the email of the user, readonly',
example='user@example.com',
)
additionalInfo: Optional[JsonNode] = Field(
None, description='Additional parameters of the user'
)
ownerId: Optional[EntityId] = Field(
None, description='JSON object with Customer or Tenant Id'
)
class UserEmailInfo(BaseModel):
id: Optional[UserId] = Field(None, description='User id')
email: Optional[str] = Field(
None, description='User email', example='john@gmail.com'
)
firstName: Optional[str] = Field(
None, description='User first name', example='John'
)
lastName: Optional[str] = Field(None, description='User last name', example='Brown')
class UserGroupListFilter(UsersFilter):
groupsIds: List[UUID]
class UserListFilter(UsersFilter):
usersIds: List[UUID]
class UserMobileInfo(BaseModel):
user: Optional[User] = None
storeInfo: Optional[StoreInfo] = None
versionInfo: Optional[MobileAppVersionInfo] = None
homeDashboardInfo: Optional[HomeDashboardInfo] = None
pages: Optional[JsonNode] = None
class UserRoleFilter(UsersFilter):
rolesIds: List[UUID]
class WebSelfRegistrationParams(SelfRegistrationParams):
enabled: Optional[bool] = Field(
None, description='Indicates if self-registration is allowed via sign-up form'
)
title: str = Field(..., description='The text message to appear on login form')
captcha: CaptchaParams = Field(
..., description="Captcha site key for 'I'm not a robot' validation"
)
signUpFields: List[SignUpField] = Field(
..., description='List of sign-up form fields'
)
showPrivacyPolicy: Optional[bool] = Field(
None, description="Show or hide 'Privacy Policy'"
)
showTermsOfUse: Optional[bool] = Field(
None, description="Show or hide 'Terms of Use'"
)
notificationRecipient: Optional[NotificationTargetId] = Field(
None,
description='Recipient to use for notifications when new user self-registered.',
)
customerTitlePrefix: Optional[str] = Field(
None, description='Prefix to add to created customer'
)
customerGroupId: Optional[EntityGroupId] = Field(
None, description='Id of the customer group customer wil be added to.'
)
permissions: List[GroupPermission] = Field(
..., description='Group Permissions to assign for the new customer user.'
)
defaultDashboard: Optional[DefaultDashboardParams] = Field(
None, description='Default dashboard params'
)
homeDashboard: Optional[HomeDashboardParams] = Field(
None, description='Home dashboard params'
)
customMenuId: Optional[CustomMenuId] = Field(None, description='Custom menu id')
privacyPolicy: Optional[str] = Field(
None, description='Privacy policy text. Supports HTML.'
)
termsOfUse: Optional[str] = Field(
None, description='Terms of User text. Supports HTML.'
)
domainId: DomainId = Field(
...,
description='Domain name for self registration URL. Typically this matches the domain name from the Login White Labeling page.',
)
class WidgetType(BaseModel):
id: Optional[WidgetTypeId] = Field(
None,
description='JSON object with the Widget Type Id. Specify this field to update the Widget Type. Referencing non-existing Widget Type Id will cause error. Omit this field to create new Widget Type.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the Widget Type creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(
None, description='JSON object with Tenant Id.'
)
fqn: Optional[str] = Field(
None,
description='Unique FQN that is used in dashboards as a reference widget type',
)
name: Optional[str] = Field(None, description='Widget name used in search and UI')
deprecated: Optional[bool] = Field(
None, description='Whether widget type is deprecated.', example=True
)
scada: Optional[bool] = Field(
None, description='Whether widget type is SCADA symbol.', example=True
)
version: Optional[int] = None
descriptor: Optional[JsonNode] = None
class WidgetTypeDetails(BaseModel):
fqn: Optional[str] = Field(
None,
description='Unique FQN that is used in dashboards as a reference widget type',
)
name: Optional[str] = Field(None, description='Widget name used in search and UI')
deprecated: Optional[bool] = Field(
None, description='Whether widget type is deprecated.', example=True
)
image: Optional[str] = Field(
None,
description="Relative or external image URL. Replaced with image data URL (Base64) in case of relative URL and 'inlineImages' option enabled.",
)
description: Optional[str] = Field(None, description='Description of the widget')
descriptor: Optional[JsonNode] = None
resources: Optional[List[ResourceExportData]] = None
id: Optional[WidgetTypeId] = Field(
None,
description='JSON object with the Widget Type Id. Specify this field to update the Widget Type. Referencing non-existing Widget Type Id will cause error. Omit this field to create new Widget Type.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the Widget Type creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(
None, description='JSON object with Tenant Id.'
)
scada: Optional[bool] = Field(
None, description='Whether widget type is SCADA symbol.', example=True
)
version: Optional[int] = None
tags: Optional[List[str]] = Field(None, description='Tags of the widget type')
class WidgetsBundle(BaseModel):
id: Optional[WidgetsBundleId] = Field(
None,
description='JSON object with the Widget Bundle Id. Specify this field to update the Widget Bundle. Referencing non-existing Widget Bundle Id will cause error. Omit this field to create new Widget Bundle.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the Widget Bundle creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(
None, description='JSON object with Tenant Id.'
)
alias: Optional[str] = Field(
None,
description='Unique alias that is used in widget types as a reference widget bundle',
)
title: Optional[str] = Field(None, description='Title used in search and UI')
image: Optional[str] = Field(
None,
description="Relative or external image URL. Replaced with image data URL (Base64) in case of relative URL and 'inlineImages' option enabled.",
)
scada: Optional[bool] = Field(
None, description='Whether widgets bundle contains SCADA symbol widget types.'
)
description: Optional[str] = Field(None, description='Description')
order: Optional[int] = Field(None, description='Order')
version: Optional[int] = None
name: Optional[str] = Field(
None,
description="Same as title of the Widget Bundle. Read-only field. Update the 'title' to change the 'name' of the Widget Bundle.",
)
class AccountTwoFaSettings(BaseModel):
configs: Optional[
Dict[
str,
Union[
BackupCodeTwoFaAccountConfig,
EmailTwoFaAccountConfig,
SmsTwoFaAccountConfig,
TotpTwoFaAccountConfig,
],
]
] = None
class AlarmConditionFilter(BaseModel):
key: Optional[AlarmConditionFilterKey] = Field(
None, description='JSON object for specifying alarm condition by specific key'
)
valueType: Optional[ValueType] = Field(
None,
description='String representation of the type of the value',
example='NUMERIC',
)
value: Optional[Any] = Field(
None,
description='Value used in Constant comparison. For other types, such as TIME_SERIES or ATTRIBUTE, the predicate condition is used',
)
predicate: Optional[
Union[
BooleanFilterPredicate,
ComplexFilterPredicate,
NumericFilterPredicate,
StringFilterPredicate,
]
] = Field(None, description='JSON object representing filter condition')
class AlarmCountQuery(BaseModel):
startTs: Optional[int] = None
endTs: Optional[int] = None
timeWindow: Optional[int] = None
typeList: Optional[List[str]] = None
statusList: Optional[List[StatusListEnum]] = None
severityList: Optional[List[SeverityListEnum]] = None
searchPropagatedAlarms: Optional[bool] = None
assigneeId: Optional[UserId] = None
entityFilter: Optional[
Union[
ApiUsageStateFilter,
AssetSearchQueryFilter,
AssetTypeFilter,
DeviceSearchQueryFilter,
DeviceTypeFilter,
EdgeSearchQueryFilter,
EdgeTypeFilter,
EntitiesByGroupNameFilter,
EntityGroupFilter,
EntityGroupListFilter,
EntityGroupNameFilter,
EntityListFilter,
EntityNameFilter,
EntityTypeFilter,
EntityViewSearchQueryFilter,
EntityViewTypeFilter,
RelationsQueryFilter,
SchedulerEventFilter,
SingleEntityFilter,
StateEntityOwnerFilter,
]
] = None
keyFilters: Optional[List[KeyFilter]] = None
class AlarmDataPageLink(BaseModel):
startTs: Optional[int] = None
endTs: Optional[int] = None
timeWindow: Optional[int] = None
typeList: Optional[List[str]] = None
statusList: Optional[List[StatusListEnum]] = None
severityList: Optional[List[SeverityListEnum]] = None
searchPropagatedAlarms: Optional[bool] = None
assigneeId: Optional[UserId] = None
pageSize: Optional[int] = None
page: Optional[int] = None
textSearch: Optional[str] = None
sortOrder: Optional[EntityDataSortOrder] = None
dynamic: Optional[bool] = None
class AlarmDataQuery(BaseModel):
entityFilter: Optional[
Union[
ApiUsageStateFilter,
AssetSearchQueryFilter,
AssetTypeFilter,
DeviceSearchQueryFilter,
DeviceTypeFilter,
EdgeSearchQueryFilter,
EdgeTypeFilter,
EntitiesByGroupNameFilter,
EntityGroupFilter,
EntityGroupListFilter,
EntityGroupNameFilter,
EntityListFilter,
EntityNameFilter,
EntityTypeFilter,
EntityViewSearchQueryFilter,
EntityViewTypeFilter,
RelationsQueryFilter,
SchedulerEventFilter,
SingleEntityFilter,
StateEntityOwnerFilter,
]
] = None
keyFilters: Optional[List[KeyFilter]] = None
pageLink: Optional[AlarmDataPageLink] = None
entityFields: Optional[List[EntityKey]] = None
latestValues: Optional[List[EntityKey]] = None
alarmFields: Optional[List[EntityKey]] = None
class CalculatedField(BaseModel):
id: Optional[CalculatedFieldId] = Field(
None,
description='JSON object with the Calculated Field Id. Referencing non-existing Calculated Field Id will cause error.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the calculated field creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = None
entityId: Optional[EntityId] = None
type: Optional[Type4] = None
name: Optional[str] = Field(
None, description='User defined name of the calculated field.'
)
debugMode: Optional[bool] = None
debugSettings: Optional[DebugSettings] = Field(
None, description='Debug settings object.'
)
configurationVersion: Optional[int] = Field(
None, description='Version of calculated field configuration.', example=0
)
configuration: Optional[
Union[ScriptCalculatedFieldConfiguration, SimpleCalculatedFieldConfiguration]
] = None
version: Optional[int] = None
class CustomMenuConfig(BaseModel):
items: List[Union[CustomMenuItem, DefaultMenuItem, HomeMenuItem]] = Field(
..., description='List of custom menu items'
)
class Device(BaseModel):
id: Optional[DeviceId] = Field(
None,
description='JSON object with the Device Id. Specify this field to update the Device. Referencing non-existing Device Id will cause error. Omit this field to create new Device.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the device creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(
None,
description="JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id.",
)
customerId: Optional[CustomerId] = Field(
None,
description="JSON object with Customer Id. Use 'assignDeviceToCustomer' to change the Customer Id.",
)
name: Optional[str] = Field(
None,
description='Unique Device Name in scope of Tenant',
example='A4B72CCDFF33',
)
type: Optional[str] = Field(
None, description='Device Profile Name', example='Temperature Sensor'
)
label: Optional[str] = Field(
None, description='Label that may be used in widgets', example='Room 234 Sensor'
)
deviceProfileId: DeviceProfileId = Field(
..., description='JSON object with Device Profile Id.'
)
firmwareId: Optional[OtaPackageId] = Field(
None, description='JSON object with Ota Package Id.'
)
softwareId: Optional[OtaPackageId] = Field(
None, description='JSON object with Ota Package Id.'
)
version: Optional[int] = None
additionalInfo: Optional[JsonNode] = Field(
None, description='Additional parameters of the device'
)
ownerId: Optional[EntityId] = Field(
None, description='JSON object with Customer or Tenant Id'
)
deviceData: Optional[DeviceData] = Field(
None,
description='JSON object with content specific to type of transport in the device profile.',
)
class EntityCountQuery(BaseModel):
entityFilter: Optional[
Union[
ApiUsageStateFilter,
AssetSearchQueryFilter,
AssetTypeFilter,
DeviceSearchQueryFilter,
DeviceTypeFilter,
EdgeSearchQueryFilter,
EdgeTypeFilter,
EntitiesByGroupNameFilter,
EntityGroupFilter,
EntityGroupListFilter,
EntityGroupNameFilter,
EntityListFilter,
EntityNameFilter,
EntityTypeFilter,
EntityViewSearchQueryFilter,
EntityViewTypeFilter,
RelationsQueryFilter,
SchedulerEventFilter,
SingleEntityFilter,
StateEntityOwnerFilter,
]
] = None
keyFilters: Optional[List[KeyFilter]] = None
class EntityDataPageLink(BaseModel):
pageSize: Optional[int] = None
page: Optional[int] = None
textSearch: Optional[str] = None
sortOrder: Optional[EntityDataSortOrder] = None
dynamic: Optional[bool] = None
class EntityDataQuery(BaseModel):
entityFilter: Optional[
Union[
ApiUsageStateFilter,
AssetSearchQueryFilter,
AssetTypeFilter,
DeviceSearchQueryFilter,
DeviceTypeFilter,
EdgeSearchQueryFilter,
EdgeTypeFilter,
EntitiesByGroupNameFilter,
EntityGroupFilter,
EntityGroupListFilter,
EntityGroupNameFilter,
EntityListFilter,
EntityNameFilter,
EntityTypeFilter,
EntityViewSearchQueryFilter,
EntityViewTypeFilter,
RelationsQueryFilter,
SchedulerEventFilter,
SingleEntityFilter,
StateEntityOwnerFilter,
]
] = None
keyFilters: Optional[List[KeyFilter]] = None
pageLink: Optional[EntityDataPageLink] = None
entityFields: Optional[List[EntityKey]] = None
latestValues: Optional[List[EntityKey]] = None
class EntityExportDataObject(BaseModel):
entityType: Optional[EntityType13] = None
entity: Optional[Any] = None
relations: Optional[List[EntityRelation]] = None
attributes: Optional[Dict[str, List[AttributeExportData]]] = None
calculatedFields: Optional[List[CalculatedField]] = None
class EntityGroupExportData(EntityExportDataObject):
entity: Optional[EntityGroup] = None
permissions: Optional[List[GroupPermission]] = None
groupEntities: Optional[bool] = None
class GroupEntityExportData(EntityExportDataObject):
entity: Optional[ExportableEntityEntityId] = None
class GroupPermissionInfo(BaseModel):
id: Optional[GroupPermissionId] = Field(
None,
description='JSON object with the Group Permission Id. Specify this field to update the Group Permission. Referencing non-existing Group Permission Id will cause error. Omit this field to create new Group Permission.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the group permission creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(
None, description='JSON object with the Tenant Id.'
)
userGroupId: Optional[EntityGroupId] = Field(
None,
description='JSON object with the User Group Id. Represent user group that will have permissions to perform operations against corresponding Entity Group.',
)
roleId: Optional[RoleId] = Field(
None, description='JSON object with the Role Id. Represent set of permissions.'
)
entityGroupId: Optional[EntityGroupId] = Field(
None,
description='JSON object with the Entity Group Id. Represent entity (device, asset, etc.) group.',
)
entityGroupType: Optional[EntityGroupType] = Field(
None,
description='Type of the entities in the group: DEVICE, ASSET, CUSTOMER, etc.',
)
role: Optional[Role] = Field(None, description='Represent set of permissions.')
entityGroupName: Optional[str] = Field(None, description='Entity Group Name.')
entityGroupOwnerId: Optional[EntityId] = Field(
None, description='Entity Group Owner Id (Tenant or Customer).'
)
entityGroupOwnerName: Optional[str] = Field(
None, description='Name of the entity group owner (Tenant or Customer title).'
)
userGroupName: Optional[str] = Field(None, description='User Group Name.')
userGroupOwnerId: Optional[EntityId] = Field(
None, description='User Group Owner Id (Tenant or Customer).'
)
userGroupOwnerName: Optional[str] = Field(
None, description='Name of the user group owner (Tenant or Customer title).'
)
readOnly: Optional[bool] = None
name: Optional[str] = Field(
None, description='Name of the Group Permissions. Auto-generated'
)
public: Optional[bool] = None
class LoginMobileInfo(BaseModel):
oAuth2ClientLoginInfos: Optional[List[OAuth2ClientLoginInfo]] = None
selfRegistrationParams: Optional[SignUpSelfRegistrationParams] = None
storeInfo: Optional[StoreInfo] = None
versionInfo: Optional[MobileAppVersionInfo] = None
class MobileSelfRegistrationParams(SelfRegistrationParams):
enabled: Optional[bool] = Field(
None, description='Indicates if self-registration is allowed via sign-up form'
)
title: str = Field(..., description='The text message to appear on login form')
captcha: CaptchaParams = Field(
..., description="Captcha site key for 'I'm not a robot' validation"
)
signUpFields: List[SignUpField] = Field(
..., description='List of sign-up form fields'
)
showPrivacyPolicy: Optional[bool] = Field(
None, description="Show or hide 'Privacy Policy'"
)
showTermsOfUse: Optional[bool] = Field(
None, description="Show or hide 'Terms of Use'"
)
notificationRecipient: Optional[NotificationTargetId] = Field(
None,
description='Recipient to use for notifications when new user self-registered.',
)
customerTitlePrefix: Optional[str] = Field(
None, description='Prefix to add to created customer'
)
customerGroupId: Optional[EntityGroupId] = Field(
None, description='Id of the customer group customer wil be added to.'
)
permissions: List[GroupPermission] = Field(
..., description='Group Permissions to assign for the new customer user.'
)
defaultDashboard: Optional[DefaultDashboardParams] = Field(
None, description='Default dashboard params'
)
homeDashboard: Optional[HomeDashboardParams] = Field(
None, description='Home dashboard params'
)
customMenuId: Optional[CustomMenuId] = Field(None, description='Custom menu id')
privacyPolicy: Optional[str] = Field(
None, description='Privacy policy text. Supports HTML.'
)
termsOfUse: Optional[str] = Field(
None, description='Terms of User text. Supports HTML.'
)
redirect: MobileRedirectParams = Field(..., description='Mobile redirect params.')
class NotificationTarget(BaseModel):
id: Optional[NotificationTargetId] = None
createdTime: Optional[int] = None
tenantId: Optional[TenantId] = None
name: str
configuration: Union[
MicrosoftTeamsNotificationTargetConfig,
PlatformUsersNotificationTargetConfig,
SlackNotificationTargetConfig,
]
class NotificationTemplate(BaseModel):
id: Optional[NotificationTemplateId] = None
createdTime: Optional[int] = None
tenantId: Optional[TenantId] = None
name: str
notificationType: NotificationType
configuration: NotificationTemplateConfig
class PageDataCalculatedField(BaseModel):
data: Optional[List[CalculatedField]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataDevice(BaseModel):
data: Optional[List[Device]] = Field(None, description='Array of the entities')
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataNotificationTarget(BaseModel):
data: Optional[List[NotificationTarget]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataNotificationTemplate(BaseModel):
data: Optional[List[NotificationTemplate]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataQueue(BaseModel):
data: Optional[List[Queue]] = Field(None, description='Array of the entities')
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataQueueStats(BaseModel):
data: Optional[List[QueueStats]] = Field(None, description='Array of the entities')
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataRole(BaseModel):
data: Optional[List[Role]] = Field(None, description='Array of the entities')
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataRuleChain(BaseModel):
data: Optional[List[RuleChain]] = Field(None, description='Array of the entities')
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataSchedulerEventInfo(BaseModel):
data: Optional[List[SchedulerEventInfo]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataTbResourceInfo(BaseModel):
data: Optional[List[TbResourceInfo]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataTenant(BaseModel):
data: Optional[List[Tenant]] = Field(None, description='Array of the entities')
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataTenantInfo(BaseModel):
data: Optional[List[TenantInfo]] = Field(None, description='Array of the entities')
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataUser(BaseModel):
data: Optional[List[User]] = Field(None, description='Array of the entities')
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataUserEmailInfo(BaseModel):
data: Optional[List[UserEmailInfo]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataWidgetsBundle(BaseModel):
data: Optional[List[WidgetsBundle]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PlatformTwoFaSettings(BaseModel):
useSystemTwoFactorAuthSettings: Optional[bool] = None
providers: List[
Union[
BackupCodeTwoFaProviderConfig,
EmailTwoFaProviderConfig,
SmsTwoFaProviderConfig,
TotpTwoFaProviderConfig,
]
]
minVerificationCodeSendPeriod: conint(ge=5)
verificationCodeCheckRateLimit: Optional[constr(pattern=r'[1-9]\d*:[1-9]\d*')] = None
maxVerificationFailuresBeforeUserLockout: Optional[conint(ge=0)] = None
totalAllowedTimeForVerification: conint(ge=60)
class RuleChainMetaData(BaseModel):
ruleChainId: RuleChainId = Field(..., description='JSON object with Rule Chain Id.')
version: Optional[int] = Field(
None, description='Version of the Rule Chain'
)
firstNodeIndex: int = Field(
..., description="Index of the first rule node in the 'nodes' list"
)
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',
)
ruleChainConnections: List[RuleChainConnectionInfo] = Field(
...,
description='List of JSON objects that represent connections between rule nodes and other rule chains.',
)
class SaveDeviceWithCredentialsRequest(BaseModel):
device: Device = Field(..., description='The JSON with device entity.')
credentials: DeviceCredentials = Field(
..., description='The JSON with credentials entity.'
)
class TenantProfile(BaseModel):
id: Optional[TenantProfileId] = Field(
None,
description='JSON object with the tenant profile Id. Specify this field to update the tenant profile. Referencing non-existing tenant profile Id will cause error. Omit this field to create new tenant profile.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the tenant profile creation, in milliseconds',
example=1609459200000,
)
name: Optional[str] = Field(
None, description='Name of the tenant profile', example='High Priority Tenants'
)
description: Optional[str] = Field(
None, description='Description of the tenant profile', example='Any text'
)
isolatedTbRuleEngine: Optional[bool] = Field(
None,
description='If enabled, will push all messages related to this tenant and processed by the rule engine into separate queue. Useful for complex microservices deployments, to isolate processing of the data for specific tenants',
example=False,
)
profileData: Optional[TenantProfileData] = None
default: Optional[bool] = Field(
None, description='Default Tenant profile to be used.', example=False
)
class WidgetTypeExportData(EntityExportDataObject):
entity: Optional[WidgetTypeDetails] = None
class WidgetsBundleExportData(EntityExportDataObject):
entity: Optional[WidgetsBundle] = None
widgets: Optional[List[Dict[str, Any]]] = None
fqns: Optional[List[str]] = None
class AlarmCondition(BaseModel):
condition: Optional[List[AlarmConditionFilter]] = Field(
None, description='JSON array of alarm condition filters'
)
spec: Optional[
Union[
DurationAlarmConditionSpec,
RepeatingAlarmConditionSpec,
SimpleAlarmConditionSpec,
]
] = Field(None, description='JSON object representing alarm condition type')
class AlarmRule(BaseModel):
condition: Optional[AlarmCondition] = Field(
None, description='JSON object representing the alarm rule condition'
)
schedule: Optional[
Union[AnyTimeSchedule, CustomTimeSchedule, SpecificTimeSchedule]
] = Field(
None,
description='JSON object representing time interval during which the rule is active',
)
alarmDetails: Optional[str] = Field(
None,
description='String value representing the additional details for an alarm rule',
)
dashboardId: Optional[DashboardId] = Field(
None,
description='JSON object with the dashboard Id representing the reference to alarm details dashboard used by mobile application',
)
class CustomMenu(BaseModel):
id: Optional[CustomMenuId] = None
createdTime: Optional[int] = None
tenantId: Optional[TenantId] = Field(
None, description='JSON object with Tenant Id that owns the menu.'
)
customerId: Optional[CustomerId] = Field(
None, description='JSON object with Customer Id that owns the menu.'
)
name: str = Field(
..., description='Custom menu name', example='Customer A custom menu'
)
scope: Scope1 = Field(
...,
description='Custom menu scope. Possible values: SYSTEM, TENANT, CUSTOMER',
example='TENANT',
)
assigneeType: AssigneeType = Field(
...,
description='Custom menu assignee type. Possible values are: All (all users of specified scope), CUSTOMERS (specified customers), USERS (specified list of users), NO_ASSIGN (no assignees)',
example='ALL',
)
config: Optional[CustomMenuConfig] = Field(
None, description='Custom menu configuration'
)
class DeviceExportData(EntityExportDataObject):
entity: Optional[Device] = None
credentials: Optional[DeviceCredentials] = None
class DeviceProfileAlarm(BaseModel):
id: Optional[str] = Field(
None,
description='String value representing the alarm rule id',
example='highTemperatureAlarmID',
)
alarmType: Optional[str] = Field(
None,
description='String value representing type of the alarm',
example='High Temperature Alarm',
)
createRules: Optional[Dict[str, AlarmRule]] = Field(
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',
)
clearRule: Optional[AlarmRule] = Field(
None, description='JSON object representing clear alarm rule'
)
propagate: Optional[bool] = Field(
None,
description='Propagation flag to specify if alarm should be propagated to parent entities of alarm originator',
example=True,
)
propagateToOwner: Optional[bool] = Field(
None,
description='Propagation flag to specify if alarm should be propagated to the owner (tenant or customer) of alarm originator',
example=True,
)
propagateToOwnerHierarchy: Optional[bool] = Field(
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',
example=True,
)
propagateToTenant: Optional[bool] = Field(
None,
description='Propagation flag to specify if alarm should be propagated to the tenant entity',
example=True,
)
propagateRelationTypes: Optional[List[str]] = Field(
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.",
)
class DeviceProfileData(BaseModel):
configuration: Optional[DefaultDeviceProfileConfiguration] = Field(
None, description='JSON object of device profile configuration'
)
transportConfiguration: Optional[
Union[
CoapDeviceProfileTransportConfiguration,
DefaultDeviceProfileTransportConfiguration,
Lwm2mDeviceProfileTransportConfiguration,
MqttDeviceProfileTransportConfiguration,
SnmpDeviceProfileTransportConfiguration,
]
] = Field(None, description='JSON object of device profile transport configuration')
provisionConfiguration: Optional[
Union[
AllowCreateNewDevicesDeviceProfileProvisionConfiguration,
CheckPreProvisionedDevicesDeviceProfileProvisionConfiguration,
DisabledDeviceProfileProvisionConfiguration,
X509CertificateChainProvisionConfiguration,
]
] = Field(
None, description='JSON object of provisioning strategy type per device profile'
)
alarms: Optional[List[DeviceProfileAlarm]] = Field(
None, description='JSON array of alarm rules configuration per device profile'
)
class MobileAppBundle(BaseModel):
id: Optional[MobileAppBundleId] = None
createdTime: Optional[int] = None
tenantId: Optional[TenantId] = Field(None, description='JSON object with Tenant Id')
title: str = Field(..., description='Application bundle title. Cannot be empty')
description: Optional[str] = Field(
None, description='Application bundle description.'
)
androidAppId: Optional[MobileAppId] = Field(
None, description='Android application id'
)
iosAppId: Optional[MobileAppId] = Field(None, description='IOS application id')
layoutConfig: Optional[MobileLayoutConfig] = Field(
None, description='Application layout configuration'
)
selfRegistrationParams: Optional[MobileSelfRegistrationParams] = Field(
None, description='Application self registration configuration'
)
oauth2Enabled: Optional[bool] = Field(
None, description='Whether OAuth2 settings are enabled or not'
)
name: Optional[str] = Field(
None, description='Mobile app bundle title', example='My main application'
)
class MobileAppBundleInfo(BaseModel):
id: Optional[MobileAppBundleId] = None
createdTime: Optional[int] = None
tenantId: Optional[TenantId] = Field(None, description='JSON object with Tenant Id')
title: str = Field(..., description='Application bundle title. Cannot be empty')
description: Optional[str] = Field(
None, description='Application bundle description.'
)
androidAppId: Optional[MobileAppId] = Field(
None, description='Android application id'
)
iosAppId: Optional[MobileAppId] = Field(None, description='IOS application id')
layoutConfig: Optional[MobileLayoutConfig] = Field(
None, description='Application layout configuration'
)
selfRegistrationParams: Optional[MobileSelfRegistrationParams] = Field(
None, description='Application self registration configuration'
)
oauth2Enabled: Optional[bool] = Field(
None, description='Whether OAuth2 settings are enabled or not'
)
androidPkgName: Optional[str] = Field(None, description='Android package name')
iosPkgName: Optional[str] = Field(None, description='IOS package name')
oauth2ClientInfos: Optional[List[OAuth2ClientInfo]] = Field(
None, description='List of available oauth2 clients'
)
qrCodeEnabled: Optional[bool] = Field(
None, description='Indicates if qr code is available for bundle'
)
name: Optional[str] = Field(
None, description='Mobile app bundle title', example='My main application'
)
class NotificationRequest(BaseModel):
tenantId: Optional[TenantId] = None
targets: List[UUID]
templateId: Optional[NotificationTemplateId] = None
template: Optional[NotificationTemplate] = None
info: Optional[NotificationInfo] = None
additionalConfig: Optional[NotificationRequestConfig] = None
originatorEntityId: Optional[EntityId] = None
ruleId: Optional[NotificationRuleId] = None
status: Optional[Status7] = None
stats: Optional[NotificationRequestStats] = None
id: Optional[NotificationRequestId] = None
createdTime: Optional[int] = None
class NotificationRequestInfo(BaseModel):
id: Optional[NotificationRequestId] = None
createdTime: Optional[int] = None
tenantId: Optional[TenantId] = None
targets: List[UUID]
templateId: Optional[NotificationTemplateId] = None
template: Optional[NotificationTemplate] = None
info: Optional[NotificationInfo] = None
additionalConfig: Optional[NotificationRequestConfig] = None
originatorEntityId: Optional[EntityId] = None
ruleId: Optional[NotificationRuleId] = None
status: Optional[Status7] = None
stats: Optional[NotificationRequestStats] = None
templateName: Optional[str] = None
deliveryMethods: Optional[List[DeliveryMethod]] = None
class PageDataMobileAppBundleInfo(BaseModel):
data: Optional[List[MobileAppBundleInfo]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataNotificationRequestInfo(BaseModel):
data: Optional[List[NotificationRequestInfo]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class PageDataTenantProfile(BaseModel):
data: Optional[List[TenantProfile]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
class RuleChainData(BaseModel):
ruleChains: List[RuleChain] = Field(
..., description='List of the Rule Chain objects.'
)
metadata: List[RuleChainMetaData] = Field(
..., description='List of the Rule Chain metadata objects.'
)
class RuleChainExportData(EntityExportDataObject):
entity: Optional[RuleChain] = None
metaData: Optional[RuleChainMetaData] = None
class DeviceProfile(BaseModel):
id: Optional[DeviceProfileId] = Field(
None,
description='JSON object with the device profile Id. Specify this field to update the device profile. Referencing non-existing device profile Id will cause error. Omit this field to create new device profile.',
)
createdTime: Optional[int] = Field(
None,
description='Timestamp of the profile creation, in milliseconds',
example=1609459200000,
)
tenantId: Optional[TenantId] = Field(
None, description='JSON object with Tenant Id that owns the profile.'
)
name: Optional[str] = Field(
None,
description='Unique Device Profile Name in scope of Tenant.',
example='Moisture Sensor',
)
description: Optional[str] = Field(None, description='Device Profile description. ')
image: Optional[str] = Field(
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. ',
)
type: Optional[Type8] = Field(
None,
description="Type of the profile. Always 'DEFAULT' for now. Reserved for future use.",
)
transportType: Optional[TransportType] = Field(
None,
description='Type of the transport used to connect the device. Default transport supports HTTP, CoAP and MQTT.',
)
provisionType: Optional[ProvisionType] = Field(
None, description='Provisioning strategy.'
)
defaultRuleChainId: Optional[RuleChainId] = Field(
None,
description='Reference to the rule chain. If present, the specified rule chain will be used to process all messages related to device, including telemetry, attribute updates, etc. Otherwise, the root rule chain will be used to process those messages.',
)
defaultDashboardId: Optional[DashboardId] = Field(
None,
description='Reference to the dashboard. Used in the mobile application to open the default dashboard when user navigates to device details.',
)
defaultQueueName: Optional[str] = Field(
None,
description="Rule engine queue name. If present, the specified queue will be used to store all unprocessed messages related to device, including telemetry, attribute updates, etc. Otherwise, the 'Main' queue will be used to store those messages.",
)
provisionDeviceKey: Optional[str] = Field(
None,
description="Unique provisioning key used by 'Device Provisioning' feature.",
)
firmwareId: Optional[OtaPackageId] = Field(
None,
description='Reference to the firmware OTA package. If present, the specified package will be used as default device firmware. ',
)
softwareId: Optional[OtaPackageId] = Field(
None,
description='Reference to the software OTA package. If present, the specified package will be used as default device software. ',
)
defaultEdgeRuleChainId: Optional[RuleChainId] = Field(
None,
description='Reference to the edge rule chain. If present, the specified edge rule chain will be used on the edge to process all messages related to device, including telemetry, attribute updates, etc. Otherwise, the edge root rule chain will be used to process those messages.',
)
version: Optional[int] = None
default: Optional[bool] = Field(
None,
description='Used to mark the default profile. Default profile is used when the device profile is not specified during device creation.',
)
profileData: Optional[DeviceProfileData] = Field(
None,
description='Complex JSON object that includes addition device profile configuration (transport, alarm rules, etc).',
)
class EntityDataDiff(BaseModel):
currentVersion: Optional[
Union[
EntityExportDataObject,
DeviceExportData,
EntityGroupExportData,
GroupEntityExportData,
RuleChainExportData,
WidgetTypeExportData,
WidgetsBundleExportData,
]
] = None
otherVersion: Optional[
Union[
EntityExportDataObject,
DeviceExportData,
EntityGroupExportData,
GroupEntityExportData,
RuleChainExportData,
WidgetTypeExportData,
WidgetsBundleExportData,
]
] = None
class PageDataDeviceProfile(BaseModel):
data: Optional[List[DeviceProfile]] = Field(
None, description='Array of the entities'
)
totalPages: Optional[int] = Field(
None,
description="Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria",
)
totalElements: Optional[int] = Field(
None, description='Total number of elements in all available pages'
)
hasNext: Optional[bool] = Field(
None, description="'false' value indicates the end of the result set"
)
CustomMenuItem.update_forward_refs()
DefaultMenuItem.update_forward_refs()