automation
ECA rules (event–condition–action).
Not in this build: see What works today.
automation
Section titled “automation”ECA rules (event–condition–action). Key = rule name. Run post-commit from the outbox, durable, with retries.
- Type:
map of object - Required: no
- Names match
^[a-z][a-z0-9_-]{0,62}$.
automation.<name>.description
Section titled “automation.<name>.description”Human-readable description of the automation rule.
- Type:
string - Required: no
automation.<name>.enabled
Section titled “automation.<name>.enabled”Whether the rule is active.
- Type:
boolean - Required: no
- Default:
true
automation.<name>.trigger
Section titled “automation.<name>.trigger”What fires the rule: an event pattern or a cron schedule.
- Type:
object - Required: yes
automation.<name>.trigger.event
Section titled “automation.<name>.trigger.event”Event pattern, e.g. entity.deals.updated, entity.*.created, entity.orders.* or the coalesced batch shape entity.orders.created.batch.
- Type:
string - Required: yes (in its variant)
- Pattern:
^(entity|auth|storage)\.([a-z][a-z0-9_]*|\*)\.([a-z]+|\*)(\.batch)?$ - Exactly one of
event,schedule.
automation.<name>.trigger.schedule
Section titled “automation.<name>.trigger.schedule”Cron expression (5 fields, UTC).
- Type:
string - Required: yes (in its variant)
- Pattern:
^\S+ \S+ \S+ \S+ \S+$ - Exactly one of
event,schedule.
automation.<name>.condition
Section titled “automation.<name>.condition”Condition in the CEL subset. Context: @user, @tenant; hooks/events additionally expose old, new, changed(field). Compiled fail-fast at apply time.
- Type:
string - Required: no
automation.<name>.delivery
Section titled “automation.<name>.delivery”perItem = one execution per affected row; batch = one execution with an array payload (coalesces bulk operations; matches the entity.*.*.batch event shape).
- Type:
string - Required: no
- Values:
"perItem","batch" - Default:
"perItem"
automation.<name>.actions
Section titled “automation.<name>.actions”Actions to run when the rule fires (in order).
- Type:
array of object - Required: yes
automation.<name>.actions[].type
Section titled “automation.<name>.actions[].type”Selects the variant.
- Type:
string - Required: yes
- Values:
"webhook","email","function","entity.update","http.call"
automation.<name>.actions[].endpoint
Section titled “automation.<name>.actions[].endpoint”The name of an endpoint declared under the top-level webhooks.endpoints.
- Type:
string - Required: yes (in its variant)
- Pattern:
^[a-z][a-z0-9_-]{0,62}$ - Only when
typeis"webhook".
automation.<name>.actions[].payload
Section titled “automation.<name>.actions[].payload”Depends on the variant; see the notes below.
- Type:
string or map of any - Required: depends on the variant
- Only when
typeis"webhook","entity.update"or"http.call". - When
typeis"webhook"or"http.call":string, optional — JSONata transformation expression (JSON -> JSON). Runs strictly post-commit (after-side), with depth/time limits. {{…}} templates are syntactic sugar. - When
typeis"entity.update":map of any, required — Field -> literal value or tagged {“$cel”: ”…”} expression; {{…}} sugar allowed in string values. Each entry: A literal JSON value, or a tagged CEL expression object {“$cel”: ”…”}.
automation.<name>.actions[].payload.<name>.$cel
Section titled “automation.<name>.actions[].payload.<name>.$cel”A CEL expression whose result becomes the value, in place of a JSON literal (e.g. now(), @user.id).
- Type:
string - Required: yes
automation.<name>.actions[].template
Section titled “automation.<name>.actions[].template”The name of a template declared in the top-level templates block.
- Type:
string - Required: yes (in its variant)
- Pattern:
^[a-z][a-z0-9_-]{0,62}$ - Only when
typeis"email".
automation.<name>.actions[].to
Section titled “automation.<name>.actions[].to”Address or a {{…}} template.
- Type:
string - Required: yes (in its variant)
- Only when
typeis"email".
automation.<name>.actions[].data
Section titled “automation.<name>.actions[].data”JSONata transformation expression (JSON -> JSON). Runs strictly post-commit (after-side), with depth/time limits. {{…}} templates are syntactic sugar.
- Type:
string - Required: no
- Only when
typeis"email".
automation.<name>.actions[].name
Section titled “automation.<name>.actions[].name”The name of a function declared in the top-level functions block.
- Type:
string - Required: yes (in its variant)
- Pattern:
^[a-z][a-z0-9_-]{0,62}$ - Only when
typeis"function".
automation.<name>.actions[].input
Section titled “automation.<name>.actions[].input”JSONata transformation expression (JSON -> JSON). Runs strictly post-commit (after-side), with depth/time limits. {{…}} templates are syntactic sugar.
- Type:
string - Required: no
- Only when
typeis"function".
automation.<name>.actions[].entity
Section titled “automation.<name>.actions[].entity”The entity whose record is created or updated.
- Type:
string - Required: yes (in its variant)
- Pattern:
^[a-z][a-z0-9_-]{0,62}$ - Only when
typeis"entity.update".
automation.<name>.actions[].recordId
Section titled “automation.<name>.actions[].recordId”Id or {{…}} template; omit to create a new record.
- Type:
string - Required: no
- Only when
typeis"entity.update".
automation.<name>.actions[].url
Section titled “automation.<name>.actions[].url”Absolute URL to call.
- Type:
string - Required: yes (in its variant)
- Only when
typeis"http.call".
automation.<name>.actions[].method
Section titled “automation.<name>.actions[].method”HTTP method.
- Type:
string - Required: no
- Values:
"GET","POST","PUT","PATCH","DELETE" - Default:
"POST" - Only when
typeis"http.call".
automation.<name>.actions[].headersSecretRef
Section titled “automation.<name>.actions[].headersSecretRef”Secret name in ISecretStore holding request headers (e.g. auth token); never the value itself.
- Type:
string - Required: no
- Only when
typeis"http.call".