· Iren Saltali · operations · 2 min read
Build Health and Readiness Endpoints With Config Only
A low-friction pattern for exposing operational endpoints without building extra code paths in every downstream service.
The short answer: For simple availability signals, a static response route is often enough and avoids adding throwaway logic to every upstream service.
When to read this
- You need fast health, liveness, or readiness routes.
- Your infrastructure checks only need a simple status signal.
- You want to keep origin services focused on application behavior.
What matters in practice
- Use separate endpoints for edge availability and deeper system health if needed.
- Keep the payload tiny and explicit.
- Document what each status route does and does not guarantee.
Concrete example
{
"paths": [
{ "method": "GET", "path": "/health", "response": { "status": "ok", "layer": "gateway" } },
{ "method": "GET", "path": "/ready", "response": { "status": "ready" } }
]
}The example above is intentionally small because the best gateway configs stay readable. Add only the route, auth, and mapping behavior you actually need.
How this maps to the current gateway
The current codebase already supports the behavior discussed here through its config schema, route matcher, and integration handlers. That is why this project is a good fit for reader-first examples: the docs and blog can point to real, implemented behavior instead of hypothetical gateway features.
What this product does not do
- A static route does not confirm origin database or dependency health.
- You still need deeper checks if readiness depends on upstream availability.
FAQ
Should health routes be authenticated?
Usually no, but keep the payload minimal.
Can readiness proxy to a service?
Yes, if you need the check to reflect upstream behavior rather than only gateway reachability.
Related docs
- health readiness liveness patterns
- quickstart health endpoint
- routing static response routes
Last reviewed: March 6, 2026