Sign in to run requests with your own sandbox key. Sign in

CascadeNode

One node of a cascade. `id` and `type` are always required; the remaining required keys depend on `type` (see `x-required-keys-by-type`): | type | required keys | purpose | |---|---|---| | `ApplicantSource` | — | Entry point; exposes the trigger payload as `context.applicant`. Exactly one per cascade. | | `BillingProduct` (alias `Product`) | `billing_product_code` | Pulls a report (credit, criminal, eviction, identity, income). | | `IfElse` (alias `Condition`) | `branches` | Evaluates conditions and routes to `pass_steps`, `human_review_steps` or `fail_steps`. | | `Wait` | `wait` | Pauses for `wait.duration` × `wait.unit`. | | `GoTo` | `target_step` | Runtime jump to another node (not a graph edge). | | `ShowResults` | — | Terminal node that surfaces collected outputs. | | `Action` | `action_type` | `Approve`, `SendEmail` (reads `email`), `AdverseAction` (reads `adverse_action`), `InternalNotification` (reads `internal_notification`). | `Product` and `Condition` are legacy aliases the engine still resolves; new definitions should use `BillingProduct` and `IfElse`. Unknown keys are tolerated and ignored by the engine.

Type: CascadeNode

CascadeNode has 16 top-level fields; id, type are always present. Fields typed as another schema link to that schema's page, and nested objects expand in place below. The machine-readable definition is #/components/schemas/CascadeNode in openapi.json; the example in the right-hand rail is synthesized from the field examples in that spec.

Fields

  • id string required Unique within the definition, e.g. `step_credit`. Edge keys reference nodes by this value.
  • type string required One of ApplicantSource BillingProduct Product IfElse Condition Wait GoTo ShowResults Action
  • name string Human-readable label shown in the builder and in `step_outputs`.
  • next_step array of string Default forward edge — ids of the node(s) to run next.
  • billing_product_code string `BillingProduct` / `Product` only. The product to pull, e.g. `EQF1003` (Equifax credit), `TUC1001` (TransUnion credit), `CIC4002` (criminal), `CIC4003` (eviction). May also be nested as `config.billing_product_code`.
  • config object Optional per-node configuration. `store_result_as` names the key under which a product's output is stored.
    • store_result_as string
    • billing_product_code string Alternative location for `billing_product_code`.
  • branches object `IfElse` / `Condition` only. Conditions for the `pass` branch and (optionally) the `human_review` branch; anything that matches neither takes `fail_steps`.
    • pass CascadeBranch A branch of an `IfElse` node — one or more condition groups combined with `group_logic`.

      Schema: CascadeBranch

      • group_logic string How the condition groups combine. Defaults to `and`. One of and or
      • condition_groups array of object
        • logic string How the conditions inside this group combine. Defaults to `and`. One of and or
        • conditions array of CascadeCondition required
          • source_node_id string required The `id` of the product node whose output is compared.
          • field string required Exact output field path from that product's schema, e.g. `creditScore.fico9`.
          • operator string required One of equals not_equals greater_than greater_than_or_equal less_than less_than_or_equal contains not_contains starts_with ends_with is_empty is_not_empty is_true is_false
          • value one of The comparison value. Required for every operator except the unary ones (`is_empty`, `is_not_empty`, `is_true`, `is_false`), which accept `null` or no `value` at all.
            • option 1 string, nullable
            • option 2 number
            • option 3 boolean
    • human_review CascadeBranch A branch of an `IfElse` node — one or more condition groups combined with `group_logic`.

      Schema: CascadeBranch

      • group_logic string How the condition groups combine. Defaults to `and`. One of and or
      • condition_groups array of object
        • logic string How the conditions inside this group combine. Defaults to `and`. One of and or
        • conditions array of CascadeCondition required
          • source_node_id string required The `id` of the product node whose output is compared.
          • field string required Exact output field path from that product's schema, e.g. `creditScore.fico9`.
          • operator string required One of equals not_equals greater_than greater_than_or_equal less_than less_than_or_equal contains not_contains starts_with ends_with is_empty is_not_empty is_true is_false
          • value one of The comparison value. Required for every operator except the unary ones (`is_empty`, `is_not_empty`, `is_true`, `is_false`), which accept `null` or no `value` at all.
            • option 1 string, nullable
            • option 2 number
            • option 3 boolean
  • pass_steps array of string `IfElse` only. Node ids to run when the `pass` branch matches.
  • human_review_steps array of string `IfElse` only. Node ids to run when the `human_review` branch matches; the execution pauses with `needs_human_review: true` until a review decision resumes it.
  • fail_steps array of string `IfElse` only. Node ids to run when no branch matches.
  • action_type string `Action` only. One of Approve SendEmail AdverseAction InternalNotification
  • email object `Action` with `action_type: SendEmail`. Fields support `{{variable}}` interpolation from the execution context.
    • to string
    • subject string
    • body string
  • adverse_action object `Action` with `action_type: AdverseAction`. `send_strategy: draft_first` parks the notice for human review before sending.
    • recipient string
    • action_taken string The action box ticked on the notice: `denied` (application denied), `revoked` (credit revoked or terms changed unfavorably), `adverse_employment` (adverse employment action) or `other_action`. Cascades the AI designer generates always use `denied`. One of denied revoked adverse_employment other_action
    • send_strategy string One of draft_first auto_send
    • reason string
  • internal_notification object `Action` with `action_type: InternalNotification`. Operator-facing notification settings.
  • wait object `Wait` only. The delay before the next node runs.
    • duration number
    • unit string One of seconds minutes hours days weeks
  • target_step string `GoTo` only. The node id to jump to.
Was this page helpful?