Create a subscription
A subscription is a saved query: a filters expression in the query
grammar, with the same meaning, and the fields to include. It
sends subscription.entered when a document starts matching and,
if asked, subscription.exited when it stops, to endpoint and to
the events feed. It sees only settled answers: a document whose
answers the filter reads are pending waits until they land.
On a template prefix (acme%2Fprod%2F*) it applies to every
namespace under the prefix, including ones created later, which
needs templates (Team and above; plan_required below). Each event
names the tenant namespace and where the subscription was
defined_on.
Refused with invalid_request: a filter on any
answers.<j>.freshness (a subscription only sees settled answers),
a judgment in filters or include that doesn’t exist or is
on_read, more than 24 fields, a name the namespace already has or
inherits, an endpoint the organization doesn’t have or whose
namespace_prefix does not cover the namespace or template, and a
101st subscription in a namespace, counting inherited ones. A create
that repeats an existing subscription’s settings under its name is
a retry and returns it. If the endpoint can’t be checked right now
the create is unavailable; retry it. The filter can’t be changed
later: create a new subscription and delete the old one.
It starts syncing: its first pass records which documents match
now without sending events for them, then it is live. Bulk
changes (backfills, threshold edits, new composite weights) update
membership silently and send one subscription.synced, unless
bulk is deliver.
Authorizations
An organization API key. Keys carry a role (read_write or
read_only) and may be restricted to a namespace prefix such as
acme/*, or to one namespace such as acme/prod/tenant_1. A prefix
matches on a / boundary: acme/prod/tenant_1* covers
acme/prod/tenant_1 and everything under acme/prod/tenant_1/,
never acme/prod/tenant_12.
Headers
One key per logical request, reused only on its retries. A key
belongs to one request: within your organization, the same method,
path, query and body. For 24 hours after a successful response, a
request with the key and the same body gets that response back
verbatim, with Idempotent-Replayed: true, and runs nothing. Only a
successful response is kept, so the retry of a request that failed
runs again. While the first request runs or its response is kept,
the key with a different request is idempotency_key_reused (422).
A request sent while one with its key is still running is
rate_limited with Retry-After: 1, without running: retry it to
get the first one's response. In the rare case the key can't be
checked, the request runs as if it had none.
1 - 255Path Parameters
A namespace name, or a template prefix ending in /*, with any
/ sent as %2F: acme%2Fprod%2Ftenant_123 or acme%2Fprod%2F*.
A namespace name, or a template prefix: a namespace path ending in
/*, such as acme/prod/*, which every namespace under acme/prod/
inherits judgments from. Up to 256 bytes. Never exactly
. or .., which a URL path can't carry.
1 - 256^(?!\.\.?$)[A-Za-z0-9._:/-]+(/\*)?$Body
A judgment, attribute or threshold name. Names are path segments in field references, so they never contain ..
1 - 128^[A-Za-z0-9_-]+$The query's filter grammar, with its missing-field rules. Never on answers.<j>.freshness, and never on an on_read judgment. It can't be changed later.
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
- Option 6
- Option 7
- Option 8
1entered when a document starts matching; exited when it stops matching or is deleted.
entered, exited The attributes and answers each event carries. The fields the
filter reads are always included, and state never is. At most 24
fields in all, counting those the filter reads. An on_read
judgment is refused. An event waits for the answers the filter
reads to settle, never for the ones only included here, which are
sent as they stand.
The webhook endpoint that receives the events. Null, the default, sends them to the events feed only. Its namespace_prefix must cover the namespace or template.
^we_[0-9a-z]{26}$What bulk changes send: a backfill, or a resync after a threshold
edit, an activation or new composite weights. summary updates
membership silently and sends one subscription.synced. deliver
sends every transition, with its cause. The first sync is silent
either way, and announced by subscription.synced with reason
created.
summary, deliver Response
Created.
^sub_[0-9a-z]{26}$A judgment, attribute or threshold name. Names are path segments in field references, so they never contain ..
1 - 128^[A-Za-z0-9_-]+$[field, op, value], ["And" | "Or", [filters]] or ["Not", filter].
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
- Option 6
- Option 7
- Option 8
entered when a document starts matching; exited when it stops matching or is deleted.
entered, exited The attributes and answers each event carries. The fields the
filter reads are always included, and state never is. At most 24
fields in all, counting those the filter reads. An on_read
judgment is refused. An event waits for the answers the filter
reads to settle, never for the ones only included here, which are
sent as they stand.
^we_[0-9a-z]{26}$What bulk changes send: a backfill, or a resync after a threshold
edit, an activation or new composite weights. summary updates
membership silently and sends one subscription.synced. deliver
sends every transition, with its cause. The first sync is silent
either way, and announced by subscription.synced with reason
created.
summary, deliver In this namespace. Null on a template's prefix path, where each namespace syncs on its first change after the subscription exists.
syncing, live When the subscription went live in this namespace.
How long the oldest change the subscription has not evaluated yet has waited, in milliseconds; 0 when it is up to date. A quiet subscription records its progress about once a minute, so a change counts only once it has waited longer than that. Null while syncing and on a template's prefix path.
x >= 0RFC 3339, UTC.
Present when the subscription is inherited, the template prefix it comes from, such as acme/prod/*.
3 - 256^[A-Za-z0-9._:/-]+/\*$