CorebanqCorebanq Developer Docs
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/detailed

Header 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
  }
}