Skip to main content
PUT
Declares what happens when new rows land in a dataset: invoke an action on

Authorizations

Authorization
string
header
required

An Erdo API key (erdo_api_...) or scoped token (erdo_token_...).

Body

application/json
action
enum<string>
Available options:
inventory_lookup,
dispose_lookup
after
string

for. Both are triggered by the same write, so without it they run at the same moment and neither can see the other's work. With it, a row is held until that declaration has recorded its result for the same row, and what it recorded arrives as this declaration's starting result — so an alert can say what a lookup found. A row is never held indefinitely: if the result has not landed within a few minutes, the row is acted on without it.

backfill
string

Without it a declaration only ever sees what arrives next, which is the right default — declaring one must not silently invoke a paid action once per historical row — but it leaves no way to say "and do the ones you got wrong". A declaration whose steps were mistaken is otherwise permanent: every row it already decided about is remembered as decided.

"all" means every row. A timestamp means every row at or after it. Both clear the record of what has been acted on, so the rows in range are taken through the steps again even though they have been through them before — which is the entire request.

dataset
string

including ones created later.

debounce_seconds
integer<int64>
Required range: 0 <= x <= 3600
destination
Where to record what the steps returned. Omitting a destination entirely is · object

normal: a step that sends an email or files a ticket has done its work by running, and has nothing to store.

disposition_reason
string
Maximum string length: 2000
Pattern: \S
enabled
boolean

other declarations are removed. Both restart from future arrival/update cursors when enabled again, without purchasing the off-period backlog.

expected_observed_at
string<date-time>
key_column
string

this dataset upserts on. It is how a row being written a second time is recognised as the same row rather than a new one. Normally detected; set it when the dataset identifies a row unconventionally.

key_fallback_columns
string[]
name
string

dataset can both alert a desk and enrich a record without either replacing the other. Lowercase letters, digits, hyphens and underscores.

on_exclude
RowActionOnExclude selects departures from the default view instead of arrivals. · object
on_update
enum<string>
default:skip

written again: "skip" (the default) leaves it alone, and "act" takes it through the steps again. Default to skip unless a later write genuinely changes the answer — acting again invokes the actions again, and pays for them again.

Available options:
skip,
act
outcome_contract
enum<string>
Available options:
lookup-v1
outcome_id
string<uuid>
recovery
This is part of the existing declaration preview/confirmation surface. · object

Selected IDs are claims corroborated against the source owner on every use.

skip_when
string

Each new row is judged against the caller's own words before actions run or a destination is written. An uncertain or failed judgement runs the steps: the gate fails open rather than silently dropping work.

steps
One step of a declaration. A step is EITHER an action to invoke (app and key) · object[]

once an earlier action has answered, and a script always runs. A step whose templated input resolves to nothing cannot be built for that row, so the next one is tried instead.

timestamp_column
string

detected; set it when the dataset names that column unconventionally. It must hold timestamps: the declaration starts from the newest value already in that column and compares later rows against it as text, so a column of free-text answers is refused rather than accepted into a declaration that would act on nothing.

validate_only
boolean

would use, then stops before it creates, updates, disables or removes an automation, changes a trigger or standing grant, or starts a run.

Response

Success response

action_receipts
object
after
string
dataset
string
debounce_seconds
integer<int64>
Required range: 0 <= x <= 3600
destination
Where to record what the steps returned. Omitting a destination entirely is · object

normal: a step that sends an email or files a ticket has done its work by running, and has nothing to store.

enabled
boolean
impact
DatasetRowActionImpact describes the side effects and already-pending work · object

of the corresponding non-validation call.

job_id
string

history can be inspected through the automation surfaces.

key_column
string
key_fallback_columns
string[]
last_execution
DatasetRowActionExecution is a deliberately small public execution view. · object

No row keys, provider answers, input values or raw errors leave the job here.

lookup_inventory
object
name
string
on_exclude
RowActionOnExclude selects departures from the default view instead of arrivals. · object
on_update
enum<string>
default:skip
Available options:
skip,
act
outcome_contract
enum<string>
Available options:
lookup-v1
recovery
object
skip_when
string
steps
One step of a declaration. A step is EITHER an action to invoke (app and key) · object[]
timestamp_column
string
unresolved_lookup_rows
integer<int64>
unresolved_lookups
object[]
validated_only
boolean

Impact is omitted from ordinary read and write responses.