# Summer DB Public game records with canonical entity IDs, nullable Steam app IDs and separate native Summer DB ratings. ## Access - /api/openapi — current OpenAPI contract - /api/v1/games?q=portal&limit=20 — search and bounded pages - /api/v1/metrics?sort=players&order=desc — collected source metrics - /api/v1/pages — HTML/JSON/Markdown page discovery; follow next until null - /api/v1/status — backend mode, revision, coverage and projection readiness - /api/v1/games/{entityUUID} — canonical production record - /api/v1/games/620 — retained Steam app lookup alias - /api/v1/games/{id}/markdown — Markdown representation - /api/v1/games/{id}/description — exact complete UTF-8 source text for descriptionReference; format=markdown streams the full text, format=json provides bounded UTF-8-safe sections using after and nextCursor. The JSON record declares exact bytes and SHA-256. Source visibility is checked on each request; unavailable text is never silently shortened. - /api/v1/entities/{entityUUID}/player-metrics?days=7 — sampled Steam player history, latest observation and sampled 24-hour peak. days=1,7,30; UTC hourly maxima; null buckets are unknown. JSON or Markdown. No lifetime peak claim. - /api/v1/player-metrics?ids={entityUUID},{entityUUID}&days=7 — ordered batch of up to 50 unique games; days=1 or 7. Missing entities remain explicit. One batch per catalog page. - /api/v1/entities/{entityUUID}/reviews — native public reviews; after is the last reviewId, limit 1–100 - /api/v1/entities/{entityUUID}/history — actual source observations; paired before (observed_at) and beforeId (observation_id), optional kind, limit 1–100 - /api/v1/steam/{appId}/history — completed anonymous Steam branches/builds/depots. limit 1–5, nextBefore decimal string passed unchanged as before. JSON or format=markdown. Missing metadata is null; historyComplete is false. Epochs/recoveryPending report reset coverage. The game page tab=steam has the same Markdown representation. - Both record lists accept format=markdown or Accept: text/markdown. Follow the returned next object verbatim; a full page may be followed by an empty page. No bearer is needed. Local snapshots return 503 for these database-only records. - Record numericRepresentation declares exact-number-token-strings: safe integer tokens remain JSON numbers; unsafe integers and all fraction/exponent tokens become strings containing their exact original JSON numeric text. Source strings remain unchanged. This conversion happens before JSON parsing and applies to nested payloads, avoiding silent precision loss. - /api/v1/games?format=markdown — catalog Markdown with next link - /games/{id}.md or Accept: text/markdown — page Markdown Production catalog pages use opaque nextCursor values as after; preserve filters, order and profile. Filtered total/page numbers are null. Complete refers to source import; projectionReady is a separate capability. Compare revisions while paging changing data. Local snapshot mode uses explicit DATA_DIR and numbered pages; it has no canonical database entity IDs or native ratings. It is rejected in production. An unavailable API never falls back to local files. Missing data is null, not zero. Steam reviews are not Summer DB votes. Native count zero has no average. Prices use minor units and explicit country. Observed player counts are not historical peaks. The production XML sitemap lists 4096 stable canonical UUID partitions. Each partition is a current bounded read, not an immutable export; unavailable or oversized partitions fail explicitly. JSON page discovery remains available through next cursors. Local snapshot XML sitemap uses explicit pages.