{"service":"unified-live-server","version":"2.1.0","mode":"live_polling","endpoints":{"websocket":"/ws?apiKey=<key>","health":"/health","stats":"/stats","liveGames":"/games/live","allGames":"/games","boxscore":"/game/:gameId/boxscore","playByPlay":"/game/:gameId/play-by-play","cleanup":"/admin/cleanup (POST)","refreshStartTimes":"/admin/refresh-start-times (POST)","setStartTime":"/admin/games/:gameId/set-start-time (POST) - Body: { startTime: \"HH:MM:SS\", startTimeEpoch: number }","getTbaGames":"/admin/games/tba?date=YYYY-MM-DD (GET) - List games with TBA/midnight start times","refreshSeasonStats":"/admin/refresh-season-stats (POST) - Refresh Season Leaders materialized view","syncBoxscore":"/admin/games/:gameId/sync-boxscore (POST) - Trigger boxscore sync for a game","retryPersistence":"/admin/retry-persistence (POST) - Systematically retry persistence backlog with exponential backoff. Query params: maxAttempts, initialDelayMs, maxDelayMs","clearTrendingPlayers":"/admin/trending-players (DELETE) - Clear trending players data. Query params: date (YYYY-MM-DD, optional - clears all if not provided)"},"websocketMessages":{"subscribe":"{ type: \"subscribe\", sport: \"basketball-men\", division: \"d1\" }","updates":["game_update","bulk_update","boxscore_update","play_by_play_update"]}}