Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Versioning

This page describes the version numbers you will encounter in Open Play (API path, protocol, plugin schema, SDK) and how the server notifies you when an endpoint or operation is being deprecated. Important: there is no written breaking-change and removal policy yet; below, only the behavior that is in the code today is described.

What each version tells you

VersionWhere it appearsMeaning
API path /v1All endpoint pathsThe single path version; there is no /v2
Realtime protocolVersionIn every frame (1)The socket protocol major version; a different value gets UnsupportedProtocol
Plugin protocolVersionSchema document (1)The major version of the plugin contract
codecProfileSchema document (plugin-v1-decimal-int64)The wire encoding; a single profile for now
Plugin versionSchema document (for example 1.44.0)The plugin’s version text
schemaVersionEvery operation and message definition; the x-crx-schema-version headerThe schema version of a single message (a positive integer)
schemaSha256Schema documentThe digest of the schemas; the pinning key (bindings)
SDK versionPackage versionTypeScript @ferdiunal/open-play-ts (0.x), Unity com.openplay.sdk (0.x)

/v1 and the server version

All HTTP endpoints are under /v1. The server has no separate “API version” header; which endpoints exist is shown by the endpoint reference and (for core REST) GET /openapi.json. /openapi.json is a hand-compiled document that covers core REST: it does not cover plugins, WebSockets, or the panel API and may not be complete for every endpoint.

Protocol version

protocolVersion: 1 is required in realtime frames; any other value gets an UnsupportedProtocol error and the socket closes. If your client gets this error, instead of retrying ask the user to update (the TypeScript SDK moves to the upgradeRequired state in this case).

Plugin schema versions

A plugin schema is versioned at two levels:

  1. Operation/message level schemaVersion: declared on every request with x-crx-schema-version. If you send a version different from what the server knows, you get 400 invalid_argument.
  2. Document level schemaSha256: any change in the schemas changes the digest. You pin your client to this digest.

The version text (1.44.0) is informational; make the compatibility decision by the digest. For how to verify the plugin version and the digest match, see bindings.

Deprecation

When an endpoint or operation is being deprecated, it keeps working; its behavior, status codes, and body do not change. The deprecation is notified to you with these signals:

SignalWhere
The Deprecation: @<unix seconds> response header (RFC 9745)On every deprecated response (successful or erroneous)
OpenAPI deprecated: trueOn the relevant operation in /openapi.json
A deprecated object in the schema documentOn plugin operations: since (version text), sinceUnixS, and replacement (the short name of the surface that replaces it)
@deprecated in the SDKOn the relevant operation in the generated TypeScript binding

What is deprecated today:

SurfaceHeader valueReplacement
/v1/auth/organization/* (player organizations, 19 endpoints)@1793491200 (2026-11-01 UTC)None; the organization feature is being deprecated, do not confuse it with the studio concept
The package-ride plugin’s daily score queries (getDailyBoard, getLeaderboard)@1793577600 (2026-11-02 UTC)The core leaderboard (“Daily earnings”)
The package-ride operator player view (operatorPlayer, operatorPlayers)@1793577600The core character profile and list

The header’s value gives the moment the deprecation started (UTC unix seconds); it does not give a removal date. There is no Sunset header in the response.

Warning

There is no promise such as a removal date, a minimum notice period, or “a deprecated endpoint works for at least N months”. Do not add a new dependency on a deprecated surface, and when you see the Deprecation header, make a migration plan. To track the header in your logs, record the response headers.

SDK versions

  • The TypeScript SDK is in 0.x versions; breaking changes may occur between 0.x versions. Follow each version’s changes from the package’s changelog and release notes; pin the version exactly (like 0.1.15), and do not use a ^ range.
  • The Unity SDK is at version 0.1.0 and is verified only with Unity 6000.6.7f1 (Unity SDK).
  • The SDK and the server evolve together: a new SDK feature (for example leaderboard, store) requires the server version that carries that feature. Do not update the SDK before the server.
  • In plugin bindings, compatibility depends not on the SDK version but on the schemaSha256 pin (bindings).

What to do

  1. Write your SDK version and your plugin schemaSha256 values into your release manifest.
  2. After every server update, compare the schema document and, if needed, regenerate the binding.
  3. Open a migration task for every call that sees the Deprecation header.
  4. On a realtime and plugin protocol version mismatch, ask the user to update; do not build a retry loop.