alarm.updated
DUET sends this event for each new event on an occurrence that isn't raised or resolved. These include recovered, claimed, returned, shelved, unshelved, reopened, and kinds added later. For a rule with resolution_policy auto, the occurrence ends with a recovered event in this webhook: cleared_at is set and status stays open or claimed, and DUET doesn't send alarm.resolved.
x-duet-signature*stringThe signatures, in the form t=<Unix seconds>,v1=<hex HMAC-SHA256>,v1a=<hex Ed25519>. Every delivery carries both signatures, and both sign the same string: <t>.<raw request body>.
v1= is an HMAC-SHA256 keyed with the subscription's signing secret. During a secret rotation, the header carries two v1= values.
v1a= is an Ed25519 signature made with the DUET signing key. To verify it, fetch the public keys from GET /webhooks/jwks.json, decode the hex value to 64 bytes, and verify it over the UTF-8 bytes of <t>.<raw request body> with each key. During a key rotation, the header carries two v1a= values.
Accept the delivery if any value of the kind you check verifies, and reject it if t is more than 300 seconds from your clock. Ignore keys in the header that you don't recognize.
x-duet-event-id*stringThe event ID. It equals the envelope id and doesn't change on a retry. Use it to deduplicate deliveries.
x-duet-event-type*stringThe event type. It equals the envelope type.
application/json- body
schema_version*1The version of the envelope and data schema. An additive change keeps the version. A breaking change increments it.
1id*stringThe event ID. It equals X-Duet-Event-Id. Use it to deduplicate deliveries.
type*"alarm.updated""alarm.updated"occurred_at*stringdate-timeorganization_id*stringproject_id*stringdata*The alarm occurrence. The last element of events[] is the event that triggered this delivery.
Any 2xx status acknowledges the delivery. Return it as soon as you receive the delivery, and process the event asynchronously. DUET waits 10 seconds for the response by default, and a subscription can set its own timeout from 1 to 30 seconds. A delivery that times out counts as failed and is retried.
{ "schema_version": 1, "id": "string", "type": "alarm.updated", "occurred_at": "2019-08-24T14:15:22Z", "organization_id": "string", "project_id": "string", "data": { "occurrence_id": "string", "duet_occurrence_ref": "string", "source": "string", "organization_id": "string", "project_id": "string", "site": "string", "rule_name": "string", "rule_version": 0, "kind": "string", "severity": "string", "status": "string", "resolution_policy": "string", "resolution": "string", "raised_at": "2019-08-24T14:15:22Z", "source_ts": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "synced_at": "2019-08-24T14:15:22Z", "cleared_at": "2019-08-24T14:15:22Z", "raised_value": 0, "last_value": 0, "peak_value": 0, "peak_at": "2019-08-24T14:15:22Z", "recovered_value": 0, "source_tag": "string", "measure": "string", "rule_description": "string", "decoded_labels": [ "string" ], "point_key": "string", "alarm_class": "string", "is_nerc": true, "device_id": "string", "device_name": "string", "device_type": "string", "parent_device_id": "string", "events": [ { "event_id": "string", "occurrence_id": "string", "duet_occurrence_ref": "string", "type": "raised", "kind": "string", "created_at": "2019-08-24T14:15:22Z", "synced_at": "2019-08-24T14:15:22Z", "body": "string", "user_id": "string", "user_email": "string", "external_user_id": "string" } ], "events_total": 0, "events_truncated": true }}{ "x-duet-signature": "string", "x-duet-event-id": "string", "x-duet-event-type": "string"}
