{
  "$defs": {
    "ComponentTypeId": {
      "$ref": "#/$defs/NamespacedType"
    },
    "ComponentTypeIds": {
      "items": {
        "$ref": "#/$defs/ComponentTypeId"
      },
      "type": "array"
    },
    "Extension": {
      "$ref": "#/$defs/NamespacedType",
      "description": "Extension on a type. The extension allows to extend information",
      "properties": {
        "description": {
          "default": "",
          "description": "Textual description of the extension.",
          "type": "string"
        },
        "extension": {
          "description": "The extension as JSON representation."
        }
      },
      "required": [
        "extension"
      ],
      "type": "object"
    },
    "Extensions": {
      "description": "Extensions",
      "items": {
        "$ref": "#/$defs/Extension"
      },
      "type": "array"
    },
    "NamespacedType": {
      "description": "Defines the namespace and the name of a type.",
      "properties": {
        "namespace": {
          "description": "The namespace of the type.",
          "type": "string"
        },
        "type_name": {
          "description": "The name of the type.",
          "type": "string"
        }
      },
      "required": [
        "namespace",
        "type_name"
      ],
      "type": "object"
    },
    "PropertyInstances": {
      "description": "Properties",
      "type": "object"
    }
  },
  "$id": "https://schema.reactive-graph.io/schema/json/entity-instance.schema.json",
  "$ref": "#/$defs/NamespacedType",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "description": "Entity instances represents an typed object which contains properties.\n\nThe entity type defines the properties (name, data type and socket type).\n\nIn contrast to the entity type the entity instance stores values in its\nproperties.",
  "properties": {
    "$id": {
      "default": "https://schema.reactive-graph.io/schema/json/entity-instance.schema.json",
      "description": "The schema identifier",
      "type": "string"
    },
    "components": {
      "$ref": "#/$defs/ComponentTypeIds",
      "default": [],
      "description": "The components of the entity instance."
    },
    "description": {
      "default": "",
      "description": "The description of the entity instance.",
      "type": "string"
    },
    "extensions": {
      "$ref": "#/$defs/Extensions",
      "default": [],
      "description": "Entity instance specific extensions."
    },
    "id": {
      "description": "The unique identifier of the entity instance.",
      "format": "uuid",
      "type": "string"
    },
    "name": {
      "default": "",
      "description": "The name of the entity instance.",
      "type": "string"
    },
    "properties": {
      "$ref": "#/$defs/PropertyInstances",
      "default": {},
      "description": "The properties of the entity instance.\n\nEach property is represented by its name (String) and it's value. The value is\na representation of a JSON. Therefore, the value can be boolean, number, string,\narray or an object. For more information about the data types please look at\n<https://docs.serde.rs/serde_json/value/enum.Value.html>"
    }
  },
  "required": [
    "id"
  ],
  "title": "EntityInstance",
  "type": "object",
  "unevaluatedProperties": false
}