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

89 lines
2.9 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:hololake:release-broadcast:v1",
"title": "HoloLake signed opt-in release broadcast",
"type": "object",
"additionalProperties": false,
"required": [
"schema",
"releaseId",
"version",
"pub_date",
"notes",
"platforms",
"hololake"
],
"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.-]+)?$"
},
"pub_date": { "type": "string", "format": "date-time" },
"notes": { "type": "string", "minLength": 1 },
"platforms": {
"type": "object",
"minProperties": 1,
"additionalProperties": {
"type": "object",
"additionalProperties": false,
"required": ["url", "signature", "size", "sha256"],
"properties": {
"url": { "type": "string", "format": "uri", "pattern": "^https://" },
"size": { "type": "integer", "minimum": 1 },
"sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
"signature": { "type": "string", "minLength": 1 },
"platformCodeSignatureReceipt": { "type": "string", "minLength": 1 },
"notarizationReceipt": { "type": "string", "minLength": 1 }
}
}
},
"hololake": {
"type": "object",
"additionalProperties": false,
"required": ["features", "compatibility", "restart", "rollback"],
"properties": {
"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" }
}
},
"rollback": {
"type": "object",
"additionalProperties": false,
"required": ["supported", "healthReceiptRequired"],
"properties": {
"supported": { "const": true },
"healthReceiptRequired": { "const": true },
"previousVersion": { "type": "string" }
}
}
}
}
}
}