Skip to main content

Conditional routing (v1)

Stable / GA

This is the current stable version of this step type.

A decision step represents a conditional branching point in the flow​

A decision step represents a conditional branching point in the flow. Decision steps evaluate conditions and route execution to different paths based on the result. This can include one or more routes (branches).


Key features​

  • Outgoing Transitions: Must have at least one outgoing transition
  • Routing: Transitions should specify routes to indicate the condition result.
  • No Data block I/O: Does not consume or produce data blocks directly.
  • Sequential Evaluation: Evaluates choices sequentially until one matches.
  • AND Logic: Each choice can have multiple conditions that must ALL be true (AND logic).
  • Default Fallback: Falls back to default route if no choices match.

Configuration​

OptionTypeRequiredDescription
choicesobject[]YesArray of choice objects defining conditional branches. Evaluated sequentially in order until one matches.
defaultstringYesDefault route name used when no choices match.

Choice object

OptionTypeRequiredDescription
conditionsobject[]YesArray of condition objects that must ALL be true (AND logic).
thenstringYesRoute name to use when all conditions in this choice are satisfied.
Condition object
Condition object — Single value condition
OptionTypeRequiredDescription
left_operandstringYesReferences the last data block of this type from upstream steps. Use dot-notation to reference a specific field, e.g. datablock.property or datablock.nested.field. Field names are case-sensitive.
operatorstringYesComparison operator to apply. Accepted values: gt, lt, gte, lte, eq, ne.
valueanyNoSingle value for comparison. Required for eq, ne, gt, lt, gte, lte operators.
Condition object — Range condition
OptionTypeRequiredDescription
left_operandstringYesReferences the last data block of this type from upstream steps. Use dot-notation to reference a specific field, e.g. datablock.property or datablock.nested.field. Field names are case-sensitive.
operatorstringYesComparison operator to apply. Accepted values: between, not_between.
rangetupleYesArray of two values [lower, upper] for range operations. Required for between and not_between operators.

Condition operators

OperatorDescriptionRequires
eqEqualvalue
neNot equalvalue
gtGreater thanvalue
ltLess thanvalue
gteGreater than or equalvalue
lteLess than or equalvalue
betweenBetween range (inclusive)range
not_betweenNot between rangerange

Example configuration​

{
"choices": [
{
"conditions": [
{
"left_operand": "documentVerification.verdict",
"operator": "eq",
"value": "success"
}
],
"then": "success"
},
{
"conditions": [
{
"left_operand": "documentVerification.verdict",
"operator": "eq",
"value": "failure"
}
],
"then": "failure"
},
{
"conditions": [
{
"left_operand": "basicIdentity.birthDate",
"operator": "between",
"range": ["2024-06-01", "2024-06-30"]
}
],
"then": "success"
}
],
"default": "error"
}