Schemas / Node graph

rig.node.graph

v0.31.0 · draft 3 fields 3 required

Fields

FieldTypeMeaning
nodes array<rig.node.node> required Graph nodes - see rig.node.node
links array<rig.node.link> required Directed pin links - see rig.node.link
nextId uint required Next id allocator for nodes / links / pins

Portable node graph on one entity. Format when present.

Also used inline as nested on a rig.node.node for nestable groups.

Contract vs host

Layer Owned by Examples
Portable PODs Rig graph / node / pin / link / param / publish fields
Value type ids Rig properties float, vec2, vec4, ...
Catalog typeIds Host / pack float.add, mod.lfo, color.value, group
Evaluation Host / pack Graph walk, group recursion, coercion, outputs

Nestable groups

A node with nested is a group: it appears as one node on the parent canvas; its interior is another graph. Published pins (rig.node.publish) expose selected interior pins as the group's outer interface. Recursion is allowed.

Editor mirrors (nodeCount, ...) and dive UI state are host-only - do not serialize.

Fulfillment

RigKit's node editor over the same PODs - two value nodes into an add node, one link per pin pair. Canvas positions, live pin readouts, and selection are host state; only the fields above travel.

RigKit node editor - Value A and Value B into an Add node

JSON Schema

Resolves at https://rig.works/schemas/rig.node.graph.schema.jsonraw file.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://rig.works/schemas/rig.node.graph.schema.json",
  "title": "rig.node.graph",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "nodes",
    "links",
    "nextId"
  ],
  "properties": {
    "nodes": {
      "type": "array",
      "items": {
        "$ref": "./rig.node.node.schema.json"
      }
    },
    "links": {
      "type": "array",
      "items": {
        "$ref": "./rig.node.link.schema.json"
      }
    },
    "nextId": {
      "$ref": "./_defs.schema.json#/$defs/uint"
    }
  }
}