The notification delivery log (ADR-195): one row per delivery, newest first, saying whether it arrived and, when it did not, whether Yagra, the network or the receiving service failed.
const url = 'https://example.com/api/v1/notification-deliveries';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://example.com/api/v1/notification-deliveries \ --header 'Authorization: Bearer <token>'A failed row carries the status the receiving service answered with and the start of its
answer, with the channel’s URL, host and key replaced by <redacted>.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Max rows (1–500, default 100).
Keyset cursor, first half: the last row’s at, as an RFC 3339 timestamp. Send with
before_id.
Keyset cursor, second half: the same row’s id.
Only deliveries at or after this RFC 3339 timestamp.
Only deliveries at or before this RFC 3339 timestamp.
Comma-separated channel ids, and/or default for the environment default route. Empty or
absent means every channel.
Comma-separated results (delivered, failed); empty or absent means both.
Comma-separated sides a failure happened on (yagra, network, remote); empty or absent
means every side. A delivered row has no side, so naming any side excludes it.
Comma-separated kinds (fire, resolve, suppress, test, test_close); empty or
absent means every kind.
Responses
Section titled “Responses”One page of deliveries, newest first
One row of the delivery log (API shape).
object
When the delivery started (RFC 3339). The first half of the paging cursor.
Every call made to the channel, oldest first.
One call to the channel inside a delivery.
object
How long the channel took to answer, in milliseconds.
Why it failed, in one line.
The status the receiving service answered with, when it answered.
How many calls were made to the channel.
The channel, or absent for the environment default route.
The channel’s current name; absent for the default route and for a deleted channel.
Wall time for the whole delivery, retries and backoff included, in milliseconds.
Why the last attempt failed. Never contains the channel’s URL or key.
What a delivery was for.
Row id; the second half of the paging cursor.
The node the alert was about, when it was about one.
The start of what the receiving service answered (at most 512 characters), with the
channel’s URL, host and key replaced by <redacted>.
Whether a delivery arrived.
The status of the last failed attempt, when the receiving service answered.
The alert’s subject as stored: a node UUID, pool:<name>, meraki_org:<id>, or test.
The subject’s display name, when it was known at delivery time.
Example
[ { "attempt_log": [ { "side": "yagra" } ], "channel_kind": "webhook", "event": "fire", "result": "delivered", "severity": "info", "side": "yagra" }]A cursor or range bound is not RFC 3339, the cursor is half a pair, or a filter names a value that is not listed
The ADR-019 envelope every failure renders as. pub(crate) and schema-bearing so the OpenAPI
document can name one error shape for every endpoint (ADR-035) instead of leaving 4xx/5xx bodies
undescribed — a client that has to guess the failure shape ends up parsing the success shape and
reading undefined.
object
object
Stable machine-readable code. Clients branch on this, never on the message.
Operator-facing sentence. Safe to display; never carries an internal error’s own text.
Examplegenerated
{ "error": { "code": "example", "message": "example" }}No valid bearer token
The ADR-019 envelope every failure renders as. pub(crate) and schema-bearing so the OpenAPI
document can name one error shape for every endpoint (ADR-035) instead of leaving 4xx/5xx bodies
undescribed — a client that has to guess the failure shape ends up parsing the success shape and
reading undefined.
object
object
Stable machine-readable code. Clients branch on this, never on the message.
Operator-facing sentence. Safe to display; never carries an internal error’s own text.
Examplegenerated
{ "error": { "code": "example", "message": "example" }}Role lacks ManageSystem
The ADR-019 envelope every failure renders as. pub(crate) and schema-bearing so the OpenAPI
document can name one error shape for every endpoint (ADR-035) instead of leaving 4xx/5xx bodies
undescribed — a client that has to guess the failure shape ends up parsing the success shape and
reading undefined.
object
object
Stable machine-readable code. Clients branch on this, never on the message.
Operator-facing sentence. Safe to display; never carries an internal error’s own text.
Examplegenerated
{ "error": { "code": "example", "message": "example" }}This core has no write side (skeleton mode) and keeps no delivery log
The ADR-019 envelope every failure renders as. pub(crate) and schema-bearing so the OpenAPI
document can name one error shape for every endpoint (ADR-035) instead of leaving 4xx/5xx bodies
undescribed — a client that has to guess the failure shape ends up parsing the success shape and
reading undefined.
object
object
Stable machine-readable code. Clients branch on this, never on the message.
Operator-facing sentence. Safe to display; never carries an internal error’s own text.
Examplegenerated
{ "error": { "code": "example", "message": "example" }}