{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/eraser/main/json-schema/eraser-file-schema.json", "title": "Eraser File", "description": "Schema for an Eraser file object with metadata and optional content", "type": "object", "required": ["id", "fileUrl", "title", "author", "createdAt", "updatedAt", "linkAccess"], "properties": { "id": { "type": "string", "description": "Unique file identifier" }, "fileUrl": { "type": "string", "format": "uri", "description": "URL to view the file in Eraser" }, "title": { "type": "string", "description": "File name" }, "author": { "type": "string", "description": "Creator's user ID" }, "folderId": { "type": ["string", "null"], "description": "Parent folder ID, or null if at root" }, "createdAt": { "type": "string", "format": "date-time", "description": "ISO 8601 creation timestamp" }, "updatedAt": { "type": "string", "format": "date-time", "description": "ISO 8601 last modification timestamp" }, "linkAccess": { "type": "string", "enum": [ "no-link-access", "anyone-with-link-can-edit", "publicly-viewable", "publicly-editable", "sso-readable", "sso-editable" ], "description": "File link access permission level" }, "content": { "type": "object", "description": "File content (present in single-file responses)", "properties": { "document": { "type": "string", "description": "Markdown content of the file's document" }, "elements": { "type": "array", "description": "Canvas elements in the file", "items": { "$ref": "#/$defs/CanvasElement" } } } } }, "$defs": { "CanvasElement": { "type": "object", "required": ["id", "type"], "properties": { "id": { "type": "string", "description": "Unique element identifier" }, "type": { "type": "string", "description": "Element category (e.g., diagram, rectangle, ellipse)" }, "diagramType": { "type": "string", "enum": [ "sequence-diagram", "entity-relationship-diagram", "cloud-architecture-diagram", "flowchart-diagram", "bpmn-diagram" ], "description": "Diagram type (required when type is 'diagram')" }, "code": { "type": "string", "description": "Eraser DSL code for the diagram element" }, "x": { "type": "number", "description": "Horizontal canvas position" }, "y": { "type": "number", "description": "Vertical canvas position" }, "width": { "type": "number", "description": "Element width in canvas units" }, "height": { "type": "number", "description": "Element height in canvas units" } } } } }