{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://json.schemastore.org/usf.json", "title": "Universal Schedule Format (USF)", "description": "A compact and efficient format for storing school schedules.", "type": "object", "properties": { "version": { "type": "integer", "description": "USF version" }, "subjects": { "type": "object", "additionalProperties": { "type": "object", "properties": { "simplified_name": { "type": "string" }, "teacher": { "type": "string" }, "room": { "type": "string" } }, "additionalProperties": false }, "description": "Mapping of subject names to their details." }, "periods": { "type": "array", "items": { "type": "array", "items": [ { "type": "string", "pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$" }, { "type": "string", "pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$" } ], "minItems": 2, "maxItems": 2 }, "description": "List of time periods, each containing a start and end time." }, "timetable": { "type": "array", "items": { "type": "array", "items": [ { "type": "integer", "minimum": 1, "maximum": 7, "description": "Day of the week (1=Monday, 7=Sunday)." }, { "type": "string", "enum": ["all", "even", "odd"], "description": "Week type." }, { "type": "string", "description": "Subject name (must match keys in 'subjects')." }, { "type": "integer", "minimum": 1, "description": "Class period (1-based index, must match 'periods')." } ], "minItems": 4, "maxItems": 4 }, "description": "Schedule entries, each defining a class occurrence." } }, "required": ["version", "subjects", "periods", "timetable"], "additionalProperties": false }