Files
govoplan/docs/capability-fit.schema.json
Albrecht Degering ba88c574b9
Some checks failed
Dependency Audit / dependency-audit (push) Has been cancelled
Security Audit / security-audit (push) Has been cancelled
chore: move repositories to GovOPlaN organization
2026-07-27 15:46:51 +02:00

299 lines
8.4 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://git.add-ideas.de/GovOPlaN/govoplan/src/branch/main/docs/capability-fit.schema.json",
"title": "GovOPlaN capability and infrastructure fit assessment",
"type": "object",
"additionalProperties": false,
"required": [
"schema_version",
"assessment_id",
"assessed_at",
"scope",
"release",
"composition",
"deployment_profile",
"questionnaire",
"capabilities",
"infrastructure",
"data_flows",
"assumptions",
"open_questions",
"risks",
"recommendations",
"proof_checks"
],
"properties": {
"$schema": {
"type": "string",
"format": "uri-reference"
},
"schema_version": {
"const": "0.1.0"
},
"assessment_id": {
"$ref": "#/$defs/non_empty_string"
},
"assessed_at": {
"type": "string",
"format": "date"
},
"scope": {
"type": "object",
"additionalProperties": false,
"required": ["title", "reference_journeys", "postponed"],
"properties": {
"title": { "$ref": "#/$defs/non_empty_string" },
"reference_journeys": {
"type": "array",
"minItems": 1,
"items": { "$ref": "#/$defs/non_empty_string" }
},
"postponed": {
"type": "array",
"items": { "$ref": "#/$defs/non_empty_string" }
}
}
},
"release": {
"type": "object",
"additionalProperties": false,
"required": ["kind", "ref", "meta_commit", "reproducible", "configuration_packages"],
"properties": {
"kind": {
"enum": ["tagged_release", "release_candidate", "workspace_snapshot"]
},
"ref": { "$ref": "#/$defs/non_empty_string" },
"meta_commit": { "$ref": "#/$defs/non_empty_string" },
"reproducible": { "type": "boolean" },
"configuration_packages": {
"type": "array",
"items": { "$ref": "#/$defs/non_empty_string" }
},
"notes": {
"type": "array",
"items": { "$ref": "#/$defs/non_empty_string" }
}
}
},
"composition": {
"type": "array",
"minItems": 1,
"items": { "$ref": "#/$defs/module" }
},
"deployment_profile": {
"type": "object",
"additionalProperties": false,
"required": ["id", "status", "description", "evidence"],
"properties": {
"id": { "$ref": "#/$defs/non_empty_string" },
"status": { "$ref": "#/$defs/status" },
"description": { "$ref": "#/$defs/non_empty_string" },
"evidence": {
"type": "array",
"minItems": 1,
"items": { "$ref": "#/$defs/evidence" }
}
}
},
"questionnaire": {
"type": "object",
"additionalProperties": false,
"required": [
"scope_outcomes",
"data_policy",
"identity_integrations",
"workload_growth",
"availability_operations",
"procurement_decisions"
],
"properties": {
"scope_outcomes": { "$ref": "#/$defs/answers" },
"data_policy": { "$ref": "#/$defs/answers" },
"identity_integrations": { "$ref": "#/$defs/answers" },
"workload_growth": { "$ref": "#/$defs/answers" },
"availability_operations": { "$ref": "#/$defs/answers" },
"procurement_decisions": { "$ref": "#/$defs/answers" }
}
},
"capabilities": {
"type": "array",
"minItems": 1,
"items": { "$ref": "#/$defs/assessed_item" }
},
"infrastructure": {
"type": "array",
"minItems": 1,
"items": { "$ref": "#/$defs/assessed_item" }
},
"data_flows": {
"type": "array",
"minItems": 1,
"items": { "$ref": "#/$defs/data_flow" }
},
"assumptions": { "$ref": "#/$defs/string_list" },
"open_questions": { "$ref": "#/$defs/string_list" },
"risks": {
"type": "array",
"items": { "$ref": "#/$defs/risk" }
},
"recommendations": { "$ref": "#/$defs/string_list" },
"proof_checks": { "$ref": "#/$defs/string_list" }
},
"$defs": {
"non_empty_string": {
"type": "string",
"minLength": 1
},
"string_list": {
"type": "array",
"items": { "$ref": "#/$defs/non_empty_string" }
},
"status": {
"enum": [
"verified",
"available_unconfigured",
"partial",
"scaffold",
"external_system",
"planned",
"not_fit",
"not_assessed"
]
},
"evidence": {
"type": "object",
"additionalProperties": false,
"required": ["kind", "scope", "locator"],
"properties": {
"kind": {
"enum": [
"test",
"route",
"contract",
"drill",
"documentation",
"configuration",
"issue",
"absence",
"observation"
]
},
"scope": {
"enum": [
"committed_source",
"current_workspace",
"documented_model",
"target_environment"
]
},
"locator": { "$ref": "#/$defs/non_empty_string" },
"note": { "type": "string" }
}
},
"module": {
"type": "object",
"additionalProperties": false,
"required": [
"module_id",
"repository",
"commit",
"manifest_version",
"enabled",
"dirty",
"role"
],
"properties": {
"module_id": { "$ref": "#/$defs/non_empty_string" },
"repository": { "$ref": "#/$defs/non_empty_string" },
"commit": {
"type": "string",
"pattern": "^[0-9a-f]{7,40}$"
},
"manifest_version": { "$ref": "#/$defs/non_empty_string" },
"enabled": { "type": "boolean" },
"dirty": { "type": "boolean" },
"role": { "$ref": "#/$defs/non_empty_string" }
}
},
"answers": {
"type": "array",
"items": { "$ref": "#/$defs/answer" }
},
"answer": {
"type": "object",
"additionalProperties": false,
"required": ["id", "question", "state", "answer", "evidence"],
"properties": {
"id": { "$ref": "#/$defs/non_empty_string" },
"question": { "$ref": "#/$defs/non_empty_string" },
"state": {
"enum": ["answered", "assumed", "not_applicable", "not_assessed"]
},
"answer": {
"type": ["string", "array", "null"],
"items": { "type": "string" }
},
"evidence": {
"type": "array",
"items": { "$ref": "#/$defs/evidence" }
}
}
},
"assessed_item": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"requirement",
"status",
"evidence",
"conditions",
"gaps",
"risks",
"recommendation",
"proof_check"
],
"properties": {
"id": { "$ref": "#/$defs/non_empty_string" },
"requirement": { "$ref": "#/$defs/non_empty_string" },
"status": { "$ref": "#/$defs/status" },
"evidence": {
"type": "array",
"items": { "$ref": "#/$defs/evidence" }
},
"conditions": { "$ref": "#/$defs/string_list" },
"gaps": { "$ref": "#/$defs/string_list" },
"risks": { "$ref": "#/$defs/string_list" },
"recommendation": { "type": "string" },
"proof_check": { "type": "string" }
}
},
"data_flow": {
"type": "object",
"additionalProperties": false,
"required": ["id", "from", "to", "data", "trust_boundary", "controls"],
"properties": {
"id": { "$ref": "#/$defs/non_empty_string" },
"from": { "$ref": "#/$defs/non_empty_string" },
"to": { "$ref": "#/$defs/non_empty_string" },
"data": { "$ref": "#/$defs/string_list" },
"trust_boundary": { "$ref": "#/$defs/non_empty_string" },
"controls": { "$ref": "#/$defs/string_list" }
}
},
"risk": {
"type": "object",
"additionalProperties": false,
"required": ["id", "statement", "impact", "treatment", "owner", "residual_risk"],
"properties": {
"id": { "$ref": "#/$defs/non_empty_string" },
"statement": { "$ref": "#/$defs/non_empty_string" },
"impact": { "$ref": "#/$defs/non_empty_string" },
"treatment": { "$ref": "#/$defs/non_empty_string" },
"owner": { "type": ["string", "null"] },
"residual_risk": { "$ref": "#/$defs/non_empty_string" }
}
}
}
}