Keyring

Health

Liveness and readiness.

Generated from 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.

Request
curl https://keyring-api.belghalem.fr/healthz
Response
HTTP/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.

Request
curl https://keyring-api.belghalem.fr/readyz
Response
HTTP/1.1 200 OK
Content-Type: application/json

{
  "status": "ok",
  "region": "eu",
  "database": "ok",
  "redis": {
    "configured": true,
    "ready": true,
    "error": null
  }
}

On this page