Skip to content

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.

GET
/api/v1/notification-deliveries
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>.

limit
integer format: int64

Max rows (1–500, default 100).

before
string

Keyset cursor, first half: the last row’s at, as an RFC 3339 timestamp. Send with before_id.

before_id
integer format: int64

Keyset cursor, second half: the same row’s id.

since
string

Only deliveries at or after this RFC 3339 timestamp.

until
string

Only deliveries at or before this RFC 3339 timestamp.

channel
string

Comma-separated channel ids, and/or default for the environment default route. Empty or absent means every channel.

result
string

Comma-separated results (delivered, failed); empty or absent means both.

side
string

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.

event
string

Comma-separated kinds (fire, resolve, suppress, test, test_close); empty or absent means every kind.

One page of deliveries, newest first

Media typeapplication/json
Array<object>

One row of the delivery log (API shape).

object
at
required

When the delivery started (RFC 3339). The first half of the paging cursor.

string
attempt_log
required

Every call made to the channel, oldest first.

Array<object>

One call to the channel inside a delivery.

object
duration_ms
required

How long the channel took to answer, in milliseconds.

integer format: int64
error

Why it failed, in one line.

string | null
side
One of:
null
status

The status the receiving service answered with, when it answered.

integer | null format: int32
attempts
required

How many calls were made to the channel.

integer format: int32
channel_id

The channel, or absent for the environment default route.

string | null format: uuid
channel_kind
One of:
null
channel_name

The channel’s current name; absent for the default route and for a deleted channel.

string | null
duration_ms
required

Wall time for the whole delivery, retries and backoff included, in milliseconds.

integer format: int64
error

Why the last attempt failed. Never contains the channel’s URL or key.

string | null
event
required

What a delivery was for.

string
Allowed values: fire resolve suppress test test_close unknown
id
required

Row id; the second half of the paging cursor.

integer format: int64
node_id

The node the alert was about, when it was about one.

string | null format: uuid
response

The start of what the receiving service answered (at most 512 characters), with the channel’s URL, host and key replaced by <redacted>.

string | null
result
required

Whether a delivery arrived.

string
Allowed values: delivered failed unknown
severity
One of:
null
side
One of:
null
status

The status of the last failed attempt, when the receiving service answered.

integer | null format: int32
subject
required

The alert’s subject as stored: a node UUID, pool:<name>, meraki_org:<id>, or test.

string
subject_name

The subject’s display name, when it was known at delivery time.

string | null
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

Media typeapplication/json

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
error
required
object
code
required

Stable machine-readable code. Clients branch on this, never on the message.

string
message
required

Operator-facing sentence. Safe to display; never carries an internal error’s own text.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example"
}
}

No valid bearer token

Media typeapplication/json

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
error
required
object
code
required

Stable machine-readable code. Clients branch on this, never on the message.

string
message
required

Operator-facing sentence. Safe to display; never carries an internal error’s own text.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example"
}
}

Role lacks ManageSystem

Media typeapplication/json

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
error
required
object
code
required

Stable machine-readable code. Clients branch on this, never on the message.

string
message
required

Operator-facing sentence. Safe to display; never carries an internal error’s own text.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example"
}
}

This core has no write side (skeleton mode) and keeps no delivery log

Media typeapplication/json

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
error
required
object
code
required

Stable machine-readable code. Clients branch on this, never on the message.

string
message
required

Operator-facing sentence. Safe to display; never carries an internal error’s own text.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example"
}
}