{ "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "Archify model registry", "description": "Shared elements of a model: one name for one thing. Diagrams refer to an element with `ref: `.", "type": "object", "additionalProperties": false, "required": [ "elements" ], "properties": { "schema_version": { "const": 1 }, "elements": { "type": "object", "description": "Element id → element. Ids are unique across all registry files of the model.", "propertyNames": { "pattern": "^[a-zA-Z][a-zA-Z0-9_-]*$" }, "additionalProperties": { "type": "object", "additionalProperties": false, "required": [ "type", "label" ], "properties": { "type": { "enum": [ "frontend", "backend", "database", "cloud", "security", "messagebus", "external" ] }, "label": { "type": "string", "minLength": 1 }, "sublabel": { "type": "string" }, "tag": { "type": "string" }, "icon": { "description": "Decorative corner icon. Omit the icon field for the type default; none hides it. Does not change type, color, or legend grouping.", "enum": [ "calendar", "clock", "person", "briefcase", "flag", "moon", "frontend", "backend", "database", "cloud", "security", "messagebus", "external", "start", "active", "waiting", "success", "failure", "neutral", "none" ] }, "brand": { "oneOf": [ { "type": "string", "minLength": 1, "maxLength": 2048, "anyOf": [ { "maxLength": 80, "pattern": "^[^\\r\\n]+$" }, { "pattern": "^https?://" } ] }, { "type": "object", "additionalProperties": false, "required": [ "url", "sha256" ], "properties": { "url": { "type": "string", "minLength": 8, "maxLength": 2048, "pattern": "^https?://" }, "sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" } } } ] }, "sources": { "type": "array", "minItems": 1, "maxItems": 3, "items": { "type": "object", "additionalProperties": false, "required": [ "path" ], "properties": { "path": { "type": "string", "minLength": 1, "maxLength": 240 }, "line": { "type": "integer", "minimum": 1 }, "end_line": { "type": "integer", "minimum": 1 }, "label": { "type": "string", "minLength": 1, "maxLength": 48 } } } }, "description": { "type": "string", "description": "The one description of this thing; shown on hover and on the model page." }, "diagram": { "type": "string", "description": "Diagram that explains this element, relative to the model root (main.archify). Double-click the node to open it." } } } } } }