{ "$schema": "https://json-schema.org/draft/2020-12/schema", "anyOf": [ { "type": "object", "properties": { "format": { "$ref": "#/$defs/__schema0" }, "formatVersion": { "$ref": "#/$defs/__schema1" }, "id": { "$ref": "#/$defs/__schema2" }, "version": { "$ref": "#/$defs/__schema3" }, "engineApiVersion": { "$ref": "#/$defs/__schema4" }, "metadata": { "$ref": "#/$defs/__schema5" }, "dependencies": { "$ref": "#/$defs/__schema8" }, "kind": { "type": "string", "const": "game" }, "classification": { "type": "object", "properties": { "category": { "$ref": "#/$defs/__schema2" }, "tags": { "type": "array", "items": { "$ref": "#/$defs/__schema2" } }, "competition": { "type": "string", "enum": ["individual", "teams", "cooperative", "solo", "open"] } }, "required": ["category", "tags", "competition"], "additionalProperties": false }, "players": { "type": "object", "properties": { "min": { "type": "integer", "minimum": 1, "maximum": 64 }, "max": { "type": "integer", "minimum": 1, "maximum": 64 } }, "required": ["min", "max"], "additionalProperties": false }, "capabilities": { "type": "object", "properties": { "hiddenInformation": { "type": "boolean" }, "simultaneousActions": { "type": "boolean" }, "deadlines": { "type": "boolean" } }, "required": ["hiddenInformation", "simultaneousActions", "deadlines"], "additionalProperties": false }, "components": { "type": "object", "propertyNames": { "$ref": "#/$defs/__schema2" }, "additionalProperties": { "type": "object", "properties": { "kind": { "type": "string", "enum": ["deck", "dice", "wheel", "board", "pieces", "custom"] }, "definition": { "$ref": "#/$defs/__schema9" }, "copies": { "type": "integer", "minimum": 1, "maximum": 100 } }, "required": ["kind", "definition", "copies"], "additionalProperties": false } }, "rules": { "type": "object", "properties": { "entry": { "$ref": "#/$defs/__schema7" }, "version": { "$ref": "#/$defs/__schema3" }, "stateSchemaVersion": { "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 }, "viewSchemaVersion": { "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 }, "eventSchemaVersion": { "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 }, "schemas": { "type": "object", "properties": { "config": { "$ref": "#/$defs/__schema7" }, "data": { "$ref": "#/$defs/__schema7" }, "view": { "$ref": "#/$defs/__schema7" }, "context": { "$ref": "#/$defs/__schema7" }, "event": { "$ref": "#/$defs/__schema7" }, "visibleEvent": { "$ref": "#/$defs/__schema7" } }, "required": [ "config", "data", "view", "context", "event", "visibleEvent" ], "additionalProperties": false } }, "required": [ "entry", "version", "stateSchemaVersion", "viewSchemaVersion", "eventSchemaVersion", "schemas" ], "additionalProperties": false }, "presentation": { "type": "object", "properties": { "entry": { "$ref": "#/$defs/__schema7" }, "apiVersion": { "type": "number", "const": 1 }, "bundleVersion": { "$ref": "#/$defs/__schema3" }, "resources": { "type": "object", "propertyNames": { "$ref": "#/$defs/__schema2" }, "additionalProperties": { "type": "object", "properties": { "kind": { "type": "string", "enum": ["image", "atlas", "audio", "font", "graphic"] }, "path": { "$ref": "#/$defs/__schema7" }, "load": { "type": "string", "enum": ["catalog", "board", "phase", "lazy"] }, "phase": { "$ref": "#/$defs/__schema2" }, "required": { "type": "boolean" }, "altKey": { "$ref": "#/$defs/__schema2" }, "width": { "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 }, "height": { "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 }, "regions": { "type": "object", "propertyNames": { "$ref": "#/$defs/__schema2" }, "additionalProperties": { "type": "object", "properties": { "x": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "y": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "width": { "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 }, "height": { "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 } }, "required": ["x", "y", "width", "height"], "additionalProperties": false } }, "fallback": { "oneOf": [ { "type": "object", "properties": { "kind": { "type": "string", "const": "text" }, "key": { "$ref": "#/$defs/__schema2" } }, "required": ["kind", "key"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "type": "string", "const": "resource" }, "resourceId": { "$ref": "#/$defs/__schema2" } }, "required": ["kind", "resourceId"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "type": "string", "const": "omit" } }, "required": ["kind"], "additionalProperties": false } ] } }, "required": ["kind", "path", "load", "required", "fallback"], "additionalProperties": false } }, "bindings": { "type": "object", "propertyNames": { "$ref": "#/$defs/__schema2" }, "additionalProperties": { "$ref": "#/$defs/__schema9" } }, "catalog": { "type": "object", "properties": { "cover": { "$ref": "#/$defs/__schema2" }, "thumbnail": { "$ref": "#/$defs/__schema2" }, "icon": { "$ref": "#/$defs/__schema2" } }, "required": ["cover", "thumbnail", "icon"], "additionalProperties": false } }, "required": [ "entry", "apiVersion", "bundleVersion", "resources", "bindings", "catalog" ], "additionalProperties": false } }, "required": [ "format", "formatVersion", "id", "version", "engineApiVersion", "metadata", "dependencies", "kind", "classification", "players", "capabilities", "components", "rules", "presentation" ], "additionalProperties": false }, { "type": "object", "properties": { "format": { "$ref": "#/$defs/__schema0" }, "formatVersion": { "$ref": "#/$defs/__schema1" }, "id": { "$ref": "#/$defs/__schema2" }, "version": { "$ref": "#/$defs/__schema3" }, "engineApiVersion": { "$ref": "#/$defs/__schema4" }, "metadata": { "$ref": "#/$defs/__schema5" }, "dependencies": { "$ref": "#/$defs/__schema8" }, "kind": { "type": "string", "enum": ["components", "assets"] }, "exports": { "type": "object", "propertyNames": { "$ref": "#/$defs/__schema2" }, "additionalProperties": { "$ref": "#/$defs/__schema7" } } }, "required": [ "format", "formatVersion", "id", "version", "engineApiVersion", "metadata", "dependencies", "kind", "exports" ], "additionalProperties": false } ], "$defs": { "__schema0": { "type": "string", "const": "juegoland.package" }, "__schema1": { "type": "number", "const": 1 }, "__schema2": { "type": "string", "pattern": "^[a-z][a-zA-Z0-9.-]{0,79}$" }, "__schema3": { "type": "string", "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$" }, "__schema4": { "type": "number", "const": 1 }, "__schema5": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 120 }, "description": { "type": "string", "minLength": 1, "maxLength": 2000 }, "authors": { "minItems": 1, "type": "array", "items": { "$ref": "#/$defs/__schema6" } }, "license": { "type": "string", "minLength": 1 }, "defaultLocale": { "type": "string", "pattern": "^[a-z]{2}(?:-[A-Z]{2})?$" }, "locales": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "$ref": "#/$defs/__schema7" } } }, "required": [ "name", "description", "authors", "license", "defaultLocale", "locales" ], "additionalProperties": false }, "__schema6": { "type": "string", "minLength": 1 }, "__schema7": { "type": "string", "pattern": "^[a-zA-Z0-9_-](?:[a-zA-Z0-9_.-]*[a-zA-Z0-9_-])?(?:\\/[a-zA-Z0-9_-](?:[a-zA-Z0-9_.-]*[a-zA-Z0-9_-])?)*$" }, "__schema8": { "type": "array", "items": { "type": "object", "properties": { "id": { "$ref": "#/$defs/__schema2" }, "version": { "$ref": "#/$defs/__schema3" }, "kind": { "type": "string", "enum": ["components", "assets"] } }, "required": ["id", "version", "kind"], "additionalProperties": false } }, "__schema9": { "oneOf": [ { "type": "object", "properties": { "source": { "type": "string", "const": "local" }, "path": { "$ref": "#/$defs/__schema7" } }, "required": ["source", "path"], "additionalProperties": false }, { "type": "object", "properties": { "source": { "type": "string", "const": "dependency" }, "packageId": { "$ref": "#/$defs/__schema2" }, "export": { "$ref": "#/$defs/__schema2" } }, "required": ["source", "packageId", "export"], "additionalProperties": false } ] } }, "$id": "urn:juegoland:package:1" }