A load balancer, an orchestrator and a monitoring system each want a health endpoint, and two services answering differently is two integrations.
GET /health
{
"status": "ok",
"checks": {
"database": { "status": "ok", "ms": 2 },
"cache": { "status": "ok", "ms": 1 }
},
"version": "2022.11.3",
"commit": "a41f2b8"
}
// 200 for ok and degraded, 503 for down.
// no external dependencies in the check.
Excluding third-party dependencies is the rule that matters most: including a payment provider means their outage restarts your containers, which converts their incident into yours. The version and commit fields answer “which build is running” during an incident without shell access, which is worth more than the status field.