# Lacrosse API v1 changelog

This log records consumer-visible additions, deprecations, and clarifications for the stable
`/v1` REST and WebSocket contracts.

## 2026-07-27

- Added nullable `dupr_id`, `dupr_rating_singles`, and `dupr_rating_doubles` fields to every
  public Player representation, including player lists/details, team rosters, and match
  participants. Null means MLP has not published the value; it does not mean a zero rating.

## 2026-07-24

- Published versioned OpenAPI, AsyncAPI, fixture, and downstream WebSocket message schemas at
  stable unauthenticated `/spec/` URLs.
- Clarified WebSocket delivery as at-most-once with no replay. A reconnect requires an
  authoritative REST snapshot followed by a new subscription.
- Added a stable `event_id` to live updates and an optional monotonic `sequence` when supplied by
  the source channel.
- Made `unsubscribe` return `subscription.ack` with the complete remaining topic set.
- Clarified that `fixtures.live` emits match-grain snapshots and updates.
- Defined retry, cursor, freshness, forward-compatibility, and market-staleness semantics.
