Workflow inputs, node values, and triggers
Canonical Octonode repository documentation.
Workflow inputs, node values, and triggers
This design uses the JSON Schema contracts Octonode already gets from code. It does not add a second form-definition format.
Data model
nodes[].signature.inputsremains code-owned. Itsproperties, types, defaults, descriptions, andrequiredlist define the node form.workflows[].bindings[nodeId][input]stores a fixed literal or a serializable source-symbol snapshot. The scheduler applies it after incoming edges and before expressions.workflows[].inputsis the workflow invocation schema. Source workflows project it from function parameters and local TypeScript types. Canvas workflows derive it from root inputs; Start/Webhook roots publish their output schema instead.typesremains the shared JSON Schema registry. Forms resolve#/types/<name>references. Adding a local TypeScript interface/type and compiling projects also updates the inline source-workflow input schema.
Studio flow
- Select or double-click a node to open the Inspector.
- The I/O tab renders one control per declared input.
requiredfields are marked; optional fields can remain unset. Fixed values are saved with the workflow draft and override incoming values. - Execute workflow opens the same schema-driven form for workflow inputs and refuses to run while required values are missing.
- Source-symbol bindings remain labeled with their declaration id; changing one intentionally replaces it with a workflow-owned literal.
One-way triggers
Start and Webhook declare inputs.properties: {} and therefore render no target handles. Their configured payload schema is exposed as outputs, so they only give values to the DAG. Connection validation rejects incoming edges even when topology is authored outside Studio.
POST /api/webhooks/:workflowId accepts the event JSON and runs the workflow through the normal queue/history path. The workflow must be active and have a Webhook root. Existing request authorization and project scoping apply.
Ownership
Source function signatures and source-projected bindings are code-owned and refreshed by Compile. Canvas topology, fixed values, expressions, activation, and layout are workflow/config-owned. Runtime validation remains in each language SDK, so Studio convenience checks never replace trust-boundary validation.