Files
toolbox-portal/release/toolbox-release-lock.schema.json

71 lines
2.3 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://git.add-ideas.de/zemion/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
}