{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "gamecult.eve.unity_uitoolkit_projection.v1", "title": "Eve Unity UI Toolkit Projection", "type": "object", "required": [ "type", "schema", "runtimeId", "providerId", "surfaceId", "projectionKind", "commandBoundary", "receiptSchema", "ownership", "root" ], "properties": { "type": { "const": "unity-uitoolkit-projection" }, "schema": { "const": "gamecult.eve.unity_uitoolkit_projection.v1" }, "runtimeId": { "const": "unity-uitoolkit" }, "providerId": { "type": "string", "minLength": 1 }, "surfaceId": { "type": "string", "minLength": 1 }, "projectionKind": { "type": "string", "minLength": 1 }, "commandBoundary": { "type": "string", "minLength": 1 }, "receiptSchema": { "type": "string", "minLength": 1 }, "ownership": { "type": "string", "minLength": 1 }, "root": { "$ref": "#/$defs/visualElementNode" } }, "$defs": { "embeddedDocument": { "type": "object", "required": [ "slotId", "documentId" ], "properties": { "slotId": { "type": "string", "minLength": 1 }, "documentId": { "type": "string", "minLength": 1 }, "schemaId": { "type": "string" }, "presentationKind": { "type": "string" } }, "additionalProperties": true }, "pluginProjection": { "type": "object", "required": [ "pluginId", "projectionKind", "abiSchema", "commandBoundary", "capabilities", "semanticOwner", "availability" ], "properties": { "pluginId": { "type": "string", "minLength": 1 }, "projectionKind": { "type": "string", "minLength": 1 }, "abiSchema": { "type": "string", "minLength": 1 }, "commandBoundary": { "type": "string", "minLength": 1 }, "capabilities": { "type": "array", "minItems": 1, "items": { "type": "string" } }, "command": { "type": "string" }, "documentId": { "type": "string" }, "semanticOwner": { "type": "string", "minLength": 1 }, "availability": { "type": "string", "enum": ["required", "optional", "optional-nested"] } }, "additionalProperties": true }, "visualElementNode": { "type": "object", "required": [ "id", "componentKind", "visualElementKind", "classNames", "stateBindingCount", "embeddedDocumentCount", "children" ], "properties": { "id": { "type": "string", "minLength": 1 }, "componentKind": { "type": "string" }, "visualElementKind": { "type": "string", "minLength": 1 }, "classNames": { "type": "array", "items": { "type": "string" } }, "props": { "type": "object" }, "layout": { "type": "object" }, "style": { "type": "object" }, "stateBindingCount": { "type": "number" }, "embeddedDocumentCount": { "type": "number" }, "embeddedDocuments": { "type": "array", "items": { "$ref": "#/$defs/embeddedDocument" } }, "pluginProjection": { "$ref": "#/$defs/pluginProjection" }, "children": { "type": "array", "items": { "$ref": "#/$defs/visualElementNode" } } }, "additionalProperties": true } }, "additionalProperties": true }