Health
Liveness and readiness.
packages/api/src/health.controller.ts by packages/docs/tools/generate-reference.mjs. Every example is a real exchange recorded against the control plane by packages/api/src/testing/reference-examples.spec.ts, with ids from that run. Credentials in the formats this product issues (kr_, krsk_, krses_, JWTs) and values under credential-named fields (password, *_secret, *_token, *_key, lookup_hash) are elided at record time; the recorded file and every page of this site are swept for credential shapes (kr_, krsk_, krses_, JWTs, URLs carrying a password, password fields) before either is accepted. Do not edit by hand: src/reference.spec.ts regenerates it and fails on a difference.GET /healthz
Liveness: the process is running. Deliberately touches nothing, so a restart loop caused by a slow database is not a thing this can produce.
Answers 200 on success.
Authentication.
- No credential.
Example.
curl https://keyring-api.belghalem.fr/healthzHTTP/1.1 200 OK
Content-Type: application/json
{
"status": "ok",
"region": "eu",
"redis": {
"configured": true,
"ready": true,
"error": null
}
}GET /readyz
Readiness: the process can still borrow a connection and get an answer.
The distinction is the week 2 review's measurement -- one workspace's held
advisory lock parked every pooled connection and made an unrelated vendor's
read take 22.7 s, while /healthz answered 200 in 6 ms throughout. A load
balancer reading only liveness keeps sending traffic into that. This is the
check that says no: #withClient bounds the wait, so a saturated pool
becomes a 503 in about three seconds instead of a hang.
Answers 200 on success.
Authentication.
- No credential.
Example.
curl https://keyring-api.belghalem.fr/readyzHTTP/1.1 200 OK
Content-Type: application/json
{
"status": "ok",
"region": "eu",
"database": "ok",
"redis": {
"configured": true,
"ready": true,
"error": null
}
}