Skip to content

EN Reference Graph Schema

Cavanshirpro edited this page Sep 19, 2026 · 1 revision

Graph schema v1: complete fields

English · Türkçe · Languages / Diller

Scope: JSON API Forge 0.5.1 · Source review: 17 September 2026 · Language: English

This is the graph file-format reference. Acceptance of a node metadata type does not mean the compiler can turn it into executable RPC. The graph guide describes the supported subset and Copy JSON workflow.

Root object

Field Type Required Default Schema constraints
$schema string No — —
schema_version const 1 Yes — —
target_document string Yes — pattern="^config/[A-Za-z0-9][A-Za-z0-9._-]{0,95}\\.json$"
metadata object No — —
nodes list[object] Yes — maxItems=500
edges list[object] Yes — maxItems=2000

Each node object

Field Type Required Default Schema constraints
id string Yes — pattern="^[A-Za-z0-9](?:[A-Za-z0-9._:-]{0,126}[A-Za-z0-9])?$"
type string Yes — pattern="^[a-z][a-z0-9]*(?:[._-][a-z0-9]+){1,7}$"
title string No — maxLength=160
x number Yes — min=-1000000; max=1000000
y number Yes — min=-1000000; max=1000000
properties object Yes — —

Each edge object

Field Type Required Default Schema constraints
id string Yes — pattern="^[A-Za-z0-9](?:[A-Za-z0-9._:-]{0,126}[A-Za-z0-9])?$"
from_node string Yes — pattern="^[A-Za-z0-9](?:[A-Za-z0-9._:-]{0,126}[A-Za-z0-9])?$"
from_port string Yes — pattern="^[A-Za-z0-9](?:[A-Za-z0-9._:-]{0,126}[A-Za-z0-9])?$"
to_node string Yes — pattern="^[A-Za-z0-9](?:[A-Za-z0-9._:-]{0,126}[A-Za-z0-9])?$"
to_port string Yes — pattern="^[A-Za-z0-9](?:[A-Za-z0-9._:-]{0,126}[A-Za-z0-9])?$"

Complete JSON Schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://json-api-forge.dev/schemas/editor-graph.schema.json",
  "title": "JSON API Forge Editor Graph",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schema_version",
    "target_document",
    "nodes",
    "edges"
  ],
  "properties": {
    "$schema": {
      "type": "string"
    },
    "schema_version": {
      "const": 1
    },
    "target_document": {
      "type": "string",
      "pattern": "^config/[A-Za-z0-9][A-Za-z0-9._-]{0,95}\\.json$"
    },
    "metadata": {
      "type": "object"
    },
    "nodes": {
      "type": "array",
      "maxItems": 500,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "type",
          "x",
          "y",
          "properties"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9](?:[A-Za-z0-9._:-]{0,126}[A-Za-z0-9])?$"
          },
          "type": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9]*(?:[._-][a-z0-9]+){1,7}$"
          },
          "title": {
            "type": "string",
            "maxLength": 160
          },
          "x": {
            "type": "number",
            "minimum": -1000000,
            "maximum": 1000000
          },
          "y": {
            "type": "number",
            "minimum": -1000000,
            "maximum": 1000000
          },
          "properties": {
            "type": "object"
          }
        }
      }
    },
    "edges": {
      "type": "array",
      "maxItems": 2000,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "from_node",
          "from_port",
          "to_node",
          "to_port"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9](?:[A-Za-z0-9._:-]{0,126}[A-Za-z0-9])?$"
          },
          "from_node": {
            "type": "string",
            "pattern": "^[A-Za-z0-9](?:[A-Za-z0-9._:-]{0,126}[A-Za-z0-9])?$"
          },
          "from_port": {
            "type": "string",
            "pattern": "^[A-Za-z0-9](?:[A-Za-z0-9._:-]{0,126}[A-Za-z0-9])?$"
          },
          "to_node": {
            "type": "string",
            "pattern": "^[A-Za-z0-9](?:[A-Za-z0-9._:-]{0,126}[A-Za-z0-9])?$"
          },
          "to_port": {
            "type": "string",
            "pattern": "^[A-Za-z0-9](?:[A-Za-z0-9._:-]{0,126}[A-Za-z0-9])?$"
          }
        }
      }
    }
  }
}

Sources and verification

This page describes the behavior at the pinned commits below. Recheck these contracts when upgrading.


English home · All English pages · Version maintenance

Clone this wiki locally