Files
Qwen2.5-Coder-3B-Ilograph-I…/idl-2025-11-03.schema.json

568 lines
18 KiB
JSON
Raw Permalink Normal View History

{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://ilograph.com/schemas/idl-2025-11-03.json",
"title": "Ilograph Diagram Language (IDL) - November 2025 Version",
"description": "Schema for Ilograph YAML diagram specifications based on 2025-11-03 spec",
"type": "object",
"properties": {
"resources": {
"$ref": "#/$defs/resourceArray"
},
"perspectives": {
"$ref": "#/$defs/perspectiveArray"
},
"imports": {
"$ref": "#/$defs/importArray"
},
"contexts": {
"$ref": "#/$defs/contextArray"
},
"description": {
"type": "string",
"description": "A description of the diagram that appears at the top of the overview page. Has support for markdown, and can contain multiple lines."
},
"defaultContextDisplayName": {
"type": "string",
"description": "The display name of the default context"
}
},
"$defs": {
"resourceArray": {
"type": "array",
"description": "An array of resources (the resource tree)",
"items": {
"$ref": "#/$defs/resource"
}
},
"perspectiveArray": {
"type": "array",
"description": "An array of perspectives",
"items": {
"$ref": "#/$defs/perspective"
}
},
"importArray": {
"type": "array",
"description": "An array of imports",
"items": {
"$ref": "#/$defs/import"
}
},
"contextArray": {
"type": "array",
"description": "An array of contexts",
"items": {
"$ref": "#/$defs/context"
}
},
"resource": {
"type": "object",
"description": "Resources are the building blocks of Ilograph diagrams. Resources can appear in multiple perspectives.",
"required": ["name"],
"properties": {
"name": {
"type": "string",
"description": "The name of the resource. Used as the identifier if id is not provided."
},
"id": {
"type": "string",
"pattern": "^[^/\\^*\\[\\],^]*$",
"description": "A substitute identifier for the resource. Cannot contain restricted characters."
},
"subtitle": {
"type": "string",
"description": "The subtitle of the resource (appears below the resource name)"
},
"description": {
"oneOf": [
{ "type": "string" },
{ "$ref": "#/$defs/descriptionObject" }
],
"description": "The description of the resource. Supports markdown and can contain multiple lines or be defined as key-value pairs."
},
"color": {
"type": "string",
"pattern": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$|^[a-zA-Z]+$",
"default": "dimgray",
"description": "Text color. Any X11 color name or hex value like #FF00FF."
},
"backgroundColor": {
"type": "string",
"pattern": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$|^[a-zA-Z]+$",
"default": "white",
"description": "Background color. Any X11 color name or hex value like #FF00FF."
},
"style": {
"type": "string",
"enum": ["default", "plural", "dashed", "outline", "flat"],
"default": "default",
"description": "Resource border style. When set to plural, rendered as multiple boxes."
},
"abstract": {
"type": "boolean",
"default": false,
"description": "When set to true, other resources may inherit from this resource using instanceOf."
},
"instanceOf": {
"type": "string",
"description": "When specified, this resource inherits all properties (other than id/name) and child resources of the specified abstract resource."
},
"children": {
"$ref": "#/$defs/resourceArray",
"description": "An array of child resources"
},
"icon": {
"type": "string",
"description": "An icon path for the resource"
},
"iconStyle": {
"type": "string",
"enum": ["default", "silhouette"],
"default": "default",
"description": "Controls how the icon is rendered."
},
"url": {
"type": "string",
"format": "uri",
"description": "URL for the resource. If defined, a link icon appears when selected."
},
"layout": {
"$ref": "#/$defs/layout"
}
},
"additionalProperties": false
},
"descriptionObject": {
"type": "object",
"description": "Key-value pair description format"
},
"perspective": {
"type": "object",
"description": "Each perspective gives a unique view of the relations between resources.",
"required": ["name"],
"properties": {
"id": {
"type": "string",
"description": "A substitute identifier for the perspective."
},
"name": {
"type": "string",
"description": "Name of the perspective. Used as unique identifier if id not provided."
},
"color": {
"type": "string",
"pattern": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$|^[a-zA-Z]+$",
"default": "royalblue",
"description": "Color of the perspective. Any X11 color name or hex value."
},
"relations": {
"$ref": "#/$defs/relationArray",
"description": "An array of relations"
},
"sequence": {
"$ref": "#/$defs/sequence",
"description": "Sequence object for sequence perspectives"
},
"notes": {
"type": "string",
"description": "Notes that appear in the notes panel and overview page. Supports markdown."
},
"extends": {
"type": "string",
"description": "Previously-defined perspective(s) that this perspective extends."
},
"walkthrough": {
"$ref": "#/$defs/slideArray",
"description": "An array of slides forming the walkthrough"
},
"aliases": {
"$ref": "#/$defs/aliasArray",
"description": "An array of aliases"
},
"overrides": {
"$ref": "#/$defs/overrideArray",
"description": "An array of overrides"
},
"orientation": {
"type": "string",
"enum": ["leftToRight", "topToBottom", "ring"],
"default": "leftToRight",
"description": "Which direction the perspective is oriented. Does not affect sequence perspectives."
},
"options": {
"$ref": "#/$defs/perspectiveOptions",
"description": "Additional options for this perspective"
}
},
"additionalProperties": false,
"oneOf": [
{
"required": ["relations"],
"description": "Perspectives with relations are relation perspectives"
},
{
"required": ["sequence"],
"description": "Perspectives with sequence are sequence perspectives"
}
]
},
"relationArray": {
"type": "array",
"description": "Relations define how resources are related to each other in the perspective.",
"items": {
"$ref": "#/$defs/relation"
}
},
"relation": {
"type": "object",
"description": "Relations define how resources are related to each other in the perspective. Each relation must define from or to.",
"properties": {
"from": {
"type": "string",
"description": "Reference(s) to the dependent (left-side) resource(s)"
},
"to": {
"type": "string",
"description": "Reference(s) to the independent (right-side) resource(s)"
},
"via": {
"type": "string",
"description": "Reference(s) to resource(s) this relation passes through"
},
"label": {
"type": "string",
"description": "Label that appears above the arrow(s)"
},
"description": {
"type": "string",
"description": "Extended description for hover text. Supports markdown."
},
"arrowDirection": {
"type": "string",
"enum": ["forward", "backward", "bidirectional"],
"default": "forward",
"description": "Arrow direction relative to perspective orientation."
},
"color": {
"type": "string",
"pattern": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$|^[a-zA-Z]+$",
"default": "#303030",
"description": "Arrow and text color. Any X11 color name or hex value."
},
"secondary": {
"type": "boolean",
"default": false,
"description": "If true, relation will not affect perspective layout. Does not affect ring perspectives."
}
},
"oneOf": [{ "required": ["from"] }, { "required": ["to"] }],
"additionalProperties": false
},
"sequence": {
"type": "object",
"description": "Sequence defines how resources are related in a sequence of steps.",
"required": ["start"],
"properties": {
"start": {
"type": "string",
"description": "Starting resource in the sequence, or none to have first step come from off-screen"
},
"steps": {
"$ref": "#/$defs/stepArray",
"description": "An array of steps in the sequence"
}
},
"additionalProperties": false
},
"stepArray": {
"type": "array",
"description": "Steps in a sequence define the steps between resources and their labels.",
"items": {
"$ref": "#/$defs/step"
}
},
"step": {
"type": "object",
"description": "Steps in a sequence define the steps between resources and their labels. Each step must define to, toAndBack, toAsync, restartAt, or subSequence.",
"properties": {
"to": {
"type": "string",
"description": "Resource this step goes to"
},
"toAndBack": {
"type": "string",
"description": "Resource this step goes to with automatic return"
},
"toAsync": {
"type": "string",
"description": "Resource this step goes to asynchronously (drawn with dashed arrows)"
},
"restartAt": {
"type": "string",
"description": "Resource to pass control to without drawing an arrow"
},
"subSequence": {
"$ref": "#/$defs/subSequence",
"description": "A sub-sequence object"
},
"label": {
"type": "string",
"description": "Label that appears above the arrow"
},
"description": {
"type": "string",
"description": "Extended description for hover text. Supports markdown."
},
"bidirectional": {
"type": "boolean",
"default": false,
"description": "If true, arrows are shown with arrowheads on both ends."
},
"color": {
"type": "string",
"pattern": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$|^[a-zA-Z]+$",
"default": "#303030",
"description": "Arrow and text color. Any X11 color name or hex value."
}
},
"oneOf": [
{ "required": ["to"] },
{ "required": ["toAndBack"] },
{ "required": ["toAsync"] },
{ "required": ["restartAt"] },
{ "required": ["subSequence"] }
],
"additionalProperties": false
},
"subSequence": {
"type": "object",
"description": "Sub-sequences appear as colored boxes in sequences that can be zoomed into.",
"required": ["name"],
"properties": {
"name": {
"type": "string",
"pattern": "^[^/~]*$",
"description": "Name of the sub-sequence. Cannot contain / or ~"
},
"color": {
"type": "string",
"pattern": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$|^[a-zA-Z]+$",
"description": "Box and text color. Any X11 color name or hex value. Defaults to perspective color."
},
"notes": {
"type": "string",
"description": "Notes that appear when zoomed into the sub-sequence. Supports markdown."
},
"steps": {
"$ref": "#/$defs/stepArray",
"description": "An array of steps"
}
},
"additionalProperties": false
},
"aliasArray": {
"type": "array",
"description": "Aliases give convenient names to resource references.",
"items": {
"$ref": "#/$defs/alias"
}
},
"alias": {
"type": "object",
"description": "Convenient names for resource references.",
"required": ["alias", "for"],
"properties": {
"alias": {
"type": "string",
"pattern": "^[^/\\^*\\[\\],^]*$",
"description": "Identifier for this alias. Can override existing resource id."
},
"for": {
"type": "string",
"description": "Value of this alias, typically comma-separated resource identifiers"
}
},
"additionalProperties": false
},
"overrideArray": {
"type": "array",
"description": "Overrides are used to override parent and sizes of resources in a perspective.",
"items": {
"$ref": "#/$defs/override"
}
},
"override": {
"type": "object",
"description": "Override resource properties in a perspective.",
"required": ["resourceId"],
"properties": {
"resourceId": {
"type": "string",
"description": "Resource(s) to override in the perspective"
},
"parentId": {
"type": "string",
"description": "Different parent to assign, or none for no parent"
},
"scale": {
"type": "number",
"description": "Size adjustment for specified resource(s)"
}
},
"additionalProperties": false
},
"slideArray": {
"type": "array",
"description": "Slides form the walkthrough for a perspective.",
"items": {
"$ref": "#/$defs/slide"
}
},
"slide": {
"type": "object",
"description": "A slide in a perspective walkthrough.",
"properties": {
"text": {
"type": "string",
"description": "Text accompanying the slide. If not present, previous slide's text is used."
},
"select": {
"type": "string",
"description": "Resource(s) to select. Selected resources displayed prominently, others hidden."
},
"expand": {
"type": "string",
"description": "Resource or sub-sequence to expand (make full-screen). Use ^ for none."
},
"highlight": {
"type": "string",
"description": "Resource(s) to highlight with animated border."
},
"detail": {
"type": "number",
"minimum": 0.001,
"maximum": 1,
"default": 1,
"description": "Level of detail used during the slide. Range: 0.001 (very low) to 1 (full detail)."
}
},
"additionalProperties": false
},
"context": {
"type": "object",
"description": "Each context defines a view of the diagram resources.",
"required": ["name"],
"properties": {
"name": {
"type": "string",
"description": "Context name. Must be unique and cannot be Default."
},
"roots": {
"$ref": "#/$defs/contextEntryArray",
"description": "Context entries forming a tree structure"
},
"extends": {
"type": "string",
"description": "Previously-defined context(s) that this context extends."
},
"hidden": {
"type": "boolean",
"default": false,
"description": "If true, context not shown in dropdown."
}
},
"additionalProperties": false
},
"contextEntryArray": {
"type": "array",
"description": "Context entries form a tree-like structure for defining context.",
"items": {
"$ref": "#/$defs/contextEntry"
}
},
"contextEntry": {
"type": "object",
"description": "Context entry defining resource visibility.",
"required": ["resourceId"],
"properties": {
"resourceId": {
"type": "string",
"description": "Resource identifier(s) for this entry."
},
"children": {
"$ref": "#/$defs/contextEntryArray",
"description": "Child context entries. Cannot be defined if multiple resources specified in resourceId."
}
},
"additionalProperties": false
},
"layout": {
"type": "object",
"description": "Layout parameters govern how child elements are laid out inside a parent.",
"properties": {
"compactness": {
"type": "number",
"minimum": 0.1,
"maximum": 1,
"default": 1,
"description": "How compactly child resources are rendered. Affects only context resources with more than one child."
},
"sizes": {
"type": "string",
"enum": ["proportional", "uniform", "auto"],
"default": "auto",
"description": "How child resource sizes are determined."
}
},
"additionalProperties": false
},
"perspectiveOptions": {
"type": "object",
"description": "Additional options for the perspective.",
"properties": {},
"additionalProperties": true
},
"import": {
"type": "object",
"description": "Imports define a list of diagrams to import and their namespaces.",
"required": ["from", "namespace"],
"properties": {
"from": {
"type": "string",
"description": "The diagram to import"
},
"namespace": {
"type": "string",
"pattern": "^[^/\\^*\\[\\],^]*$",
"description": "Namespace prefix for imported resources and perspectives. Cannot contain restricted characters."
}
},
"additionalProperties": false
}
}
}