{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://github.com/tt-a1i/archify/schemas/workflow.schema.json", "title": "Archify Workflow Diagram", "type": "object", "additionalProperties": false, "required": [ "schema_version", "diagram_type", "meta", "lanes", "nodes", "edges" ], "properties": { "schema_version": { "enum": [ 1, 2 ] }, "diagram_type": { "const": "workflow" }, "meta": { "type": "object", "additionalProperties": false, "required": [ "title" ], "properties": { "title": { "type": "string", "minLength": 1 }, "locale": { "$ref": "common.schema.json#/$defs/locale" }, "subtitle": { "type": "string" }, "output": { "type": "string" }, "animation": { "enum": [ "trace", "none" ] }, "visual_preset": { "enum": [ "classic", "signal-flow", "blueprint", "editorial" ] }, "quality_profile": { "enum": [ "standard", "showcase" ] }, "views": { "$ref": "common.schema.json#/$defs/guidedViews" }, "legend": { "type": "object", "additionalProperties": false, "properties": { "mode": { "$ref": "common.schema.json#/$defs/legendMode" }, "entries": { "type": "object", "additionalProperties": false, "properties": { "frontend": { "$ref": "common.schema.json#/$defs/legendEntry" }, "backend": { "$ref": "common.schema.json#/$defs/legendEntry" }, "database": { "$ref": "common.schema.json#/$defs/legendEntry" }, "cloud": { "$ref": "common.schema.json#/$defs/legendEntry" }, "security": { "$ref": "common.schema.json#/$defs/legendEntry" }, "messagebus": { "$ref": "common.schema.json#/$defs/legendEntry" }, "external": { "$ref": "common.schema.json#/$defs/legendEntry" } } } } }, "viewBox": { "type": "array", "prefixItems": [ { "type": "number", "minimum": 700 }, { "type": "number", "minimum": 240 } ], "items": false, "minItems": 2, "maxItems": 2 } } }, "lanes": { "type": "array", "minItems": 1, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "label" ], "properties": { "id": { "$ref": "common.schema.json#/$defs/id" }, "label": { "type": "string", "minLength": 1 }, "variant": { "enum": [ "normal", "exception" ] } } } }, "phases": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "label", "fromCol", "toCol" ], "properties": { "id": { "$ref": "common.schema.json#/$defs/id" }, "label": { "type": "string", "minLength": 1 }, "fromCol": { "type": "integer", "minimum": 0, "maximum": 5 }, "toCol": { "type": "integer", "minimum": 0, "maximum": 5 }, "variant": { "enum": [ "default", "emphasis", "security", "dashed" ] } } } }, "groups": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "id", "label", "lane", "fromCol", "toCol" ], "properties": { "id": { "$ref": "common.schema.json#/$defs/id" }, "label": { "type": "string", "minLength": 1 }, "lane": { "$ref": "common.schema.json#/$defs/id" }, "fromCol": { "type": "integer", "minimum": 0, "maximum": 5 }, "toCol": { "type": "integer", "minimum": 0, "maximum": 5 }, "variant": { "enum": [ "default", "emphasis", "security", "dashed" ] } } } }, "mainPath": { "type": "array", "minItems": 2, "items": { "$ref": "common.schema.json#/$defs/id" } }, "semanticChecks": { "type": "object", "additionalProperties": false, "minProperties": 1, "properties": { "allowedRoots": { "type": "array", "items": { "$ref": "common.schema.json#/$defs/id" } }, "allowedTerminals": { "type": "array", "items": { "$ref": "common.schema.json#/$defs/id" } }, "requiredEdges": { "type": "array", "items": { "$ref": "#/$defs/semanticRelation" } }, "requiredPaths": { "type": "array", "items": { "$ref": "#/$defs/semanticRelation" } } } }, "nodes": { "type": "array", "minItems": 1, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "lane", "col", "type", "label" ], "properties": { "id": { "$ref": "common.schema.json#/$defs/id" }, "lane": { "$ref": "common.schema.json#/$defs/id" }, "col": { "type": "integer", "minimum": 0, "maximum": 5 }, "type": { "$ref": "common.schema.json#/$defs/componentType" }, "label": { "type": "string", "minLength": 1 }, "sublabel": { "type": "string" }, "tag": { "type": "string" }, "brand": { "$ref": "common.schema.json#/$defs/brandMark" }, "width": { "type": "number", "minimum": 32 }, "height": { "type": "number", "minimum": 32 }, "yOffset": { "type": "number" } } } }, "edges": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "from", "to" ], "properties": { "id": { "$ref": "common.schema.json#/$defs/id" }, "from": { "$ref": "common.schema.json#/$defs/id" }, "to": { "$ref": "common.schema.json#/$defs/id" }, "label": { "type": "string" }, "variant": { "$ref": "common.schema.json#/$defs/variant" }, "role": { "enum": [ "main", "branch", "async", "return", "error" ] }, "fromSide": { "$ref": "#/$defs/side" }, "toSide": { "$ref": "#/$defs/side" }, "route": { "enum": [ "auto", "straight", "drop", "outside-right", "return-left", "bottom-channel", "up-channel" ] }, "via": { "type": "array", "items": { "$ref": "common.schema.json#/$defs/point" } }, "labelAt": { "$ref": "common.schema.json#/$defs/point" }, "labelDx": { "type": "number" }, "labelDy": { "type": "number" }, "labelSegment": { "type": "integer", "minimum": 0 }, "channelX": { "type": "number" }, "channelY": { "type": "number" }, "bias": { "type": "number", "minimum": 0, "maximum": 1 }, "width": { "type": "number", "minimum": 0.5 } } } }, "cards": { "$ref": "common.schema.json#/$defs/cards" } }, "$defs": { "semanticRelation": { "type": "object", "additionalProperties": false, "required": [ "from", "to" ], "properties": { "from": { "$ref": "common.schema.json#/$defs/id" }, "to": { "$ref": "common.schema.json#/$defs/id" } } }, "side": { "enum": [ "left", "right", "top", "bottom" ] } } }