133 lines
3.7 KiB
JSON
133 lines
3.7 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"$id": "https://bmad-spec/schemas/system_architecture.schema.json",
|
|
"title": "System Architecture",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"context",
|
|
"decisions",
|
|
"components",
|
|
"data_model",
|
|
"integration",
|
|
"deployment",
|
|
"security",
|
|
"performance"
|
|
],
|
|
"properties": {
|
|
"context": { "type": "string" },
|
|
"decisions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["id", "decision", "rationale", "status"],
|
|
"properties": {
|
|
"id": { "type": "string", "pattern": "^ADR-[0-9]{3}$" },
|
|
"decision": { "type": "string" },
|
|
"rationale": { "type": "string" },
|
|
"status": { "type": "string", "enum": ["accepted", "proposed", "rejected"] }
|
|
}
|
|
}
|
|
},
|
|
"components": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["name", "responsibilities", "technology"],
|
|
"properties": {
|
|
"name": { "type": "string" },
|
|
"responsibilities": { "type": "array", "items": { "type": "string" } },
|
|
"technology": { "type": "string" }
|
|
}
|
|
}
|
|
},
|
|
"data_model": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["entities"],
|
|
"properties": {
|
|
"entities": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["name", "attributes"],
|
|
"properties": {
|
|
"name": { "type": "string" },
|
|
"attributes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["name", "type"],
|
|
"properties": {
|
|
"name": { "type": "string" },
|
|
"type": { "type": "string" },
|
|
"description": { "type": "string" }
|
|
}
|
|
}
|
|
},
|
|
"relationships": { "type": "array", "items": { "type": "string" } }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"integration": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["with", "protocol", "direction"],
|
|
"properties": {
|
|
"with": { "type": "string" },
|
|
"protocol": { "type": "string" },
|
|
"direction": { "type": "string", "enum": ["inbound", "outbound", "bidirectional"] },
|
|
"notes": { "type": "string" }
|
|
}
|
|
}
|
|
},
|
|
"deployment": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["strategy"],
|
|
"properties": {
|
|
"strategy": { "type": "string" },
|
|
"diagram": { "type": "string" }
|
|
}
|
|
},
|
|
"security": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["threats", "controls"],
|
|
"properties": {
|
|
"threats": { "type": "array", "items": { "type": "string" } },
|
|
"controls": { "type": "array", "items": { "type": "string" } }
|
|
}
|
|
},
|
|
"performance": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["targets"],
|
|
"properties": {
|
|
"targets": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["metric", "target"],
|
|
"properties": {
|
|
"metric": { "type": "string" },
|
|
"target": { "type": "string" }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|