hololake-system-architecture/product-source/hololake-native-desktop/contracts/release-broadcast.schema.json

83 lines
2.6 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://releases.hololake.invalid/contracts/release-broadcast.schema.json",
"title": "HoloLake signed opt-in release broadcast",
"type": "object",
"additionalProperties": false,
"required": [
"schema",
"releaseId",
"version",
"publishedAt",
"features",
"compatibility",
"restart",
"platforms",
"rollback"
],
"properties": {
"schema": { "const": "hololake.release-broadcast/v1" },
"releaseId": { "type": "string", "minLength": 1 },
"version": {
"type": "string",
"pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$"
},
"publishedAt": { "type": "string", "format": "date-time" },
"features": {
"type": "array",
"minItems": 1,
"items": { "type": "string", "minLength": 1 }
},
"fixes": {
"type": "array",
"items": { "type": "string", "minLength": 1 }
},
"compatibility": {
"type": "object",
"additionalProperties": false,
"required": ["minimumVersion", "dataMigrationRequired"],
"properties": {
"minimumVersion": { "type": "string", "minLength": 1 },
"dataMigrationRequired": { "type": "boolean" },
"notes": { "type": "string" }
}
},
"restart": {
"type": "object",
"additionalProperties": false,
"required": ["required", "automaticAllowed"],
"properties": {
"required": { "const": true },
"automaticAllowed": { "const": false },
"message": { "type": "string" }
}
},
"platforms": {
"type": "object",
"minProperties": 1,
"additionalProperties": {
"type": "object",
"additionalProperties": false,
"required": ["url", "size", "sha256", "tauriSignature"],
"properties": {
"url": { "type": "string", "pattern": "^https://" },
"size": { "type": "integer", "minimum": 1 },
"sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
"tauriSignature": { "type": "string", "minLength": 1 },
"platformCodeSignatureReceipt": { "type": "string", "minLength": 1 },
"notarizationReceipt": { "type": "string", "minLength": 1 }
}
}
},
"rollback": {
"type": "object",
"additionalProperties": false,
"required": ["supported", "healthReceiptRequired"],
"properties": {
"supported": { "const": true },
"healthReceiptRequired": { "const": true },
"previousVersion": { "type": "string" }
}
}
}
}