diff --git a/schemas/plans.json b/schemas/plans.json new file mode 100644 index 0000000..b212ea2 --- /dev/null +++ b/schemas/plans.json @@ -0,0 +1,53 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://example.local/schemas/plans.json", + "title": "Plan", + "type": "object", + "additionalProperties": false, + "required": [ + "id", "template_id", "title", "discipline", "age_group", "target_group", + "total_minutes", "sections", "goals", "capability_summary", "created_by", + "created_at", "source", "fingerprint" + ], + "properties": { + "id": { "type": "string" }, + "template_id": { "type": ["string", "null"] }, + "title": { "type": "string", "minLength": 1 }, + "discipline": { "type": "string" }, + "age_group": { "type": "string" }, + "target_group": { "type": "string" }, + "total_minutes": { "type": "integer", "minimum": 0 }, + "sections": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": ["name", "items", "minutes"], + "properties": { + "name": { "type": "string" }, + "minutes": { "type": "integer", "minimum": 0 }, + "items": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": ["exercise_external_id", "duration", "why"], + "properties": { + "exercise_external_id": { "type": "string" }, + "duration": { "type": "integer", "minimum": 0 }, + "why": { "type": "string" } + } + } + } + } + } + }, + "goals": { "type": "array", "items": { "type": "string" } }, + "capability_summary": { "type": "object", "additionalProperties": { "type": "integer" } }, + "novelty_against_last_n": { "type": ["number", "null"] }, + "fingerprint": { "type": "string" }, + "created_by": { "type": "string" }, + "created_at": { "type": "string", "format": "date-time" }, + "source": { "type": "string" } + } +} \ No newline at end of file