Node reference: Logic and actions

Assertion, Branch, For Each, Approval, HTTP Action, Wait-for-HTTP, Delay.

workbooksnodesassertionbranchforeachapprovalhttp

Node reference: Logic and actions

These nodes turn a sequence of checks into a real runbook: gate on conditions, branch, loop, pause for a human, and call APIs to remediate. Find them in the Logic and Actions palette groups.

Assertion

The gate. Build conditions over any value the run has produced; the node passes only if they hold.

How you build it

Add one or more conditions, optionally organized into groups combined with AND/OR. Each condition has three parts:

  • Check — the value to test. Choose where it comes from (Upstream Output, Variable, Node Output, Context or Static Value) and name the field, e.g. hasErrors or firstRow.status. The form suggests the outputs your upstream nodes actually produce.
  • Operator — Equals, Not Equals, Greater/Less Than, Contains, Starts/Ends With, Matches (Regex), Is True/False, Is Empty/Not Empty, Between, In/Not In, Has Key, Type Is.
  • Compare to — the expected value (Between takes a Min and a Max; In takes a comma-separated list).

What it outputs

Pass/fail plus how many conditions were checked and how many passed.

Example — an SLO gate: hasErrors Is False AND httpResponseTime Less Than 800.

Branch

Runs only one downstream path based on a condition — remediate only when something is actually wrong.

How you build it

Set the Left value (usually a {{variable}}, e.g. {{hasErrors}}), an Operator, and if needed a Right value; then pick which downstream nodes belong to True path → run these and which to False path → run these. The side that isn't taken shows as skipped in the timeline.

For Each

Repeats an HTTP check for every item in a list — regions, tenants, endpoints.

What you fill in

Field What to enter
Items from upstream output (key) The name of an upstream output that holds a list — e.g. the endpoints a Discovery run found. Or use the static list instead.
Static items (optional) A fixed comma-separated list, e.g. /api/products,/api/orders,/api/health.
Method / URL template The check to run per item. Write ${item} where the item goes, e.g. https://shop.example.com${item} (for object items, ${item.field} works too).
Body template Optional request body, same ${item} substitution.
Expected status / Max items The status each item must return, and a cap on how many items run.

What it outputs

How many items ran, passed and failed, plus a per-item result list. The node succeeds only if every item passed.

Approval

A human-in-the-loop gate: the run pauses until someone approves or rejects — put it in front of anything irreversible.

Fill in a Title and Message for the approver, and pick a Timeout (15 minutes to 24 hours). Decide from the run view or the approvals inbox; a rejection or a timeout fails the run.

HTTP Action

Calls any API to act on what the run found — restart a service, scale up, flip a feature flag, or post findings to a webhook.

Fill in the Method, URL, Headers and Body (all support {{variables}}, so you can post an AI summary), the Expected status, a Timeout (ms) and Retries with a Retry delay (ms). Outputs include the status code and the response, available to downstream nodes.

Wait for HTTP

Polls an endpoint until it's healthy — use it after a remediation to wait for the service to come back before continuing.

Fill in the Method, URL, the Expected status, optionally a Body contains text, a Poll interval (ms) and a Timeout (ms). The node fails if the endpoint never becomes healthy in time.

Delay

A simple pause (warm-up, settle time). One field: Delay (ms), default 5000.