Skip to main content
GET
Get subscription delivery health

Authorizations

Authorization
string
header
required

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

id
string<uuid>
required

The unique identifier of the subscription (UUIDv7).

Response

The delivery-health rollup.

The consolidated, non-secret delivery-health rollup for one subscription.

subscription_id
string<uuid>
required

The subscription the rollup describes.

Example:

"0192f1a0-0000-7000-8000-00000000a001"

enabled
boolean
required

The operator on/off flag.

Example:

true

verification_state
enum<string>
required

The subscription's position in the destination verification state machine. Only an active subscription is deliverable. A webhook sub is born active; a queue sub is born pending_verification and reaches active on a successful credential probe. degraded and disabled signal an impaired or auto-disabled destination that a successful verify returns to active.

Available options:
pending_verification,
active,
degraded,
disabled
status
enum<string>
required

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.

Available options:
Healthy,
Degraded,
Down
delivery_outcomes
object
required

Delivery-attempt outcome counts over the configured recent window (keyed by outcome, e.g. delivered, failed, dead_lettered). Always an object, never null.

Example:
recent_outcomes
object
required

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.

Example:
success_rate
number | null
required

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.

Example:

0.7

dead_lettered
integer
required

The count of dead-lettered attempts in the window.

Example:

1

poison_events
integer
required

A best-effort count of quarantined (poison) events keyed on the untrusted captured tenant id; drives dropped_tenant.

Example:

3

dropped_tenant
boolean
required

True when quarantined tenant events were observed.

Example:

true

consumer_lag_ms
integer<int64>
required

Process consumer lag in milliseconds; 0 when no lag-as-time source is exposed.

Example:

12000

auto_disabled
boolean | null
required

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").

Example:

true

disabled_reason
string

A fixed, secret-free auto-disable verdict token (e.g. consecutive_failures). Omitted when empty.

Example:

"consecutive_failures"

last_success_at
string<date-time>

The last successful delivery timestamp (RFC 3339). Omitted when none.

Example:

"2026-06-01T12:00:00Z"

last_failure_at
string<date-time>

The last failed delivery timestamp (RFC 3339). Omitted when none.

Example:

"2026-06-05T09:30:00Z"