GET /api/v1/health
Liveness only.
Answers 200 with a FIXED body if this process is running and serving requests. It is
the only unauthenticated route on this surface that is not part of a login, and it is
open because the caller is not a user: a load balancer, an orchestrator probe and a
monitoring agent cannot hold a credential.
It is not a readiness check and it does not consult anything. It opens no connection,
reads no database, touches no session and asks the key server nothing. That is
deliberate: a health endpoint that probes its downstreams reports somebody else's outage
as its own, and every orchestrator watching it then kills a process that was working.
Readiness is the second route, GET /api/v1/ready, and this route answers 200 even while
that one answers 503.
It discloses only that a Tricryption REST Gateway is listening on this port. No
version, no key-server address, no uptime, no session or pool counts, no downstream
status. Each of those omissions is a decision: a version number here is a free CVE
lookup, an uptime is a restart oracle, and the address of the thing holding the keys is
not a health check. A caller with a session can read the version from
POST /api/v1/server/version.
WARNING: a separate, older published document describes a /health on a retired demo
gateway whose response requires a key-server certificate fingerprint and a live session
count. That is a different service. This body shares not one field with it, and the
divergence is deliberate -- both of those are exactly what this route refuses to publish
to an unauthenticated caller.
Authentication
No session required. This operation is reachable without an Authorization header. See Authenticating.
Request
No request body.
Responses
200
This process is alive. The body is a constant; it never varies between two calls.
| Field | Type | Required | Description |
|---|---|---|---|
status | "ok" (constant) | yes | |
service | "te-gateway-server" (constant) | yes | |
detail | string | yes |
Example
{
"status": "ok",
"service": "te-gateway-server",
"detail": "..."
}
413
PAYLOAD_TOO_LARGE (retryable: false) -- the request body is larger than this
deployment accepts. It was refused before it was parsed, and the connection is closed.
Nothing was sent to the key server.
503
CAPACITY_UNAVAILABLE (scope: process, Retry-After) -- this Gateway is serving its maximum number of requests and the reserve kept for the probes is in use too.
Error handling
Every failure answers JSON carrying at least code and detail. Match on code — detail is written for a human debugging the call and its wording is not part of the contract. See the error model.
| Status | Meaning |
|---|---|
413 | PAYLOAD_TOO_LARGE (retryable: false) -- the request body is larger than this deployment accepts. It was refused before it was parsed, and the connection is closed. Nothing was sent to the key server. |
503 | CAPACITY_UNAVAILABLE (scope: process, Retry-After) -- this Gateway is serving its maximum number of requests and the reserve kept for the probes is in use too. |