コンテンツにスキップ

list_alert_history

GET
/api/v1/alerts/history
curl --request GET \
--url https://example.com/api/v1/alerts/history \
--header 'Authorization: Bearer <token>'
limit
integer format: int64
before
string

A page of history rows, newest first; empty when this deployment keeps no history

Media typeapplication/json
Array

An alert-history row plus its current inbound ack state (keyed by the dedup identity, so all transitions of one incident share it).

object
at_unix_ms
required
integer format: int64
check
required
string format: uuid
direction
One of:
null
metric

Metric the check measured (e.g. icmp_rtt_ms, or the liveness sentinel). None for rows recorded before this was captured (legacy) so the WebUI can show “—”.

string | null
node

The node this transition was about; null when the subject is not a node — read subject_kind first. It is non-null exactly when subject_kind is node.

string | null format: uuid
observed_value

Observed sample value that committed the transition (threshold checks only).

number | null format: double
recorded_at
required

Insertion time as an RFC 3339 timestamp. This is the keyset cursor: the WebUI passes the last row’s recorded_at as before to fetch the next (older) page (matches the audit log’s paging). Distinct from at_unix_ms (the event time), which can collide across rows.

string
resolved
required
boolean
severity
required

How serious an alert is. Variants are declared low → high so the derived Ord ranks Critical above Warning above Info.

string
Allowed values: info warning critical
state
required

The current state of a monitored node or check.

string
Allowed values: ok warning critical unknown unreachable maintenance
subject_kind
required

What the transition was about.

string
Allowed values: node pool
subject_name

The subject’s name, for a subject identified by name rather than by id (a poller pool).

string | null
threshold_value

The bound crossed for the committed severity (threshold checks only).

number | null format: double
acked
One of:
null
Example
[
{
"direction": "above",
"severity": "info",
"state": "ok",
"subject_kind": "node"
}
]

before is not an RFC 3339 timestamp

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 the read permission

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"
}
}