Repository navigation
EN Editor Graphs
English · Türkçe · Languages / Diller
Scope: JSON API Forge 0.5.1 · Source review: 17 September 2026 · Language: English
A graph is a versioned design document, not a separate runtime language. Supported nodes compile into ordinary Forge operation fragments, which still pass runtime schema and authorization checks.
Root fields are $schema, schema_version, target_document, metadata, nodes and edges. The v0.5.1 graph schema version is 1. Targets must be direct config/*.json paths. Nodes use id/type/title/x/y/properties; edges use id/from_node/from_port/to_node/to_port.
Node/edge IDs must be unique, referenced targets must exist, and cycles or multiple connections to the same input are rejected. See the schema reference for size/node/edge limits. A visual cycle is rejected during validation rather than executed as an infinite backend loop.
| UI concept / type | Compilation behavior |
|---|---|
Request / request.input
|
At most one; method/input-schema context |
Authorization / auth.policy
|
At most one; public access or permission |
SQL Query / data.query
|
SQL statement; defaults to fetch_all
|
SQL Mutation / data.mutate
|
SQL statement; defaults to execute
|
Forge Operation / operation.call
|
Exactly one operation definition required |
Python SDK / python.call
|
Adds a supplied hook to background_hooks
|
Response / response.output
|
At most one; current compiler supports only HTTP 200 |
| Branch, Transform, Event, custom plugin nodes | Design-only; explicit compilation error |
python.call does not evaluate arbitrary Python inline or automatically invoke a remote SDK. The current compiler emits a background-hook reference. Node labels do not imply additional runtime behavior.
- Use
File → New operation graph…and select the target config path. - Create one Operation and at least one Query/Mutation node; connect the required request/auth/response nodes.
- Set SQL bindings, permission and input schema explicitly in Properties.
- Inspect the JSON through Compile preview.
- Use Copy JSON and apply the output to the intended configuration document.
- Check that unrelated operations were retained and routes were not duplicated.
- Run
forge validate, inspect routes/OpenAPI and test the actual operation.
Saving the graph does not automatically publish its compiled configuration. target_document metadata does not write a separate config file; the current UI provides preview/copy. Review graph and runtime-config versions together because they can diverge.
SQL nodes propagate selected fields such as SQL, mode, params, result_name and max_rows. The visual compiler does not expose every runtime operation field. For rowcount guards, custom paths, cache/invalidation and other advanced options, inspect the generated fragment against the RPC model. Preserve manual additions when applying later compiler output.
Query-only graphs emit transaction=false; graphs with mutations emit a transaction. Idempotency selection applies in the mutation context. Design-only nodes are rejected explicitly, not silently omitted.
Remote writes require EDITOR_ALLOW_GRAPHS=true, appropriate project/document scopes and documents.graphs.write. Graph-save validation checks metadata/structural consistency, not runtime permission. Final configuration containing hooks remains subject to the hook trust boundary.
This page describes the behavior at the pinned commits below. Recheck these contracts when upgrading.
Editor/editor/src/GraphModel.cppEditor/editor/src/NodeGraphEditor.cppEditor/editor/src/MainWindow.cppmain/framework/editor_api.pymain/schemas/editor-graph.schema.json