71 lines
2.3 KiB
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
|
|
}
|