History of public/openapi.json info.version bumps. See the
spec-versioning policy for when and how
to bump. Every change to API paths or response schemas gets a one-line entry here;
the OpenAPI Version Check CI job
enforces that a bump has a matching entry.
- Add
player_idto theEVOpportunityschema (/opportunities/ev) — the canonical cross-book player identifier resolved by atlas_players (e.g.baseball_mlb_corbin_carroll). Nullable and always present alongsideplayer_name;nulluntil the producer flips a book to active player-id capture. Consumers should group player props onplayer_idand fall back toplayer_name. Additive, backward-compatible. sharp-api-go #213.
- BREAKING: the
Oddsresponse now exposes a single per-oddtimestampfield and no longer emitsodds_changed_at,last_seen_at, orwire_received_at.timestampis the delivery / last-refreshed stamp (advances every ingest cycle — a feed-freshness/liveness signal, matching OpticOdds'timestamp), not a price-last-changed time. Migration: anyone readingodds_changed_at/last_seen_at/wire_received_atshould readtimestamp. Note there is no longer a field for when the price last moved (CLV / line-movement) — full OpticOdds-parity. Supersedes the 2.3.0 deprecations. SHA-1048.
- Add
odds_changed_atto theOddsschema — the canonical per-row freshness field (previously undocumented; also the only per-odd freshness timestamp OpticOdds exposes). Deprecatelast_seen_at,wire_received_at, and the staletimestampprop (deprecated: true) — being internalized; readodds_changed_atfor freshness. Removal tracked in sharp-api-go #743.
- Add
is_activefield to theOddsschema (false= market suspended/closed, price frozen; mirrors OpticOdds locked-odds; absent treated astrue). SHA-3803.
- Align
/accountresponse schema with the live flat shape (#230).
- Baseline versioned spec. (Note:
/sports/{sportId}and/sportsbooks/{bookId}were removed under this version in #218 without a bump — the gap that motivated the versioning policy in #233.)