{ "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "Timeline-kun CSV", "description": "An array of CSV rows for Timeline-kun", "type": "array", "minItems": 1, "items": { "type": "object", "additionalProperties": false, "properties": { "title": { "type": "string", "description": "Event name" }, "member": { "type": "string", "description": "Person or group" }, "start": { "type": "string", "pattern": "^\\d{1,2}:[0-5]\\d:[0-5]\\d$", "description": "Start time H:MM:SS" }, "duration": { "type": "string", "pattern": "^\\d{1,2}:[0-5]\\d:[0-5]\\d$", "default": "0:00:05", "description": "Duration H:MM:SS" }, "fixed": { "type": "string", "enum": ["start", "duration"] }, "instruction": { "type": "string", "description": "Notes" } }, "required": ["title", "member", "fixed", "instruction"], "allOf": [ { "if": { "properties": { "fixed": { "const": "start" } } }, "then": { "required": ["start"] } }, { "if": { "properties": { "fixed": { "const": "duration" } } }, "then": { "required": ["duration"] } } ] }, "x-notes": { "csvHeaderOrder": ["title", "member", "start", "duration", "fixed", "instruction"], "rowOrdering": "Array order is execution order. Do not reorder rows.", "instructionTrigger": "The instruction field triggers recording only if it contains the exact substring '(recording)' with matching case", "rowRules": [ "All column values may be duplicated across rows", "If duration is not specified, default to 0:00:05" ] } }