{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://schemas.fablepool.org/v1/lesson-content.json", "title": "FablePool Lesson Content", "description": "The structured payload stored in Lesson.content (inside a CourseVersion). A lesson is an ordered sequence of segments interleaving prose, embedded problems and reflection checkpoints.", "type": "object", "required": ["schema", "segments"], "additionalProperties": false, "properties": { "schema": { "const": "fablepool.lesson/1" }, "objectives": { "type": "array", "maxItems": 20, "items": { "type": "string", "minLength": 1, "maxLength": 300 }, "description": "Learning objectives shown at the top of the lesson and used by recommendations." }, "estimated_minutes": { "type": "integer", "minimum": 1, "maximum": 600 }, "segments": { "type": "array", "minItems": 1, "maxItems": 200, "items": { "$ref": "#/$defs/segment" } } }, "$defs": { "segment": { "oneOf": [ { "$ref": "#/$defs/contentSegment" }, { "$ref": "#/$defs/problemSegment" }, { "$ref": "#/$defs/checkpointSegment" } ] }, "contentSegment": { "type": "object", "required": ["kind", "document"], "additionalProperties": false, "properties": { "kind": { "const": "content" }, "document": { "$ref": "https://schemas.fablepool.org/v1/content-document.json" } } }, "problemSegment": { "type": "object", "required": ["kind", "problem"], "additionalProperties": false, "properties": { "kind": { "const": "problem" }, "problem": { "type": "string", "format": "uuid", "description": "Problem id. Resolved to that problem's published version at delivery time; the export pipeline pins the exact version." }, "required": { "type": "boolean", "default": true, "description": "Whether this problem must be answered to complete the lesson." }, "context": { "type": "string", "maxLength": 500, "description": "Short bridge text shown above the embedded problem." } } }, "checkpointSegment": { "type": "object", "required": ["kind", "prompt"], "additionalProperties": false, "description": "A self-reflection pause; the response is private to the learner and not graded.", "properties": { "kind": { "const": "checkpoint" }, "title": { "type": "string", "maxLength": 200 }, "prompt": { "$ref": "https://schemas.fablepool.org/v1/content-document.json" } } } } }