Health Ready
GET/health/ready
Deployment-tier-aware readiness (#506, #507).
Unlike /health//health/live//health/graph//health/steward
(always-200 diagnostics with state in the body), this is a real
Kubernetes/ACA readiness probe target: it returns 503 when the
configured ARMOR_DEPLOYMENT_TIER's required mode matrix isn't met, so
a misconfigured production deployment actually stops receiving traffic
instead of a probe passing solely because the FastAPI process started.
M-HLTH E-HLTH.4 (#1050) adds a second dimension: live capacity (event-loop lag, request concurrency, DB pool exhaustion), read from already-collected in-process gauges so this probe still performs no I/O. The config-tier check alone was blind to #1049 -- the configuration was correct throughout an outage in which the process could not serve a request.
Capacity is observe-only by default: a saturated replica reports
capacity.status == "saturated" in the body while still returning 200,
unless ARMOR_READINESS_SHED_ON_SATURATION is enabled. See
halo_api.services.readiness_capacity for why shedding correlated
saturation across every replica at once is a worse outage than the
saturation itself.
Responses
- 200
- 401
- 403
- 429
- 500
Successful Response
Response Headers
Current tenant quota state (draft-ietf-httpapi-ratelimit-headers structured field): "tenant";r=<remaining>;t=<seconds-to-reset>. Emitted on every response when per-tenant rate limiting is enabled (ARMOR_TENANT_RATE_LIMIT_PER_MIN > 0; off by default).
The quota policy the RateLimit header reports against: "tenant";q=<limit>;w=<window-seconds>.
Request correlation id — present on every response; quote it when reporting an issue. Error bodies carry the same value as correlation_id.
Missing or invalid credential.
Response Headers
Current tenant quota state (draft-ietf-httpapi-ratelimit-headers structured field): "tenant";r=<remaining>;t=<seconds-to-reset>. Emitted on every response when per-tenant rate limiting is enabled (ARMOR_TENANT_RATE_LIMIT_PER_MIN > 0; off by default).
The quota policy the RateLimit header reports against: "tenant";q=<limit>;w=<window-seconds>.
Request correlation id — present on every response; quote it when reporting an issue. Error bodies carry the same value as correlation_id.
Authenticated but not permitted.
Response Headers
Current tenant quota state (draft-ietf-httpapi-ratelimit-headers structured field): "tenant";r=<remaining>;t=<seconds-to-reset>. Emitted on every response when per-tenant rate limiting is enabled (ARMOR_TENANT_RATE_LIMIT_PER_MIN > 0; off by default).
The quota policy the RateLimit header reports against: "tenant";q=<limit>;w=<window-seconds>.
Request correlation id — present on every response; quote it when reporting an issue. Error bodies carry the same value as correlation_id.
Rate limit exceeded.
Response Headers
Current tenant quota state (draft-ietf-httpapi-ratelimit-headers structured field): "tenant";r=<remaining>;t=<seconds-to-reset>. Emitted on every response when per-tenant rate limiting is enabled (ARMOR_TENANT_RATE_LIMIT_PER_MIN > 0; off by default).
The quota policy the RateLimit header reports against: "tenant";q=<limit>;w=<window-seconds>.
Seconds to wait before retrying (on 429 responses).
Request correlation id — present on every response; quote it when reporting an issue. Error bodies carry the same value as correlation_id.
Unhandled server error.
Response Headers
Current tenant quota state (draft-ietf-httpapi-ratelimit-headers structured field): "tenant";r=<remaining>;t=<seconds-to-reset>. Emitted on every response when per-tenant rate limiting is enabled (ARMOR_TENANT_RATE_LIMIT_PER_MIN > 0; off by default).
The quota policy the RateLimit header reports against: "tenant";q=<limit>;w=<window-seconds>.
Request correlation id — present on every response; quote it when reporting an issue. Error bodies carry the same value as correlation_id.
Optional comments unlock after a short time on this docs site.
Ask the docs
Tier-scoped answers from this portal corpus (extractive; no external LLM).
Comments
Loading comments…
Suggest an edit
Propose a correction. Staff review every suggestion and open a draft PR; nothing publishes without CI.