{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://netkingdom.local/schemas/security-case_v0.1.schema.json", "title": "NetKingdom SecurityCase v0.1", "description": "Structure of a security case file (canon/standards/security-case-types_v0.1.md section 4). Parameter values are checked against the referenced type by tools/security-case-types/security_case_validator.py.", "type": "object", "additionalProperties": false, "required": ["apiVersion", "kind", "spec"], "properties": { "apiVersion": {"const": "netkingdom.io/security-case/v0.1"}, "kind": {"const": "SecurityCase"}, "spec": { "type": "object", "additionalProperties": false, "required": ["id", "type", "status", "owner", "parameters"], "properties": { "id": {"type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$"}, "type": {"type": "string", "pattern": "^[a-z0-9][a-z0-9-]*@\\d+\\.\\d+$"}, "status": {"enum": ["proposed", "accepted", "materialized", "live", "retired"]}, "owner": { "type": "object", "additionalProperties": false, "required": ["repo", "person"], "properties": { "repo": {"type": "string", "minLength": 1}, "person": {"type": "string", "minLength": 1} } }, "parameters": {"type": "object"}, "acceptance": { "type": "object", "additionalProperties": false, "required": ["at", "record", "by"], "properties": { "at": {"type": "string", "minLength": 1}, "record": {"type": "string", "minLength": 1}, "by": { "type": "array", "minItems": 1, "items": { "type": "object", "additionalProperties": false, "required": ["role", "name"], "properties": { "role": {"enum": ["owner", "founder"]}, "name": {"type": "string", "minLength": 1} } } } } }, "receipts": {"type": "array", "items": {"type": "object"}} } } } }