{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://git.add-ideas.de/lotobo/toolbox-portal/raw/branch/main/release/toolbox-release-lock.schema.json", "title": "add·ideas Toolbox release lock v1", "description": "Pins the exact portal and checksummed application archives used to assemble one static toolbox release.", "type": "object", "required": [ "schemaVersion", "releaseVersion", "portalVersion", "catalogue", "apps" ], "properties": { "$schema": { "type": "string", "format": "uri-reference" }, "schemaVersion": { "const": 1 }, "releaseVersion": { "$ref": "#/$defs/version" }, "portalVersion": { "$ref": "#/$defs/version" }, "catalogue": { "type": "object", "required": ["id", "name", "home", "theme"], "properties": { "id": { "$ref": "#/$defs/id" }, "name": { "type": "string", "minLength": 1 }, "home": { "type": "string", "minLength": 1 }, "theme": { "type": "object", "required": ["mode", "brand"], "properties": { "mode": { "enum": ["light", "dark", "system"] }, "brand": { "type": "string", "minLength": 1 } }, "additionalProperties": false } }, "additionalProperties": false }, "apps": { "type": "array", "minItems": 1, "items": { "type": "object", "required": ["id", "version", "artifact", "sha256", "target"], "properties": { "id": { "$ref": "#/$defs/id" }, "version": { "$ref": "#/$defs/version" }, "artifact": { "type": "string", "minLength": 1, "description": "A path relative to this lock, a file: URL, or an HTTPS URL. Latest aliases are rejected at runtime." }, "sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" }, "target": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$" } }, "additionalProperties": false } } }, "$defs": { "id": { "type": "string", "pattern": "^[a-z0-9]+(?:[.-][a-z0-9]+)+$" }, "version": { "type": "string", "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$" } }, "additionalProperties": false }