{"schemaVersion":"1","contentVersion":"2026-10-18.1","slug":"controls-workflow-nodes","title":"Workflow step settings and data controls","summary":"Configure activity calls, HTTP requests, conditions, waits, field transformations, and reusable input controls.","category":"Control reference","minutes":9,"prerequisites":["Open the named screen in Rumata. Available controls may depend on your account, permissions, and resource state."],"sections":[{"id":"values","title":"Fixed values, expressions, and secrets","blocks":[{"type":"paragraph","text":"Select a step on the canvas. Its settings become part of the draft; [Save](/guides/controls-workflows#toolbar) publishes them. A fixed value stays the same each run. An expression calculates a value from that run’s data."},{"type":"table","headers":["Control","What it does"],"rows":[["Expression suggestions / Arrow Up / Arrow Down / Enter / Tab / Escape","Choose a suggested input field, upstream result, or function. Enter or Tab inserts the highlighted suggestion; Escape closes the list."],["Text field / choice menu / on-off switch","Enter a value, choose an allowed option, or enable a setting. The activity defines which control appears and which fields are required."],["ƒx → Use an expression (JSONata)","Calculate the value from incoming data or an earlier step. Choose [Use a fixed value](/guides/controls-workflow-agents#connectors) to return to a constant. Switching modes can clear the previous value, so review it afterwards."],["Expression suggestions / Up / Down / Enter / Tab / Escape","Browse suggested fields with the arrow keys, insert the selected suggestion with Enter or Tab, or dismiss suggestions with Escape."],["Key icon → Use a project secret","Choose an existing secret by name. The saved graph refers to it without containing its value. Returning to a fixed value clears the reference."],["Secret selector","Select the secret to resolve when the workflow runs. A “not found” label means the saved name is missing from the available list."],["Object / array JSON editor","Enter a valid object or list. Invalid text shows an error and does not replace the last valid value; leaving a valid field formats it."],["Required-field marker and validation message","Complete fields marked with an asterisk and follow the nearby explanation. Defaults shown as hints describe the activity’s defaults."]]}]},{"id":"activity","title":"Call an activity","blocks":[{"type":"paragraph","text":"An activity is a reusable unit of work. Its own configuration template determines the fields available in this step."},{"type":"table","headers":["Control","What it does"],"rows":[["This step runs → Change","Open the activity picker and choose the implementation to call."],["Activity picker search / activity choice / Close","Find and select an available activity, or leave without changing the selection."],["Configuration fields","Set each displayed argument using its description, type, and required marker. See the shared value controls above for expressions and secrets."],["Saved query picker","For a database-query activity, select a real saved query instead of typing an invented identifier."],["Search by name, SQL, or query ID / Load more","Find a saved query and fetch additional results. Selecting a row configures the step; it does not run the query."],["Use SQL from workflow input / No saved query","Clear the saved-query selection and use SQL supplied to the workflow. Review where that input comes from before accepting requests."],["Open in Database Studio","Open the selected saved query in the database editor for inspection."],["Advanced → Activity ID","Inspect or enter the technical identifier of the activity."],["Input schema / Output schema disclosure","Expand the activity’s expected and returned data shapes. These describe the activity, rather than the workflow-level API schema."]]}]},{"id":"http","title":"HTTP request settings","blocks":[{"type":"paragraph","text":"[HTTP Request](/guides/controls-workflow-nodes#http) calls an external service directly. The request is sent when the workflow executes, not when you edit these fields."},{"type":"table","headers":["Control","What it does"],"rows":[["Method / URL","Choose the request action and destination address. The URL can use a fixed value, expression, or project secret."],["Headers → Add header / header name / value / trash","Add or remove request headers. Values can use expressions or secret references."],["Body","For methods that accept a body, supply JSON, plain text, an expression, or a secret. GET and HEAD do not show this field."],["Advanced → Timeout (ms)","Limit how long the request may take, in milliseconds. The upper limit is 120,000 milliseconds (2 minutes)."]]}]},{"id":"conditions","title":"Conditions, routing, and waiting","blocks":[{"type":"paragraph","text":"These steps choose the path data follows or coordinate when it continues."},{"type":"table","headers":["Control","What it does"],"rows":[["If → Continue only when…","Enter a condition. Connect the true and false outputs to the appropriate next steps."],["Filter → Keep items where…","Enter a condition. Only matching items continue beyond this step."],["Wait for / Seconds / Minutes / Hours / Days","Set a pause before continuing with the same data, up to 30 days."],["Merge → How to combine inputs","Choose whether to wait for all inputs, take the first, append inputs, or combine by a matching key."],["Merge → Key field","When combining by key, name the field used to match records."],["Switch → Route to a path when… / path name","Define ordered conditions and the named output each should use. The first matching condition wins."],["Switch → Add a path / trash","Add or remove a routing condition and its output name."],["Switch → Otherwise go to","Name the fallback output for data that matches no condition."]]}]},{"id":"fields-code","title":"Edit Fields and Code","blocks":[{"type":"paragraph","text":"Use [Edit Fields](/guides/controls-workflow-nodes#fields-code) to shape data one field at a time. [Code](/guides/controls-workflow-nodes#fields-code) is for a custom JavaScript transformation."},{"type":"table","headers":["Control","What it does"],"rows":[["Edit Fields → Keep input fields?","Keep the incoming fields and overwrite the ones you specify, or output only the listed fields."],["Field name / value / Add field / trash","Define the output fields or remove a field assignment."],["Edit Fields → ƒx","Switch a field value between fixed text and a JavaScript expression."],["Code → JavaScript editor","Write a transformation and return the data you want to pass on. This runs inside the workflow’s restricted code environment."],["Code → Advanced → Timeout (ms)","Limit execution time, up to 5,000 milliseconds (5 seconds)."]]}]}],"technical":[],"related":["controls-builtin-activities","controls-workflows","controls-workflow-agents","system-explorer-activities"],"sources":["components/window/explorer/graph-workflows/NodeConfigPanel.tsx","components/window/explorer/graph-workflows/node-config/fields.tsx","components/window/explorer/graph-workflows/node-config/StructuredLiteralControl.tsx","components/window/explorer/graph-workflows/node-config/ActivitySection.tsx","components/window/explorer/graph-workflows/node-config/HttpSection.tsx","components/window/explorer/graph-workflows/node-config/ControlSection.tsx","components/window/explorer/graph-workflows/node-config/CodeSection.tsx"],"updated":"2026-09-06","audience":"general","media":[],"video":null,"url":"https://docs.rumata.dev/guides/controls-workflow-nodes"}