# Partner API changelog Newest first. The contract is `/partner-api-contract.md`. A breaking change gets a version bump and **90 days' notice**, published here, with the previous behaviour kept working for the whole notice period. The contract lists exactly which changes count as breaking. Additive changes ship on the current version and are not listed. ## 1 The first published version of the partner API. It covers the session mint, paid match seating, the tier ladder, the results feed, the usage meter, the embed document, the partner-scoped Game API an embedded session calls, and the `/partner/admin/…` routes behind the portal. The contract describes all of it. ### A back arrow on the frame's first screen is opt-in The embedded game draws a back arrow on its first screen only when `init` carries `backAtRoot: "exit"`. It posts `{ type: "exit" }` with no `to`, so the destination is yours. Inside the game — between the lobby and a match — the arrow is unchanged and needs nothing from you. `/docs/embedding` has the field. ### Fields removed from the results feed `opponentScore`, `rulesVersion`, `score` and `uid` no longer appear on the row `GET /partner/results` and the result webhook publish. What remains carries price, payout or identification and nothing else: your own player's score is visible inside your embedded frame already; an opponent's score is not yours to relay; the engine version is ours to track; and `uid` is recoverable from `playerId`, which the row still carries — it is exactly `ptr::`, or `ptr:test::` in the test environment. `/docs/results` and `/docs/webhooks` describe the row as it stands today. ### Field order in JSON responses is not guaranteed Fields in a JSON response — for example `POST /partner/sessions`'s `displayName`, `expiresAt`, `token`, `uid` — may appear in any order. Parse by field name, never by position.