Viridi · Schema

EntityDataDiff

CompanyEnergyEnergy StorageBatteryIoTIndustrial IoTEnergy ManagementManufacturingTelematicsMicrogrid

Properties

Name Type Description
currentVersion object
otherVersion object
View JSON Schema on GitHub

JSON Schema

viridi-parente-entity-data-diff-schema.json Raw ↑
{
  "$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.
All 92 tools →

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.