{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "TODO File Schema", "type": "object", "properties": { "sprints": { "type": "array", "items": { "$ref": "#/definitions/Sprint" } }, "issues": { "type": "array", "items": { "$ref": "#/definitions/Issue" } } }, "required": ["sprints", "issues"], "additionalProperties": false, "definitions": { "Sprint": { "type": "object", "properties": { "name": { "type": "string" }, "start": { "type": "string", "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" }, "end": { "type": "string", "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" } }, "required": ["name", "start", "end"], "additionalProperties": false }, "Issue": { "type": "object", "properties": { "id": { "type": "integer", "minimum": 1 }, "type": { "type": "string", "enum": ["feature", "bugfix", "hotfix"] }, "title": { "type": "string" }, "status": { "type": "string", "enum": ["open", "in-progress", "done", "hold", "cancelled"] }, "priority": { "type": "string", "enum": ["low", "medium", "high"] }, "created": { "type": "string", "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" }, "relationships": { "$ref": "#/definitions/IssueRelationships" }, "dueStart": { "type": "string", "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" }, "dueEnd": { "type": "string", "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" }, "description": { "type": "string" }, "body": { "type": "string" } }, "required": [ "id", "type", "title", "status", "priority", "created", "relationships", "description", "body" ], "additionalProperties": false }, "IssueRelationships": { "type": "object", "patternProperties": { "^(dependsOn|relatesTo|blocks)$": { "type": "array", "items": { "type": "integer", "minimum": 1 } } }, "additionalProperties": false } } }