Viridi · Schema
EntityDataDiff
CompanyEnergyEnergy StorageBatteryIoTIndustrial IoTEnergy ManagementManufacturingTelematicsMicrogrid
Properties
| Name | Type | Description |
|---|---|---|
| currentVersion | object | |
| otherVersion | object |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/viridi-parente/main/json-schema/viridi-parente-entity-data-diff-schema.json",
"title": "EntityDataDiff",
"x-generated": "2026-10-20",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/viridi-parente-entities-version-control-controller-api-openapi.yml#/components/schemas/EntityDataDiff",
"properties": {
"currentVersion": {
"oneOf": [
{
"$ref": "#/$defs/EntityExportDataObject"
},
{
"$ref": "#/$defs/DeviceExportData"
},
{
"$ref": "#/$defs/RuleChainExportData"
},
{
"$ref": "#/$defs/WidgetTypeExportData"
},
{
"$ref": "#/$defs/WidgetsBundleExportData"
}
]
},
"otherVersion": {
"oneOf": [
{
"$ref": "#/$defs/EntityExportDataObject"
},
{
"$ref": "#/$defs/DeviceExportData"
},
{
"$ref": "#/$defs/RuleChainExportData"
},
{
"$ref": "#/$defs/WidgetTypeExportData"
},
{
"$ref": "#/$defs/WidgetsBundleExportData"
}
]
}
},
"$defs": {
"AttributeExportData": {
"properties": {
"key": {
"type": "string"
},
"lastUpdateTs": {
"type": "integer",
"format": "int64"
},
"booleanValue": {
"type": "boolean"
},
"strValue": {
"type": "string"
},
"longValue": {
"type": "integer",
"format": "int64"
},
"doubleValue": {
"type": "number",
"format": "double"
},
"jsonValue": {
"type": "string"
}
}
},
"CoapDeviceTransportConfiguration": {
"allOf": [
{
"$ref": "#/$defs/DeviceTransportConfiguration"
},
{
"type": "object",
"properties": {
"powerMode": {
"type": "string",
"enum": [
"PSM",
"DRX",
"E_DRX"
]
},
"psmActivityTimer": {
"type": "integer",
"format": "int64"
},
"edrxCycle": {
"type": "integer",
"format": "int64"
},
"pagingTransmissionWindow": {
"type": "integer",
"format": "int64"
}
}
}
]
},
"CustomerId": {
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "ID of the entity, time-based UUID v1"
},
"entityType": {
"type": "string",
"description": "string",
"enum": [
"CUSTOMER"
]
}
},
"required": [
"entityType",
"id"
]
},
"DefaultDeviceConfiguration": {
"allOf": [
{
"$ref": "#/$defs/DeviceConfiguration"
}
]
},
"DefaultDeviceTransportConfiguration": {
"allOf": [
{
"$ref": "#/$defs/DeviceTransportConfiguration"
}
]
},
"Device": {
"properties": {
"id": {
"$ref": "#/$defs/DeviceId",
"description": "JSON object with the Device Id. Specify this field to update the Device. Referencing non-existing Device Id will cause error. Omit this field to create new Device."
},
"createdTime": {
"type": "integer",
"format": "int64",
"description": "Timestamp of the device creation, in milliseconds",
"readOnly": true
},
"tenantId": {
"$ref": "#/$defs/TenantId",
"description": "JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id.",
"readOnly": true
},
"customerId": {
"$ref": "#/$defs/CustomerId",
"description": "JSON object with Customer Id. Use 'assignDeviceToCustomer' to change the Customer Id.",
"readOnly": true
},
"name": {
"type": "string",
"description": "Unique Device Name in scope of Tenant"
},
"type": {
"type": "string",
"description": "Device Profile Name"
},
"label": {
"type": "string",
"description": "Label that may be used in widgets"
},
"deviceProfileId": {
"$ref": "#/$defs/DeviceProfileId",
"description": "JSON object with Device Profile Id."
},
"firmwareId": {
"$ref": "#/$defs/OtaPackageId",
"description": "JSON object with Ota Package Id."
},
"softwareId": {
"$ref": "#/$defs/OtaPackageId",
"description": "JSON object with Ota Package Id."
},
"additionalInfo": {
"$ref": "#/$defs/JsonNode",
"description": "Additional parameters of the device"
},
"deviceData": {
"$ref": "#/$defs/DeviceData",
"description": "JSON object with content specific to type of transport in the device profile."
}
},
"required": [
"deviceProfileId",
"name"
]
},
"DeviceConfiguration": {
"properties": {
"type": {
"type": "string"
}
},
"required": [
"type"
]
},
"DeviceCredentials": {
"description": "A JSON value representing the device credentials.",
"properties": {
"id": {
"$ref": "#/$defs/DeviceCredentialsId",
"description": "The Id is automatically generated during device creation. Use 'getDeviceCredentialsByDeviceId' to obtain the id based on device id. Use 'updateDeviceCredentials' to update device credentials. ",
"readOnly": true
},
"createdTime": {
"type": "integer",
"format": "int64",
"description": "Timestamp of the device credentials creation, in milliseconds"
},
"deviceId": {
"$ref": "#/$defs/DeviceId",
"description": "JSON object with the device Id."
},
"credentialsType": {
"type": "string",
"description": "Type of the credentials",
"enum": [
"ACCESS_TOKEN",
"X509_CERTIFICATE",
"MQTT_BASIC",
"LWM2M_CREDENTIALS"
]
},
"credentialsId": {
"type": "string",
"description": "Unique Credentials Id per platform instance. Used to lookup credentials from the database. By default, new access token for your device. Depends on the type of the credentials."
},
"credentialsValue": {
"type": "string",
"description": "Value of the credentials. Null in case of ACCESS_TOKEN credentials type. Base64 value in case of X509_CERTIFICATE. Complex object in case of MQTT_BASIC and LWM2M_CREDENTIALS"
}
},
"required": [
"credentialsId",
"deviceId",
"id"
]
},
"DeviceCredentialsId": {
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "string"
}
},
"required": [
"id"
]
},
"DeviceData": {
"properties": {
"configuration": {
"description": "Device configuration for device profile type. DEFAULT is only supported value for now",
"oneOf": [
{
"$ref": "#/$defs/DefaultDeviceConfiguration"
}
]
},
"transportConfiguration": {
"description": "Device transport configuration used to connect the device",
"oneOf": [
{
"$ref": "#/$defs/CoapDeviceTransportConfiguration"
},
{
"$ref": "#/$defs/DefaultDeviceTransportConfiguration"
},
{
"$ref": "#/$defs/Lwm2mDeviceTransportConfiguration"
},
{
"$ref": "#/$defs/MqttDeviceTransportConfiguration"
},
{
"$ref": "#/$defs/SnmpDeviceTransportConfiguration"
}
]
}
}
},
"DeviceExportData": {
"allOf": [
{
"$ref": "#/$defs/EntityExportDataObject"
},
{
"type": "object",
"properties": {
"entity": {
"$ref": "#/$defs/Device"
},
"credentials": {
"$ref": "#/$defs/DeviceCredentials"
}
}
}
]
},
"DeviceId": {
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "ID of the entity, time-based UUID v1"
},
"entityType": {
"type": "string",
"description": "string",
"enum": [
"DEVICE"
]
}
},
"required": [
"entityType",
"id"
]
},
"DeviceProfileId": {
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "ID of the entity, time-based UUID v1"
},
"entityType": {
"type": "string",
"description": "string",
"enum": [
"DEVICE_PROFILE"
]
}
},
"required": [
"entityType",
"id"
]
},
"DeviceTransportConfiguration": {
"properties": {
"type": {
"type": "string"
}
},
"required": [
"type"
]
},
"EntityExportDataObject": {
"properties": {
"entityType": {
"type": "string",
"enum": [
"TENANT",
"CUSTOMER",
"USER",
"DASHBOARD",
"ASSET",
"DEVICE",
"ALARM",
"RULE_CHAIN",
"RULE_NODE",
"ROLE",
"ENTITY_VIEW",
"WIDGETS_BUNDLE",
"WIDGET_TYPE",
"TENANT_PROFILE",
"DEVICE_PROFILE",
"ASSET_PROFILE",
"API_USAGE_STATE",
"TB_RESOURCE",
"OTA_PACKAGE",
"EDGE",
"RPC",
"QUEUE",
"NOTIFICATION_TARGET",
"NOTIFICATION_TEMPLATE",
"NOTIFICATION_REQUEST",
"NOTIFICATION",
"NOTIFICATION_RULE",
"QUEUE_STATS"
]
},
"entity": {},
"relations": {
"type": "array",
"items": {
"$ref": "#/$defs/EntityRelation"
}
},
"attributes": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"$ref": "#/$defs/AttributeExportData"
}
}
}
}
},
"EntityId": {
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "ID of the entity, time-based UUID v1"
},
"entityType": {
"type": "string",
"enum": [
"TENANT",
"CUSTOMER",
"USER",
"DASHBOARD",
"ASSET",
"DEVICE",
"ALARM",
"RULE_CHAIN",
"RULE_NODE",
"ROLE",
"ENTITY_VIEW",
"WIDGETS_BUNDLE",
"WIDGET_TYPE",
"TENANT_PROFILE",
"DEVICE_PROFILE",
"ASSET_PROFILE",
"API_USAGE_STATE",
"TB_RESOURCE",
"OTA_PACKAGE",
"EDGE",
"RPC",
"QUEUE",
"NOTIFICATION_TARGET",
"NOTIFICATION_TEMPLATE",
"NOTIFICATION_REQUEST",
"NOTIFICATION",
"NOTIFICATION_RULE",
"QUEUE_STATS"
]
}
},
"required": [
"entityType",
"id"
]
},
"EntityRelation": {
"description": "A JSON value representing the relation.",
"properties": {
"from": {
"$ref": "#/$defs/EntityId",
"description": "JSON object with [from] Entity Id.",
"readOnly": true
},
"to": {
"$ref": "#/$defs/EntityId",
"description": "JSON object with [to] Entity Id.",
"readOnly": true
},
"type": {
"type": "string",
"description": "String value of relation type."
},
"typeGroup": {
"type": "string",
"description": "Represents the type group of the relation.",
"enum": [
"COMMON",
"DASHBOARD",
"RULE_CHAIN",
"RULE_NODE",
"EDGE",
"EDGE_AUTO_ASSIGN_RULE_CHAIN"
]
},
"additionalInfo": {
"$ref": "#/$defs/JsonNode",
"description": "Additional parameters of the relation"
}
}
},
"JsonNode": {
"description": "A value representing the any type (object or primitive)"
},
"Lwm2mDeviceTransportConfiguration": {
"allOf": [
{
"$ref": "#/$defs/DeviceTransportConfiguration"
},
{
"type": "object",
"properties": {
"powerMode": {
"type": "string",
"enum": [
"PSM",
"DRX",
"E_DRX"
]
},
"psmActivityTimer": {
"type": "integer",
"format": "int64"
},
"edrxCycle": {
"type": "integer",
"format": "int64"
},
"pagingTransmissionWindow": {
"type": "integer",
"format": "int64"
}
}
}
]
},
"MqttDeviceTransportConfiguration": {
"allOf": [
{
"$ref": "#/$defs/DeviceTransportConfiguration"
}
]
},
"NodeConnectionInfo": {
"properties": {
"fromIndex": {
"type": "integer",
"format": "int32",
"description": "Index of rule node in the 'nodes' array of the RuleChainMetaData. Indicates the 'from' part of the connection."
},
"toIndex": {
"type": "integer",
"format": "int32",
"description": "Index of rule node in the 'nodes' array of the RuleChainMetaData. Indicates the 'to' part of the connection."
},
"type": {
"type": "string",
"description": "Type of the relation. Typically indicated the result of processing by the 'from' rule node. For example, 'Success' or 'Failure'"
}
},
"required": [
"fromIndex",
"toIndex",
"type"
]
},
"OtaPackageId": {
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "ID of the entity, time-based UUID v1"
},
"entityType": {
"type": "string",
"description": "string",
"enum": [
"OTA_PACKAGE"
]
}
},
"required": [
"entityType",
"id"
]
},
"RuleChain": {
"description": "A JSON value representing the rule chain.",
"properties": {
"id": {
"$ref": "#/$defs/RuleChainId",
"description": "JSON object with the Rule Chain Id. Specify this field to update the Rule Chain. Referencing non-existing Rule Chain Id will cause error. Omit this field to create new rule chain."
},
"createdTime": {
"type": "integer",
"format": "int64",
"description": "Timestamp of the rule chain creation, in milliseconds",
"readOnly": true
},
"tenantId": {
"$ref": "#/$defs/TenantId",
"description": "JSON object with Tenant Id.",
"readOnly": true
},
"name": {
"type": "string",
"description": "Rule Chain name"
},
"type": {
"type": "string",
"description": "Rule Chain type. 'EDGE' rule chains are processing messages on the edge devices only.",
"enum": [
"CORE",
"EDGE"
]
},
"firstRuleNodeId": {
"$ref": "#/$defs/RuleNodeId",
"description": "JSON object with Rule Chain Id. Pointer to the first rule node that should receive all messages pushed to this rule chain."
},
"root": {
"type": "boolean",
"description": "Indicates root rule chain. The root rule chain process messages from all devices and entities by default. User may configure default rule chain per device profile."
},
"debugMode": {
"type": "boolean",
"description": "Reserved for future usage."
},
"configuration": {
"$ref": "#/$defs/JsonNode"
},
"additionalInfo": {
"$ref": "#/$defs/JsonNode"
}
},
"required": [
"name",
"tenantId"
]
},
"RuleChainConnectionInfo": {
"properties": {
"fromIndex": {
"type": "integer",
"format": "int32",
"description": "Index of rule node in the 'nodes' array of the RuleChainMetaData. Indicates the 'from' part of the connection."
},
"targetRuleChainId": {
"$ref": "#/$defs/RuleChainId",
"description": "JSON object with the Rule Chain Id."
},
"additionalInfo": {
"$ref": "#/$defs/JsonNode",
"description": "JSON object with the additional information about the connection."
},
"type": {
"type": "string",
"description": "Type of the relation. Typically indicated the result of processing by the 'from' rule node. For example, 'Success' or 'Failure'"
}
},
"required": [
"additionalInfo",
"fromIndex",
"targetRuleChainId",
"type"
]
},
"RuleChainExportData": {
"allOf": [
{
"$ref": "#/$defs/EntityExportDataObject"
},
{
"type": "object",
"properties": {
"entity": {
"$ref": "#/$defs/RuleChain"
},
"metaData": {
"$ref": "#/$defs/RuleChainMetaData"
}
}
}
]
},
"RuleChainId": {
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "ID of the entity, time-based UUID v1"
},
"entityType": {
"type": "string",
"description": "string",
"enum": [
"RULE_CHAIN"
]
}
},
"required": [
"entityType",
"id"
]
},
"RuleChainMetaData": {
"description": "A JSON value representing the rule chain metadata.",
"properties": {
"ruleChainId": {
"$ref": "#/$defs/RuleChainId",
"description": "JSON object with Rule Chain Id.",
"readOnly": true
},
"firstNodeIndex": {
"type": "integer",
"format": "int32",
"description": "Index of the first rule node in the 'nodes' list"
},
"nodes": {
"type": "array",
"description": "List of rule node JSON objects",
"items": {
"$ref": "#/$defs/RuleNode"
}
},
"connections": {
"type": "array",
"description": "List of JSON objects that represent connections between rule nodes",
"items": {
"$ref": "#/$defs/NodeConnectionInfo"
}
},
"ruleChainConnections": {
"type": "array",
"description": "List of JSON objects that represent connections between rule nodes and other rule chains.",
"items": {
"$ref": "#/$defs/RuleChainConnectionInfo"
}
}
},
"required": [
"connections",
"firstNodeIndex",
"nodes",
"ruleChainConnections",
"ruleChainId"
]
},
"RuleNode": {
"properties": {
"id": {
"$ref": "#/$defs/RuleNodeId",
"description": "JSON object with the Rule Node Id. Specify this field to update the Rule Node. Referencing non-existing Rule Node Id will cause error. Omit this field to create new rule node."
},
"createdTime": {
"type": "integer",
"format": "int64",
"description": "Timestamp of the rule node creation, in milliseconds",
"readOnly": true
},
"ruleChainId": {
"$ref": "#/$defs/RuleChainId",
"description": "JSON object with the Rule Chain Id. ",
"readOnly": true
},
"type": {
"type": "string",
"description": "Full Java Class Name of the rule node implementation. "
},
"name": {
"type": "string",
"description": "User defined name of the rule node. Used on UI and for logging. "
},
"debugMode": {
"type": "boolean",
"description": "Enable/disable debug. "
},
"singletonMode": {
"type": "boolean",
"description": "Enable/disable singleton mode. "
},
"queueName": {
"type": "string",
"description": "Queue name. "
},
"configurationVersion": {
"type": "integer",
"format": "int32",
"description": "Version of rule node configuration. "
},
"externalId": {
"$ref": "#/$defs/RuleNodeId"
},
"configuration": {
"$ref": "#/$defs/JsonNode"
},
"additionalInfo": {
"$ref": "#/$defs/JsonNode",
"description": "Additional parameters of the rule node. Contains 'layoutX' and 'layoutY' properties for visualization."
}
}
},
"RuleNodeId": {
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "ID of the entity, time-based UUID v1"
},
"entityType": {
"type": "string",
"description": "string",
"enum": [
"RULE_NODE"
]
}
},
"required": [
"entityType",
"id"
]
},
"SnmpDeviceTransportConfiguration": {
"allOf": [
{
"$ref": "#/$defs/DeviceTransportConfiguration"
},
{
"type": "object",
"properties": {
"host": {
"type": "string"
},
"port": {
"type": "integer",
"format": "int32"
},
"protocolVersion": {
"type": "string",
"enum": [
"V1",
"V2C",
"V3"
]
},
"community": {
"type": "string"
},
"username": {
"type": "string"
},
"securityName": {
"type": "string"
},
"contextName": {
"type": "string"
},
"authenticationProtocol": {
"type": "string",
"enum": [
"SHA_1",
"SHA_224",
"SHA_256",
"SHA_384",
"SHA_512",
"MD5"
]
},
"authenticationPassphrase": {
"type": "string"
},
"privacyProtocol": {
"type": "string",
"enum": [
"DES",
"AES_128",
"AES_192",
"AES_256"
]
},
"privacyPassphrase": {
"type": "string"
},
"engineId": {
"type": "string"
}
}
}
]
},
"TenantId": {
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "ID of the entity, time-based UUID v1"
},
"entityType": {
"type": "string",
"description": "string",
"enum": [
"TENANT"
]
}
},
"required": [
"entityType",
"id"
]
},
"WidgetTypeDetails": {
"description": "A JSON value representing the Widget Type Details.",
"properties": {
"fqn": {
"type": "string",
"description": "Unique FQN that is used in dashboards as a reference widget type",
"readOnly": true
},
"name": {
"type": "string",
"description": "Widget name used in search and UI",
"readOnly": true
},
"deprecated": {
"type": "boolean",
"description": "Whether widget type is deprecated."
},
"image": {
"type": "string",
"description": "Relative or external image URL. Replaced with image data URL (Base64) in case of relative URL and 'inlineImages' option enabled."
},
"description": {
"type": "string",
"description": "Description of the widget"
},
"descriptor": {
"$ref": "#/$defs/JsonNode"
},
"id": {
"$ref": "#/$defs/WidgetTypeId",
"description": "JSON object with the Widget Type Id. Specify this field to update the Widget Type. Referencing non-existing Widget Type Id will cause error. Omit this field to create new Widget Type."
},
"createdTime": {
"type": "integer",
"format": "int64",
"description": "Timestamp of the Widget Type creation, in milliseconds",
"readOnly": true
},
"tenantId": {
"$ref": "#/$defs/TenantId",
"description": "JSON object with Tenant Id.",
"readOnly": true
},
"tags": {
"type": "array",
"description": "Tags of the widget type",
"items": {
"type": "string"
}
}
}
},
"WidgetTypeExportData": {
"allOf": [
{
"$ref": "#/$defs/EntityExportDataObject"
},
{
"type": "object",
"properties": {
"entity": {
"$ref": "#/$defs/WidgetTypeDetails"
}
}
}
]
},
"WidgetTypeId": {
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "ID of the entity, time-based UUID v1"
},
"entityType": {
"type": "string",
"description": "string",
"enum": [
"WIDGET_TYPE"
]
}
},
"required": [
"entityType",
"id"
]
},
"WidgetsBundle": {
"description": "A JSON value representing the Widget Bundle.",
"properties": {
"id": {
"$ref": "#/$defs/WidgetsBundleId",
"description": "JSON object with the Widget Bundle Id. Specify this field to update the Widget Bundle. Referencing non-existing Widget Bundle Id will cause error. Omit this field to create new Widget Bundle."
},
"createdTime": {
"type": "integer",
"format": "int64",
"description": "Timestamp of the Widget Bundle creation, in milliseconds",
"readOnly": true
},
"tenantId": {
"$ref": "#/$defs/TenantId",
"description": "JSON object with Tenant Id.",
"readOnly": true
},
"alias": {
"type": "string",
"description": "Unique alias that is used in widget types as a reference widget bundle",
"readOnly": true
},
"title": {
"type": "string",
"description": "Title used in search and UI",
"readOnly": true
},
"image": {
"type": "string",
"description": "Relative or external image URL. Replaced with image data URL (Base64) in case of relative URL and 'inlineImages' option enabled.",
"readOnly": true
},
"description": {
"type": "string",
"description": "Description",
"readOnly": true
},
"order": {
"type": "integer",
"format": "int32",
"description": "Order",
"readOnly": true
},
"name": {
"type": "string",
"description": "Same as title of the Widget Bundle. Read-only field. Update the 'title' to change the 'name' of the Widget Bundle.",
"readOnly": true
}
}
},
"WidgetsBundleExportData": {
"allOf": [
{
"$ref": "#/$defs/EntityExportDataObject"
},
{
"type": "object",
"properties": {
"entity": {
"$ref": "#/$defs/WidgetsBundle"
},
"widgets": {
"type": "array",
"items": {
"type": "object"
}
},
"fqns": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
]
},
"WidgetsBundleId": {
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "ID of the entity, time-based UUID v1"
},
"entityType": {
"type": "string",
"description": "string",
"enum": [
"WIDGETS_BUNDLE"
]
}
},
"required": [
"entityType",
"id"
]
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/viridi-parente-entity-data-diff"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.