> ## Documentation Index
> Fetch the complete documentation index at: https://docs.d-sports.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Games API

> Public team mini-game catalog, published play routes, and Game Center events.

## Scope

The public games contract is the per-team catalog plus the published play routes and Game Center events.

New daily mini-games (Pick'em, Trivia, air hockey, locker-singularity, and later registrations) use the [Game Engine](/api-reference/domains/game-engine). Do not treat `/api/v1/engage/games/*` as a replacement for this catalog. Locker Singularity progress lives on `/api/v1/engage/games/locker-singularity/ledger`, not on the session verbs.

## Published catalog

* `GET /api/games/catalog?teamId=...` or `?teamSlug=...` — public, no auth

Response shape: `{ daily: Game[], weekly: Game[] }`.

Each game entry carries `id`, `key`, `title`, `description`, `icon`, and `badge`. `key` is the stable slug the client maps to a playable route (for example `daily-spin`).

## Catalog rules

* The catalog is admin-managed and team-selected server-side.
* Clients must render only the games returned and must not assume a fixed set.
* Responses are cacheable (`Cache-Control: public, max-age=60, stale-while-revalidate=300`).
* Unknown teams return `404`. A missing `teamId`/`teamSlug` returns `400`.
* Native also fetches `GET /api/v1/engage/games/catalog` and joins the two lists. Engine rows can stay visible when this catalog omits them. See [Game Engine client](/repositories/game-engine/client).

## Published play routes

* `GET /api/games/daily-spin/config` — public wheel layout
* `GET /api/games/daily-spin/state` — authenticated progress
* `POST /api/games/daily-spin/spin` — server-authoritative spin
* `POST /api/games/guess-player/session/start`
* `POST /api/games/guess-player/session/guess`
* `GET /api/games/live/active?teamId=...`
* `GET /api/games/guess-player/players?q=` — authenticated autocomplete
* `POST /api/games/guess-player/session/invalidate`
* `GET /api/games/live/by-code/{code}`, `POST /api/games/live/join`
* `GET /api/games/live/{sessionId}/leaderboard`, `POST /api/games/live/{sessionId}/score`
* `POST /api/games/live/start`, `POST /api/games/live/{sessionId}/end` — team manager
* `GET /api/games/pick-em/players` — leftover roster helper. Engine Pick'em uses `/api/v1/engage/games/daily-pickem/*` instead.

Do not call deprecated `POST /api/games/daily-spin/reward`. New clients use `POST /api/games/daily-spin/spin`.

Render playable games from the catalog first. Overlay the [engine catalog](/api-reference/domains/game-engine) for Pick'em and Trivia.

## Game Center events

These public and authenticated Game Center routes are in OpenAPI:

* `GET /api/events/schedule?teamId=` — repeatable `teamId` for the locker-room hero strip
* `GET /api/events/realtime` — public Broadcast discovery (URL, anon key, channel template `events:{gameId}`). Polling and ETag remain the hydrate and reconnect path.
* `GET /api/events/{gameId}` — event detail, including a `realtime` pointer (no anon key)
* `GET /api/events/{gameId}/stats`, `/plays`, `/lineup`
* `GET /api/events/{gameId}/player-stats` — per-player box score with server-driven columns
* `GET /api/events/{gameId}/top-performer` — home/away `statLine` (sport-formatted). Each side includes `playerKey` (Game Center identity) and `playerId` (linked roster id, or null).
* `GET /api/events/{gameId}/win-probability` — `{ home, away }` always sums to 100
* `GET/POST /api/events/{gameId}/chat`, authenticated `POST/DELETE /chat/mute`, `PUT /chat/read`, and `POST /chat/{messageId}/react`
* `GET/POST /api/events/{gameId}/presence`
* `GET/POST /api/events/{gameId}/ratings` — submit may award Club Rep. Do not call `/api/v1/engage/rep/earn` for this.
* `POST/DELETE /api/events/{gameId}/live-activity` — iOS Live Activity registration. Requires `UserSettings.liveScoreUpdates` consent.

In-app inbox types include `GAME_ALERT` and `RATING` on `GET /api/notifications`.

## Deep-dive documentation

* [Games overview](/repositories/d-sports-api/games/index)
* [Architecture](/repositories/d-sports-api/games/architecture)
* [Behavior](/repositories/d-sports-api/games/behavior)
* [Game Engine](/repositories/game-engine/index)
