System
Delivery history
History, summaries and dead-letter browsing are read APIs backed by the physical replica. They require READ_REPLICA_DATABASE_URL and never fall back to the primary for a failed read.
List deliveries
curl --fail-with-body --max-time 15 \
'http://127.0.0.1:3000/tenants/REPLACE_WITH_TENANT_UUID/deliveries?status=FAILED&limit=20'| Parameter | Behaviour |
|---|---|
status | Optional: PENDING, IN_FLIGHT, SUCCEEDED, FAILED or DEAD_LETTERED. |
limit | Default 50; integer from 1 to 100. |
cursor | Opaque nextCursor from the preceding response, with the same tenant and status filter. |
The response has items and nextCursor. Items include event and delivery IDs, event type, target URL, status, attempt count, timestamps, next retry time and last error. Payloads and signing secrets are excluded.
Rows are ordered by creation time and ID, descending. These are current delivery records, not individual immutable HTTP attempt traces. Unknown tenants and replica lag can produce an empty page.
Read a status summary
curl --fail-with-body --max-time 15 \
'http://127.0.0.1:3000/tenants/REPLACE_WITH_TENANT_UUID/deliveries/summary'The response includes total, per-status counts, completed and successRatePercent. The success-rate denominator is SUCCEEDED + DEAD_LETTERED. Unfinished work is excluded; no terminal outcomes produces null. The summary accepts no query parameters.
Replication and errors
Replica lag can leave a successful delivery temporarily visible as failed. An invalid tenant ID, filter or cursor returns 400; an unavailable replica or a primary connection returns 503. Replay decisions use the primary instead.
There is no live push subscription or streaming tracking endpoint. Prometheus, Grafana and the authenticated tenant dashboard remain planned in the project guide.