Skip to content

ATD 0.1 schema

The JSON Schema of ATD 0.1 (atd.schema.json) has 74 definitions. They are grouped here by the layers of Appendix A.2, each with its own description above its JSON. The file itself is published unchanged at /adp/atd/schema/0.1/atd.schema.json, the address of its $id, for validators and editors.

Not listed in Appendix A.2

Span

Layer: not listed in Appendix A.2 · Described in: 3. Lexical structure, Appendix A — The schema's $defs

Where a node stands in its file: UTF-8 byte offsets of its first byte and of the byte after it, and the 1-based line and column of its start and end, columns in code points (ATD §3.1, §15).

{
  "type": "object",
  "properties": {
    "file": {
      "type": "string"
    },
    "start": {
      "type": "integer",
      "minimum": 0
    },
    "end": {
      "type": "integer",
      "minimum": 0
    },
    "line": {
      "type": "integer",
      "minimum": 1
    },
    "column": {
      "type": "integer",
      "minimum": 1
    },
    "endLine": {
      "type": "integer",
      "minimum": 1
    },
    "endColumn": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "file",
    "start",
    "end",
    "line",
    "column"
  ]
}

Name

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

A name as written, with where it stands: a NAME or a keyword in a name position (ATD §3.6).

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string"
    },
    "span": {
      "$ref": "#/$defs/Span"
    }
  },
  "additionalProperties": false,
  "required": [
    "text",
    "span"
  ]
}

QualifiedName

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

A dotted name, layout.twoSidedTree, std.missingId.

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "pattern": "^[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)*$"
    },
    "span": {
      "$ref": "#/$defs/Span"
    }
  },
  "additionalProperties": false,
  "required": [
    "text",
    "span"
  ]
}

TypeRef

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

A type: a qualified name with its type arguments (list<Concept>).

{
  "type": "object",
  "properties": {
    "name": {
      "$ref": "#/$defs/QualifiedName"
    },
    "arguments": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/TypeRef"
      }
    },
    "span": {
      "$ref": "#/$defs/Span"
    }
  },
  "additionalProperties": false,
  "required": [
    "name",
    "span"
  ]
}

Value

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

A value (ATD §6): exactly one of a literal, a CEL expression with its abstract syntax, a reference to an attribute, a theme token or a parameter, a settings map, or a list.

{
  "type": "object",
  "oneOf": [
    {
      "description": "A literal: a bare word, a number, a string or a length.",
      "type": "object",
      "properties": {
        "literal": {
          "type": [
            "string",
            "number",
            "boolean",
            "null"
          ]
        },
        "form": {
          "enum": [
            "word",
            "number",
            "string",
            "length"
          ]
        },
        "span": {
          "$ref": "#/$defs/Span"
        }
      },
      "additionalProperties": false,
      "required": [
        "literal",
        "form",
        "span"
      ]
    },
    {
      "description": "A CEL expression in parentheses.",
      "type": "object",
      "properties": {
        "cel": {
          "type": "string"
        },
        "ast": {
          "$ref": "#/$defs/CelNode"
        },
        "span": {
          "$ref": "#/$defs/Span"
        }
      },
      "additionalProperties": false,
      "required": [
        "cel",
        "ast",
        "span"
      ]
    },
    {
      "description": "`@path`: an attribute of the current element, two-way where the position allows.",
      "type": "object",
      "properties": {
        "attribute": {
          "type": "string"
        },
        "span": {
          "$ref": "#/$defs/Span"
        }
      },
      "additionalProperties": false,
      "required": [
        "attribute",
        "span"
      ]
    },
    {
      "description": "`$name`: a theme token.",
      "type": "object",
      "properties": {
        "token": {
          "type": "string"
        },
        "span": {
          "$ref": "#/$defs/Span"
        }
      },
      "additionalProperties": false,
      "required": [
        "token",
        "span"
      ]
    },
    {
      "description": "`#name`: a parameter of the enclosing shape, marker or template.",
      "type": "object",
      "properties": {
        "param": {
          "type": "string"
        },
        "span": {
          "$ref": "#/$defs/Span"
        }
      },
      "additionalProperties": false,
      "required": [
        "param",
        "span"
      ]
    },
    {
      "description": "`{ key: value … }`: a settings map, in written order.",
      "type": "object",
      "properties": {
        "settings": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Setting"
          }
        },
        "span": {
          "$ref": "#/$defs/Span"
        }
      },
      "additionalProperties": false,
      "required": [
        "settings",
        "span"
      ]
    },
    {
      "description": "`[ value, … ]`: a list.",
      "type": "object",
      "properties": {
        "list": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Value"
          }
        },
        "span": {
          "$ref": "#/$defs/Span"
        }
      },
      "additionalProperties": false,
      "required": [
        "list",
        "span"
      ]
    }
  ]
}

Setting

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

One key: value pair (ATD §6.4); quoted when the key was written as a string.

{
  "type": "object",
  "properties": {
    "key": {
      "type": "string"
    },
    "quoted": {
      "type": "boolean"
    },
    "value": {
      "$ref": "#/$defs/Value"
    },
    "span": {
      "$ref": "#/$defs/Span"
    }
  },
  "additionalProperties": false,
  "required": [
    "key",
    "value",
    "span"
  ]
}

CelNode

Layer: not listed in Appendix A.2 · Described in: 6. Values, Appendix A — The schema's $defs

CEL's abstract syntax (ATD §6.3), with spans: an operator is a call of its CEL function name (_+_, _&&_, !_, -_, _?_:_, _[_], @in, _[?_], _?._), a macro is a call marked macro, a method call has a target.

{
  "type": "object",
  "oneOf": [
    {
      "description": "An identifier; `root` when written with a leading dot.",
      "type": "object",
      "properties": {
        "ident": {
          "type": "string"
        },
        "root": {
          "type": "boolean"
        },
        "span": {
          "$ref": "#/$defs/Span"
        }
      },
      "additionalProperties": false,
      "required": [
        "ident",
        "span"
      ]
    },
    {
      "description": "A field selection.",
      "type": "object",
      "properties": {
        "select": {
          "type": "string"
        },
        "operand": {
          "$ref": "#/$defs/CelNode"
        },
        "optional": {
          "type": "boolean"
        },
        "span": {
          "$ref": "#/$defs/Span"
        }
      },
      "additionalProperties": false,
      "required": [
        "select",
        "operand",
        "span"
      ]
    },
    {
      "description": "A call of a function, an operator or a macro.",
      "type": "object",
      "properties": {
        "call": {
          "type": "string"
        },
        "target": {
          "$ref": "#/$defs/CelNode"
        },
        "args": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/CelNode"
          }
        },
        "macro": {
          "type": "boolean"
        },
        "span": {
          "$ref": "#/$defs/Span"
        }
      },
      "additionalProperties": false,
      "required": [
        "call",
        "args",
        "span"
      ]
    },
    {
      "description": "A list literal; `optional` names the indexes written with `?`.",
      "type": "object",
      "properties": {
        "list": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/CelNode"
          }
        },
        "optional": {
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        "span": {
          "$ref": "#/$defs/Span"
        }
      },
      "additionalProperties": false,
      "required": [
        "list",
        "span"
      ]
    },
    {
      "description": "A map literal.",
      "type": "object",
      "properties": {
        "map": {
          "type": "array",
          "items": {
            "description": "An entry.",
            "type": "object",
            "properties": {
              "key": {
                "$ref": "#/$defs/CelNode"
              },
              "value": {
                "$ref": "#/$defs/CelNode"
              },
              "optional": {
                "type": "boolean"
              }
            },
            "additionalProperties": false,
            "required": [
              "key",
              "value"
            ]
          }
        },
        "span": {
          "$ref": "#/$defs/Span"
        }
      },
      "additionalProperties": false,
      "required": [
        "map",
        "span"
      ]
    },
    {
      "description": "A literal: `type` is CEL's type of it.",
      "type": "object",
      "properties": {
        "literal": {
          "type": [
            "string",
            "number",
            "boolean",
            "null"
          ]
        },
        "type": {
          "enum": [
            "int",
            "uint",
            "double",
            "string",
            "bytes",
            "bool",
            "null_type"
          ]
        },
        "text": {
          "type": "string"
        },
        "span": {
          "$ref": "#/$defs/Span"
        }
      },
      "additionalProperties": false,
      "required": [
        "literal",
        "type",
        "span"
      ]
    }
  ]
}

Tree

Layer: not listed in Appendix A.2 · Described in: Cover of ATD 0.1, 4. ATD grammar notation, Appendix A — The schema's $defs

The abstract tree of one .atd file, as atd tree prints it (ATD §4.5, FR-030). It is not an interchange form: nothing reads it back as a description.

{
  "type": "object",
  "properties": {
    "atd": {
      "type": "string",
      "pattern": "^[0-9]+\\.[0-9]+$"
    },
    "file": {
      "type": "string"
    },
    "description": {
      "oneOf": [
        {
          "$ref": "#/$defs/Tool"
        },
        {
          "$ref": "#/$defs/Part"
        }
      ]
    }
  },
  "additionalProperties": false,
  "required": [
    "atd",
    "file",
    "description"
  ]
}

Tool

Layer: not listed in Appendix A.2 · Described in: 8. The canvas surface, Appendix A — The schema's $defs

The tool construct of a root file (ATD §5.1).

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "tool"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "toolKind": {
      "enum": [
        "diagram",
        "designer",
        "editor"
      ]
    },
    "origin": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.-]*/[A-Za-z0-9_][A-Za-z0-9_.-]*$"
    },
    "version": {
      "type": "string"
    },
    "members": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Member"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "toolKind",
    "origin",
    "version",
    "members"
  ]
}

Part

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

A part of a description (ATD §5.2).

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "part"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "origin": {
      "type": "string"
    },
    "members": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Member"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "origin",
    "members"
  ]
}

Member

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

A member of a tool or a part: a construct of the core (ATD §7), the script (§12), a surface (§8 to §10) or a binding (§11).

{
  "oneOf": [
    {
      "$ref": "#/$defs/Label"
    },
    {
      "$ref": "#/$defs/DocMember"
    },
    {
      "$ref": "#/$defs/SettingMember"
    },
    {
      "$ref": "#/$defs/Import"
    },
    {
      "$ref": "#/$defs/Requires"
    },
    {
      "$ref": "#/$defs/Model"
    },
    {
      "$ref": "#/$defs/Constraints"
    },
    {
      "$ref": "#/$defs/Constraint"
    },
    {
      "$ref": "#/$defs/Builtin"
    },
    {
      "$ref": "#/$defs/Operation"
    },
    {
      "$ref": "#/$defs/Hook"
    },
    {
      "$ref": "#/$defs/Reason"
    },
    {
      "$ref": "#/$defs/MessageDecl"
    },
    {
      "$ref": "#/$defs/Behavior"
    },
    {
      "$ref": "#/$defs/Persistence"
    },
    {
      "$ref": "#/$defs/Plugin"
    },
    {
      "$ref": "#/$defs/Function"
    },
    {
      "$ref": "#/$defs/Coordinates"
    },
    {
      "$ref": "#/$defs/Notation"
    },
    {
      "$ref": "#/$defs/Toolbox"
    },
    {
      "$ref": "#/$defs/Form"
    },
    {
      "$ref": "#/$defs/Layout"
    },
    {
      "$ref": "#/$defs/Viewpoint"
    },
    {
      "$ref": "#/$defs/TableSurface"
    },
    {
      "$ref": "#/$defs/HierarchySurface"
    },
    {
      "$ref": "#/$defs/TextSurface"
    },
    {
      "$ref": "#/$defs/Binding"
    }
  ]
}

Label

Layer: not listed in Appendix A.2 · Described in: 8. The canvas surface, Appendix A — The schema's $defs

label value: a display name or a label's text.

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "label"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "value": {
      "$ref": "#/$defs/Value"
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "value"
  ]
}

DocMember

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

doc value.

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "doc"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "value": {
      "$ref": "#/$defs/Value"
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "value"
  ]
}

SettingMember

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

A setting among the members of a construct.

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "setting"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "setting": {
      "$ref": "#/$defs/Setting"
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "setting"
  ]
}

Import

Layer: not listed in Appendix A.2 · Described in: 5. Files and descriptions, Appendix A — The schema's $defs

import "file" (a part), or import "file" as name (a library) (ATD §5.3).

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "import"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "path": {
      "type": "string"
    },
    "as": {
      "$ref": "#/$defs/Name"
    },
    "settings": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Setting"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "path"
  ]
}

Requires

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

requires capability name@range (ATD §13).

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "requires"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "capability": {
      "$ref": "#/$defs/QualifiedName"
    },
    "range": {
      "type": "string"
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "capability",
    "range"
  ]
}

Model

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

model { … } (ATD §7.4).

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "model"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "members": {
      "type": "array",
      "items": {
        "oneOf": [
          {
            "$ref": "#/$defs/Element"
          },
          {
            "$ref": "#/$defs/Relation"
          },
          {
            "$ref": "#/$defs/Enum"
          },
          {
            "$ref": "#/$defs/DataType"
          },
          {
            "$ref": "#/$defs/DocumentDecl"
          },
          {
            "$ref": "#/$defs/SettingMember"
          },
          {
            "$ref": "#/$defs/DocMember"
          }
        ]
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "members"
  ]
}

Element

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

element Name extends … { … }: an element type (DISL's node type, DESL's element type).

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "element"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "name": {
      "$ref": "#/$defs/Name"
    },
    "extends": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/QualifiedName"
      }
    },
    "members": {
      "type": "array",
      "items": {
        "oneOf": [
          {
            "$ref": "#/$defs/Attribute"
          },
          {
            "$ref": "#/$defs/Contains"
          },
          {
            "$ref": "#/$defs/Port"
          },
          {
            "$ref": "#/$defs/SettingMember"
          },
          {
            "$ref": "#/$defs/DocMember"
          },
          {
            "$ref": "#/$defs/Label"
          }
        ]
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "name"
  ]
}

Relation

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

relation Name from … to … { … } (DISL §4.9).

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "relation"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "name": {
      "$ref": "#/$defs/Name"
    },
    "extends": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/QualifiedName"
      }
    },
    "from": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/QualifiedName"
      }
    },
    "to": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/QualifiedName"
      }
    },
    "members": {
      "type": "array",
      "items": {
        "oneOf": [
          {
            "$ref": "#/$defs/Attribute"
          },
          {
            "$ref": "#/$defs/Contains"
          },
          {
            "$ref": "#/$defs/Port"
          },
          {
            "$ref": "#/$defs/SettingMember"
          },
          {
            "$ref": "#/$defs/DocMember"
          },
          {
            "$ref": "#/$defs/Label"
          }
        ]
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "name"
  ]
}

Attribute

Layer: not listed in Appendix A.2 · Described in: 7. The core, Appendix A — The schema's $defs

attribute name: Type flags { … } (DISL §4.3, DESL §4.3).

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "attribute"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "name": {
      "$ref": "#/$defs/Name"
    },
    "type": {
      "$ref": "#/$defs/TypeRef"
    },
    "required": {
      "type": "boolean"
    },
    "many": {
      "type": "boolean"
    },
    "readonly": {
      "type": "boolean"
    },
    "default": {
      "$ref": "#/$defs/Value"
    },
    "settings": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Setting"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "name",
    "type"
  ]
}

Contains

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

contains Types as slot ordered (DISL §4.8, DESL §4.6).

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "contains"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "types": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/QualifiedName"
      }
    },
    "slot": {
      "$ref": "#/$defs/Name"
    },
    "ordered": {
      "type": "boolean"
    },
    "settings": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Setting"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "types"
  ]
}

Port

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

port name { … } (DISL §4.10).

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "port"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "name": {
      "$ref": "#/$defs/Name"
    },
    "settings": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Setting"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "name"
  ]
}

Enum

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

enum Name "Label" { values } (DISL §4.5).

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "enum"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "name": {
      "$ref": "#/$defs/Name"
    },
    "label": {
      "type": "string"
    },
    "values": {
      "type": "array",
      "items": {
        "description": "An enum value.",
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "quoted": {
            "type": "boolean"
          },
          "span": {
            "$ref": "#/$defs/Span"
          },
          "settings": {
            "type": "array",
            "items": {
              "$ref": "#/$defs/Setting"
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "name",
          "span"
        ]
      }
    },
    "settings": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Setting"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "name",
    "values"
  ]
}

DataType

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

datatype Name: Base { … } (DISL §4.4).

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "datatype"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "name": {
      "$ref": "#/$defs/Name"
    },
    "base": {
      "$ref": "#/$defs/TypeRef"
    },
    "settings": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Setting"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "name"
  ]
}

DocumentDecl

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

document { … }: the attributes of the document itself.

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "document"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "members": {
      "type": "array",
      "items": {
        "oneOf": [
          {
            "$ref": "#/$defs/Attribute"
          },
          {
            "$ref": "#/$defs/Contains"
          },
          {
            "$ref": "#/$defs/Port"
          },
          {
            "$ref": "#/$defs/SettingMember"
          },
          {
            "$ref": "#/$defs/DocMember"
          },
          {
            "$ref": "#/$defs/Label"
          }
        ]
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "members"
  ]
}

Constraints

Layer: not listed in Appendix A.2 · Described in: 7. The core, Appendix A — The schema's $defs

constraints { … } (DISL §8, DESL §6).

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "constraints"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "members": {
      "type": "array",
      "items": {
        "oneOf": [
          {
            "$ref": "#/$defs/Constraint"
          },
          {
            "$ref": "#/$defs/Builtin"
          },
          {
            "$ref": "#/$defs/SettingMember"
          },
          {
            "$ref": "#/$defs/DocMember"
          }
        ]
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "members"
  ]
}

Constraint

Layer: not listed in Appendix A.2 · Described in: 7. The core, Appendix A — The schema's $defs

constraint id for Types { … }.

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "constraint"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "name": {
      "$ref": "#/$defs/Name"
    },
    "for": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/QualifiedName"
      }
    },
    "when": {
      "$ref": "#/$defs/Expr"
    },
    "rule": {
      "$ref": "#/$defs/Expr"
    },
    "message": {
      "$ref": "#/$defs/Value"
    },
    "severity": {
      "$ref": "#/$defs/Name"
    },
    "fixes": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Fix"
      }
    },
    "label": {
      "$ref": "#/$defs/Value"
    },
    "settings": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Setting"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "name"
  ]
}

Builtin

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

builtin std.name { … }: settings of a built-in constraint (DISL §8.7).

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "builtin"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "name": {
      "$ref": "#/$defs/QualifiedName"
    },
    "settings": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Setting"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "name"
  ]
}

Fix

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

fix name "Label" { … }: a quick fix (DISL §8.5), or a fix on a range of an editor's text (ATD §10).

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "fix"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "name": {
      "$ref": "#/$defs/Name"
    },
    "title": {
      "type": "string"
    },
    "when": {
      "$ref": "#/$defs/Expr"
    },
    "body": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Statement"
      }
    },
    "settings": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Setting"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "name"
  ]
}

Operation

Layer: not listed in Appendix A.2 · Described in: 7. The core, Appendix A — The schema's $defs

operation id "Label" for Types { … } (DISL §9.3, DESL §8.1).

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "operation"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "name": {
      "$ref": "#/$defs/Name"
    },
    "title": {
      "type": "string"
    },
    "for": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/QualifiedName"
      }
    },
    "enabled": {
      "$ref": "#/$defs/Expr"
    },
    "unavailable": {
      "$ref": "#/$defs/Value"
    },
    "params": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Param"
      }
    },
    "confirm": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Setting"
      }
    },
    "label": {
      "$ref": "#/$defs/Value"
    },
    "body": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Statement"
      }
    },
    "settings": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Setting"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "name",
    "body"
  ]
}

Param

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

param name: Type.

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "param"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "name": {
      "$ref": "#/$defs/Name"
    },
    "type": {
      "$ref": "#/$defs/TypeRef"
    },
    "required": {
      "type": "boolean"
    },
    "many": {
      "type": "boolean"
    },
    "readonly": {
      "type": "boolean"
    },
    "default": {
      "$ref": "#/$defs/Value"
    },
    "settings": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Setting"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "name",
    "type"
  ]
}

Hook

Layer: not listed in Appendix A.2 · Described in: 7. The core, Appendix A — The schema's $defs

hook id on event for Types { … } (DISL §9.2).

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "hook"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "name": {
      "$ref": "#/$defs/Name"
    },
    "on": {
      "$ref": "#/$defs/Name"
    },
    "for": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/QualifiedName"
      }
    },
    "when": {
      "$ref": "#/$defs/Expr"
    },
    "body": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Statement"
      }
    },
    "settings": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Setting"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "name",
    "on",
    "body"
  ]
}

Reason

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

reason id "text" or reason id { when … message … } (DISL §2.3, §9.1).

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "reason"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "name": {
      "$ref": "#/$defs/Name"
    },
    "message": {
      "$ref": "#/$defs/Value"
    },
    "when": {
      "$ref": "#/$defs/Expr"
    },
    "settings": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Setting"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "name"
  ]
}

MessageDecl

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

message id value: a standard message (DISL §9.1).

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "message"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "name": {
      "$ref": "#/$defs/QualifiedName"
    },
    "value": {
      "$ref": "#/$defs/Value"
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "name",
    "value"
  ]
}

Behavior

Layer: not listed in Appendix A.2 · Described in: 7. The core, Appendix A — The schema's $defs

behavior { … }.

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "behavior"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "settings": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Setting"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "settings"
  ]
}

Persistence

Layer: not listed in Appendix A.2 · Described in: 7. The core, Appendix A — The schema's $defs

persistence { … }.

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "persistence"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "settings": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Setting"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "settings"
  ]
}

Plugin

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

plugin name { … } (DISL §13).

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "plugin"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "name": {
      "$ref": "#/$defs/QualifiedName"
    },
    "settings": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Setting"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "name"
  ]
}

Function

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

fn name(params) -> Type recursion n { … } (ATD §12.1).

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "fn"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "name": {
      "$ref": "#/$defs/Name"
    },
    "params": {
      "type": "array",
      "items": {
        "description": "A parameter.",
        "type": "object",
        "properties": {
          "name": {
            "$ref": "#/$defs/Name"
          },
          "type": {
            "$ref": "#/$defs/TypeRef"
          }
        },
        "additionalProperties": false,
        "required": [
          "name",
          "type"
        ]
      }
    },
    "returns": {
      "$ref": "#/$defs/TypeRef"
    },
    "recursion": {
      "type": "integer",
      "minimum": 1,
      "maximum": 64
    },
    "body": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Statement"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "name",
    "params",
    "body"
  ]
}

Expr

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

A CEL expression in a position that takes only an expression, written bare (ATD §6.2).

{
  "type": "object",
  "properties": {
    "cel": {
      "type": "string"
    },
    "ast": {
      "$ref": "#/$defs/CelNode"
    },
    "span": {
      "$ref": "#/$defs/Span"
    }
  },
  "additionalProperties": false,
  "required": [
    "cel",
    "ast",
    "span"
  ]
}

Statement

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

A statement of the script (ATD §12.2) or an action (§12.3). Its fields are those its form writes: name, type, value, target, path, condition, then, else, names, iterable, limit, body, assignments, parent, after, before, slot, at, size, place, as, source, to, by, x, y, width, height, form, severity, on, operation, args, settings.

{
  "type": "object",
  "properties": {
    "kind": {
      "enum": [
        "let",
        "var",
        "assign",
        "if",
        "for",
        "while",
        "return",
        "break",
        "continue",
        "fail",
        "set",
        "unset",
        "create",
        "connect",
        "delete",
        "move",
        "resize",
        "retype",
        "reparent",
        "reorder",
        "view",
        "open",
        "openForm",
        "editLabel",
        "select",
        "reveal",
        "highlight",
        "notify",
        "layout",
        "call",
        "plugin"
      ]
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "name": {
      "$ref": "#/$defs/Name"
    },
    "names": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Name"
      }
    },
    "type": {
      "$ref": "#/$defs/TypeRef"
    },
    "value": {
      "$ref": "#/$defs/Expr"
    },
    "target": {
      "$ref": "#/$defs/Expr"
    },
    "path": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Name"
      }
    },
    "condition": {
      "$ref": "#/$defs/Expr"
    },
    "then": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Statement"
      }
    },
    "else": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Statement"
      }
    },
    "iterable": {
      "$ref": "#/$defs/Expr"
    },
    "limit": {
      "type": "integer",
      "minimum": 0
    },
    "body": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Statement"
      }
    },
    "assignments": {
      "type": "array",
      "items": {
        "description": "An attribute and its CEL value.",
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "$ref": "#/$defs/Expr"
          },
          "span": {
            "$ref": "#/$defs/Span"
          }
        },
        "additionalProperties": false,
        "required": [
          "key",
          "value",
          "span"
        ]
      }
    },
    "parent": {
      "$ref": "#/$defs/Expr"
    },
    "after": {
      "$ref": "#/$defs/Expr"
    },
    "before": {
      "$ref": "#/$defs/Expr"
    },
    "slot": {
      "$ref": "#/$defs/Name"
    },
    "at": {
      "$ref": "#/$defs/Expr"
    },
    "size": {
      "$ref": "#/$defs/Expr"
    },
    "place": {
      "$ref": "#/$defs/Name"
    },
    "as": {
      "$ref": "#/$defs/Name"
    },
    "source": {
      "$ref": "#/$defs/Expr"
    },
    "to": {
      "oneOf": [
        {
          "$ref": "#/$defs/Expr"
        },
        {
          "$ref": "#/$defs/TypeRef"
        }
      ]
    },
    "by": {
      "$ref": "#/$defs/Expr"
    },
    "x": {
      "$ref": "#/$defs/Expr"
    },
    "y": {
      "$ref": "#/$defs/Expr"
    },
    "width": {
      "$ref": "#/$defs/Expr"
    },
    "height": {
      "$ref": "#/$defs/Expr"
    },
    "form": {
      "$ref": "#/$defs/Name"
    },
    "severity": {
      "$ref": "#/$defs/Name"
    },
    "on": {
      "$ref": "#/$defs/Expr"
    },
    "operation": {
      "$ref": "#/$defs/QualifiedName"
    },
    "args": {
      "type": "array",
      "items": {
        "description": "An argument, named when written `key: value`.",
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "$ref": "#/$defs/Expr"
          }
        },
        "additionalProperties": false,
        "required": [
          "value"
        ]
      }
    },
    "settings": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Setting"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span"
  ]
}

Coordinates

Layer: not listed in Appendix A.2 · Described in: 8. The canvas surface, Appendix A — The schema's $defs

coordinates { system … axis … snapping … default … } (DISL §5). Its members are the constructs ATD's section names, each with kind the construct's keyword (system, node, edge, variant, group, tool, algorithm, rows, valueType, outline, …), name or names, its own fields and its settings.

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "coordinates"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "members": {
      "type": "array",
      "items": {
        "description": "A member of the construct, by its `kind`: a construct of its own, or a `setting`, `doc` or `label` member.",
        "type": "object",
        "required": [
          "kind",
          "span"
        ],
        "properties": {
          "kind": {
            "type": "string"
          },
          "span": {
            "$ref": "#/$defs/Span"
          }
        }
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "members"
  ]
}

Notation

Layer: not listed in Appendix A.2 · Described in: 8. The canvas surface, Appendix A — The schema's $defs

notation { … } (DISL §6). Its members are the constructs ATD's section names, each with kind the construct's keyword (system, node, edge, variant, group, tool, algorithm, rows, valueType, outline, …), name or names, its own fields and its settings.

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "notation"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "members": {
      "type": "array",
      "items": {
        "description": "A member of the construct, by its `kind`: a construct of its own, or a `setting`, `doc` or `label` member.",
        "type": "object",
        "required": [
          "kind",
          "span"
        ],
        "properties": {
          "kind": {
            "type": "string"
          },
          "span": {
            "$ref": "#/$defs/Span"
          }
        }
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "members"
  ]
}

Toolbox

Layer: not listed in Appendix A.2 · Described in: 8. The canvas surface, Appendix A — The schema's $defs

toolbox { … } (DISL §7.1 to §7.4). Its members are the constructs ATD's section names, each with kind the construct's keyword (system, node, edge, variant, group, tool, algorithm, rows, valueType, outline, …), name or names, its own fields and its settings.

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "toolbox"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "members": {
      "type": "array",
      "items": {
        "description": "A member of the construct, by its `kind`: a construct of its own, or a `setting`, `doc` or `label` member.",
        "type": "object",
        "required": [
          "kind",
          "span"
        ],
        "properties": {
          "kind": {
            "type": "string"
          },
          "span": {
            "$ref": "#/$defs/Span"
          }
        }
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "members"
  ]
}

Layout

Layer: not listed in Appendix A.2 · Described in: 8. The canvas surface, Appendix A — The schema's $defs

layout { default … algorithm … } (DISL §10). Its members are the constructs ATD's section names, each with kind the construct's keyword (system, node, edge, variant, group, tool, algorithm, rows, valueType, outline, …), name or names, its own fields and its settings.

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "layout"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "members": {
      "type": "array",
      "items": {
        "description": "A member of the construct, by its `kind`: a construct of its own, or a `setting`, `doc` or `label` member.",
        "type": "object",
        "required": [
          "kind",
          "span"
        ],
        "properties": {
          "kind": {
            "type": "string"
          },
          "span": {
            "$ref": "#/$defs/Span"
          }
        }
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "members"
  ]
}

TableSurface

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

surface table { … } (DESL §7.2 to §7.6). Its members are the constructs ATD's section names, each with kind the construct's keyword (system, node, edge, variant, group, tool, algorithm, rows, valueType, outline, …), name or names, its own fields and its settings.

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "tableSurface"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "members": {
      "type": "array",
      "items": {
        "description": "A member of the construct, by its `kind`: a construct of its own, or a `setting`, `doc` or `label` member.",
        "type": "object",
        "required": [
          "kind",
          "span"
        ],
        "properties": {
          "kind": {
            "type": "string"
          },
          "span": {
            "$ref": "#/$defs/Span"
          }
        }
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "members"
  ]
}

HierarchySurface

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

surface hierarchy { … } (DESL §7.7). Its members are the constructs ATD's section names, each with kind the construct's keyword (system, node, edge, variant, group, tool, algorithm, rows, valueType, outline, …), name or names, its own fields and its settings.

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "hierarchySurface"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "members": {
      "type": "array",
      "items": {
        "description": "A member of the construct, by its `kind`: a construct of its own, or a `setting`, `doc` or `label` member.",
        "type": "object",
        "required": [
          "kind",
          "span"
        ],
        "properties": {
          "kind": {
            "type": "string"
          },
          "span": {
            "$ref": "#/$defs/Span"
          }
        }
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "members"
  ]
}

TextSurface

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

surface text { … } (ATD §10). Its members are the constructs ATD's section names, each with kind the construct's keyword (system, node, edge, variant, group, tool, algorithm, rows, valueType, outline, …), name or names, its own fields and its settings.

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "textSurface"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "members": {
      "type": "array",
      "items": {
        "description": "A member of the construct, by its `kind`: a construct of its own, or a `setting`, `doc` or `label` member.",
        "type": "object",
        "required": [
          "kind",
          "span"
        ],
        "properties": {
          "kind": {
            "type": "string"
          },
          "span": {
            "$ref": "#/$defs/Span"
          }
        }
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "members"
  ]
}

Form

Layer: not listed in Appendix A.2 · Described in: 8. The canvas surface, Appendix A — The schema's $defs

form id "Label" for Types { … } (DISL §7.5).

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "form"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "name": {
      "$ref": "#/$defs/Name"
    },
    "title": {
      "type": "string"
    },
    "for": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/QualifiedName"
      }
    },
    "members": {
      "type": "array",
      "items": {
        "description": "A member of the construct, by its `kind`: a construct of its own, or a `setting`, `doc` or `label` member.",
        "type": "object",
        "required": [
          "kind",
          "span"
        ],
        "properties": {
          "kind": {
            "type": "string"
          },
          "span": {
            "$ref": "#/$defs/Span"
          }
        }
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "name",
    "members"
  ]
}

Viewpoint

Layer: not listed in Appendix A.2 · Described in: 8. The canvas surface, Appendix A — The schema's $defs

viewpoint id "Label" { … } (DISL §3.5).

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "viewpoint"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "name": {
      "$ref": "#/$defs/Name"
    },
    "title": {
      "type": "string"
    },
    "settings": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Setting"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "name"
  ]
}

Binding

Layer: not listed in Appendix A.2 · Described in: 11. Bindings, Appendix A — The schema's $defs

binding name family … { … } (ATD §11).

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "binding"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "name": {
      "$ref": "#/$defs/Name"
    },
    "family": {
      "type": "string"
    },
    "capability": {
      "$ref": "#/$defs/QualifiedName"
    },
    "members": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/BindingMember"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "name",
    "members"
  ]
}

BindingMember

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

A member of a binding: claims, body, text, header, registration, template, block, section, an element or relation rule, or a setting, doc or label member.

{
  "if": {
    "properties": {
      "kind": {
        "const": "rule"
      }
    }
  },
  "then": {
    "$ref": "#/$defs/Rule"
  },
  "else": {
    "description": "A member of the construct, by its `kind`: a construct of its own, or a `setting`, `doc` or `label` member.",
    "type": "object",
    "required": [
      "kind",
      "span"
    ],
    "properties": {
      "kind": {
        "type": "string"
      },
      "span": {
        "$ref": "#/$defs/Span"
      }
    }
  }
}

Rule

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

An element or relation rule (FBL §5.1, §5.4).

{
  "type": "object",
  "properties": {
    "kind": {
      "const": "rule"
    },
    "span": {
      "$ref": "#/$defs/Span"
    },
    "doc": {
      "description": "The documentation of the construct: its `///` comments, joined, and its `doc` member.",
      "type": "string"
    },
    "ruleKind": {
      "enum": [
        "element",
        "relation"
      ]
    },
    "type": {
      "$ref": "#/$defs/TypeRef"
    },
    "as": {
      "$ref": "#/$defs/Name"
    },
    "at": {
      "type": "string"
    },
    "line": {
      "type": "string"
    },
    "members": {
      "type": "array",
      "items": {
        "description": "A member of the construct, by its `kind`: a construct of its own, or a `setting`, `doc` or `label` member.",
        "type": "object",
        "required": [
          "kind",
          "span"
        ],
        "properties": {
          "kind": {
            "type": "string"
          },
          "span": {
            "$ref": "#/$defs/Span"
          }
        }
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "span",
    "ruleKind",
    "type",
    "members"
  ]
}

Finding

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

A finding of the checker, a language server or validation (ATD §15, FR-091).

{
  "type": "object",
  "properties": {
    "code": {
      "type": "string",
      "pattern": "^ATD[0-9]{4}$"
    },
    "severity": {
      "enum": [
        "error",
        "warning",
        "information"
      ]
    },
    "file": {
      "type": "string"
    },
    "line": {
      "type": "integer",
      "minimum": 1
    },
    "column": {
      "type": "integer",
      "minimum": 1
    },
    "endLine": {
      "type": "integer",
      "minimum": 1
    },
    "endColumn": {
      "type": "integer",
      "minimum": 1
    },
    "message": {
      "type": "string"
    },
    "related": {
      "type": "array",
      "items": {
        "description": "Another place the finding concerns.",
        "type": "object",
        "properties": {
          "file": {
            "type": "string"
          },
          "line": {
            "type": "integer",
            "minimum": 1
          },
          "column": {
            "type": "integer",
            "minimum": 1
          },
          "message": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "required": [
          "file",
          "line",
          "column"
        ]
      }
    },
    "fixes": {
      "type": "array",
      "items": {
        "description": "A fix: text edits, in byte offsets, that resolve the finding.",
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "edits": {
            "type": "array",
            "items": {
              "description": "One splice.",
              "type": "object",
              "properties": {
                "file": {
                  "type": "string"
                },
                "start": {
                  "type": "integer",
                  "minimum": 0
                },
                "end": {
                  "type": "integer",
                  "minimum": 0
                },
                "text": {
                  "type": "string"
                }
              },
              "additionalProperties": false,
              "required": [
                "file",
                "start",
                "end",
                "text"
              ]
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "title",
          "edits"
        ]
      }
    },
    "suggestions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 5
    }
  },
  "additionalProperties": false,
  "required": [
    "code",
    "severity",
    "file",
    "line",
    "column",
    "message"
  ]
}

Findings

Layer: not listed in Appendix A.2 · Described in: Cover of ATD 0.1, 15. Findings, Appendix A — The schema's $defs

The findings of one run, in a stable order: by file, then position, then code (ATD §15.4). A refused file of the corpus states those it must give in this form; message is then not compared.

{
  "type": "object",
  "properties": {
    "$schema": {
      "type": "string"
    },
    "tool": {
      "type": "string"
    },
    "findings": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Finding"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "findings"
  ]
}

ParseTables

Layer: not listed in Appendix A.2 · Described in: Cover of ATD 0.1, 4. ATD grammar notation, Changes, Appendix A — The schema's $defs

The LALR(1) automaton of a grammar in ATD grammar notation, normalized so that two implementations can be compared byte for byte (ATD §4.7): terminals by name (an anonymous string terminal is named by its quoted string), the rules of the grammar after the expansion of §4.4 sorted and numbered (a helper of a repetition named (<symbols>)+), and the states numbered breadth first from the start state over the symbols in sorted order, each with its actions on terminals (s<state>, r<rule>, accept) and its gotos on nonterminals.

{
  "type": "object",
  "properties": {
    "$schema": {
      "type": "string"
    },
    "grammar": {
      "type": "string"
    },
    "start": {
      "type": "string"
    },
    "ignore": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "terminals": {
      "type": "array",
      "items": {
        "description": "A terminal.",
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "kind": {
            "enum": [
              "string",
              "pattern"
            ]
          },
          "value": {
            "type": "string"
          },
          "priority": {
            "type": "integer"
          },
          "flags": {
            "description": "The flags of a string terminal, present only when it has one: `i`, matched in any case (ATD §3.6, §4.1).",
            "const": "i"
          }
        },
        "additionalProperties": false,
        "required": [
          "name",
          "kind",
          "value",
          "priority"
        ]
      }
    },
    "rules": {
      "type": "array",
      "items": {
        "description": "A rule.",
        "type": "object",
        "properties": {
          "lhs": {
            "type": "string"
          },
          "rhs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "alias": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "required": [
          "lhs",
          "rhs"
        ]
      }
    },
    "states": {
      "type": "array",
      "items": {
        "description": "A state.",
        "type": "object",
        "properties": {
          "actions": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "pattern": "^(s[0-9]+|r[0-9]+|accept)$"
            }
          },
          "gotos": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "minimum": 0
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "actions",
          "gotos"
        ]
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "grammar",
    "start",
    "terminals",
    "rules",
    "states"
  ]
}

Trace

Layer: not listed in Appendix A.2 · Described in: Cover of ATD 0.1, Appendix A — The schema's $defs

The trace of a tool description (ATD §2.5, data-model.md §10): every item of its companion's gap sections and every behaviour of a host's code, each with the part of the description that states it, the host's concern it is, or the reference behaviour it diverges from.

{
  "type": "object",
  "properties": {
    "$schema": {
      "type": "string"
    },
    "tool": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "companion": {
      "description": "The companion file and the sections whose `###` headings and top-level list items are the items.",
      "type": "object",
      "properties": {
        "file": {
          "type": "string"
        },
        "sections": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "reports": {
          "description": "Further companion files beside `file`, such as a conversion's report, whose findings the items answer; named so that they are read with the trace. Their sections are not counted as items.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false,
      "required": [
        "file",
        "sections"
      ]
    },
    "items": {
      "type": "array",
      "items": {
        "description": "One item of the companion: the part of the description that states it, the host's concern it is, or, while ATD cannot state it yet, the etalii.adp issue that adds what it needs.",
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9-]+/[0-9]+$"
          },
          "text": {
            "type": "string"
          },
          "statedBy": {
            "type": "string"
          },
          "hostConcern": {
            "enum": [
              "rendering",
              "gestures",
              "text-measurement",
              "file-dialogs",
              "opening-links",
              "undo-stack"
            ]
          },
          "reason": {
            "type": "string"
          },
          "open": {
            "description": "The etalii.adp issue, by its address, that adds the construct this item needs; the item is not stated yet (ATD §2.5).",
            "type": "string",
            "pattern": "^https://github\\.com/etalii-adp/etalii\\.adp/issues/[0-9]+$"
          }
        },
        "required": [
          "id",
          "text"
        ],
        "oneOf": [
          {
            "required": [
              "statedBy"
            ],
            "not": {
              "anyOf": [
                {
                  "required": [
                    "hostConcern"
                  ]
                },
                {
                  "required": [
                    "open"
                  ]
                }
              ]
            }
          },
          {
            "required": [
              "hostConcern",
              "reason"
            ],
            "not": {
              "anyOf": [
                {
                  "required": [
                    "statedBy"
                  ]
                },
                {
                  "required": [
                    "open"
                  ]
                }
              ]
            }
          },
          {
            "required": [
              "open",
              "reason"
            ],
            "not": {
              "anyOf": [
                {
                  "required": [
                    "statedBy"
                  ]
                },
                {
                  "required": [
                    "hostConcern"
                  ]
                }
              ]
            }
          }
        ]
      }
    },
    "hostCode": {
      "type": "array",
      "items": {
        "description": "One behaviour read in a host's code at its reference commit.",
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "host": {
            "enum": [
              "standalone",
              "desktop",
              "vscode",
              "intellij",
              "eclipse",
              "notion"
            ]
          },
          "repository": {
            "type": "string"
          },
          "commit": {
            "type": "string",
            "pattern": "^[0-9a-f]{7,40}$"
          },
          "path": {
            "type": "string"
          },
          "lines": {
            "type": "string",
            "pattern": "^[0-9]+(-[0-9]+)?$"
          },
          "behaviour": {
            "type": "string"
          },
          "statedBy": {
            "type": "string"
          },
          "divergesFrom": {
            "type": "string"
          },
          "hostConcern": {
            "enum": [
              "rendering",
              "gestures",
              "text-measurement",
              "file-dialogs",
              "opening-links",
              "undo-stack"
            ]
          },
          "reason": {
            "type": "string"
          },
          "open": {
            "description": "The etalii.adp issue, by its address, that adds the construct this item needs; the item is not stated yet (ATD §2.5).",
            "type": "string",
            "pattern": "^https://github\\.com/etalii-adp/etalii\\.adp/issues/[0-9]+$"
          }
        },
        "required": [
          "host",
          "repository",
          "commit",
          "path",
          "lines",
          "behaviour"
        ],
        "oneOf": [
          {
            "required": [
              "statedBy"
            ],
            "not": {
              "anyOf": [
                {
                  "required": [
                    "divergesFrom"
                  ]
                },
                {
                  "required": [
                    "hostConcern"
                  ]
                },
                {
                  "required": [
                    "open"
                  ]
                }
              ]
            }
          },
          {
            "required": [
              "divergesFrom"
            ],
            "not": {
              "anyOf": [
                {
                  "required": [
                    "statedBy"
                  ]
                },
                {
                  "required": [
                    "hostConcern"
                  ]
                },
                {
                  "required": [
                    "open"
                  ]
                }
              ]
            }
          },
          {
            "required": [
              "hostConcern",
              "reason"
            ],
            "not": {
              "anyOf": [
                {
                  "required": [
                    "statedBy"
                  ]
                },
                {
                  "required": [
                    "divergesFrom"
                  ]
                },
                {
                  "required": [
                    "open"
                  ]
                }
              ]
            }
          },
          {
            "required": [
              "open",
              "reason"
            ],
            "not": {
              "anyOf": [
                {
                  "required": [
                    "statedBy"
                  ]
                },
                {
                  "required": [
                    "divergesFrom"
                  ]
                },
                {
                  "required": [
                    "hostConcern"
                  ]
                }
              ]
            }
          }
        ]
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "tool",
    "description",
    "companion",
    "items",
    "hostCode"
  ]
}

Provenance

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

Who produced one part of a fixture (ATD §2.3).

{
  "type": "object",
  "properties": {
    "host": {
      "enum": [
        "standalone",
        "desktop",
        "vscode",
        "intellij",
        "eclipse",
        "notion"
      ]
    },
    "repository": {
      "type": "string"
    },
    "commit": {
      "type": "string",
      "pattern": "^[0-9a-f]{7,40}$"
    },
    "recordedWith": {
      "type": "string"
    },
    "source": {
      "type": "string"
    }
  },
  "additionalProperties": false,
  "required": [
    "host",
    "repository",
    "commit",
    "source"
  ]
}

ConformanceStep

Layer: not listed in Appendix A.2 · Described in: Changes, Appendix A — The schema's $defs

One gesture of a case and what it must produce (ATD §2.3). Exactly one of action, property, move, create, connect, delete, outside, undo and redo; select before it.

{
  "type": "object",
  "properties": {
    "select": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "action": {
      "type": "string"
    },
    "args": {
      "type": "object"
    },
    "property": {
      "description": "A property set through a form.",
      "type": "object",
      "properties": {
        "element": {
          "type": "string"
        },
        "attribute": {
          "type": "string"
        },
        "value": {}
      },
      "additionalProperties": false,
      "required": [
        "attribute",
        "value"
      ]
    },
    "move": {
      "description": "A move gesture: to a place (`x`, `y`), by a distance from where the element is drawn (`dx`, `dy`), or into a parent before its child at `index`, last when it is -1.",
      "type": "object",
      "properties": {
        "element": {
          "type": "string"
        },
        "x": {
          "type": "number"
        },
        "y": {
          "type": "number"
        },
        "dx": {
          "type": "number"
        },
        "dy": {
          "type": "number"
        },
        "parent": {
          "type": "string"
        },
        "index": {
          "description": "With `parent`: the place among the parent's children as they are before the move, the element itself included; -1, or absent, puts it last.",
          "type": "integer",
          "minimum": -1
        }
      },
      "additionalProperties": false
    },
    "create": {
      "description": "A create gesture.",
      "type": "object",
      "properties": {
        "type": {
          "type": "string"
        },
        "parent": {
          "type": "string"
        },
        "attributes": {
          "type": "object"
        },
        "at": {}
      },
      "additionalProperties": false,
      "required": [
        "type"
      ]
    },
    "connect": {
      "description": "A connect gesture.",
      "type": "object",
      "properties": {
        "type": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "target": {
          "type": "string"
        },
        "attributes": {
          "type": "object"
        }
      },
      "additionalProperties": false,
      "required": [
        "type",
        "source",
        "target"
      ]
    },
    "delete": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "outside": {
      "description": "A file of the case written outside the host, as another program or an agent would, and the host told it changed: the first occurrence of `from` in `file` replaced by `to`.",
      "type": "object",
      "properties": {
        "file": {
          "type": "string"
        },
        "replace": {
          "type": "object",
          "properties": {
            "from": {
              "type": "string"
            },
            "to": {
              "type": "string"
            }
          },
          "additionalProperties": false,
          "required": [
            "from",
            "to"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "file",
        "replace"
      ]
    },
    "undo": {
      "const": true
    },
    "redo": {
      "const": true
    },
    "ids": {
      "description": "The ids the reference host generated in this step, in order, handed to the runtime.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "splices": {
      "type": "array",
      "items": {
        "$ref": "https://etalii.net/adp/fbl/schema/0.1/fbl.schema.json#/$defs/Splice"
      }
    },
    "expect": {
      "type": "string"
    },
    "expectFile": {
      "type": "string"
    },
    "findings": {
      "type": "array",
      "items": {
        "description": "A finding a reading or a step gives: its rule or code and where.",
        "type": "object",
        "properties": {
          "rule": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "severity": {
            "type": "string"
          },
          "element": {
            "type": "string"
          },
          "line": {
            "type": "integer"
          },
          "column": {
            "type": "integer"
          },
          "message": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "drawing": {
      "oneOf": [
        {
          "$ref": "#/$defs/Drawing"
        },
        {
          "description": "A drawing kept in a file beside the fixture.",
          "type": "object",
          "properties": {
            "$ref": {
              "type": "string"
            }
          },
          "additionalProperties": false,
          "required": [
            "$ref"
          ]
        }
      ]
    },
    "refused": {
      "description": "The gesture is refused, with this reason.",
      "type": "object",
      "properties": {
        "reason": {
          "type": "string"
        }
      },
      "additionalProperties": false,
      "required": [
        "reason"
      ]
    },
    "doc": {
      "type": "string"
    }
  },
  "additionalProperties": false
}

ConformanceFixture

Layer: not listed in Appendix A.2 · Described in: Cover of ATD 0.1, Appendix A — The schema's $defs

One conformance case of one tool type (ATD §2.3, data-model.md §8).

{
  "type": "object",
  "properties": {
    "$schema": {
      "type": "string"
    },
    "doc": {
      "type": "string"
    },
    "tool": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "recordedFrom": {
      "description": "The kind of host that recorded the case: `module`, a module that opens its own documents, whose reading and drawing are compared by what they mean; `declared`, the default, a tool drawn from its specification, every part compared exactly (ATD §2.3, §2.4).",
      "enum": [
        "module",
        "declared"
      ]
    },
    "inputs": {
      "description": "The input files of the case by role (`body`, `registration`, …): paths relative to the case's folder, kept byte for byte.",
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "minProperties": 1
    },
    "read": {
      "description": "What reading the inputs yields.",
      "type": "object",
      "properties": {
        "elements": {
          "type": "array",
          "items": {
            "description": "An element.",
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "type": {
                "type": "string"
              },
              "parent": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "attributes": {
                "type": "object"
              }
            },
            "additionalProperties": false,
            "required": [
              "id",
              "type"
            ]
          }
        },
        "relations": {
          "type": "array",
          "items": {
            "description": "A relation.",
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "type": {
                "type": "string"
              },
              "source": {
                "type": "string"
              },
              "target": {
                "type": "string"
              },
              "attributes": {
                "type": "object"
              }
            },
            "additionalProperties": false,
            "required": [
              "id",
              "type",
              "source",
              "target"
            ]
          }
        },
        "findings": {
          "type": "array",
          "items": {
            "description": "A finding a reading or a step gives: its rule or code and where.",
            "type": "object",
            "properties": {
              "rule": {
                "type": "string"
              },
              "code": {
                "type": "string"
              },
              "severity": {
                "type": "string"
              },
              "element": {
                "type": "string"
              },
              "line": {
                "type": "integer"
              },
              "column": {
                "type": "integer"
              },
              "message": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "unreadable": {
          "type": "array",
          "items": {
            "description": "An unreadable part of the body.",
            "type": "object",
            "properties": {
              "line": {
                "type": "integer"
              },
              "reason": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "required": [
              "line"
            ]
          }
        }
      },
      "additionalProperties": false
    },
    "drawing": {
      "oneOf": [
        {
          "$ref": "#/$defs/Drawing"
        },
        {
          "description": "A drawing kept in a file beside the fixture.",
          "type": "object",
          "properties": {
            "$ref": {
              "type": "string"
            }
          },
          "additionalProperties": false,
          "required": [
            "$ref"
          ]
        }
      ]
    },
    "steps": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/ConformanceStep"
      }
    },
    "provenance": {
      "description": "Who produced each part.",
      "type": "object",
      "properties": {
        "bytes": {
          "$ref": "#/$defs/Provenance"
        },
        "reading": {
          "$ref": "#/$defs/Provenance"
        },
        "findings": {
          "$ref": "#/$defs/Provenance"
        },
        "drawing": {
          "$ref": "#/$defs/Provenance"
        }
      },
      "additionalProperties": false,
      "required": [
        "reading"
      ]
    }
  },
  "additionalProperties": false,
  "required": [
    "tool",
    "description",
    "inputs",
    "read",
    "provenance"
  ]
}

Drawing

Layer: not listed in Appendix A.2 · Described in: Cover of ATD 0.1, Appendix A — The schema's $defs

The scene of one view in adp-scene's vocabulary (ATD §2.4, data-model.md §9). Two drawings are equal when their elements and edges are equal as sets keyed by id and their order lists are equal.

{
  "type": "object",
  "properties": {
    "$schema": {
      "type": "string"
    },
    "view": {
      "type": "string"
    },
    "elements": {
      "type": "array",
      "items": {
        "description": "A drawn element.",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "shape": {
            "type": "string"
          },
          "bounds": {
            "description": "A box in the canvas's domain units, rounded to 0.01.",
            "type": "object",
            "properties": {
              "x": {
                "type": "number"
              },
              "y": {
                "type": "number"
              },
              "w": {
                "type": "number"
              },
              "h": {
                "type": "number"
              }
            },
            "additionalProperties": false,
            "required": [
              "x",
              "y",
              "w",
              "h"
            ]
          },
          "labels": {
            "type": "array",
            "items": {
              "description": "A label as drawn.",
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "text": {
                  "type": "string"
                },
                "font": {
                  "type": "string"
                },
                "position": {
                  "description": "A point in the canvas's domain units, rounded to 0.01.",
                  "type": "object",
                  "properties": {
                    "x": {
                      "type": "number"
                    },
                    "y": {
                      "type": "number"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "x",
                    "y"
                  ]
                }
              },
              "additionalProperties": false,
              "required": [
                "text"
              ]
            }
          },
          "style": {
            "description": "The resolved style: paints as colours, with the token names they came from.",
            "type": "object",
            "properties": {
              "fill": {
                "type": "string"
              },
              "stroke": {
                "type": "string"
              },
              "strokeWidth": {
                "type": "number"
              },
              "dash": {
                "type": "array",
                "items": {
                  "type": "number"
                }
              },
              "tokens": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "opacity": {
                "type": "number"
              }
            },
            "additionalProperties": false
          },
          "children": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "state": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "type",
          "shape",
          "bounds"
        ]
      }
    },
    "edges": {
      "type": "array",
      "items": {
        "description": "A drawn edge.",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "target": {
            "type": "string"
          },
          "route": {
            "type": "array",
            "items": {
              "description": "A point in the canvas's domain units, rounded to 0.01.",
              "type": "object",
              "properties": {
                "x": {
                  "type": "number"
                },
                "y": {
                  "type": "number"
                }
              },
              "additionalProperties": false,
              "required": [
                "x",
                "y"
              ]
            }
          },
          "markers": {
            "description": "End decorations.",
            "type": "object",
            "properties": {
              "source": {
                "type": "string"
              },
              "target": {
                "type": "string"
              },
              "mid": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "additionalProperties": false
          },
          "labels": {
            "type": "array",
            "items": {
              "description": "A label as drawn.",
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "text": {
                  "type": "string"
                },
                "font": {
                  "type": "string"
                },
                "position": {
                  "description": "A point in the canvas's domain units, rounded to 0.01.",
                  "type": "object",
                  "properties": {
                    "x": {
                      "type": "number"
                    },
                    "y": {
                      "type": "number"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "x",
                    "y"
                  ]
                }
              },
              "additionalProperties": false,
              "required": [
                "text"
              ]
            }
          },
          "style": {
            "description": "The resolved style: paints as colours, with the token names they came from.",
            "type": "object",
            "properties": {
              "fill": {
                "type": "string"
              },
              "stroke": {
                "type": "string"
              },
              "strokeWidth": {
                "type": "number"
              },
              "dash": {
                "type": "array",
                "items": {
                  "type": "number"
                }
              },
              "tokens": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "opacity": {
                "type": "number"
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "type",
          "source",
          "target",
          "route"
        ]
      }
    },
    "chrome": {
      "type": "array",
      "items": {
        "description": "Bands, notices and legends.",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "kind": {
            "enum": [
              "band",
              "notice",
              "legend",
              "header",
              "ruler"
            ]
          },
          "bounds": {
            "description": "A box in the canvas's domain units, rounded to 0.01.",
            "type": "object",
            "properties": {
              "x": {
                "type": "number"
              },
              "y": {
                "type": "number"
              },
              "w": {
                "type": "number"
              },
              "h": {
                "type": "number"
              }
            },
            "additionalProperties": false,
            "required": [
              "x",
              "y",
              "w",
              "h"
            ]
          },
          "text": {
            "type": "string"
          },
          "style": {
            "description": "The resolved style: paints as colours, with the token names they came from.",
            "type": "object",
            "properties": {
              "fill": {
                "type": "string"
              },
              "stroke": {
                "type": "string"
              },
              "strokeWidth": {
                "type": "number"
              },
              "dash": {
                "type": "array",
                "items": {
                  "type": "number"
                }
              },
              "tokens": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "opacity": {
                "type": "number"
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false,
        "required": [
          "kind"
        ]
      }
    },
    "order": {
      "description": "The ids of elements, edges and chrome in drawing order (z-order).",
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "elements",
    "edges",
    "order"
  ]
}

Capability

Layer: not listed in Appendix A.2 · Described in: Cover of ATD 0.1, Appendix A — The schema's $defs

The contract of a capability (ATD §2.6, §13, data-model.md §7).

{
  "type": "object",
  "properties": {
    "$schema": {
      "type": "string"
    },
    "name": {
      "type": "string",
      "pattern": "^(layout|routing|reader|analysis|arrange|render)\\.[A-Za-z][A-Za-z0-9]*$"
    },
    "version": {
      "type": "string",
      "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$"
    },
    "extensionPoint": {
      "enum": [
        "layout",
        "routing",
        "reader",
        "analysis",
        "arrange",
        "render"
      ]
    },
    "doc": {
      "type": "string"
    },
    "input": {
      "description": "A reference to the `$defs` entry of the input.",
      "type": "object",
      "properties": {
        "$ref": {
          "type": "string"
        }
      },
      "additionalProperties": false,
      "required": [
        "$ref"
      ]
    },
    "args": {
      "type": "object",
      "additionalProperties": {
        "description": "An argument of a capability.",
        "type": "object",
        "properties": {
          "type": {
            "enum": [
              "number",
              "integer",
              "boolean",
              "string",
              "enum",
              "query",
              "list",
              "map"
            ]
          },
          "values": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "default": {},
          "doc": {
            "type": "string"
          },
          "required": {
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "required": [
          "type"
        ]
      }
    },
    "output": {
      "description": "A reference to the `$defs` entry of the output.",
      "type": "object",
      "properties": {
        "$ref": {
          "type": "string"
        }
      },
      "additionalProperties": false,
      "required": [
        "$ref"
      ]
    },
    "laws": {
      "type": "array",
      "items": {
        "enum": [
          "deterministic",
          "pinnedStay",
          "stable",
          "readingNeverFails",
          "minimalSplices",
          "pure"
        ]
      }
    },
    "exceptions": {
      "type": "array",
      "items": {
        "description": "An exception to ATD §12's determinism, stated in the contract (ATD §13.5).",
        "type": "object",
        "properties": {
          "reads": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "required": [
          "reads",
          "reason"
        ]
      }
    },
    "fallback": {
      "type": [
        "string",
        "null"
      ]
    },
    "status": {
      "enum": [
        "provisional",
        "standard",
        "deprecated"
      ]
    }
  },
  "additionalProperties": false,
  "required": [
    "name",
    "version",
    "extensionPoint",
    "input",
    "output",
    "laws",
    "status"
  ]
}

CapabilityFixture

Layer: not listed in Appendix A.2 · Described in: 2. Conformance, Appendix A — The schema's $defs

One fixture of a capability: an input, the arguments and the expected output (ATD §2.6).

{
  "type": "object",
  "properties": {
    "$schema": {
      "type": "string"
    },
    "doc": {
      "type": "string"
    },
    "input": {},
    "args": {
      "type": "object"
    },
    "output": {}
  },
  "additionalProperties": false,
  "required": [
    "input",
    "args",
    "output"
  ]
}

LayoutInput

Layer: not listed in Appendix A.2 · Described in: 13. Capabilities, Appendix A — The schema's $defs

The input of a layout capability: the nodes with their sizes and pins, the edges and the containment, in the canvas's domain units.

{
  "type": "object",
  "properties": {
    "nodes": {
      "type": "array",
      "items": {
        "description": "A node.",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "width": {
            "type": "number"
          },
          "height": {
            "type": "number"
          },
          "parent": {
            "type": [
              "string",
              "null"
            ]
          },
          "order": {
            "type": "integer"
          },
          "pinned": {
            "description": "A point in the canvas's domain units, rounded to 0.01.",
            "type": "object",
            "properties": {
              "x": {
                "type": "number"
              },
              "y": {
                "type": "number"
              }
            },
            "additionalProperties": false,
            "required": [
              "x",
              "y"
            ]
          },
          "position": {
            "description": "Where the node is now: its top-left corner in the canvas's domain units, rounded to 0.01, for a layout that reads it without holding the node to it.",
            "type": "object",
            "properties": {
              "x": {
                "type": "number"
              },
              "y": {
                "type": "number"
              }
            },
            "additionalProperties": false,
            "required": [
              "x",
              "y"
            ]
          },
          "attributes": {
            "type": "object",
            "description": "What the layout's arguments read of the node, by argument."
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "width",
          "height"
        ]
      }
    },
    "edges": {
      "type": "array",
      "items": {
        "description": "An edge.",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "target": {
            "type": "string"
          },
          "attributes": {
            "description": "What the layout's arguments read of the edge, by argument.",
            "type": "object"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "source",
          "target"
        ]
      }
    },
    "roots": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "nodes",
    "edges"
  ]
}

LayoutResult

Layer: not listed in Appendix A.2 · Described in: 13. Capabilities, Appendix A — The schema's $defs

The output of a layout capability: a position for every node it places, in the canvas's domain units, rounded to 0.01, optionally the size it gives a node it resizes, optionally route points, and optionally named numbers per node or edge that CEL reads as layout.value(e, name) (ATD §8.8).

{
  "type": "object",
  "properties": {
    "positions": {
      "type": "object",
      "additionalProperties": {
        "description": "A point in the canvas's domain units, rounded to 0.01.",
        "type": "object",
        "properties": {
          "x": {
            "type": "number"
          },
          "y": {
            "type": "number"
          }
        },
        "additionalProperties": false,
        "required": [
          "x",
          "y"
        ]
      }
    },
    "sizes": {
      "type": "object",
      "additionalProperties": {
        "description": "The size a layout gives a node, in the canvas's domain units, rounded to 0.01: its width, its height, or both.",
        "type": "object",
        "properties": {
          "width": {
            "type": "number"
          },
          "height": {
            "type": "number"
          }
        },
        "additionalProperties": false,
        "minProperties": 1
      }
    },
    "routes": {
      "type": "object",
      "additionalProperties": {
        "type": "array",
        "items": {
          "description": "A point in the canvas's domain units, rounded to 0.01.",
          "type": "object",
          "properties": {
            "x": {
              "type": "number"
            },
            "y": {
              "type": "number"
            }
          },
          "additionalProperties": false,
          "required": [
            "x",
            "y"
          ]
        }
      }
    },
    "values": {
      "description": "Named numbers by node or edge id, as the capability's contract names them.",
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "additionalProperties": {
          "type": "number"
        }
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "positions"
  ]
}

RoutingInput

Layer: not listed in Appendix A.2 · Described in: 13. Capabilities, Appendix A — The schema's $defs

The input of a routing capability: each edge with the boxes of its two ends, and the boxes it must keep clear of, in the canvas's domain units.

{
  "type": "object",
  "properties": {
    "edges": {
      "type": "array",
      "items": {
        "description": "An edge to route.",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "source": {
            "description": "The box of the edge's source: its top-left corner and size, rounded to 0.01.",
            "type": "object",
            "properties": {
              "x": {
                "type": "number"
              },
              "y": {
                "type": "number"
              },
              "width": {
                "type": "number"
              },
              "height": {
                "type": "number"
              }
            },
            "additionalProperties": false,
            "required": [
              "x",
              "y",
              "width",
              "height"
            ]
          },
          "target": {
            "description": "The box of the edge's target: its top-left corner and size, rounded to 0.01.",
            "type": "object",
            "properties": {
              "x": {
                "type": "number"
              },
              "y": {
                "type": "number"
              },
              "width": {
                "type": "number"
              },
              "height": {
                "type": "number"
              }
            },
            "additionalProperties": false,
            "required": [
              "x",
              "y",
              "width",
              "height"
            ]
          },
          "from": {
            "description": "Where the edge leaves its source, where the notation fixes it, rounded to 0.01.",
            "type": "object",
            "properties": {
              "x": {
                "type": "number"
              },
              "y": {
                "type": "number"
              }
            },
            "additionalProperties": false,
            "required": [
              "x",
              "y"
            ]
          },
          "to": {
            "description": "Where the edge reaches its target, where the notation fixes it, rounded to 0.01.",
            "type": "object",
            "properties": {
              "x": {
                "type": "number"
              },
              "y": {
                "type": "number"
              }
            },
            "additionalProperties": false,
            "required": [
              "x",
              "y"
            ]
          },
          "attributes": {
            "description": "What the routing's arguments read of the edge, by argument.",
            "type": "object"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "source",
          "target"
        ]
      }
    },
    "obstacles": {
      "type": "array",
      "items": {
        "description": "A box the routes keep clear of: its top-left corner and size, rounded to 0.01.",
        "type": "object",
        "properties": {
          "x": {
            "type": "number"
          },
          "y": {
            "type": "number"
          },
          "width": {
            "type": "number"
          },
          "height": {
            "type": "number"
          }
        },
        "additionalProperties": false,
        "required": [
          "x",
          "y",
          "width",
          "height"
        ]
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "edges"
  ]
}

RoutingResult

Layer: not listed in Appendix A.2 · Described in: 13. Capabilities, Appendix A — The schema's $defs

The output of a routing capability: the route of every edge it routes, by edge id, as path commands from the edge's first point to its last.

{
  "type": "object",
  "properties": {
    "routes": {
      "type": "object",
      "additionalProperties": {
        "type": "array",
        "items": {
          "description": "One command of a route, as a path draws it: its operation and its points, control points first and the point it ends at last (one for `move` and `line`, two for `quad`, three for `cubic`).",
          "type": "object",
          "properties": {
            "op": {
              "enum": [
                "move",
                "line",
                "quad",
                "cubic"
              ]
            },
            "points": {
              "type": "array",
              "items": {
                "description": "A point in the canvas's domain units, rounded to 0.01.",
                "type": "object",
                "properties": {
                  "x": {
                    "type": "number"
                  },
                  "y": {
                    "type": "number"
                  }
                },
                "additionalProperties": false,
                "required": [
                  "x",
                  "y"
                ]
              },
              "minItems": 1,
              "maxItems": 3
            }
          },
          "additionalProperties": false,
          "required": [
            "op",
            "points"
          ]
        },
        "minItems": 2
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "routes"
  ]
}

ReaderInput

Layer: not listed in Appendix A.2 · Described in: 13. Capabilities, Appendix A — The schema's $defs

The input of a reader capability: the body's bytes as text, and the edit to plan when one is asked (FBL §11.2).

{
  "type": "object",
  "properties": {
    "body": {
      "type": "string"
    },
    "files": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    },
    "edit": {
      "type": "object"
    }
  },
  "additionalProperties": false,
  "required": [
    "body"
  ]
}

ReaderResult

Layer: not listed in Appendix A.2 · Described in: 13. Capabilities, Appendix A — The schema's $defs

The output of a reader capability: what FBL §11.2's read returns, or the splices of a planned edit.

{
  "type": "object",
  "properties": {
    "elements": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "relations": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "findings": {
      "type": "array",
      "items": {
        "description": "A finding a reading or a step gives: its rule or code and where.",
        "type": "object",
        "properties": {
          "rule": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "severity": {
            "type": "string"
          },
          "element": {
            "type": "string"
          },
          "line": {
            "type": "integer"
          },
          "column": {
            "type": "integer"
          },
          "message": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "splices": {
      "type": "array",
      "items": {
        "$ref": "https://etalii.net/adp/fbl/schema/0.1/fbl.schema.json#/$defs/Splice"
      }
    }
  },
  "additionalProperties": false
}

RenderInput

Layer: not listed in Appendix A.2 · Described in: 13. Capabilities, Appendix A — The schema's $defs

The input of a render capability: a value to render.

{
  "type": "object",
  "properties": {
    "value": {},
    "format": {
      "type": "string"
    }
  },
  "additionalProperties": false,
  "required": [
    "value"
  ]
}

RenderResult

Layer: not listed in Appendix A.2 · Described in: 13. Capabilities, Appendix A — The schema's $defs

The output of a render capability: text runs or a drawing.

{
  "type": "object",
  "properties": {
    "runs": {
      "type": "array",
      "items": {
        "description": "A run of text with its style.",
        "type": "object",
        "properties": {
          "text": {
            "type": "string"
          },
          "style": {
            "type": "object"
          },
          "block": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "required": [
          "text"
        ]
      }
    },
    "drawing": {
      "$ref": "#/$defs/Drawing"
    }
  },
  "additionalProperties": false
}

AnalysisInput

Layer: not listed in Appendix A.2 · Described in: 13. Capabilities, Appendix A — The schema's $defs

The input of an analysis or arrange capability: a model or part of one.

{
  "type": "object",
  "properties": {
    "elements": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "relations": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "selection": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "elements"
  ]
}

AnalysisResult

Layer: not listed in Appendix A.2 · Described in: 13. Capabilities, Appendix A — The schema's $defs

The output of an analysis capability: derived elements or relations and findings; of an arrange capability: actions.

{
  "type": "object",
  "properties": {
    "elements": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "relations": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "findings": {
      "type": "array",
      "items": {
        "description": "A finding a reading or a step gives: its rule or code and where.",
        "type": "object",
        "properties": {
          "rule": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "severity": {
            "type": "string"
          },
          "element": {
            "type": "string"
          },
          "line": {
            "type": "integer"
          },
          "column": {
            "type": "integer"
          },
          "message": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "actions": {
      "type": "array",
      "items": {
        "type": "object"
      }
    }
  },
  "additionalProperties": false
}

Walk

Layer: not listed in Appendix A.2 · Described in: 19. Complete examples, Appendix A — The schema's $defs

The 30-edit walk of SC-005 (ATD §19): steps over the examples, each a request at a position or an edit, with its expected result.

{
  "type": "object",
  "properties": {
    "$schema": {
      "type": "string"
    },
    "doc": {
      "type": "string"
    },
    "files": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "steps": {
      "type": "array",
      "items": {
        "description": "One step.",
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "file": {
            "type": "string"
          },
          "line": {
            "type": "integer",
            "minimum": 1
          },
          "column": {
            "type": "integer",
            "minimum": 1
          },
          "utf16": {
            "type": "integer",
            "minimum": 0
          },
          "request": {
            "enum": [
              "completion",
              "hover",
              "rename",
              "format",
              "definition",
              "references",
              "diagnostics",
              "edit"
            ]
          },
          "edit": {
            "description": "Text replacing a range, in lines and columns.",
            "type": "object",
            "properties": {
              "endLine": {
                "type": "integer"
              },
              "endColumn": {
                "type": "integer"
              },
              "text": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "required": [
              "text"
            ]
          },
          "newName": {
            "type": "string"
          },
          "expect": {
            "type": "object"
          },
          "scenario": {
            "type": "integer"
          },
          "doc": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "file",
          "request",
          "expect"
        ]
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "files",
    "steps"
  ]
}

SettingsSchemas

Layer: not listed in Appendix A.2 · Described in: Appendix A — The schema's $defs

The $defs of DISL, DESL and FBL that the settings of ATD's constructs are checked against (ATD §14.6), by reference; each construct's entry is listed in ATD's Appendix A.

{
  "type": "object",
  "properties": {
    "Stroke": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/Stroke"
    },
    "Font": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/Font"
    },
    "LayoutConfig": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/LayoutConfig"
    },
    "TextDefaults": {
      "$ref": "https://etalii.net/adp/fbl/schema/0.1/fbl.schema.json#/$defs/TextDefaults"
    },
    "Style": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/Style"
    },
    "Theme": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/Theme"
    },
    "Attribute": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/Attribute"
    },
    "DeslAttribute": {
      "$ref": "https://etalii.net/adp/desl/schema/0.1/desl.schema.json#/$defs/Attribute"
    },
    "Claims": {
      "$ref": "https://etalii.net/adp/fbl/schema/0.1/fbl.schema.json#/$defs/Claims"
    },
    "Body": {
      "$ref": "https://etalii.net/adp/fbl/schema/0.1/fbl.schema.json#/$defs/Body"
    },
    "Header": {
      "$ref": "https://etalii.net/adp/fbl/schema/0.1/fbl.schema.json#/$defs/Header"
    },
    "Insert": {
      "$ref": "https://etalii.net/adp/fbl/schema/0.1/fbl.schema.json#/$defs/Insert"
    },
    "Remove": {
      "$ref": "https://etalii.net/adp/fbl/schema/0.1/fbl.schema.json#/$defs/Remove"
    },
    "AttributeBinding": {
      "$ref": "https://etalii.net/adp/fbl/schema/0.1/fbl.schema.json#/$defs/AttributeBinding"
    },
    "RegistrationSettings": {
      "$ref": "https://etalii.net/adp/fbl/schema/0.1/fbl.schema.json#/$defs/RegistrationSettings"
    },
    "Template": {
      "$ref": "https://etalii.net/adp/fbl/schema/0.1/fbl.schema.json#/$defs/Template"
    },
    "Persistence": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/Persistence"
    },
    "DeslPersistence": {
      "$ref": "https://etalii.net/adp/desl/schema/0.1/desl.schema.json#/$defs/Persistence"
    },
    "Behavior": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/Behavior"
    },
    "Language": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/Language"
    },
    "NodeNotation": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/NodeNotation"
    },
    "EdgeNotation": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/EdgeNotation"
    },
    "Tool": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/Tool"
    },
    "ToolGroup": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/ToolGroup"
    },
    "ContextTool": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/ContextTool"
    },
    "ContextToolSet": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/ContextToolSet"
    },
    "Form": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/Form"
    },
    "FormItem": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/FormItem"
    },
    "Canvas": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/Canvas"
    },
    "CoordinateSystem": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/CoordinateSystem"
    },
    "Axis": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/Axis"
    },
    "Snapping": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/Snapping"
    },
    "Constraint": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/Constraint"
    },
    "BuiltInSetting": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/BuiltInSetting"
    },
    "Operation": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/Operation"
    },
    "Hook": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/Hook"
    },
    "Viewpoint": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/Viewpoint"
    },
    "Plugin": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/Plugin"
    },
    "Table": {
      "$ref": "https://etalii.net/adp/desl/schema/0.1/desl.schema.json#/$defs/Table"
    },
    "Hierarchy": {
      "$ref": "https://etalii.net/adp/desl/schema/0.1/desl.schema.json#/$defs/Hierarchy"
    },
    "ValueType": {
      "$ref": "https://etalii.net/adp/desl/schema/0.1/desl.schema.json#/$defs/ValueType"
    },
    "Label": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/Label"
    },
    "ShapeDef": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/ShapeDef"
    },
    "MarkerDef": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/MarkerDef"
    },
    "IconDef": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/IconDef"
    },
    "LineSpec": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/LineSpec"
    },
    "Compartment": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/Compartment"
    },
    "Badge": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/Badge"
    },
    "PortNotation": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/PortNotation"
    },
    "PortType": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/PortType"
    },
    "RelationType": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/RelationType"
    },
    "NodeType": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/NodeType"
    },
    "Enum": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/Enum"
    },
    "EnumValue": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/EnumValue"
    },
    "DataType": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/DataType"
    },
    "Containment": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/Containment"
    },
    "Confirmation": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/Confirmation"
    },
    "QuickFix": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/QuickFix"
    },
    "ElementRule": {
      "$ref": "https://etalii.net/adp/fbl/schema/0.1/fbl.schema.json#/$defs/ElementRule"
    },
    "RelationRule": {
      "$ref": "https://etalii.net/adp/fbl/schema/0.1/fbl.schema.json#/$defs/RelationRule"
    },
    "BlockRule": {
      "$ref": "https://etalii.net/adp/fbl/schema/0.1/fbl.schema.json#/$defs/BlockRule"
    },
    "SectionRule": {
      "$ref": "https://etalii.net/adp/fbl/schema/0.1/fbl.schema.json#/$defs/SectionRule"
    },
    "IdBinding": {
      "$ref": "https://etalii.net/adp/fbl/schema/0.1/fbl.schema.json#/$defs/IdBinding"
    },
    "Binding": {
      "$ref": "https://etalii.net/adp/fbl/schema/0.1/fbl.schema.json#/$defs/Binding"
    },
    "Template_": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/Template"
    },
    "Import": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/Import"
    },
    "Doc": {
      "$ref": "https://etalii.net/adp/disl/schema/0.2/disl.schema.json#/$defs/Doc"
    }
  },
  "additionalProperties": false
}