Healthv1Health
Comprehensive health check
Detailed health check of all system components including external dependencies. Provides comprehensive status, metrics, and error information. Status Logic: - **200 (healthy)**: All components are healthy - **206 (degraded)**: Some non-critical components are degraded, but all critical components are healthy - **503 (unhealthy)**: Any critical component is unhealthy or degraded, OR any component is unhealthy Critical components include: database, redis, totp_service. If any critical component has degraded or unhealthy status, the entire system is considered unhealthy (503).
GET
/health/detailedHeader Parameters
Accept-Language?string
Preferred response language
Response Body
application/json
application/json
application/json
curl -X GET "https://example.com/health/detailed"{
"overall_status": "healthy",
"timestamp": "2025-08-14T11:50:39.264479+02:00",
"components": [
{
"component": "sms_service",
"status": "healthy",
"response_time_ms": 0,
"details": {
"service": "available"
},
"last_checked": "2025-08-14T11:50:39.26449+02:00",
"tags": [
"external"
]
},
{
"component": "llm_service",
"status": "healthy",
"response_time_ms": 1181,
"details": {
"service": "available"
},
"last_checked": "2025-08-14T11:50:39.264523+02:00",
"tags": [
"external"
]
},
{
"component": "totp_service",
"status": "healthy",
"response_time_ms": 12,
"details": {
"cache": "active"
},
"last_checked": "2025-08-14T11:50:39.264542+02:00",
"tags": [
"critical",
"internal"
]
},
{
"component": "database",
"status": "healthy",
"response_time_ms": 2,
"details": {
"connection": "active"
},
"last_checked": "2025-08-14T11:50:39.2645+02:00",
"tags": [
"critical",
"internal"
]
},
{
"component": "redis",
"status": "healthy",
"response_time_ms": 5,
"details": {
"cache": "active"
},
"last_checked": "2025-08-14T11:50:39.264628+02:00",
"tags": [
"critical",
"internal"
]
},
{
"component": "ocr_tesseract",
"status": "healthy",
"response_time_ms": 162,
"details": {
"service": "available"
},
"last_checked": "2025-08-14T11:50:39.264508+02:00",
"tags": [
"external"
]
},
{
"component": "crp_grpc",
"status": "healthy",
"response_time_ms": 0,
"details": {
"service": "available"
},
"last_checked": "2025-08-14T11:50:39.26451+02:00",
"tags": [
"external"
]
},
{
"component": "email_smtp",
"status": "healthy",
"response_time_ms": 0,
"details": {
"service": "available"
},
"last_checked": "2025-08-14T11:50:39.264491+02:00",
"tags": [
"external"
]
}
],
"summary": {
"total_components": 8,
"healthy_count": 8,
"unhealthy_count": 0,
"degraded_count": 0,
"avg_response_time_ms": 170.25
},
"system_info": {
"service_name": "corebanq-api",
"version": "5f1842b1",
"environment": "production",
"uptime": "2h15m30s",
"uptime_seconds": 8130.5,
"start_time": "2025-08-14T09:35:00Z",
"go_version": "go1.24.5",
"server_ready": true
}
}{
"overall_status": "degraded",
"timestamp": "2025-08-15T09:13:12.783483+02:00",
"components": [
{
"component": "redis",
"status": "healthy",
"response_time_ms": 3,
"details": {
"cache": "active"
},
"last_checked": "2025-08-15T09:13:12.783529+02:00",
"tags": [
"critical",
"internal"
]
},
{
"component": "ocr_tesseract",
"status": "degraded",
"response_time_ms": 7005,
"error": "OCR test extraction failed: ",
"last_checked": "2025-08-15T09:13:12.783556+02:00",
"tags": [
"external"
]
},
{
"component": "crp_grpc",
"status": "healthy",
"response_time_ms": 0,
"details": {
"service": "available"
},
"last_checked": "2025-08-15T09:13:12.783497+02:00",
"tags": [
"external"
]
},
{
"component": "email_smtp",
"status": "healthy",
"response_time_ms": 0,
"details": {
"service": "available"
},
"last_checked": "2025-08-15T09:13:12.783508+02:00",
"tags": [
"external"
]
},
{
"component": "sms_service",
"status": "healthy",
"response_time_ms": 0,
"details": {
"service": "available"
},
"last_checked": "2025-08-15T09:13:12.783501+02:00",
"tags": [
"external"
]
},
{
"component": "llm_service",
"status": "healthy",
"response_time_ms": 95,
"details": {
"service": "available"
},
"last_checked": "2025-08-15T09:13:12.783517+02:00",
"tags": [
"external"
]
},
{
"component": "totp_service",
"status": "healthy",
"response_time_ms": 11,
"details": {
"cache": "active"
},
"last_checked": "2025-08-15T09:13:12.783517+02:00",
"tags": [
"critical",
"internal"
]
},
{
"component": "database",
"status": "healthy",
"response_time_ms": 1,
"details": {
"connection": "active"
},
"last_checked": "2025-08-15T09:13:12.783497+02:00",
"tags": [
"critical",
"internal"
]
}
],
"summary": {
"total_components": 8,
"healthy_count": 7,
"unhealthy_count": 0,
"degraded_count": 1,
"avg_response_time_ms": 889.375
}
}{
"overall_status": "unhealthy",
"timestamp": "2025-08-15T09:00:33.602026+02:00",
"components": [
{
"component": "redis",
"status": "healthy",
"response_time_ms": 5,
"details": {
"cache": "active"
},
"last_checked": "2025-08-15T09:00:33.60207+02:00",
"tags": [
"critical",
"internal"
]
},
{
"component": "ocr_tesseract",
"status": "healthy",
"response_time_ms": 313,
"details": {
"service": "available"
},
"last_checked": "2025-08-15T09:00:33.602064+02:00",
"tags": [
"external"
]
},
{
"component": "crp_grpc",
"status": "healthy",
"response_time_ms": 1,
"details": {
"service": "available"
},
"last_checked": "2025-08-15T09:00:33.602122+02:00",
"tags": [
"external"
]
},
{
"component": "email_smtp",
"status": "healthy",
"response_time_ms": 0,
"details": {
"service": "available"
},
"last_checked": "2025-08-15T09:00:33.602124+02:00",
"tags": [
"external"
]
},
{
"component": "sms_service",
"status": "healthy",
"response_time_ms": 0,
"details": {
"service": "available"
},
"last_checked": "2025-08-15T09:00:33.602082+02:00",
"tags": [
"external"
]
},
{
"component": "llm_service",
"status": "healthy",
"response_time_ms": 103,
"details": {
"service": "available"
},
"last_checked": "2025-08-15T09:00:33.60209+02:00",
"tags": [
"external"
]
},
{
"component": "totp_service",
"status": "healthy",
"response_time_ms": 51,
"details": {
"cache": "active"
},
"last_checked": "2025-08-15T09:00:33.602111+02:00",
"tags": [
"critical",
"internal"
]
},
{
"component": "database",
"status": "degraded",
"response_time_ms": 1,
"error": "database ping failed: failed to connect to `user=postgres database=corebanq`:\n\t[::1]:5432 (localhost): dial error: dial tcp [::1]:5432: connect: connection refused\n\t127.0.0.1:5432 (localhost): dial error: dial tcp 127.0.0.1:5432: connect: connection refused",
"last_checked": "2025-08-15T09:00:33.602066+02:00",
"tags": [
"critical",
"internal"
]
}
],
"summary": {
"total_components": 8,
"healthy_count": 7,
"unhealthy_count": 0,
"degraded_count": 1,
"avg_response_time_ms": 59.25
}
}