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

CascadeDefinition

A cascade's node graph: an ordered array of `CascadeNode` objects. Exactly one `ApplicantSource` node is the entry point; every other node is reached through the edge keys (`next_step`, `pass_steps`, `human_review_steps`, `fail_steps`), each of which is an array of node `id`s that must resolve within the same array. An empty array is accepted on create/update (an empty draft) but cannot be run.

Type: array of CascadeNode

CascadeDefinition has 1 top-level field. 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/CascadeDefinition in openapi.json; the example in the right-hand rail is synthesized from the field examples in that spec.

Fields

  • [] 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.

    Schema: CascadeNode

    • 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?