Guards API
Send-time checkpoints: a condition about the person, checked at the moment an email is about to go out, and what to do when it's true.
| Method & path | What it does |
|---|---|
GET /api/v1/guards | Every guard in evaluation order, what each is holding, plus the condition vocabulary this install knows. |
POST /api/v1/guards | Create one. |
GET /api/v1/guards/:id | One guard. |
PATCH /api/v1/guards/:id | Update it. |
DELETE /api/v1/guards/:id | Delete it, releasing whatever it held. |
POST /api/v1/guards/:id/toggle | Body: enabled. Turning one off releases its holds. |
POST /api/v1/guards
{ "name": "Members skip pitches",
"action": "skip",
"scope_kind": "label",
"scope_value": "pitch",
"enabled": true,
"condition": { "type": "has_tag", "tag": "member" } }
Note: action is read from the request body
specifically, because action is also Rails' own routing parameter.
Send it as JSON and it works as written.
Actions, in escalating order
| Action | What happens to this send |
|---|---|
pause | Held, and it waits. Releases by itself when the condition stops being true. |
skip | Dropped, and the person carries on to whatever comes next. |
cancel_sequence | Their whole run through that sequence ends. |
exit_flow | Their run through the flow ends. |
Scopes
scope_kind | Covers |
|---|---|
all | Every email. scope_value is ignored and cleared. |
label | Emails carrying that label. |
flow | Emails scheduled by that flow (by key). |
sequence | Emails from that sequence (by id). |
broadcast | That broadcast's sends (by id). |
The built-in suppression guard
Unsubscribed → drop. Always on, not deletable, and toggle refuses it
with 422. It's the standing guarantee the entire provider seam rests
on: the local database is the suppression authority, checked before every send,
whatever the provider does or doesn't do on its side. A guard you can switch off
wouldn't be that.
Conditions
The same vocabulary as flow branches and segments —
the flow schema lists every type
and operator. GET /api/v1/guards returns the install's own fields,
tags, products and segments alongside, so a condition can be written without
guessing at names.
See also: Guards, for humans · Condition vocabulary