--- key: api.decode-by-id title: 2026-07-07 — Decode-style endpoints take a row id and look up server-side status: active since: '2026-07-07' supersedes: none superseded-by: none rule: Endpoints that decode/expand opaque stored state accept a database row id and resolve it server-side rather than round-tripping client-supplied serialized state. signals: '`PlayoutHistoryDetailsResponseModel` · paths: `PlayoutController.GetHistoryDetails` · issues: none cited (PR #182)' mechanics: '`GET /api/playouts/history/{id}`, `PlayoutController.GetHistoryDetails`' --- Endpoints that decode/expand opaque stored state accept a database row id and resolve server-side, rather than accepting client-supplied serialized state to decode. Established by `GET /api/playouts/history/{id}` (`PlayoutController.GetHistoryDetails`, PR #182) — the row's raw JSON (`Key`/`Details`) is decoded server-side into `PlayoutHistoryDetailsResponseModel`, the client never round-trips the raw payload itself.