Get subscription delivery health
Returns a consolidated, non-secret delivery-health rollup for one subscription — the “why did this tenant stop receiving events” view. The existence gate runs first, so an absent, soft-deleted, or cross-tenant id returns a uniform 404 not_found. Outcome counts are a recent-window view, not an all-time tally.
Authorizations
A bearer JWT issued by plugin-auth (lib-auth). The tenant identity is resolved from the validated token claims; the /v1 surface never reads a tenant from the body, path, or query. Machine callers obtain a token via the plugin-auth client-credentials flow. The /admin surface authorizes against an operator scope and carries no tenant context.
Path Parameters
The unique identifier of the subscription (UUIDv7).
Response
The delivery-health rollup.
The consolidated, non-secret delivery-health rollup for one subscription.
The subscription the rollup describes.
"0192f1a0-0000-7000-8000-00000000a001"
The operator on/off flag.
true
The subscription's position in the destination verification state machine. Only an active subscription is deliverable. A pull subscription is born active — it has no destination to probe. Every other kind is born pending_verification and reaches active on a successful probe: POST /v1/subscriptions/{id}/ping for a webhook, and PUT /v1/subscriptions/{id}/credential for any queue sink (sqs, rabbitmq, eventbridge). An sqs or eventbridge sink has a second path: register a delegated grant — which persists the coordinates and leaves this field unchanged — then call POST /v1/subscriptions/{id}/verify. An active subscription whose probe later fails becomes degraded. The same successful probe returns this field to active. This field is one half of deliverability: enabled is the other half, and both must hold. No probe changes enabled except POST /v1/subscriptions/{id}/verify, which on a probe success clears an auto-disable in the same transaction as the state move.
pending_verification, active, degraded The rolled-up delivery-health verdict. Down means the subscription was auto-disabled by the system (the endpoint is judged broken); Degraded means a lesser impairment (a manual disable, dead-lettered attempts, or dropped tenant events); Healthy otherwise.
Healthy, Degraded, Down Delivery-attempt outcome counts over the configured recent window (keyed by outcome, e.g. delivered, failed, dead_lettered). Always an object, never null.
The same outcome histogram restricted to the last 24 hours (a subset of delivery_outcomes). Always an object; an outcome with no recent activity is simply a missing key.
The derived per-attempt delivery rate over the window (delivered / (delivered + failed + dead_lettered)), in [0.0, 1.0]. null when there are zero terminal attempts (distinct from a genuine 0.0). Per-attempt, not per-job, and informational only — it does not change status.
0.7
The count of dead-lettered attempts in the window.
1
A best-effort count of quarantined (poison) events keyed on the untrusted captured tenant id; drives dropped_tenant.
3
True when quarantined tenant events were observed.
true
Process consumer lag in milliseconds; 0 when no lag-as-time source is exposed.
12000
The auto-disable verdict: null when the subscription has no recorded attempts yet, false when a health row exists with no verdict, true when auto-disable has tripped (which drives status: "Down").
true
A fixed, secret-free auto-disable verdict token (e.g. consecutive_failures). Omitted when empty.
"consecutive_failures"
The last successful delivery timestamp (RFC 3339). Omitted when none.
"2026-06-01T12:00:00Z"
The last failed delivery timestamp (RFC 3339). Omitted when none.
"2026-06-05T09:30:00Z"

