ack_alert
const url = 'https://example.com/api/v1/alerts/ack';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"acked":true,"at_unix_ms":1,"by":"example","check":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","node":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","note":"example","severity":"info","source":"example","subject":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/api/v1/alerts/ack \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "acked": true, "at_unix_ms": 1, "by": "example", "check": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "node": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "note": "example", "severity": "info", "source": "example", "subject": "example" }'Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”Inbound ack reflection. An external incident tool mirrors ack state in by the dedup identity
(subject, check, severity); acked:false clears it. AckAlerts-gated; the mutating-request
middleware records the audit entry.
object
true = acked (upsert), false = cleared (delete). Defaults to true.
When the external tool recorded the ack (Unix ms, UTC); defaults to now.
External actor reference (id / handle) — never a secret.
The node the alert is about. Omit it and send subject instead for an alert about
something other than a node (a poller pool). Exactly one of the two is required.
Optional free-text note from the external tool.
How serious an alert is. Variants are declared low → high so the derived
Ord ranks Critical above Warning above Info.
Originating tool: pagerduty | jsm | manual | …
The alert’s subject in its flat form — a node’s UUID, or pool:<name>. This is the value
the alert’s own node field carries, so an integration can echo back what it received.
Responses
Section titled “Responses”The ack was recorded (or cleared) and broadcast
What an ack call reports back: the new state, and the stored view when acknowledging.
object
The acknowledgement view attached to an alert / history row in API responses. Carries who acked it, when, from which external tool, and an optional note. Never carries a secret.
object
When the external tool recorded the ack (Unix ms, UTC).
External actor reference (id / handle) — not a secret.
Optional free-text note from the external tool.
Originating tool: pagerduty | jsm | manual | …
Examplegenerated
{ "ack": { "at_unix_ms": 1, "by": "example", "note": "example", "source": "example" }, "acked": true}Neither node nor a readable subject was supplied
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 the alert-acknowledgement permission
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" }}The subject is outside the caller’s group scope
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 deployment has no ack store
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" }}