AzeMark 2 · AzeForge 0.6.3

Directive reference.

All 26 registered directives below come from buildGrammarDocument() in AzeForge 0.6.3. The generated body contracts include nested records, required fields, enums, and ceilings.

Normative data. Download grammar.json for machine use. This page renders the same document.

Directive index

equation · derivation · callout · mermaid · tex · table · plot · chart · geometry · formula · reaction · structure · circuit · timing · diagram · sequence · state · entity · class · control · free-body · figure · bibliography · algorithm · statement · example

equation

Equation · plugin 2.0.0 · body scalar-lines

Header fields

FieldTypePresenceValues
ididentifieroptional
numberbooleanoptional
alignenumoptionalleft, center, right
syntaxenumoptionalreadable, latex

Limits

{
  "maxSourceChars": 4000,
  "maxTexChars": 4000
}
Complete generated body contract
{
  "form": "scalar-lines",
  "fields": [
    {
      "key": "expression",
      "valueType": "expression",
      "required": true
    }
  ],
  "schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "azeforge.equation/grammar/v1",
    "type": "object",
    "additionalProperties": false,
    "required": [
      "expression"
    ],
    "properties": {
      "expression": {
        "type": "string"
      }
    }
  }
}

derivation

Derivation · plugin 1.0.0 · body scalar-lines

Header fields

FieldTypePresenceValues
ididentifieroptional
numberbooleanoptional
alignenumoptionalleft, center, right

Limits

{
  "maxSourceChars": 4000,
  "maxTexChars": 4000
}
Complete generated body contract
{
  "form": "scalar-lines",
  "fields": [],
  "records": [
    {
      "kind": "expression",
      "fields": [
        {
          "key": "expression",
          "valueType": "expression",
          "required": true
        },
        {
          "key": "annotation",
          "valueType": "prose",
          "required": false
        }
      ]
    }
  ],
  "schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "azeforge.derivation/grammar/v1",
    "type": "array",
    "items": {
      "oneOf": [
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "expression"
          ],
          "properties": {
            "expression": {
              "type": "string"
            },
            "annotation": {
              "type": "string"
            }
          }
        }
      ]
    }
  }
}

callout

Callout · plugin 1.0.0 · body keyed-sections

Header fields

FieldTypePresenceValues
ididentifieroptional
variantenumoptionalnote, tip, important, warning, caution
titleproseoptional

Limits

No directive-specific limits are published.

Complete generated body contract
{
  "form": "keyed-sections",
  "fields": [
    {
      "key": "children",
      "valueType": "record-list",
      "required": false
    }
  ],
  "schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "azeforge.callout/grammar/v1",
    "type": "object",
    "additionalProperties": false,
    "required": [],
    "properties": {
      "children": {
        "type": "array"
      }
    }
  }
}

mermaid

Mermaid · plugin 1.0.0 · body scalar-lines

Header fields

FieldTypePresenceValues
ididentifieroptional
titletextoptional
descriptiontextoptional

Limits

{
  "maxSourceChars": 8000,
  "maxTextChars": 8000
}
Complete generated body contract
{
  "form": "scalar-lines",
  "fields": [
    {
      "key": "source",
      "valueType": "text",
      "required": true
    },
    {
      "key": "diagramType",
      "valueType": "enum",
      "required": false,
      "values": [
        "flowchart",
        "graph",
        "sequencediagram",
        "classdiagram",
        "statediagram",
        "statediagram-v2",
        "erdiagram",
        "pie",
        "gantt",
        "journey",
        "mindmap"
      ]
    }
  ],
  "schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "azeforge.mermaid/grammar/v1",
    "type": "object",
    "additionalProperties": false,
    "required": [
      "source"
    ],
    "properties": {
      "source": {
        "type": "string"
      },
      "diagramType": {
        "type": "string",
        "enum": [
          "flowchart",
          "graph",
          "sequencediagram",
          "classdiagram",
          "statediagram",
          "statediagram-v2",
          "erdiagram",
          "pie",
          "gantt",
          "journey",
          "mindmap"
        ]
      }
    }
  }
}

tex

Curated TeX figure · plugin 1.0.0 · body scalar-lines

Header fields

FieldTypePresenceValues
ididentifieroptional
titletextrequired
descriptiontextrequired
profileenumrequiredcircuitikz, tikz, pgfplots, chemfig, tikz-cd

Limits

{
  "maxSourceChars": 50000
}
Complete generated body contract
{
  "form": "scalar-lines",
  "fields": [
    {
      "key": "body",
      "valueType": "text",
      "required": true
    }
  ],
  "schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "azeforge.tex/grammar/v1",
    "type": "object",
    "additionalProperties": false,
    "required": [
      "body"
    ],
    "properties": {
      "body": {
        "type": "string"
      }
    }
  }
}

table

Typed Table · plugin 2.0.0 · body keyed-sections

Header fields

FieldTypePresenceValues
ididentifieroptional
numberbooleanoptional
captionproseoptional

Limits

{
  "maxColumns": 64,
  "maxRows": 1000,
  "maxGroups": 16,
  "maxTextCellChars": 500,
  "maxMathCellChars": 4000
}
Complete generated body contract
{
  "form": "keyed-sections",
  "fields": [
    {
      "key": "columns",
      "valueType": "record-list",
      "required": true
    },
    {
      "key": "groups",
      "valueType": "record-list",
      "required": false
    },
    {
      "key": "rows",
      "valueType": "record-list",
      "required": false
    }
  ],
  "groups": [
    {
      "of": "columns",
      "fields": [
        {
          "key": "key",
          "valueType": "identifier",
          "required": true
        },
        {
          "key": "name",
          "valueType": "text",
          "required": false
        },
        {
          "key": "type",
          "valueType": "enum",
          "required": true,
          "values": [
            "prose",
            "text",
            "integer",
            "decimal",
            "quantity",
            "boolean",
            "math"
          ]
        },
        {
          "key": "unit",
          "valueType": "text",
          "required": false
        },
        {
          "key": "align",
          "valueType": "enum",
          "required": false,
          "values": [
            "left",
            "center",
            "right"
          ]
        }
      ]
    },
    {
      "of": "groups",
      "fields": [
        {
          "key": "name",
          "valueType": "text",
          "required": true
        },
        {
          "key": "columns",
          "valueType": "string-list",
          "required": true
        }
      ]
    }
  ],
  "schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "azeforge.table/grammar/v1",
    "type": "object",
    "additionalProperties": false,
    "required": [
      "columns"
    ],
    "properties": {
      "columns": {
        "type": "array"
      },
      "groups": {
        "type": "array"
      },
      "rows": {
        "type": "array"
      }
    }
  }
}

plot

Plot · plugin 1.0.0 · body record-list

Header fields

FieldTypePresenceValues
ididentifieroptional
numberbooleanoptional
widthintegeroptional
heightintegeroptional
legendbooleanoptional
gridbooleanoptional
parametersrecordoptional
x-axisrecordoptional
y-axisrecordoptional

Limits

{
  "maxSeries": 16,
  "maxPointsPerSeries": 5000,
  "maxSamples": 10000,
  "maxParameters": 64,
  "maxLabelChars": 500
}
Complete generated body contract
{
  "form": "record-list",
  "recordOpener": "-",
  "records": [
    {
      "kind": "function",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "variable",
          "valueType": "identifier",
          "required": false
        },
        {
          "key": "expression",
          "valueType": "expression",
          "required": true
        },
        {
          "key": "domain",
          "valueType": "record",
          "required": true
        },
        {
          "key": "samples",
          "valueType": "integer",
          "required": false
        }
      ],
      "groups": [
        {
          "of": "domain",
          "fields": [
            {
              "key": "min",
              "valueType": "decimal",
              "required": true
            },
            {
              "key": "max",
              "valueType": "decimal",
              "required": true
            }
          ]
        }
      ]
    },
    {
      "kind": "line",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "points",
          "valueType": "point-list",
          "required": true
        }
      ],
      "groups": [
        {
          "of": "points",
          "fields": [
            {
              "key": "x",
              "valueType": "decimal",
              "required": true
            },
            {
              "key": "y",
              "valueType": "decimal",
              "required": true
            },
            {
              "key": "error",
              "valueType": "decimal",
              "required": false
            },
            {
              "key": "error-low",
              "valueType": "decimal",
              "required": false
            },
            {
              "key": "error-high",
              "valueType": "decimal",
              "required": false
            }
          ]
        }
      ]
    },
    {
      "kind": "scatter",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "points",
          "valueType": "point-list",
          "required": true
        }
      ],
      "groups": [
        {
          "of": "points",
          "fields": [
            {
              "key": "x",
              "valueType": "decimal",
              "required": true
            },
            {
              "key": "y",
              "valueType": "decimal",
              "required": true
            },
            {
              "key": "error",
              "valueType": "decimal",
              "required": false
            },
            {
              "key": "error-low",
              "valueType": "decimal",
              "required": false
            },
            {
              "key": "error-high",
              "valueType": "decimal",
              "required": false
            }
          ]
        }
      ]
    }
  ],
  "schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "azeforge.plot/grammar/v1",
    "type": "array",
    "items": {
      "oneOf": [
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "expression",
            "domain"
          ],
          "properties": {
            "kind": {
              "const": "function"
            },
            "label": {
              "type": "string"
            },
            "variable": {
              "type": "string"
            },
            "expression": {
              "type": "string"
            },
            "domain": {
              "type": "object"
            },
            "samples": {
              "type": [
                "string",
                "integer"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "points"
          ],
          "properties": {
            "kind": {
              "const": "line"
            },
            "label": {
              "type": "string"
            },
            "points": {
              "type": "array",
              "items": {
                "type": "object"
              }
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "points"
          ],
          "properties": {
            "kind": {
              "const": "scatter"
            },
            "label": {
              "type": "string"
            },
            "points": {
              "type": "array",
              "items": {
                "type": "object"
              }
            }
          }
        }
      ]
    }
  }
}

chart

Chart · plugin 1.0.0 · body record-list

Header fields

FieldTypePresenceValues
ididentifieroptional
numberbooleanoptional
typeenumrequiredbar, grouped-bar, stacked-bar, histogram
widthintegeroptional
heightintegeroptional
legendbooleanoptional
gridbooleanoptional
x-labeltextoptional
y-labeltextoptional
y-mindecimaloptional
y-maxdecimaloptional

Limits

{
  "maxSeries": 16,
  "maxHistogramValues": 10000,
  "maxBins": 256,
  "maxBarCategories": 256,
  "maxLabelChars": 500
}
Complete generated body contract
{
  "form": "record-list",
  "recordOpener": "-",
  "records": [
    {
      "kind": "bars",
      "fields": [
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "bars",
          "valueType": "record-list",
          "required": true
        },
        {
          "key": "min",
          "valueType": "decimal",
          "required": false
        },
        {
          "key": "max",
          "valueType": "decimal",
          "required": false
        }
      ],
      "groups": [
        {
          "of": "bars",
          "fields": [
            {
              "key": "category",
              "valueType": "text",
              "required": true
            },
            {
              "key": "value",
              "valueType": "decimal",
              "required": true
            },
            {
              "key": "error",
              "valueType": "decimal",
              "required": false
            },
            {
              "key": "error-low",
              "valueType": "decimal",
              "required": false
            },
            {
              "key": "error-high",
              "valueType": "decimal",
              "required": false
            }
          ]
        }
      ]
    },
    {
      "kind": "histogram",
      "fields": [
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "values",
          "valueType": "string-list",
          "required": true
        },
        {
          "key": "edges",
          "valueType": "string-list",
          "required": false
        },
        {
          "key": "bin-count",
          "valueType": "integer",
          "required": false
        },
        {
          "key": "min",
          "valueType": "decimal",
          "required": false
        },
        {
          "key": "max",
          "valueType": "decimal",
          "required": false
        }
      ]
    }
  ],
  "schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "azeforge.chart/grammar/v1",
    "type": "array",
    "items": {
      "oneOf": [
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "bars"
          ],
          "properties": {
            "label": {
              "type": "string"
            },
            "bars": {
              "type": "array"
            },
            "min": {
              "type": [
                "string",
                "number"
              ]
            },
            "max": {
              "type": [
                "string",
                "number"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "values"
          ],
          "properties": {
            "label": {
              "type": "string"
            },
            "values": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "edges": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "bin-count": {
              "type": [
                "string",
                "integer"
              ]
            },
            "min": {
              "type": [
                "string",
                "number"
              ]
            },
            "max": {
              "type": [
                "string",
                "number"
              ]
            }
          }
        }
      ]
    }
  }
}

geometry

Geometry · plugin 1.0.0 · body record-list

Header fields

FieldTypePresenceValues
ididentifieroptional
numberbooleanoptional
widthintegeroptional
heightintegeroptional
boundsrecordoptional

Limits

{
  "maxDeclarations": 256,
  "maxPolygonVertices": 64,
  "maxEqualMarkSegments": 16,
  "maxEqualMarkGroups": 16,
  "maxLabelChars": 500,
  "maxCoordinateMagnitude": 1000000,
  "maxDimensionPx": 4096
}
Complete generated body contract
{
  "form": "record-list",
  "recordOpener": "-",
  "records": [
    {
      "kind": "point",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true,
          "values": [
            "point",
            "segment",
            "line",
            "ray",
            "circle",
            "arc",
            "polygon",
            "midpoint",
            "intersection",
            "tangent-line",
            "perpendicular-foot",
            "perpendicular-line",
            "parallel-line",
            "angle-mark",
            "length-mark",
            "equal-marks",
            "right-angle-mark"
          ]
        },
        {
          "key": "name",
          "valueType": "identifier",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "x",
          "valueType": "decimal",
          "required": true
        },
        {
          "key": "y",
          "valueType": "decimal",
          "required": true
        },
        {
          "key": "visible",
          "valueType": "boolean",
          "required": false
        },
        {
          "key": "style",
          "valueType": "enum",
          "required": false,
          "values": [
            "solid",
            "dashed"
          ]
        }
      ]
    },
    {
      "kind": "segment",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true,
          "values": [
            "point",
            "segment",
            "line",
            "ray",
            "circle",
            "arc",
            "polygon",
            "midpoint",
            "intersection",
            "tangent-line",
            "perpendicular-foot",
            "perpendicular-line",
            "parallel-line",
            "angle-mark",
            "length-mark",
            "equal-marks",
            "right-angle-mark"
          ]
        },
        {
          "key": "name",
          "valueType": "identifier",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "from",
          "valueType": "name",
          "required": true
        },
        {
          "key": "to",
          "valueType": "name",
          "required": true
        },
        {
          "key": "visible",
          "valueType": "boolean",
          "required": false
        },
        {
          "key": "style",
          "valueType": "enum",
          "required": false,
          "values": [
            "solid",
            "dashed"
          ]
        }
      ]
    },
    {
      "kind": "line",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true,
          "values": [
            "point",
            "segment",
            "line",
            "ray",
            "circle",
            "arc",
            "polygon",
            "midpoint",
            "intersection",
            "tangent-line",
            "perpendicular-foot",
            "perpendicular-line",
            "parallel-line",
            "angle-mark",
            "length-mark",
            "equal-marks",
            "right-angle-mark"
          ]
        },
        {
          "key": "name",
          "valueType": "identifier",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "through-first",
          "valueType": "name",
          "required": true
        },
        {
          "key": "through-second",
          "valueType": "name",
          "required": true
        },
        {
          "key": "visible",
          "valueType": "boolean",
          "required": false
        },
        {
          "key": "style",
          "valueType": "enum",
          "required": false,
          "values": [
            "solid",
            "dashed"
          ]
        }
      ]
    },
    {
      "kind": "ray",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true,
          "values": [
            "point",
            "segment",
            "line",
            "ray",
            "circle",
            "arc",
            "polygon",
            "midpoint",
            "intersection",
            "tangent-line",
            "perpendicular-foot",
            "perpendicular-line",
            "parallel-line",
            "angle-mark",
            "length-mark",
            "equal-marks",
            "right-angle-mark"
          ]
        },
        {
          "key": "name",
          "valueType": "identifier",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "origin",
          "valueType": "name",
          "required": true
        },
        {
          "key": "through",
          "valueType": "name",
          "required": true
        },
        {
          "key": "visible",
          "valueType": "boolean",
          "required": false
        },
        {
          "key": "style",
          "valueType": "enum",
          "required": false,
          "values": [
            "solid",
            "dashed"
          ]
        }
      ]
    },
    {
      "kind": "circle",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true,
          "values": [
            "point",
            "segment",
            "line",
            "ray",
            "circle",
            "arc",
            "polygon",
            "midpoint",
            "intersection",
            "tangent-line",
            "perpendicular-foot",
            "perpendicular-line",
            "parallel-line",
            "angle-mark",
            "length-mark",
            "equal-marks",
            "right-angle-mark"
          ]
        },
        {
          "key": "name",
          "valueType": "identifier",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "center",
          "valueType": "name",
          "required": true
        },
        {
          "key": "radius",
          "valueType": "decimal",
          "required": false
        },
        {
          "key": "point",
          "valueType": "name",
          "required": false
        },
        {
          "key": "visible",
          "valueType": "boolean",
          "required": false
        },
        {
          "key": "style",
          "valueType": "enum",
          "required": false,
          "values": [
            "solid",
            "dashed"
          ]
        }
      ]
    },
    {
      "kind": "arc",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true,
          "values": [
            "point",
            "segment",
            "line",
            "ray",
            "circle",
            "arc",
            "polygon",
            "midpoint",
            "intersection",
            "tangent-line",
            "perpendicular-foot",
            "perpendicular-line",
            "parallel-line",
            "angle-mark",
            "length-mark",
            "equal-marks",
            "right-angle-mark"
          ]
        },
        {
          "key": "name",
          "valueType": "identifier",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "center",
          "valueType": "name",
          "required": true
        },
        {
          "key": "radius",
          "valueType": "decimal",
          "required": true
        },
        {
          "key": "start-angle",
          "valueType": "decimal",
          "required": true
        },
        {
          "key": "end-angle",
          "valueType": "decimal",
          "required": true
        },
        {
          "key": "direction",
          "valueType": "enum",
          "required": true,
          "values": [
            "cw",
            "ccw"
          ]
        },
        {
          "key": "visible",
          "valueType": "boolean",
          "required": false
        },
        {
          "key": "style",
          "valueType": "enum",
          "required": false,
          "values": [
            "solid",
            "dashed"
          ]
        }
      ]
    },
    {
      "kind": "polygon",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true,
          "values": [
            "point",
            "segment",
            "line",
            "ray",
            "circle",
            "arc",
            "polygon",
            "midpoint",
            "intersection",
            "tangent-line",
            "perpendicular-foot",
            "perpendicular-line",
            "parallel-line",
            "angle-mark",
            "length-mark",
            "equal-marks",
            "right-angle-mark"
          ]
        },
        {
          "key": "name",
          "valueType": "identifier",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "vertices",
          "valueType": "string-list",
          "required": true
        },
        {
          "key": "visible",
          "valueType": "boolean",
          "required": false
        },
        {
          "key": "style",
          "valueType": "enum",
          "required": false,
          "values": [
            "solid",
            "dashed"
          ]
        }
      ]
    },
    {
      "kind": "midpoint",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true,
          "values": [
            "point",
            "segment",
            "line",
            "ray",
            "circle",
            "arc",
            "polygon",
            "midpoint",
            "intersection",
            "tangent-line",
            "perpendicular-foot",
            "perpendicular-line",
            "parallel-line",
            "angle-mark",
            "length-mark",
            "equal-marks",
            "right-angle-mark"
          ]
        },
        {
          "key": "name",
          "valueType": "identifier",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "from",
          "valueType": "name",
          "required": true
        },
        {
          "key": "to",
          "valueType": "name",
          "required": true
        },
        {
          "key": "visible",
          "valueType": "boolean",
          "required": false
        },
        {
          "key": "style",
          "valueType": "enum",
          "required": false,
          "values": [
            "solid",
            "dashed"
          ]
        }
      ]
    },
    {
      "kind": "intersection",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true,
          "values": [
            "point",
            "segment",
            "line",
            "ray",
            "circle",
            "arc",
            "polygon",
            "midpoint",
            "intersection",
            "tangent-line",
            "perpendicular-foot",
            "perpendicular-line",
            "parallel-line",
            "angle-mark",
            "length-mark",
            "equal-marks",
            "right-angle-mark"
          ]
        },
        {
          "key": "name",
          "valueType": "identifier",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "first",
          "valueType": "name",
          "required": true
        },
        {
          "key": "second",
          "valueType": "name",
          "required": true
        },
        {
          "key": "pick",
          "valueType": "integer",
          "required": false
        },
        {
          "key": "visible",
          "valueType": "boolean",
          "required": false
        },
        {
          "key": "style",
          "valueType": "enum",
          "required": false,
          "values": [
            "solid",
            "dashed"
          ]
        }
      ]
    },
    {
      "kind": "tangent-line",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true,
          "values": [
            "point",
            "segment",
            "line",
            "ray",
            "circle",
            "arc",
            "polygon",
            "midpoint",
            "intersection",
            "tangent-line",
            "perpendicular-foot",
            "perpendicular-line",
            "parallel-line",
            "angle-mark",
            "length-mark",
            "equal-marks",
            "right-angle-mark"
          ]
        },
        {
          "key": "name",
          "valueType": "identifier",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "circle",
          "valueType": "name",
          "required": true
        },
        {
          "key": "at",
          "valueType": "name",
          "required": false
        },
        {
          "key": "from",
          "valueType": "name",
          "required": false
        },
        {
          "key": "pick",
          "valueType": "integer",
          "required": false
        },
        {
          "key": "visible",
          "valueType": "boolean",
          "required": false
        },
        {
          "key": "style",
          "valueType": "enum",
          "required": false,
          "values": [
            "solid",
            "dashed"
          ]
        }
      ]
    },
    {
      "kind": "perpendicular-foot",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true,
          "values": [
            "point",
            "segment",
            "line",
            "ray",
            "circle",
            "arc",
            "polygon",
            "midpoint",
            "intersection",
            "tangent-line",
            "perpendicular-foot",
            "perpendicular-line",
            "parallel-line",
            "angle-mark",
            "length-mark",
            "equal-marks",
            "right-angle-mark"
          ]
        },
        {
          "key": "name",
          "valueType": "identifier",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "from",
          "valueType": "name",
          "required": true
        },
        {
          "key": "to",
          "valueType": "name",
          "required": true
        },
        {
          "key": "visible",
          "valueType": "boolean",
          "required": false
        },
        {
          "key": "style",
          "valueType": "enum",
          "required": false,
          "values": [
            "solid",
            "dashed"
          ]
        }
      ]
    },
    {
      "kind": "perpendicular-line",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true,
          "values": [
            "point",
            "segment",
            "line",
            "ray",
            "circle",
            "arc",
            "polygon",
            "midpoint",
            "intersection",
            "tangent-line",
            "perpendicular-foot",
            "perpendicular-line",
            "parallel-line",
            "angle-mark",
            "length-mark",
            "equal-marks",
            "right-angle-mark"
          ]
        },
        {
          "key": "name",
          "valueType": "identifier",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "through",
          "valueType": "name",
          "required": true
        },
        {
          "key": "to",
          "valueType": "name",
          "required": true
        },
        {
          "key": "visible",
          "valueType": "boolean",
          "required": false
        },
        {
          "key": "style",
          "valueType": "enum",
          "required": false,
          "values": [
            "solid",
            "dashed"
          ]
        }
      ]
    },
    {
      "kind": "parallel-line",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true,
          "values": [
            "point",
            "segment",
            "line",
            "ray",
            "circle",
            "arc",
            "polygon",
            "midpoint",
            "intersection",
            "tangent-line",
            "perpendicular-foot",
            "perpendicular-line",
            "parallel-line",
            "angle-mark",
            "length-mark",
            "equal-marks",
            "right-angle-mark"
          ]
        },
        {
          "key": "name",
          "valueType": "identifier",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "through",
          "valueType": "name",
          "required": true
        },
        {
          "key": "to",
          "valueType": "name",
          "required": true
        },
        {
          "key": "visible",
          "valueType": "boolean",
          "required": false
        },
        {
          "key": "style",
          "valueType": "enum",
          "required": false,
          "values": [
            "solid",
            "dashed"
          ]
        }
      ]
    },
    {
      "kind": "angle-mark",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true,
          "values": [
            "point",
            "segment",
            "line",
            "ray",
            "circle",
            "arc",
            "polygon",
            "midpoint",
            "intersection",
            "tangent-line",
            "perpendicular-foot",
            "perpendicular-line",
            "parallel-line",
            "angle-mark",
            "length-mark",
            "equal-marks",
            "right-angle-mark"
          ]
        },
        {
          "key": "first",
          "valueType": "name",
          "required": true
        },
        {
          "key": "second",
          "valueType": "name",
          "required": true
        },
        {
          "key": "third",
          "valueType": "name",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "measure",
          "valueType": "enum",
          "required": false,
          "values": [
            "angle"
          ]
        },
        {
          "key": "visible",
          "valueType": "boolean",
          "required": false
        },
        {
          "key": "style",
          "valueType": "enum",
          "required": false,
          "values": [
            "solid",
            "dashed"
          ]
        }
      ]
    },
    {
      "kind": "length-mark",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true,
          "values": [
            "point",
            "segment",
            "line",
            "ray",
            "circle",
            "arc",
            "polygon",
            "midpoint",
            "intersection",
            "tangent-line",
            "perpendicular-foot",
            "perpendicular-line",
            "parallel-line",
            "angle-mark",
            "length-mark",
            "equal-marks",
            "right-angle-mark"
          ]
        },
        {
          "key": "segment",
          "valueType": "name",
          "required": false
        },
        {
          "key": "from",
          "valueType": "name",
          "required": false
        },
        {
          "key": "to",
          "valueType": "name",
          "required": false
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "measure",
          "valueType": "enum",
          "required": false,
          "values": [
            "length"
          ]
        },
        {
          "key": "visible",
          "valueType": "boolean",
          "required": false
        },
        {
          "key": "style",
          "valueType": "enum",
          "required": false,
          "values": [
            "solid",
            "dashed"
          ]
        }
      ]
    },
    {
      "kind": "equal-marks",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true,
          "values": [
            "point",
            "segment",
            "line",
            "ray",
            "circle",
            "arc",
            "polygon",
            "midpoint",
            "intersection",
            "tangent-line",
            "perpendicular-foot",
            "perpendicular-line",
            "parallel-line",
            "angle-mark",
            "length-mark",
            "equal-marks",
            "right-angle-mark"
          ]
        },
        {
          "key": "group",
          "valueType": "identifier",
          "required": true
        },
        {
          "key": "segments",
          "valueType": "string-list",
          "required": true
        },
        {
          "key": "visible",
          "valueType": "boolean",
          "required": false
        },
        {
          "key": "style",
          "valueType": "enum",
          "required": false,
          "values": [
            "solid",
            "dashed"
          ]
        }
      ]
    },
    {
      "kind": "right-angle-mark",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true,
          "values": [
            "point",
            "segment",
            "line",
            "ray",
            "circle",
            "arc",
            "polygon",
            "midpoint",
            "intersection",
            "tangent-line",
            "perpendicular-foot",
            "perpendicular-line",
            "parallel-line",
            "angle-mark",
            "length-mark",
            "equal-marks",
            "right-angle-mark"
          ]
        },
        {
          "key": "first",
          "valueType": "name",
          "required": true
        },
        {
          "key": "second",
          "valueType": "name",
          "required": true
        },
        {
          "key": "third",
          "valueType": "name",
          "required": true
        },
        {
          "key": "visible",
          "valueType": "boolean",
          "required": false
        },
        {
          "key": "style",
          "valueType": "enum",
          "required": false,
          "values": [
            "solid",
            "dashed"
          ]
        }
      ]
    }
  ],
  "schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "azeforge.geometry/grammar/v1",
    "type": "array",
    "items": {
      "oneOf": [
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "name",
            "x",
            "y"
          ],
          "properties": {
            "kind": {
              "const": "point"
            },
            "name": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "x": {
              "type": [
                "string",
                "number"
              ]
            },
            "y": {
              "type": [
                "string",
                "number"
              ]
            },
            "visible": {
              "type": "boolean"
            },
            "style": {
              "type": "string",
              "enum": [
                "solid",
                "dashed"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "name",
            "from",
            "to"
          ],
          "properties": {
            "kind": {
              "const": "segment"
            },
            "name": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "from": {
              "type": "string"
            },
            "to": {
              "type": "string"
            },
            "visible": {
              "type": "boolean"
            },
            "style": {
              "type": "string",
              "enum": [
                "solid",
                "dashed"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "name",
            "through-first",
            "through-second"
          ],
          "properties": {
            "kind": {
              "const": "line"
            },
            "name": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "through-first": {
              "type": "string"
            },
            "through-second": {
              "type": "string"
            },
            "visible": {
              "type": "boolean"
            },
            "style": {
              "type": "string",
              "enum": [
                "solid",
                "dashed"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "name",
            "origin",
            "through"
          ],
          "properties": {
            "kind": {
              "const": "ray"
            },
            "name": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "origin": {
              "type": "string"
            },
            "through": {
              "type": "string"
            },
            "visible": {
              "type": "boolean"
            },
            "style": {
              "type": "string",
              "enum": [
                "solid",
                "dashed"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "name",
            "center"
          ],
          "properties": {
            "kind": {
              "const": "circle"
            },
            "name": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "center": {
              "type": "string"
            },
            "radius": {
              "type": [
                "string",
                "number"
              ]
            },
            "point": {
              "type": "string"
            },
            "visible": {
              "type": "boolean"
            },
            "style": {
              "type": "string",
              "enum": [
                "solid",
                "dashed"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "name",
            "center",
            "radius",
            "start-angle",
            "end-angle",
            "direction"
          ],
          "properties": {
            "kind": {
              "const": "arc"
            },
            "name": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "center": {
              "type": "string"
            },
            "radius": {
              "type": [
                "string",
                "number"
              ]
            },
            "start-angle": {
              "type": [
                "string",
                "number"
              ]
            },
            "end-angle": {
              "type": [
                "string",
                "number"
              ]
            },
            "direction": {
              "type": "string",
              "enum": [
                "cw",
                "ccw"
              ]
            },
            "visible": {
              "type": "boolean"
            },
            "style": {
              "type": "string",
              "enum": [
                "solid",
                "dashed"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "name",
            "vertices"
          ],
          "properties": {
            "kind": {
              "const": "polygon"
            },
            "name": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "vertices": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "visible": {
              "type": "boolean"
            },
            "style": {
              "type": "string",
              "enum": [
                "solid",
                "dashed"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "name",
            "from",
            "to"
          ],
          "properties": {
            "kind": {
              "const": "midpoint"
            },
            "name": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "from": {
              "type": "string"
            },
            "to": {
              "type": "string"
            },
            "visible": {
              "type": "boolean"
            },
            "style": {
              "type": "string",
              "enum": [
                "solid",
                "dashed"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "name",
            "first",
            "second"
          ],
          "properties": {
            "kind": {
              "const": "intersection"
            },
            "name": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "first": {
              "type": "string"
            },
            "second": {
              "type": "string"
            },
            "pick": {
              "type": [
                "string",
                "integer"
              ]
            },
            "visible": {
              "type": "boolean"
            },
            "style": {
              "type": "string",
              "enum": [
                "solid",
                "dashed"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "name",
            "circle"
          ],
          "properties": {
            "kind": {
              "const": "tangent-line"
            },
            "name": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "circle": {
              "type": "string"
            },
            "at": {
              "type": "string"
            },
            "from": {
              "type": "string"
            },
            "pick": {
              "type": [
                "string",
                "integer"
              ]
            },
            "visible": {
              "type": "boolean"
            },
            "style": {
              "type": "string",
              "enum": [
                "solid",
                "dashed"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "name",
            "from",
            "to"
          ],
          "properties": {
            "kind": {
              "const": "perpendicular-foot"
            },
            "name": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "from": {
              "type": "string"
            },
            "to": {
              "type": "string"
            },
            "visible": {
              "type": "boolean"
            },
            "style": {
              "type": "string",
              "enum": [
                "solid",
                "dashed"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "name",
            "through",
            "to"
          ],
          "properties": {
            "kind": {
              "const": "perpendicular-line"
            },
            "name": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "through": {
              "type": "string"
            },
            "to": {
              "type": "string"
            },
            "visible": {
              "type": "boolean"
            },
            "style": {
              "type": "string",
              "enum": [
                "solid",
                "dashed"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "name",
            "through",
            "to"
          ],
          "properties": {
            "kind": {
              "const": "parallel-line"
            },
            "name": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "through": {
              "type": "string"
            },
            "to": {
              "type": "string"
            },
            "visible": {
              "type": "boolean"
            },
            "style": {
              "type": "string",
              "enum": [
                "solid",
                "dashed"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "first",
            "second",
            "third"
          ],
          "properties": {
            "kind": {
              "const": "angle-mark"
            },
            "first": {
              "type": "string"
            },
            "second": {
              "type": "string"
            },
            "third": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "measure": {
              "type": "string",
              "enum": [
                "angle"
              ]
            },
            "visible": {
              "type": "boolean"
            },
            "style": {
              "type": "string",
              "enum": [
                "solid",
                "dashed"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind"
          ],
          "properties": {
            "kind": {
              "const": "length-mark"
            },
            "segment": {
              "type": "string"
            },
            "from": {
              "type": "string"
            },
            "to": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "measure": {
              "type": "string",
              "enum": [
                "length"
              ]
            },
            "visible": {
              "type": "boolean"
            },
            "style": {
              "type": "string",
              "enum": [
                "solid",
                "dashed"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "group",
            "segments"
          ],
          "properties": {
            "kind": {
              "const": "equal-marks"
            },
            "group": {
              "type": "string"
            },
            "segments": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "visible": {
              "type": "boolean"
            },
            "style": {
              "type": "string",
              "enum": [
                "solid",
                "dashed"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "first",
            "second",
            "third"
          ],
          "properties": {
            "kind": {
              "const": "right-angle-mark"
            },
            "first": {
              "type": "string"
            },
            "second": {
              "type": "string"
            },
            "third": {
              "type": "string"
            },
            "visible": {
              "type": "boolean"
            },
            "style": {
              "type": "string",
              "enum": [
                "solid",
                "dashed"
              ]
            }
          }
        }
      ]
    }
  }
}

formula

Chemical formula · plugin 1.0.0 · body scalar-lines

Header fields

FieldTypePresenceValues
ididentifieroptional
numberbooleanoptional

Limits

{
  "maxFormulaExpressionChars": 512,
  "maxFormulaCharge": 8,
  "maxSubscript": 999,
  "maxGroupNesting": 3,
  "maxIsotopeMass": 299
}
Complete generated body contract
{
  "form": "scalar-lines",
  "fields": [
    {
      "key": "expression",
      "valueType": "expression",
      "required": true
    }
  ],
  "schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "azeforge.formula/grammar/v1",
    "type": "object",
    "additionalProperties": false,
    "required": [
      "expression"
    ],
    "properties": {
      "expression": {
        "type": "string"
      }
    }
  }
}

reaction

Chemical reaction · plugin 1.0.0 · body scalar-lines

Header fields

FieldTypePresenceValues
ididentifieroptional
numberbooleanoptional
abovetextoptional
belowtextoptional
balanceenumoptionalnone, check

Limits

{
  "maxReactionSpecies": 32,
  "maxReactionSpeciesChars": 128,
  "maxReactionConditionChars": 256
}
Complete generated body contract
{
  "form": "scalar-lines",
  "fields": [
    {
      "key": "equation",
      "valueType": "expression",
      "required": true
    }
  ],
  "schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "azeforge.reaction/grammar/v1",
    "type": "object",
    "additionalProperties": false,
    "required": [
      "equation"
    ],
    "properties": {
      "equation": {
        "type": "string"
      }
    }
  }
}

structure

Molecular structure · plugin 1.0.0 · body record-list

Header fields

FieldTypePresenceValues
ididentifieroptional
numberbooleanoptional
widthintegeroptional
heightintegeroptional

Limits

{
  "maxStructureAtoms": 512,
  "maxStructureWidth": 4096,
  "maxStructureHeight": 4096,
  "maxStructureLabelChars": 500,
  "maxFormulaCharge": 8,
  "maxIsotopeMass": 299
}
Complete generated body contract
{
  "form": "record-list",
  "recordOpener": "-",
  "records": [
    {
      "kind": "atom",
      "fields": [
        {
          "key": "element",
          "valueType": "enum",
          "required": false,
          "values": [
            "H",
            "He",
            "Li",
            "Be",
            "B",
            "C",
            "N",
            "O",
            "F",
            "Ne",
            "Na",
            "Mg",
            "Al",
            "Si",
            "P",
            "S",
            "Cl",
            "Ar",
            "K",
            "Ca",
            "Sc",
            "Ti",
            "V",
            "Cr",
            "Mn",
            "Fe",
            "Co",
            "Ni",
            "Cu",
            "Zn",
            "Ga",
            "Ge",
            "As",
            "Se",
            "Br",
            "Kr",
            "Rb",
            "Sr",
            "Y",
            "Zr",
            "Nb",
            "Mo",
            "Tc",
            "Ru",
            "Rh",
            "Pd",
            "Ag",
            "Cd",
            "In",
            "Sn",
            "Sb",
            "Te",
            "I",
            "Xe",
            "Cs",
            "Ba",
            "La",
            "Ce",
            "Pr",
            "Nd",
            "Pm",
            "Sm",
            "Eu",
            "Gd",
            "Tb",
            "Dy",
            "Ho",
            "Er",
            "Tm",
            "Yb",
            "Lu",
            "Hf",
            "Ta",
            "W",
            "Re",
            "Os",
            "Ir",
            "Pt",
            "Au",
            "Hg",
            "Tl",
            "Pb",
            "Bi",
            "Po",
            "At",
            "Rn",
            "Fr",
            "Ra",
            "Ac",
            "Th",
            "Pa",
            "U",
            "Np",
            "Pu",
            "Am",
            "Cm",
            "Bk",
            "Cf",
            "Es",
            "Fm",
            "Md",
            "No",
            "Lr",
            "Rf",
            "Db",
            "Sg",
            "Bh",
            "Hs",
            "Mt",
            "Ds",
            "Rg",
            "Cn",
            "Nh",
            "Fl",
            "Mc",
            "Lv",
            "Ts",
            "Og"
          ]
        },
        {
          "key": "attach",
          "valueType": "text",
          "required": false
        },
        {
          "key": "charge",
          "valueType": "integer",
          "required": false
        },
        {
          "key": "isotope",
          "valueType": "integer",
          "required": false
        },
        {
          "key": "at",
          "valueType": "point-list",
          "required": true
        },
        {
          "key": "stereo",
          "valueType": "enum",
          "required": false,
          "values": [
            "unspecified"
          ]
        }
      ]
    },
    {
      "kind": "bond",
      "fields": [
        {
          "key": "from",
          "valueType": "name",
          "required": true
        },
        {
          "key": "to",
          "valueType": "name",
          "required": true
        },
        {
          "key": "order",
          "valueType": "enum",
          "required": true,
          "values": [
            "1",
            "2",
            "3",
            "aromatic"
          ]
        },
        {
          "key": "stereo",
          "valueType": "enum",
          "required": false,
          "values": [
            "wedge",
            "hash"
          ]
        }
      ]
    },
    {
      "kind": "label",
      "fields": [
        {
          "key": "text",
          "valueType": "text",
          "required": true
        },
        {
          "key": "at",
          "valueType": "point-list",
          "required": true
        }
      ]
    }
  ],
  "schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "azeforge.structure/grammar/v1",
    "type": "array",
    "items": {
      "oneOf": [
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "at"
          ],
          "properties": {
            "element": {
              "type": "string",
              "enum": [
                "H",
                "He",
                "Li",
                "Be",
                "B",
                "C",
                "N",
                "O",
                "F",
                "Ne",
                "Na",
                "Mg",
                "Al",
                "Si",
                "P",
                "S",
                "Cl",
                "Ar",
                "K",
                "Ca",
                "Sc",
                "Ti",
                "V",
                "Cr",
                "Mn",
                "Fe",
                "Co",
                "Ni",
                "Cu",
                "Zn",
                "Ga",
                "Ge",
                "As",
                "Se",
                "Br",
                "Kr",
                "Rb",
                "Sr",
                "Y",
                "Zr",
                "Nb",
                "Mo",
                "Tc",
                "Ru",
                "Rh",
                "Pd",
                "Ag",
                "Cd",
                "In",
                "Sn",
                "Sb",
                "Te",
                "I",
                "Xe",
                "Cs",
                "Ba",
                "La",
                "Ce",
                "Pr",
                "Nd",
                "Pm",
                "Sm",
                "Eu",
                "Gd",
                "Tb",
                "Dy",
                "Ho",
                "Er",
                "Tm",
                "Yb",
                "Lu",
                "Hf",
                "Ta",
                "W",
                "Re",
                "Os",
                "Ir",
                "Pt",
                "Au",
                "Hg",
                "Tl",
                "Pb",
                "Bi",
                "Po",
                "At",
                "Rn",
                "Fr",
                "Ra",
                "Ac",
                "Th",
                "Pa",
                "U",
                "Np",
                "Pu",
                "Am",
                "Cm",
                "Bk",
                "Cf",
                "Es",
                "Fm",
                "Md",
                "No",
                "Lr",
                "Rf",
                "Db",
                "Sg",
                "Bh",
                "Hs",
                "Mt",
                "Ds",
                "Rg",
                "Cn",
                "Nh",
                "Fl",
                "Mc",
                "Lv",
                "Ts",
                "Og"
              ]
            },
            "attach": {
              "type": "string"
            },
            "charge": {
              "type": [
                "string",
                "integer"
              ]
            },
            "isotope": {
              "type": [
                "string",
                "integer"
              ]
            },
            "at": {
              "type": "array",
              "items": {
                "type": "object"
              }
            },
            "stereo": {
              "type": "string",
              "enum": [
                "unspecified"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "from",
            "to",
            "order"
          ],
          "properties": {
            "from": {
              "type": "string"
            },
            "to": {
              "type": "string"
            },
            "order": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "aromatic"
              ]
            },
            "stereo": {
              "type": "string",
              "enum": [
                "wedge",
                "hash"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "text",
            "at"
          ],
          "properties": {
            "text": {
              "type": "string"
            },
            "at": {
              "type": "array",
              "items": {
                "type": "object"
              }
            }
          }
        }
      ]
    }
  }
}

circuit

Circuit · plugin 1.0.0 · body record-list

Header fields

FieldTypePresenceValues
ididentifieroptional
numberbooleanoptional
titletextrequired
descriptiontextoptional
flowenumoptionalleft-to-right, top-to-bottom

Limits

{
  "maxComponents": 64,
  "maxNodes": 128,
  "maxRelations": 512,
  "maxAnnotations": 128
}
Complete generated body contract
{
  "form": "record-list",
  "recordOpener": "-",
  "records": [
    {
      "kind": "node",
      "fields": [
        {
          "key": "ref",
          "valueType": "identifier",
          "required": true
        },
        {
          "key": "role",
          "valueType": "enum",
          "required": false,
          "values": [
            "signal",
            "reference"
          ]
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        }
      ]
    },
    {
      "kind": "connect",
      "fields": [
        {
          "key": "terminal",
          "valueType": "text",
          "required": true
        },
        {
          "key": "node",
          "valueType": "identifier",
          "required": true
        }
      ]
    },
    {
      "kind": "voltage-label",
      "fields": [
        {
          "key": "positive",
          "valueType": "identifier",
          "required": true
        },
        {
          "key": "negative",
          "valueType": "identifier",
          "required": true
        }
      ]
    },
    {
      "kind": "current-label",
      "fields": [
        {
          "key": "terminal",
          "valueType": "text",
          "required": true
        },
        {
          "key": "direction",
          "valueType": "enum",
          "required": true,
          "values": [
            "into",
            "out"
          ]
        }
      ]
    },
    {
      "kind": "resistor",
      "fields": [
        {
          "key": "ref",
          "valueType": "name",
          "required": true
        },
        {
          "key": "orientation",
          "valueType": "enum",
          "required": false,
          "values": [
            "left-to-right",
            "right-to-left",
            "top-to-bottom",
            "bottom-to-top"
          ]
        },
        {
          "key": "value",
          "valueType": "quantity",
          "required": true
        }
      ]
    },
    {
      "kind": "capacitor",
      "fields": [
        {
          "key": "ref",
          "valueType": "name",
          "required": true
        },
        {
          "key": "orientation",
          "valueType": "enum",
          "required": false,
          "values": [
            "left-to-right",
            "right-to-left",
            "top-to-bottom",
            "bottom-to-top"
          ]
        },
        {
          "key": "value",
          "valueType": "quantity",
          "required": true
        }
      ]
    },
    {
      "kind": "inductor",
      "fields": [
        {
          "key": "ref",
          "valueType": "name",
          "required": true
        },
        {
          "key": "orientation",
          "valueType": "enum",
          "required": false,
          "values": [
            "left-to-right",
            "right-to-left",
            "top-to-bottom",
            "bottom-to-top"
          ]
        },
        {
          "key": "value",
          "valueType": "quantity",
          "required": true
        }
      ]
    },
    {
      "kind": "voltage-source",
      "fields": [
        {
          "key": "ref",
          "valueType": "name",
          "required": true
        },
        {
          "key": "orientation",
          "valueType": "enum",
          "required": false,
          "values": [
            "left-to-right",
            "right-to-left",
            "top-to-bottom",
            "bottom-to-top"
          ]
        },
        {
          "key": "value",
          "valueType": "quantity",
          "required": true
        },
        {
          "key": "mode",
          "valueType": "enum",
          "required": false,
          "values": [
            "dc",
            "ac"
          ]
        }
      ]
    },
    {
      "kind": "current-source",
      "fields": [
        {
          "key": "ref",
          "valueType": "name",
          "required": true
        },
        {
          "key": "orientation",
          "valueType": "enum",
          "required": false,
          "values": [
            "left-to-right",
            "right-to-left",
            "top-to-bottom",
            "bottom-to-top"
          ]
        },
        {
          "key": "value",
          "valueType": "quantity",
          "required": true
        },
        {
          "key": "mode",
          "valueType": "enum",
          "required": false,
          "values": [
            "dc",
            "ac"
          ]
        }
      ]
    },
    {
      "kind": "diode",
      "fields": [
        {
          "key": "ref",
          "valueType": "name",
          "required": true
        },
        {
          "key": "orientation",
          "valueType": "enum",
          "required": false,
          "values": [
            "left-to-right",
            "right-to-left",
            "top-to-bottom",
            "bottom-to-top"
          ]
        },
        {
          "key": "name",
          "valueType": "text",
          "required": false
        }
      ]
    },
    {
      "kind": "led",
      "fields": [
        {
          "key": "ref",
          "valueType": "name",
          "required": true
        },
        {
          "key": "orientation",
          "valueType": "enum",
          "required": false,
          "values": [
            "left-to-right",
            "right-to-left",
            "top-to-bottom",
            "bottom-to-top"
          ]
        },
        {
          "key": "name",
          "valueType": "text",
          "required": false
        }
      ]
    },
    {
      "kind": "switch",
      "fields": [
        {
          "key": "ref",
          "valueType": "name",
          "required": true
        },
        {
          "key": "orientation",
          "valueType": "enum",
          "required": false,
          "values": [
            "left-to-right",
            "right-to-left",
            "top-to-bottom",
            "bottom-to-top"
          ]
        },
        {
          "key": "name",
          "valueType": "text",
          "required": false
        },
        {
          "key": "mode",
          "valueType": "enum",
          "required": false,
          "values": [
            "normally-open",
            "normally-closed"
          ]
        }
      ]
    },
    {
      "kind": "dependent-source",
      "fields": [
        {
          "key": "ref",
          "valueType": "name",
          "required": true
        },
        {
          "key": "orientation",
          "valueType": "enum",
          "required": false,
          "values": [
            "left-to-right",
            "right-to-left",
            "top-to-bottom",
            "bottom-to-top"
          ]
        },
        {
          "key": "value",
          "valueType": "quantity",
          "required": true
        },
        {
          "key": "mode",
          "valueType": "enum",
          "required": false,
          "values": [
            "VCVS",
            "VCCS",
            "CCVS",
            "CCCS"
          ]
        }
      ]
    },
    {
      "kind": "op-amp",
      "fields": [
        {
          "key": "ref",
          "valueType": "name",
          "required": true
        },
        {
          "key": "orientation",
          "valueType": "enum",
          "required": false,
          "values": [
            "left-to-right",
            "right-to-left",
            "top-to-bottom",
            "bottom-to-top"
          ]
        },
        {
          "key": "name",
          "valueType": "text",
          "required": false
        }
      ]
    },
    {
      "kind": "bjt",
      "fields": [
        {
          "key": "ref",
          "valueType": "name",
          "required": true
        },
        {
          "key": "orientation",
          "valueType": "enum",
          "required": false,
          "values": [
            "left-to-right",
            "right-to-left",
            "top-to-bottom",
            "bottom-to-top"
          ]
        },
        {
          "key": "name",
          "valueType": "text",
          "required": false
        },
        {
          "key": "mode",
          "valueType": "enum",
          "required": false,
          "values": [
            "npn",
            "pnp"
          ]
        }
      ]
    },
    {
      "kind": "mosfet",
      "fields": [
        {
          "key": "ref",
          "valueType": "name",
          "required": true
        },
        {
          "key": "orientation",
          "valueType": "enum",
          "required": false,
          "values": [
            "left-to-right",
            "right-to-left",
            "top-to-bottom",
            "bottom-to-top"
          ]
        },
        {
          "key": "name",
          "valueType": "text",
          "required": false
        },
        {
          "key": "mode",
          "valueType": "enum",
          "required": false,
          "values": [
            "nmos",
            "pmos"
          ]
        }
      ]
    },
    {
      "kind": "and",
      "fields": [
        {
          "key": "ref",
          "valueType": "name",
          "required": true
        },
        {
          "key": "orientation",
          "valueType": "enum",
          "required": false,
          "values": [
            "left-to-right",
            "right-to-left",
            "top-to-bottom",
            "bottom-to-top"
          ]
        },
        {
          "key": "inputs",
          "valueType": "enum",
          "required": false,
          "values": [
            "2",
            "3",
            "4"
          ]
        }
      ]
    },
    {
      "kind": "or",
      "fields": [
        {
          "key": "ref",
          "valueType": "name",
          "required": true
        },
        {
          "key": "orientation",
          "valueType": "enum",
          "required": false,
          "values": [
            "left-to-right",
            "right-to-left",
            "top-to-bottom",
            "bottom-to-top"
          ]
        },
        {
          "key": "inputs",
          "valueType": "enum",
          "required": false,
          "values": [
            "2",
            "3",
            "4"
          ]
        }
      ]
    },
    {
      "kind": "nand",
      "fields": [
        {
          "key": "ref",
          "valueType": "name",
          "required": true
        },
        {
          "key": "orientation",
          "valueType": "enum",
          "required": false,
          "values": [
            "left-to-right",
            "right-to-left",
            "top-to-bottom",
            "bottom-to-top"
          ]
        },
        {
          "key": "inputs",
          "valueType": "enum",
          "required": false,
          "values": [
            "2",
            "3",
            "4"
          ]
        }
      ]
    },
    {
      "kind": "nor",
      "fields": [
        {
          "key": "ref",
          "valueType": "name",
          "required": true
        },
        {
          "key": "orientation",
          "valueType": "enum",
          "required": false,
          "values": [
            "left-to-right",
            "right-to-left",
            "top-to-bottom",
            "bottom-to-top"
          ]
        },
        {
          "key": "inputs",
          "valueType": "enum",
          "required": false,
          "values": [
            "2",
            "3",
            "4"
          ]
        }
      ]
    },
    {
      "kind": "xor",
      "fields": [
        {
          "key": "ref",
          "valueType": "name",
          "required": true
        },
        {
          "key": "orientation",
          "valueType": "enum",
          "required": false,
          "values": [
            "left-to-right",
            "right-to-left",
            "top-to-bottom",
            "bottom-to-top"
          ]
        },
        {
          "key": "inputs",
          "valueType": "enum",
          "required": false,
          "values": [
            "2",
            "3",
            "4"
          ]
        }
      ]
    },
    {
      "kind": "xnor",
      "fields": [
        {
          "key": "ref",
          "valueType": "name",
          "required": true
        },
        {
          "key": "orientation",
          "valueType": "enum",
          "required": false,
          "values": [
            "left-to-right",
            "right-to-left",
            "top-to-bottom",
            "bottom-to-top"
          ]
        },
        {
          "key": "inputs",
          "valueType": "enum",
          "required": false,
          "values": [
            "2",
            "3",
            "4"
          ]
        }
      ]
    },
    {
      "kind": "not",
      "fields": [
        {
          "key": "ref",
          "valueType": "name",
          "required": true
        },
        {
          "key": "orientation",
          "valueType": "enum",
          "required": false,
          "values": [
            "left-to-right",
            "right-to-left",
            "top-to-bottom",
            "bottom-to-top"
          ]
        }
      ]
    },
    {
      "kind": "buffer",
      "fields": [
        {
          "key": "ref",
          "valueType": "name",
          "required": true
        },
        {
          "key": "orientation",
          "valueType": "enum",
          "required": false,
          "values": [
            "left-to-right",
            "right-to-left",
            "top-to-bottom",
            "bottom-to-top"
          ]
        }
      ]
    },
    {
      "kind": "mux-2to1",
      "fields": [
        {
          "key": "ref",
          "valueType": "name",
          "required": true
        },
        {
          "key": "orientation",
          "valueType": "enum",
          "required": false,
          "values": [
            "left-to-right",
            "right-to-left",
            "top-to-bottom",
            "bottom-to-top"
          ]
        }
      ]
    },
    {
      "kind": "mux-4to1",
      "fields": [
        {
          "key": "ref",
          "valueType": "name",
          "required": true
        },
        {
          "key": "orientation",
          "valueType": "enum",
          "required": false,
          "values": [
            "left-to-right",
            "right-to-left",
            "top-to-bottom",
            "bottom-to-top"
          ]
        }
      ]
    },
    {
      "kind": "d-flip-flop",
      "fields": [
        {
          "key": "ref",
          "valueType": "name",
          "required": true
        },
        {
          "key": "orientation",
          "valueType": "enum",
          "required": false,
          "values": [
            "left-to-right",
            "right-to-left",
            "top-to-bottom",
            "bottom-to-top"
          ]
        }
      ]
    },
    {
      "kind": "digital-input",
      "fields": [
        {
          "key": "ref",
          "valueType": "name",
          "required": true
        },
        {
          "key": "orientation",
          "valueType": "enum",
          "required": false,
          "values": [
            "left-to-right",
            "right-to-left",
            "top-to-bottom",
            "bottom-to-top"
          ]
        },
        {
          "key": "name",
          "valueType": "text",
          "required": true
        }
      ]
    },
    {
      "kind": "digital-output",
      "fields": [
        {
          "key": "ref",
          "valueType": "name",
          "required": true
        },
        {
          "key": "orientation",
          "valueType": "enum",
          "required": false,
          "values": [
            "left-to-right",
            "right-to-left",
            "top-to-bottom",
            "bottom-to-top"
          ]
        },
        {
          "key": "name",
          "valueType": "text",
          "required": true
        }
      ]
    }
  ],
  "schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "azeforge.circuit/grammar/v1",
    "type": "array",
    "items": {
      "oneOf": [
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ref"
          ],
          "properties": {
            "ref": {
              "type": "string"
            },
            "role": {
              "type": "string",
              "enum": [
                "signal",
                "reference"
              ]
            },
            "label": {
              "type": "string"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "terminal",
            "node"
          ],
          "properties": {
            "terminal": {
              "type": "string"
            },
            "node": {
              "type": "string"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "positive",
            "negative"
          ],
          "properties": {
            "positive": {
              "type": "string"
            },
            "negative": {
              "type": "string"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "terminal",
            "direction"
          ],
          "properties": {
            "terminal": {
              "type": "string"
            },
            "direction": {
              "type": "string",
              "enum": [
                "into",
                "out"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ref",
            "value"
          ],
          "properties": {
            "ref": {
              "type": "string"
            },
            "orientation": {
              "type": "string",
              "enum": [
                "left-to-right",
                "right-to-left",
                "top-to-bottom",
                "bottom-to-top"
              ]
            },
            "value": {
              "type": "string"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ref",
            "value"
          ],
          "properties": {
            "ref": {
              "type": "string"
            },
            "orientation": {
              "type": "string",
              "enum": [
                "left-to-right",
                "right-to-left",
                "top-to-bottom",
                "bottom-to-top"
              ]
            },
            "value": {
              "type": "string"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ref",
            "value"
          ],
          "properties": {
            "ref": {
              "type": "string"
            },
            "orientation": {
              "type": "string",
              "enum": [
                "left-to-right",
                "right-to-left",
                "top-to-bottom",
                "bottom-to-top"
              ]
            },
            "value": {
              "type": "string"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ref",
            "value"
          ],
          "properties": {
            "ref": {
              "type": "string"
            },
            "orientation": {
              "type": "string",
              "enum": [
                "left-to-right",
                "right-to-left",
                "top-to-bottom",
                "bottom-to-top"
              ]
            },
            "value": {
              "type": "string"
            },
            "mode": {
              "type": "string",
              "enum": [
                "dc",
                "ac"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ref",
            "value"
          ],
          "properties": {
            "ref": {
              "type": "string"
            },
            "orientation": {
              "type": "string",
              "enum": [
                "left-to-right",
                "right-to-left",
                "top-to-bottom",
                "bottom-to-top"
              ]
            },
            "value": {
              "type": "string"
            },
            "mode": {
              "type": "string",
              "enum": [
                "dc",
                "ac"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ref"
          ],
          "properties": {
            "ref": {
              "type": "string"
            },
            "orientation": {
              "type": "string",
              "enum": [
                "left-to-right",
                "right-to-left",
                "top-to-bottom",
                "bottom-to-top"
              ]
            },
            "name": {
              "type": "string"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ref"
          ],
          "properties": {
            "ref": {
              "type": "string"
            },
            "orientation": {
              "type": "string",
              "enum": [
                "left-to-right",
                "right-to-left",
                "top-to-bottom",
                "bottom-to-top"
              ]
            },
            "name": {
              "type": "string"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ref"
          ],
          "properties": {
            "ref": {
              "type": "string"
            },
            "orientation": {
              "type": "string",
              "enum": [
                "left-to-right",
                "right-to-left",
                "top-to-bottom",
                "bottom-to-top"
              ]
            },
            "name": {
              "type": "string"
            },
            "mode": {
              "type": "string",
              "enum": [
                "normally-open",
                "normally-closed"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ref",
            "value"
          ],
          "properties": {
            "ref": {
              "type": "string"
            },
            "orientation": {
              "type": "string",
              "enum": [
                "left-to-right",
                "right-to-left",
                "top-to-bottom",
                "bottom-to-top"
              ]
            },
            "value": {
              "type": "string"
            },
            "mode": {
              "type": "string",
              "enum": [
                "VCVS",
                "VCCS",
                "CCVS",
                "CCCS"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ref"
          ],
          "properties": {
            "ref": {
              "type": "string"
            },
            "orientation": {
              "type": "string",
              "enum": [
                "left-to-right",
                "right-to-left",
                "top-to-bottom",
                "bottom-to-top"
              ]
            },
            "name": {
              "type": "string"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ref"
          ],
          "properties": {
            "ref": {
              "type": "string"
            },
            "orientation": {
              "type": "string",
              "enum": [
                "left-to-right",
                "right-to-left",
                "top-to-bottom",
                "bottom-to-top"
              ]
            },
            "name": {
              "type": "string"
            },
            "mode": {
              "type": "string",
              "enum": [
                "npn",
                "pnp"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ref"
          ],
          "properties": {
            "ref": {
              "type": "string"
            },
            "orientation": {
              "type": "string",
              "enum": [
                "left-to-right",
                "right-to-left",
                "top-to-bottom",
                "bottom-to-top"
              ]
            },
            "name": {
              "type": "string"
            },
            "mode": {
              "type": "string",
              "enum": [
                "nmos",
                "pmos"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ref"
          ],
          "properties": {
            "ref": {
              "type": "string"
            },
            "orientation": {
              "type": "string",
              "enum": [
                "left-to-right",
                "right-to-left",
                "top-to-bottom",
                "bottom-to-top"
              ]
            },
            "inputs": {
              "type": "string",
              "enum": [
                "2",
                "3",
                "4"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ref"
          ],
          "properties": {
            "ref": {
              "type": "string"
            },
            "orientation": {
              "type": "string",
              "enum": [
                "left-to-right",
                "right-to-left",
                "top-to-bottom",
                "bottom-to-top"
              ]
            },
            "inputs": {
              "type": "string",
              "enum": [
                "2",
                "3",
                "4"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ref"
          ],
          "properties": {
            "ref": {
              "type": "string"
            },
            "orientation": {
              "type": "string",
              "enum": [
                "left-to-right",
                "right-to-left",
                "top-to-bottom",
                "bottom-to-top"
              ]
            },
            "inputs": {
              "type": "string",
              "enum": [
                "2",
                "3",
                "4"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ref"
          ],
          "properties": {
            "ref": {
              "type": "string"
            },
            "orientation": {
              "type": "string",
              "enum": [
                "left-to-right",
                "right-to-left",
                "top-to-bottom",
                "bottom-to-top"
              ]
            },
            "inputs": {
              "type": "string",
              "enum": [
                "2",
                "3",
                "4"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ref"
          ],
          "properties": {
            "ref": {
              "type": "string"
            },
            "orientation": {
              "type": "string",
              "enum": [
                "left-to-right",
                "right-to-left",
                "top-to-bottom",
                "bottom-to-top"
              ]
            },
            "inputs": {
              "type": "string",
              "enum": [
                "2",
                "3",
                "4"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ref"
          ],
          "properties": {
            "ref": {
              "type": "string"
            },
            "orientation": {
              "type": "string",
              "enum": [
                "left-to-right",
                "right-to-left",
                "top-to-bottom",
                "bottom-to-top"
              ]
            },
            "inputs": {
              "type": "string",
              "enum": [
                "2",
                "3",
                "4"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ref"
          ],
          "properties": {
            "ref": {
              "type": "string"
            },
            "orientation": {
              "type": "string",
              "enum": [
                "left-to-right",
                "right-to-left",
                "top-to-bottom",
                "bottom-to-top"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ref"
          ],
          "properties": {
            "ref": {
              "type": "string"
            },
            "orientation": {
              "type": "string",
              "enum": [
                "left-to-right",
                "right-to-left",
                "top-to-bottom",
                "bottom-to-top"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ref"
          ],
          "properties": {
            "ref": {
              "type": "string"
            },
            "orientation": {
              "type": "string",
              "enum": [
                "left-to-right",
                "right-to-left",
                "top-to-bottom",
                "bottom-to-top"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ref"
          ],
          "properties": {
            "ref": {
              "type": "string"
            },
            "orientation": {
              "type": "string",
              "enum": [
                "left-to-right",
                "right-to-left",
                "top-to-bottom",
                "bottom-to-top"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ref"
          ],
          "properties": {
            "ref": {
              "type": "string"
            },
            "orientation": {
              "type": "string",
              "enum": [
                "left-to-right",
                "right-to-left",
                "top-to-bottom",
                "bottom-to-top"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ref",
            "name"
          ],
          "properties": {
            "ref": {
              "type": "string"
            },
            "orientation": {
              "type": "string",
              "enum": [
                "left-to-right",
                "right-to-left",
                "top-to-bottom",
                "bottom-to-top"
              ]
            },
            "name": {
              "type": "string"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ref",
            "name"
          ],
          "properties": {
            "ref": {
              "type": "string"
            },
            "orientation": {
              "type": "string",
              "enum": [
                "left-to-right",
                "right-to-left",
                "top-to-bottom",
                "bottom-to-top"
              ]
            },
            "name": {
              "type": "string"
            }
          }
        }
      ]
    }
  }
}

timing

Timing · plugin 1.0.0 · body record-list

Header fields

FieldTypePresenceValues
ididentifieroptional
numberbooleanoptional
titletextrequired
descriptiontextoptional
scaleenumoptionalcycles, time
unitenumoptionalns, µs, ms, s

Limits

{
  "maxSignals": 32,
  "maxIntervals": 256,
  "maxTotalIntervals": 2048,
  "maxGroups": 16,
  "maxGroupDepth": 2,
  "maxMarkers": 32,
  "maxArrows": 32,
  "maxTextCodePoints": 32,
  "maxWaveChars": 1024,
  "maxSpan": 512,
  "maxWidth": 64
}
Complete generated body contract
{
  "form": "record-list",
  "recordOpener": "-",
  "records": [
    {
      "kind": "signal",
      "fields": [
        {
          "key": "ref",
          "valueType": "identifier",
          "required": true
        },
        {
          "key": "clock",
          "valueType": "boolean",
          "required": false
        },
        {
          "key": "phase",
          "valueType": "decimal",
          "required": false
        },
        {
          "key": "width",
          "valueType": "integer",
          "required": false
        },
        {
          "key": "wave",
          "valueType": "text",
          "required": false
        },
        {
          "key": "intervals",
          "valueType": "record-list",
          "required": false
        }
      ],
      "groups": [
        {
          "of": "intervals",
          "fields": [
            {
              "key": "state",
              "valueType": "enum",
              "required": true,
              "values": [
                "low",
                "high",
                "unknown",
                "impedance",
                "bus",
                "continue",
                "rise",
                "fall"
              ]
            },
            {
              "key": "duration",
              "valueType": "decimal",
              "required": true
            },
            {
              "key": "value",
              "valueType": "text",
              "required": false
            }
          ]
        }
      ]
    },
    {
      "kind": "group",
      "fields": [
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "signals",
          "valueType": "string-list",
          "required": true
        }
      ]
    },
    {
      "kind": "marker",
      "fields": [
        {
          "key": "at",
          "valueType": "decimal",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        }
      ]
    },
    {
      "kind": "arrow",
      "fields": [
        {
          "key": "from",
          "valueType": "text",
          "required": true
        },
        {
          "key": "to",
          "valueType": "text",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        }
      ]
    }
  ],
  "schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "azeforge.timing/grammar/v1",
    "type": "array",
    "items": {
      "oneOf": [
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ref"
          ],
          "properties": {
            "ref": {
              "type": "string"
            },
            "clock": {
              "type": "boolean"
            },
            "phase": {
              "type": [
                "string",
                "number"
              ]
            },
            "width": {
              "type": [
                "string",
                "integer"
              ]
            },
            "wave": {
              "type": "string"
            },
            "intervals": {
              "type": "array"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "signals"
          ],
          "properties": {
            "label": {
              "type": "string"
            },
            "signals": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "at"
          ],
          "properties": {
            "at": {
              "type": [
                "string",
                "number"
              ]
            },
            "label": {
              "type": "string"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "from",
            "to"
          ],
          "properties": {
            "from": {
              "type": "string"
            },
            "to": {
              "type": "string"
            },
            "label": {
              "type": "string"
            }
          }
        }
      ]
    }
  }
}

diagram

Diagram · plugin 1.0.0 · body record-list

Header fields

FieldTypePresenceValues
ididentifieroptional
numberbooleanoptional
titletextoptional
descriptiontextoptional
modeenumrequiredflowchart, graph, tree, architecture
flowenumoptionaltop-to-bottom, bottom-to-top, left-to-right, right-to-left

Limits

{
  "maxDeclarations": 512,
  "maxNodes": 128,
  "maxEdges": 256,
  "maxGroups": 32,
  "maxGroupDepth": 4,
  "maxPortsPerNode": 12,
  "maxPorts": 128,
  "maxParallelEdges": 4,
  "maxLabelCodePoints": 500,
  "maxLabelLines": 8,
  "maxTotalLabelCodePoints": 16384
}
Complete generated body contract
{
  "form": "record-list",
  "recordOpener": "-",
  "records": [
    {
      "kind": "node",
      "fields": [
        {
          "key": "name",
          "valueType": "name",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "shape",
          "valueType": "enum",
          "required": false,
          "values": [
            "rectangle",
            "rounded",
            "diamond",
            "parallelogram",
            "circle",
            "hexagon",
            "cylinder"
          ]
        },
        {
          "key": "parent",
          "valueType": "name",
          "required": false
        },
        {
          "key": "ports",
          "valueType": "record-list",
          "required": false
        }
      ],
      "groups": [
        {
          "of": "ports",
          "fields": [
            {
              "key": "name",
              "valueType": "name",
              "required": true
            },
            {
              "key": "side",
              "valueType": "enum",
              "required": false,
              "values": [
                "left",
                "right",
                "top",
                "bottom"
              ]
            }
          ]
        }
      ]
    },
    {
      "kind": "group",
      "fields": [
        {
          "key": "name",
          "valueType": "name",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "parent",
          "valueType": "name",
          "required": false
        }
      ]
    },
    {
      "kind": "edge",
      "fields": [
        {
          "key": "from",
          "valueType": "name",
          "required": true
        },
        {
          "key": "to",
          "valueType": "name",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "direction",
          "valueType": "enum",
          "required": false,
          "values": [
            "directed",
            "undirected"
          ]
        }
      ]
    }
  ],
  "schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "azeforge.diagram/grammar/v1",
    "type": "array",
    "items": {
      "oneOf": [
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "name"
          ],
          "properties": {
            "name": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "shape": {
              "type": "string",
              "enum": [
                "rectangle",
                "rounded",
                "diamond",
                "parallelogram",
                "circle",
                "hexagon",
                "cylinder"
              ]
            },
            "parent": {
              "type": "string"
            },
            "ports": {
              "type": "array"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "name"
          ],
          "properties": {
            "name": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "parent": {
              "type": "string"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "from",
            "to"
          ],
          "properties": {
            "from": {
              "type": "string"
            },
            "to": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "direction": {
              "type": "string",
              "enum": [
                "directed",
                "undirected"
              ]
            }
          }
        }
      ]
    }
  }
}

sequence

Sequence · plugin 1.0.0 · body keyed-sections

Header fields

FieldTypePresenceValues
ididentifieroptional
numberbooleanoptional
titletextoptional
descriptiontextoptional

Limits

{
  "maxParticipants": 12,
  "maxTimelineItems": 256,
  "maxFragmentDepth": 4,
  "maxAltDivisions": 8,
  "maxNoteSpan": 2,
  "maxNoteTextChars": 1000,
  "maxNoteTextLines": 20
}
Complete generated body contract
{
  "form": "keyed-sections",
  "fields": [
    {
      "key": "participants",
      "valueType": "record-list",
      "required": true
    },
    {
      "key": "timeline",
      "valueType": "record-list",
      "required": true
    }
  ],
  "groups": [
    {
      "of": "participants",
      "fields": [
        {
          "key": "name",
          "valueType": "name",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "kind",
          "valueType": "enum",
          "required": false,
          "values": [
            "participant",
            "actor"
          ]
        }
      ]
    },
    {
      "of": "timeline",
      "records": [
        {
          "kind": "message",
          "fields": [
            {
              "key": "kind",
              "valueType": "enum",
              "required": true,
              "values": [
                "message",
                "alt",
                "loop",
                "note"
              ]
            },
            {
              "key": "form",
              "valueType": "enum",
              "required": false,
              "values": [
                "sync",
                "async",
                "return"
              ]
            },
            {
              "key": "from",
              "valueType": "name",
              "required": true
            },
            {
              "key": "to",
              "valueType": "name",
              "required": true
            },
            {
              "key": "text",
              "valueType": "text",
              "required": false
            },
            {
              "key": "activate",
              "valueType": "boolean",
              "required": false
            },
            {
              "key": "deactivate",
              "valueType": "boolean",
              "required": false
            }
          ]
        },
        {
          "kind": "alt",
          "fields": [
            {
              "key": "kind",
              "valueType": "enum",
              "required": true,
              "values": [
                "message",
                "alt",
                "loop",
                "note"
              ]
            },
            {
              "key": "divisions",
              "valueType": "record-list",
              "required": true
            }
          ],
          "groups": [
            {
              "of": "divisions",
              "fields": [
                {
                  "key": "condition",
                  "valueType": "text",
                  "required": false
                },
                {
                  "key": "body",
                  "valueType": "record-list",
                  "required": true
                }
              ]
            }
          ]
        },
        {
          "kind": "loop",
          "fields": [
            {
              "key": "kind",
              "valueType": "enum",
              "required": true,
              "values": [
                "message",
                "alt",
                "loop",
                "note"
              ]
            },
            {
              "key": "condition",
              "valueType": "text",
              "required": false
            },
            {
              "key": "body",
              "valueType": "record-list",
              "required": true
            }
          ]
        },
        {
          "kind": "note",
          "fields": [
            {
              "key": "kind",
              "valueType": "enum",
              "required": true,
              "values": [
                "message",
                "alt",
                "loop",
                "note"
              ]
            },
            {
              "key": "over",
              "valueType": "string-list",
              "required": true
            },
            {
              "key": "text",
              "valueType": "text",
              "required": true
            }
          ]
        }
      ]
    }
  ],
  "schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "azeforge.sequence/grammar/v1",
    "type": "object",
    "additionalProperties": false,
    "required": [
      "participants",
      "timeline"
    ],
    "properties": {
      "participants": {
        "type": "array"
      },
      "timeline": {
        "type": "array"
      }
    }
  }
}

state

State · plugin 1.0.0 · body record-list

Header fields

FieldTypePresenceValues
ididentifieroptional
numberbooleanoptional
titletextoptional
descriptiontextoptional

Limits

{
  "maxStates": 64,
  "maxDepth": 3,
  "maxTransitions": 128
}
Complete generated body contract
{
  "form": "record-list",
  "recordOpener": "-",
  "records": [
    {
      "kind": "state",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true,
          "values": [
            "state",
            "initial",
            "final",
            "transition"
          ]
        },
        {
          "key": "name",
          "valueType": "name",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "states",
          "valueType": "record-list",
          "required": false
        }
      ],
      "groups": [
        {
          "of": "states",
          "fields": [
            {
              "key": "kind",
              "valueType": "enum",
              "required": true,
              "values": [
                "state",
                "initial",
                "final"
              ]
            },
            {
              "key": "name",
              "valueType": "name",
              "required": true
            },
            {
              "key": "label",
              "valueType": "text",
              "required": false
            },
            {
              "key": "states",
              "valueType": "record-list",
              "required": false
            }
          ]
        }
      ]
    },
    {
      "kind": "initial",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true,
          "values": [
            "state",
            "initial",
            "final",
            "transition"
          ]
        },
        {
          "key": "name",
          "valueType": "name",
          "required": true
        }
      ]
    },
    {
      "kind": "final",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true,
          "values": [
            "state",
            "initial",
            "final",
            "transition"
          ]
        },
        {
          "key": "name",
          "valueType": "name",
          "required": true
        }
      ]
    },
    {
      "kind": "transition",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true,
          "values": [
            "state",
            "initial",
            "final",
            "transition"
          ]
        },
        {
          "key": "from",
          "valueType": "name",
          "required": true
        },
        {
          "key": "to",
          "valueType": "name",
          "required": true
        },
        {
          "key": "trigger",
          "valueType": "text",
          "required": false
        },
        {
          "key": "guard",
          "valueType": "text",
          "required": false
        },
        {
          "key": "action",
          "valueType": "text",
          "required": false
        }
      ]
    }
  ],
  "schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "azeforge.state/grammar/v1",
    "type": "array",
    "items": {
      "oneOf": [
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "name"
          ],
          "properties": {
            "kind": {
              "const": "state"
            },
            "name": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "states": {
              "type": "array"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "name"
          ],
          "properties": {
            "kind": {
              "const": "initial"
            },
            "name": {
              "type": "string"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "name"
          ],
          "properties": {
            "kind": {
              "const": "final"
            },
            "name": {
              "type": "string"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "from",
            "to"
          ],
          "properties": {
            "kind": {
              "const": "transition"
            },
            "from": {
              "type": "string"
            },
            "to": {
              "type": "string"
            },
            "trigger": {
              "type": "string"
            },
            "guard": {
              "type": "string"
            },
            "action": {
              "type": "string"
            }
          }
        }
      ]
    }
  }
}

entity

Entity · plugin 1.0.0 · body record-list

Header fields

FieldTypePresenceValues
ididentifieroptional
numberbooleanoptional
titletextoptional
descriptiontextoptional

Limits

{
  "maxEntities": 32,
  "maxAttributesPerEntity": 64,
  "maxRelationships": 64
}
Complete generated body contract
{
  "form": "record-list",
  "recordOpener": "-",
  "records": [
    {
      "kind": "entity",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true,
          "values": [
            "entity",
            "relationship"
          ]
        },
        {
          "key": "name",
          "valueType": "name",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "attributes",
          "valueType": "record-list",
          "required": false
        }
      ],
      "groups": [
        {
          "of": "attributes",
          "fields": [
            {
              "key": "name",
              "valueType": "name",
              "required": true
            },
            {
              "key": "type",
              "valueType": "text",
              "required": false
            },
            {
              "key": "keys",
              "valueType": "string-list",
              "required": false,
              "values": [
                "primary",
                "foreign",
                "unique"
              ]
            },
            {
              "key": "optional",
              "valueType": "boolean",
              "required": false
            },
            {
              "key": "references",
              "valueType": "record",
              "required": false
            }
          ]
        },
        {
          "of": "references",
          "fields": [
            {
              "key": "entity",
              "valueType": "name",
              "required": true
            },
            {
              "key": "attribute",
              "valueType": "name",
              "required": true
            }
          ]
        }
      ]
    },
    {
      "kind": "relationship",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true,
          "values": [
            "entity",
            "relationship"
          ]
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "first",
          "valueType": "record",
          "required": true
        },
        {
          "key": "second",
          "valueType": "record",
          "required": true
        }
      ],
      "groups": [
        {
          "of": "first",
          "fields": [
            {
              "key": "entity",
              "valueType": "name",
              "required": true
            },
            {
              "key": "cardinality",
              "valueType": "enum",
              "required": true,
              "values": [
                "one",
                "zero-or-one",
                "many",
                "one-or-many"
              ]
            },
            {
              "key": "role",
              "valueType": "text",
              "required": false
            }
          ]
        },
        {
          "of": "second",
          "fields": [
            {
              "key": "entity",
              "valueType": "name",
              "required": true
            },
            {
              "key": "cardinality",
              "valueType": "enum",
              "required": true,
              "values": [
                "one",
                "zero-or-one",
                "many",
                "one-or-many"
              ]
            },
            {
              "key": "role",
              "valueType": "text",
              "required": false
            }
          ]
        }
      ]
    }
  ],
  "schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "azeforge.entity/grammar/v1",
    "type": "array",
    "items": {
      "oneOf": [
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "name"
          ],
          "properties": {
            "kind": {
              "const": "entity"
            },
            "name": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "attributes": {
              "type": "array"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "first",
            "second"
          ],
          "properties": {
            "kind": {
              "const": "relationship"
            },
            "label": {
              "type": "string"
            },
            "first": {
              "type": "object"
            },
            "second": {
              "type": "object"
            }
          }
        }
      ]
    }
  }
}

class

Class · plugin 1.0.0 · body record-list

Header fields

FieldTypePresenceValues
ididentifieroptional
numberbooleanoptional
titletextoptional
descriptiontextoptional

Limits

{
  "maxClassifiers": 32,
  "maxAttributesPerClass": 64,
  "maxOperationsPerClass": 64,
  "maxParametersPerOperation": 16,
  "maxRelationships": 64
}
Complete generated body contract
{
  "form": "record-list",
  "recordOpener": "-",
  "records": [
    {
      "kind": "class",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true,
          "values": [
            "class",
            "interface",
            "relationship"
          ]
        },
        {
          "key": "name",
          "valueType": "name",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "abstract",
          "valueType": "boolean",
          "required": false
        },
        {
          "key": "attributes",
          "valueType": "record-list",
          "required": false
        },
        {
          "key": "operations",
          "valueType": "record-list",
          "required": false
        }
      ],
      "groups": [
        {
          "of": "attributes",
          "fields": [
            {
              "key": "name",
              "valueType": "name",
              "required": true
            },
            {
              "key": "type",
              "valueType": "text",
              "required": false
            },
            {
              "key": "visibility",
              "valueType": "enum",
              "required": false,
              "values": [
                "public",
                "private",
                "protected",
                "package"
              ]
            },
            {
              "key": "static",
              "valueType": "boolean",
              "required": false
            }
          ]
        },
        {
          "of": "operations",
          "fields": [
            {
              "key": "name",
              "valueType": "name",
              "required": true
            },
            {
              "key": "visibility",
              "valueType": "enum",
              "required": false,
              "values": [
                "public",
                "private",
                "protected",
                "package"
              ]
            },
            {
              "key": "static",
              "valueType": "boolean",
              "required": false
            },
            {
              "key": "parameters",
              "valueType": "record-list",
              "required": false
            },
            {
              "key": "return-type",
              "valueType": "text",
              "required": false
            }
          ]
        },
        {
          "of": "parameters",
          "fields": [
            {
              "key": "name",
              "valueType": "name",
              "required": true
            },
            {
              "key": "type",
              "valueType": "text",
              "required": false
            }
          ]
        }
      ]
    },
    {
      "kind": "interface",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true,
          "values": [
            "class",
            "interface",
            "relationship"
          ]
        },
        {
          "key": "name",
          "valueType": "name",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "operations",
          "valueType": "record-list",
          "required": false
        }
      ],
      "groups": [
        {
          "of": "operations",
          "fields": [
            {
              "key": "name",
              "valueType": "name",
              "required": true
            },
            {
              "key": "visibility",
              "valueType": "enum",
              "required": false,
              "values": [
                "public",
                "private",
                "protected",
                "package"
              ]
            },
            {
              "key": "static",
              "valueType": "boolean",
              "required": false
            },
            {
              "key": "parameters",
              "valueType": "record-list",
              "required": false
            },
            {
              "key": "return-type",
              "valueType": "text",
              "required": false
            }
          ]
        },
        {
          "of": "parameters",
          "fields": [
            {
              "key": "name",
              "valueType": "name",
              "required": true
            },
            {
              "key": "type",
              "valueType": "text",
              "required": false
            }
          ]
        }
      ]
    },
    {
      "kind": "relationship",
      "fields": [
        {
          "key": "kind",
          "valueType": "enum",
          "required": true,
          "values": [
            "class",
            "interface",
            "relationship"
          ]
        },
        {
          "key": "form",
          "valueType": "enum",
          "required": true,
          "values": [
            "inheritance",
            "implementation",
            "association",
            "aggregation",
            "composition"
          ]
        },
        {
          "key": "from",
          "valueType": "name",
          "required": true
        },
        {
          "key": "to",
          "valueType": "name",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "from-multiplicity",
          "valueType": "enum",
          "required": false,
          "values": [
            "one",
            "zero-or-one",
            "many",
            "one-or-many"
          ]
        },
        {
          "key": "to-multiplicity",
          "valueType": "enum",
          "required": false,
          "values": [
            "one",
            "zero-or-one",
            "many",
            "one-or-many"
          ]
        }
      ]
    }
  ],
  "schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "azeforge.class/grammar/v1",
    "type": "array",
    "items": {
      "oneOf": [
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "name"
          ],
          "properties": {
            "kind": {
              "const": "class"
            },
            "name": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "abstract": {
              "type": "boolean"
            },
            "attributes": {
              "type": "array"
            },
            "operations": {
              "type": "array"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "name"
          ],
          "properties": {
            "kind": {
              "const": "interface"
            },
            "name": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "operations": {
              "type": "array"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "form",
            "from",
            "to"
          ],
          "properties": {
            "kind": {
              "const": "relationship"
            },
            "form": {
              "type": "string",
              "enum": [
                "inheritance",
                "implementation",
                "association",
                "aggregation",
                "composition"
              ]
            },
            "from": {
              "type": "string"
            },
            "to": {
              "type": "string"
            },
            "label": {
              "type": "string"
            },
            "from-multiplicity": {
              "type": "string",
              "enum": [
                "one",
                "zero-or-one",
                "many",
                "one-or-many"
              ]
            },
            "to-multiplicity": {
              "type": "string",
              "enum": [
                "one",
                "zero-or-one",
                "many",
                "one-or-many"
              ]
            }
          }
        }
      ]
    }
  }
}

control

Control signal-flow diagrams · plugin 1.0.0 · body record-list

Header fields

FieldTypePresenceValues
flowenumoptionaltop-to-bottom, bottom-to-top, left-to-right, right-to-left
ididentifieroptional
numberbooleanoptional
titletextoptional
descriptiontextoptional

Limits

{
  "maxDeclarations": 256,
  "maxBlocks": 64,
  "maxSums": 32,
  "maxStubs": 32,
  "maxEdges": 128,
  "maxSignsPerSum": 8,
  "maxLabelCodePoints": 500,
  "maxTotalLabelCodePoints": 16384
}
Complete generated body contract
{
  "form": "record-list",
  "recordOpener": "-",
  "records": [
    {
      "kind": "block",
      "fields": [
        {
          "key": "name",
          "valueType": "name",
          "required": true
        },
        {
          "key": "tf",
          "valueType": "text",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        }
      ]
    },
    {
      "kind": "sum",
      "fields": [
        {
          "key": "name",
          "valueType": "name",
          "required": true
        },
        {
          "key": "signs",
          "valueType": "string-list",
          "required": true,
          "values": [
            "+",
            "-"
          ]
        }
      ]
    },
    {
      "kind": "input",
      "fields": [
        {
          "key": "name",
          "valueType": "name",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": true
        }
      ]
    },
    {
      "kind": "output",
      "fields": [
        {
          "key": "name",
          "valueType": "name",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": true
        }
      ]
    },
    {
      "kind": "edge",
      "fields": [
        {
          "key": "from",
          "valueType": "name",
          "required": true
        },
        {
          "key": "to",
          "valueType": "name",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        }
      ]
    }
  ],
  "schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "azeforge.control/grammar/v1",
    "type": "array",
    "items": {
      "oneOf": [
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "name",
            "tf"
          ],
          "properties": {
            "name": {
              "type": "string"
            },
            "tf": {
              "type": "string"
            },
            "label": {
              "type": "string"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "name",
            "signs"
          ],
          "properties": {
            "name": {
              "type": "string"
            },
            "signs": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "name",
            "label"
          ],
          "properties": {
            "name": {
              "type": "string"
            },
            "label": {
              "type": "string"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "name",
            "label"
          ],
          "properties": {
            "name": {
              "type": "string"
            },
            "label": {
              "type": "string"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "from",
            "to"
          ],
          "properties": {
            "from": {
              "type": "string"
            },
            "to": {
              "type": "string"
            },
            "label": {
              "type": "string"
            }
          }
        }
      ]
    }
  }
}

free-body

Free-body diagrams · plugin 1.0.0 · body record-list

Header fields

FieldTypePresenceValues
scaledecimaloptional
ididentifieroptional
numberbooleanoptional
titletextoptional
descriptiontextoptional
widthintegeroptional
heightintegeroptional
boundsrecordoptional

Limits

{
  "maxDeclarations": 256,
  "maxPolygonVertices": 64,
  "maxLabelChars": 500,
  "maxCoordinateMagnitude": 1000000,
  "maxDimensionPx": 4096
}
Complete generated body contract
{
  "form": "record-list",
  "recordOpener": "-",
  "records": [
    {
      "kind": "block",
      "fields": [
        {
          "key": "name",
          "valueType": "name",
          "required": true
        },
        {
          "key": "x",
          "valueType": "decimal",
          "required": true
        },
        {
          "key": "y",
          "valueType": "decimal",
          "required": true
        },
        {
          "key": "width",
          "valueType": "decimal",
          "required": true
        },
        {
          "key": "height",
          "valueType": "decimal",
          "required": true
        },
        {
          "key": "angle",
          "valueType": "decimal",
          "required": false
        },
        {
          "key": "visible",
          "valueType": "boolean",
          "required": false
        }
      ]
    },
    {
      "kind": "circle",
      "fields": [
        {
          "key": "name",
          "valueType": "name",
          "required": true
        },
        {
          "key": "x",
          "valueType": "decimal",
          "required": true
        },
        {
          "key": "y",
          "valueType": "decimal",
          "required": true
        },
        {
          "key": "radius",
          "valueType": "decimal",
          "required": true
        },
        {
          "key": "visible",
          "valueType": "boolean",
          "required": false
        }
      ]
    },
    {
      "kind": "polygon",
      "fields": [
        {
          "key": "name",
          "valueType": "name",
          "required": true
        },
        {
          "key": "vertices",
          "valueType": "string-list",
          "required": true
        },
        {
          "key": "visible",
          "valueType": "boolean",
          "required": false
        }
      ]
    },
    {
      "kind": "particle",
      "fields": [
        {
          "key": "name",
          "valueType": "name",
          "required": true
        },
        {
          "key": "x",
          "valueType": "decimal",
          "required": true
        },
        {
          "key": "y",
          "valueType": "decimal",
          "required": true
        },
        {
          "key": "visible",
          "valueType": "boolean",
          "required": false
        }
      ]
    },
    {
      "kind": "point",
      "fields": [
        {
          "key": "name",
          "valueType": "name",
          "required": true
        },
        {
          "key": "x",
          "valueType": "decimal",
          "required": true
        },
        {
          "key": "y",
          "valueType": "decimal",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "visible",
          "valueType": "boolean",
          "required": false
        }
      ]
    },
    {
      "kind": "line",
      "fields": [
        {
          "key": "name",
          "valueType": "name",
          "required": true
        },
        {
          "key": "from",
          "valueType": "name",
          "required": true
        },
        {
          "key": "to",
          "valueType": "name",
          "required": true
        },
        {
          "key": "visible",
          "valueType": "boolean",
          "required": false
        },
        {
          "key": "style",
          "valueType": "enum",
          "required": false,
          "values": [
            "solid",
            "dashed"
          ]
        }
      ]
    },
    {
      "kind": "force",
      "fields": [
        {
          "key": "at",
          "valueType": "record",
          "required": true
        },
        {
          "key": "angle",
          "valueType": "decimal",
          "required": false
        },
        {
          "key": "parallel-to",
          "valueType": "name",
          "required": false
        },
        {
          "key": "perpendicular-to",
          "valueType": "name",
          "required": false
        },
        {
          "key": "magnitude",
          "valueType": "decimal",
          "required": false
        },
        {
          "key": "length",
          "valueType": "decimal",
          "required": false
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        }
      ]
    },
    {
      "kind": "moment",
      "fields": [
        {
          "key": "at",
          "valueType": "record",
          "required": true
        },
        {
          "key": "direction",
          "valueType": "enum",
          "required": true,
          "values": [
            "cw",
            "ccw"
          ]
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        }
      ]
    },
    {
      "kind": "axes",
      "fields": [
        {
          "key": "at",
          "valueType": "record",
          "required": true
        },
        {
          "key": "angle",
          "valueType": "decimal",
          "required": false
        },
        {
          "key": "x-label",
          "valueType": "text",
          "required": false
        },
        {
          "key": "y-label",
          "valueType": "text",
          "required": false
        }
      ]
    },
    {
      "kind": "angle-mark",
      "fields": [
        {
          "key": "first",
          "valueType": "name",
          "required": true
        },
        {
          "key": "vertex",
          "valueType": "name",
          "required": true
        },
        {
          "key": "third",
          "valueType": "name",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": false
        }
      ]
    },
    {
      "kind": "dimension",
      "fields": [
        {
          "key": "from",
          "valueType": "record",
          "required": true
        },
        {
          "key": "to",
          "valueType": "record",
          "required": true
        },
        {
          "key": "label",
          "valueType": "text",
          "required": true
        }
      ]
    }
  ],
  "schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "azeforge.free-body/grammar/v1",
    "type": "array",
    "items": {
      "oneOf": [
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "name",
            "x",
            "y",
            "width",
            "height"
          ],
          "properties": {
            "name": {
              "type": "string"
            },
            "x": {
              "type": [
                "string",
                "number"
              ]
            },
            "y": {
              "type": [
                "string",
                "number"
              ]
            },
            "width": {
              "type": [
                "string",
                "number"
              ]
            },
            "height": {
              "type": [
                "string",
                "number"
              ]
            },
            "angle": {
              "type": [
                "string",
                "number"
              ]
            },
            "visible": {
              "type": "boolean"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "name",
            "x",
            "y",
            "radius"
          ],
          "properties": {
            "name": {
              "type": "string"
            },
            "x": {
              "type": [
                "string",
                "number"
              ]
            },
            "y": {
              "type": [
                "string",
                "number"
              ]
            },
            "radius": {
              "type": [
                "string",
                "number"
              ]
            },
            "visible": {
              "type": "boolean"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "name",
            "vertices"
          ],
          "properties": {
            "name": {
              "type": "string"
            },
            "vertices": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "visible": {
              "type": "boolean"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "name",
            "x",
            "y"
          ],
          "properties": {
            "name": {
              "type": "string"
            },
            "x": {
              "type": [
                "string",
                "number"
              ]
            },
            "y": {
              "type": [
                "string",
                "number"
              ]
            },
            "visible": {
              "type": "boolean"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "name",
            "x",
            "y"
          ],
          "properties": {
            "name": {
              "type": "string"
            },
            "x": {
              "type": [
                "string",
                "number"
              ]
            },
            "y": {
              "type": [
                "string",
                "number"
              ]
            },
            "label": {
              "type": "string"
            },
            "visible": {
              "type": "boolean"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "name",
            "from",
            "to"
          ],
          "properties": {
            "name": {
              "type": "string"
            },
            "from": {
              "type": "string"
            },
            "to": {
              "type": "string"
            },
            "visible": {
              "type": "boolean"
            },
            "style": {
              "type": "string",
              "enum": [
                "solid",
                "dashed"
              ]
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "at"
          ],
          "properties": {
            "at": {
              "type": "object"
            },
            "angle": {
              "type": [
                "string",
                "number"
              ]
            },
            "parallel-to": {
              "type": "string"
            },
            "perpendicular-to": {
              "type": "string"
            },
            "magnitude": {
              "type": [
                "string",
                "number"
              ]
            },
            "length": {
              "type": [
                "string",
                "number"
              ]
            },
            "label": {
              "type": "string"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "at",
            "direction"
          ],
          "properties": {
            "at": {
              "type": "object"
            },
            "direction": {
              "type": "string",
              "enum": [
                "cw",
                "ccw"
              ]
            },
            "label": {
              "type": "string"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "at"
          ],
          "properties": {
            "at": {
              "type": "object"
            },
            "angle": {
              "type": [
                "string",
                "number"
              ]
            },
            "x-label": {
              "type": "string"
            },
            "y-label": {
              "type": "string"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "first",
            "vertex",
            "third"
          ],
          "properties": {
            "first": {
              "type": "string"
            },
            "vertex": {
              "type": "string"
            },
            "third": {
              "type": "string"
            },
            "label": {
              "type": "string"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "from",
            "to",
            "label"
          ],
          "properties": {
            "from": {
              "type": "object"
            },
            "to": {
              "type": "object"
            },
            "label": {
              "type": "string"
            }
          }
        }
      ]
    }
  }
}

figure

Figure · plugin 1.0.0 · body keyed-sections

Header fields

FieldTypePresenceValues
ididentifieroptional
numberbooleanoptional
captionproseoptional

Limits

No directive-specific limits are published.

Complete generated body contract
{
  "form": "keyed-sections",
  "fields": [
    {
      "key": "children",
      "valueType": "record-list",
      "required": true
    }
  ],
  "schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "azeforge.figure/grammar/v1",
    "type": "object",
    "additionalProperties": false,
    "required": [
      "children"
    ],
    "properties": {
      "children": {
        "type": "array"
      }
    }
  }
}

bibliography

Bibliography · plugin 1.0.0 · body record-list

Header fields

FieldTypePresenceValues
ididentifieroptional
numberbooleanoptional
captionproseoptional

Limits

{
  "maxEntries": 512
}
Complete generated body contract
{
  "form": "record-list",
  "recordOpener": "-",
  "records": [
    {
      "kind": "entry",
      "fields": [
        {
          "key": "key",
          "valueType": "identifier",
          "required": true
        },
        {
          "key": "type",
          "valueType": "enum",
          "required": true,
          "values": [
            "article",
            "book",
            "chapter",
            "report",
            "thesis",
            "web",
            "software",
            "standard",
            "other"
          ]
        },
        {
          "key": "title",
          "valueType": "text",
          "required": true
        },
        {
          "key": "authors",
          "valueType": "record-list",
          "required": false
        },
        {
          "key": "year",
          "valueType": "text",
          "required": false
        },
        {
          "key": "venue",
          "valueType": "text",
          "required": false
        },
        {
          "key": "publisher",
          "valueType": "text",
          "required": false
        },
        {
          "key": "edition",
          "valueType": "text",
          "required": false
        },
        {
          "key": "pages",
          "valueType": "text",
          "required": false
        },
        {
          "key": "url",
          "valueType": "text",
          "required": false
        },
        {
          "key": "doi",
          "valueType": "text",
          "required": false
        },
        {
          "key": "note",
          "valueType": "text",
          "required": false
        }
      ],
      "groups": [
        {
          "of": "authors",
          "fields": [
            {
              "key": "name",
              "valueType": "text",
              "required": true
            },
            {
              "key": "family",
              "valueType": "text",
              "required": false
            }
          ]
        }
      ]
    }
  ],
  "schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "azeforge.bibliography/grammar/v1",
    "type": "array",
    "items": {
      "oneOf": [
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "key",
            "type",
            "title"
          ],
          "properties": {
            "key": {
              "type": "string"
            },
            "type": {
              "type": "string",
              "enum": [
                "article",
                "book",
                "chapter",
                "report",
                "thesis",
                "web",
                "software",
                "standard",
                "other"
              ]
            },
            "title": {
              "type": "string"
            },
            "authors": {
              "type": "array"
            },
            "year": {
              "type": "string"
            },
            "venue": {
              "type": "string"
            },
            "publisher": {
              "type": "string"
            },
            "edition": {
              "type": "string"
            },
            "pages": {
              "type": "string"
            },
            "url": {
              "type": "string"
            },
            "doi": {
              "type": "string"
            },
            "note": {
              "type": "string"
            }
          }
        }
      ]
    }
  }
}

algorithm

Algorithm · plugin 1.0.0 · body keyed-sections

Header fields

FieldTypePresenceValues
ididentifieroptional
numberbooleanoptional
captionproseoptional

Limits

{
  "maxStatements": 256,
  "maxNestingDepth": 8,
  "maxParameters": 32,
  "maxExpressionChars": 200
}
Complete generated body contract
{
  "form": "keyed-sections",
  "fields": [
    {
      "key": "procedure",
      "valueType": "name",
      "required": true
    },
    {
      "key": "parameters",
      "valueType": "string-list",
      "required": false
    },
    {
      "key": "steps",
      "valueType": "record-list",
      "required": true
    }
  ],
  "groups": [
    {
      "of": "steps",
      "records": [
        {
          "kind": "assign",
          "fields": [
            {
              "key": "assign",
              "valueType": "expression",
              "required": true
            }
          ]
        },
        {
          "kind": "if",
          "fields": [
            {
              "key": "if",
              "valueType": "expression",
              "required": true
            },
            {
              "key": "do",
              "valueType": "record-list",
              "required": false
            }
          ],
          "groups": [
            {
              "of": "do",
              "records": [
                {
                  "kind": "assign",
                  "fields": [
                    {
                      "key": "assign",
                      "valueType": "expression",
                      "required": true
                    }
                  ]
                },
                {
                  "kind": "if",
                  "fields": [
                    {
                      "key": "if",
                      "valueType": "expression",
                      "required": true
                    }
                  ]
                },
                {
                  "kind": "for",
                  "fields": [
                    {
                      "key": "for",
                      "valueType": "expression",
                      "required": true
                    }
                  ]
                },
                {
                  "kind": "while",
                  "fields": [
                    {
                      "key": "while",
                      "valueType": "expression",
                      "required": true
                    }
                  ]
                },
                {
                  "kind": "return",
                  "fields": [
                    {
                      "key": "return",
                      "valueType": "expression",
                      "required": true
                    }
                  ]
                },
                {
                  "kind": "text",
                  "fields": [
                    {
                      "key": "text",
                      "valueType": "prose",
                      "required": true
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "kind": "for",
          "fields": [
            {
              "key": "for",
              "valueType": "expression",
              "required": true
            },
            {
              "key": "do",
              "valueType": "record-list",
              "required": false
            }
          ],
          "groups": [
            {
              "of": "do",
              "records": [
                {
                  "kind": "assign",
                  "fields": [
                    {
                      "key": "assign",
                      "valueType": "expression",
                      "required": true
                    }
                  ]
                },
                {
                  "kind": "if",
                  "fields": [
                    {
                      "key": "if",
                      "valueType": "expression",
                      "required": true
                    }
                  ]
                },
                {
                  "kind": "for",
                  "fields": [
                    {
                      "key": "for",
                      "valueType": "expression",
                      "required": true
                    }
                  ]
                },
                {
                  "kind": "while",
                  "fields": [
                    {
                      "key": "while",
                      "valueType": "expression",
                      "required": true
                    }
                  ]
                },
                {
                  "kind": "return",
                  "fields": [
                    {
                      "key": "return",
                      "valueType": "expression",
                      "required": true
                    }
                  ]
                },
                {
                  "kind": "text",
                  "fields": [
                    {
                      "key": "text",
                      "valueType": "prose",
                      "required": true
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "kind": "while",
          "fields": [
            {
              "key": "while",
              "valueType": "expression",
              "required": true
            },
            {
              "key": "do",
              "valueType": "record-list",
              "required": false
            }
          ],
          "groups": [
            {
              "of": "do",
              "records": [
                {
                  "kind": "assign",
                  "fields": [
                    {
                      "key": "assign",
                      "valueType": "expression",
                      "required": true
                    }
                  ]
                },
                {
                  "kind": "if",
                  "fields": [
                    {
                      "key": "if",
                      "valueType": "expression",
                      "required": true
                    }
                  ]
                },
                {
                  "kind": "for",
                  "fields": [
                    {
                      "key": "for",
                      "valueType": "expression",
                      "required": true
                    }
                  ]
                },
                {
                  "kind": "while",
                  "fields": [
                    {
                      "key": "while",
                      "valueType": "expression",
                      "required": true
                    }
                  ]
                },
                {
                  "kind": "return",
                  "fields": [
                    {
                      "key": "return",
                      "valueType": "expression",
                      "required": true
                    }
                  ]
                },
                {
                  "kind": "text",
                  "fields": [
                    {
                      "key": "text",
                      "valueType": "prose",
                      "required": true
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "kind": "return",
          "fields": [
            {
              "key": "return",
              "valueType": "expression",
              "required": true
            }
          ]
        },
        {
          "kind": "text",
          "fields": [
            {
              "key": "text",
              "valueType": "prose",
              "required": true
            }
          ]
        }
      ]
    }
  ],
  "schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "azeforge.algorithm/grammar/v1",
    "type": "object",
    "additionalProperties": false,
    "required": [
      "procedure",
      "steps"
    ],
    "properties": {
      "procedure": {
        "type": "string"
      },
      "parameters": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "steps": {
        "type": "array"
      }
    }
  }
}

statement

Statement · plugin 1.0.0 · body keyed-sections

Header fields

FieldTypePresenceValues
ididentifieroptional
numberbooleanoptional
captionproseoptional
kindenumrequiredtheorem, definition, lemma, corollary, proposition, remark

Limits

{
  "maxMarkdownChars": 20000
}
Complete generated body contract
{
  "form": "keyed-sections",
  "fields": [
    {
      "key": "text",
      "valueType": "prose",
      "required": true
    },
    {
      "key": "proof",
      "valueType": "prose",
      "required": false
    }
  ],
  "schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "azeforge.statement/grammar/v1",
    "type": "object",
    "additionalProperties": false,
    "required": [
      "text"
    ],
    "properties": {
      "text": {
        "type": "string"
      },
      "proof": {
        "type": "string"
      }
    }
  }
}

example

Worked example · plugin 1.0.0 · body keyed-sections

Header fields

FieldTypePresenceValues
ididentifieroptional
numberbooleanoptional
captionproseoptional

Limits

{
  "maxSteps": 64,
  "maxGivens": 64,
  "maxMarkdownChars": 20000
}
Complete generated body contract
{
  "form": "keyed-sections",
  "fields": [
    {
      "key": "problem",
      "valueType": "prose",
      "required": true
    },
    {
      "key": "givens",
      "valueType": "string-list",
      "required": false
    },
    {
      "key": "steps",
      "valueType": "record-list",
      "required": true
    },
    {
      "key": "result",
      "valueType": "prose",
      "required": false
    }
  ],
  "groups": [
    {
      "of": "steps",
      "fields": [
        {
          "key": "text",
          "valueType": "prose",
          "required": true
        }
      ]
    }
  ],
  "schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "azeforge.example/grammar/v1",
    "type": "object",
    "additionalProperties": false,
    "required": [
      "problem",
      "steps"
    ],
    "properties": {
      "problem": {
        "type": "string"
      },
      "givens": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "steps": {
        "type": "array"
      },
      "result": {
        "type": "string"
      }
    }
  }
}