engineerP0Updated
Was this page helpful?

Events

EventFires when
alert.createdA new Tier A match opens an alert
case.createdA case is opened from a triaged alert
case.reminderA deadline reminder fires for an open case
case.overdueA case's current stage is read as overdue
case.stage_submittedAny stage (early warning, notification, final) is marked submitted
case.closedA case reaches its terminal closed state

Payload shape

Every delivery is a JSON body with the same top-level shape:

{
  "event": "alert.created",
  "sentAt": "2026-09-13T12:00:00.000Z",
  "title": "...",
  "detail": "...",
  "url": "https://your-declara-host/alerts/...",
  "data": { }
}

title and detail are meant for a human reading a chat notification. data carries the structured fields a program should read instead of parsing the prose.

Verifying a delivery

Every delivery is HMAC-signed, with two headers:

  • X-Declara-Timestamp — the Unix timestamp the signature was computed against.
  • X-Declara-Signature — an HMAC-SHA256 of ${timestamp}.${body}, using your endpoint's signing key.

Verify it yourself before trusting a payload:

  1. Recompute the HMAC over the exact timestamp and raw request body using your signing key.
  2. Compare it to X-Declara-Signature in constant time.
  3. Reject deliveries where the timestamp is too far from the current time, to guard against a replayed request.

Verifying the signature is the integrator's responsibility — Declara signs every delivery, but nothing on the receiving end checks it for you.

Delivery behavior

Delivery is best-effort: a failing or unreachable endpoint doesn't block the event that triggered it, and every attempt is recorded so a channel that's stopped working is visible rather than silently assumed healthy. This page does not document a retry count or backoff schedule — confirm current behavior with your integration contact before depending on a specific retry guarantee.