List alert delivery history
const url = 'http://localhost:3000/api/v1/alert-rules/deliveries';const options = {method: 'GET', headers: {'X-API-Key': '<X-API-Key>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url http://localhost:3000/api/v1/alert-rules/deliveries \ --header 'X-API-Key: <X-API-Key>'Alert occurrences with their fired/resolved timestamps and delivery outcome, newest first. Optionally filtered by rule or device.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Default 50, maximum 200
Header Parameters
Section titled “Header Parameters”UUID of the organization (tenant) the request acts in. It selects the tenant and grants nothing: the server checks membership or an open tenant switch. Not needed for global operations. A malformed value returns 400. API keys are fixed to their own organization; another organization returns 403. The x-organization-source header grants nothing.
Responses
Section titled “Responses”object
object
object
object
When the transport confirmed delivery. Null while pending or failed.
object
Transport failure detail after the retry budget was exhausted.
object
When notification suppression withheld the push for this occurrence (FM-1269). This is the third outcome, distinct from the other two: pending has every timestamp field null; failed has error set; suppressed has this field set instead. deliveredAt and suppressedAt are never both set — a push either went out or it did not.
object
Total matching records, ignoring limit/offset
Example
{ "items": [ { "ruleName": "CPU above 80% on edge nodes", "notificationTargetName": "Ops on-call email", "channel": "EMAIL", "state": "OPEN" } ], "total": 128}