Health & Monitoring API Endpoints

Overview

Endpoints for system health checks, monitoring, and diagnostics.


Endpoint Summary

Endpoint Method Auth Description
/v1/health GET None Basic health check
/v1/health/deep GET Admin Deep health check
/v1/filters/leagues GET None Get leagues filter
/v1/filters/sports GET None Get sports filter
/v1/filters/teams GET None Get teams filter
/v1/filters/periods GET None Get periods filter

Health Checks

GET /v1/health

Description: Basic health check endpoint. Returns OK if the API is running.

Response:

{
  "status": "Healthy",
  "timestamp": "2025-11-29T12:00:00Z"
}

GET /v1/health/deep

Description: Deep health check that tests all dependencies.

Authentication: Admin JWT required

Response: DeepHealthResponse

{
  "status": "Healthy",
  "timestamp": "2025-11-29T12:00:00Z",
  "version": "1.0.0",
  "environment": "production",
  "uptime": "5d 12h 30m",
  "checks": {
    "database": {
      "status": "Healthy",
      "responseTime": 12,
      "details": "SQL Server connected"
    },
    "cache": {
      "status": "Healthy",
      "responseTime": 2,
      "details": "Redis connected"
    },
    "externalApis": {
      "status": "Healthy",
      "responseTime": 45,
      "details": "All external APIs responsive"
    },
    "storage": {
      "status": "Healthy",
      "details": "Blob storage accessible"
    },
    "queue": {
      "status": "Healthy",
      "details": "Message queue connected"
    }
  },
  "metrics": {
    "requestsPerSecond": 125,
    "activeConnections": 342,
    "memoryUsage": "512MB",
    "cpuUsage": "23%"
  }
}

Health Status Values:


Filter Endpoints

These endpoints provide filter options for UI dropdowns and queries.

GET /v1/filters/leagues

Description: Retrieves available leagues for filtering.

Query Parameters:

Parameter Type Description
sportId int Filter by sport
active bool Only active leagues

Response: LeaguesFilterResponse

{
  "leagues": [
    {"id": 1, "name": "NFL", "sportId": 1, "sportName": "Football"},
    {"id": 2, "name": "NCAAF", "sportId": 1, "sportName": "Football"},
    {"id": 3, "name": "NBA", "sportId": 2, "sportName": "Basketball"},
    {"id": 4, "name": "NCAAB", "sportId": 2, "sportName": "Basketball"},
    {"id": 5, "name": "MLB", "sportId": 3, "sportName": "Baseball"},
    {"id": 6, "name": "NHL", "sportId": 4, "sportName": "Hockey"}
  ]
}

GET /v1/filters/sports

Description: Retrieves available sports for filtering.

Response: SportsFilterResponse

{
  "sports": [
    {"id": 1, "name": "Football", "code": "FB", "active": true},
    {"id": 2, "name": "Basketball", "code": "BK", "active": true},
    {"id": 3, "name": "Baseball", "code": "BB", "active": true},
    {"id": 4, "name": "Hockey", "code": "HK", "active": true},
    {"id": 5, "name": "Soccer", "code": "SC", "active": true}
  ]
}

GET /v1/filters/teams

Description: Retrieves available teams for filtering.

Query Parameters:

Parameter Type Description
sportId int Filter by sport
leagueId int Filter by league
search string Search team name

Response: TeamsFilterResponse

{
  "teams": [
    {"id": 1, "name": "Kansas City Chiefs", "leagueId": 1, "abbreviation": "KC"},
    {"id": 2, "name": "Buffalo Bills", "leagueId": 1, "abbreviation": "BUF"},
    {"id": 3, "name": "Philadelphia Eagles", "leagueId": 1, "abbreviation": "PHI"}
  ]
}

GET /v1/filters/periods

Description: Retrieves available time periods for filtering.

Response: PeriodsFilterResponse

{
  "periods": [
    {"id": "today", "name": "Today", "description": "Games today"},
    {"id": "tomorrow", "name": "Tomorrow", "description": "Games tomorrow"},
    {"id": "this-week", "name": "This Week", "description": "Games this week"},
    {"id": "next-week", "name": "Next Week", "description": "Games next week"},
    {"id": "this-month", "name": "This Month", "description": "Games this month"},
    {"id": "season", "name": "Current Season", "description": "Full season"}
  ]
}

Examples

Basic Health Check

curl -X GET "https://api.example.com/v1/health"

Deep Health Check (Admin)

curl -X GET "https://api.example.com/v1/health/deep" \
  -H "Authorization: Bearer eyJ..."

Get Leagues Filter

curl -X GET "https://api.example.com/v1/filters/leagues?sportId=1"

Get Sports Filter

curl -X GET "https://api.example.com/v1/filters/sports"

Get Teams Filter

curl -X GET "https://api.example.com/v1/filters/teams?leagueId=1&search=chiefs"

Related Endpoints