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

Glossary

This page briefly defines the terms used in the documentation and links them to the relevant page. Terms are grouped by topic, not alphabetically.

Structure: studio, game, environment

TermDefinition
StudioThe top ownership level; it represents a team or a company. It hosts multiple games. Its management is in the Server section of the panel.
GameThe product under a studio. It has its own environments, modules, and API keys.
EnvironmentAn isolated working copy of a game (for example development, live). Data is not shared between environments. Every API key and player session is bound to a single environment.
Environment domainA domain bound to an environment; it is also used as the list of allowed origins (Origin) in browser requests.
ModuleA product part that can be turned on and off: characters, economy, items, trading, store, rewards, social, chat, competition, notifications, webhooks, scenes, and plugins. The endpoints of a disabled module return 404 module_disabled.
Panel (admin panel)The web interface where you manage the game. The panel API is separate from the player API and is outside the scope of this documentation.

Identity and keys

TermDefinition
Server keyA secret API key in the format crx_live_<prefix>_<secret>, kept only on your server. It can call all server endpoints. It is never put in the client or the game bundle.
Client keyAn API key that can be embedded in the client. It cannot run sensitive commands (for example add_xp); however, on some endpoints there is no type gate, so use it only if it is really needed (endpoints).
Player sessionThe session created after the player signs in. It is carried with a cookie (__Secure-crx.session) or a Bearer session token and requires the x-crx-env header.
Access JWTA short-lived token returned in the body when the session is opened, which your game server can verify offline with the JWKS. It is not the same thing as the session token.
JWKSThe public key set for verifying the access JWT (GET /v1/auth/jwks).
GuestA player that needs no registration; it returns to the same player each time with the same secret value and can later be upgraded to an email account.
CSRFDouble submit that prevents the browser from sending unwanted requests on the user’s behalf: a cookie + the x-csrf-token header. Required on modifying requests in a cookie session.
Origin checkThe rule that on modifying requests the Origin header must be one of the environment’s allowed origins. The server sends CORS headers only to origins in the same domain list; CORS is not authorization, this check runs separately.
Same originServing the game and the API under the same domain (with a reverse proxy); architecture and hosting.
Realtime ticketA single-use, 30-second identity token obtained to connect to the realtime socket (protocol).

Reliability: replay and conflict

TermDefinition
Idempotency (replay safety)The same request being applied once even if it is sent multiple times. Provided with the Idempotency-Key header (idempotency and concurrency).
Idempotency-KeyA 1 to 200 character key, generated by the client, that identifies an operation.
Optimistic lockAdding the resource’s version to the request and rejecting the request if the version changed. Done with If-Match or expectedVersion.
expectedVersionThe expected resource version: the If-Match header in HTTP, a field in the realtime Command frame, an option in the SDK.
Fail-openA request passing without being limited if a limiter dependency (Redis) cannot be reached (rate limits).

Plugins

TermDefinition
PluginA trusted package compiled into the server that offers game-specific commands, queries, and realtime modules (overview). Loading third-party plugins does not exist yet.
CommandA state-changing, durable, replay-safe operation.
QueryA read-only read.
Schema document (artifact)The JSON document that describes all of a plugin’s operations and schemas (GET /v1/plugins/{id}/schema).
schemaSha256The digest of the schemas section in the schema document; the version pinning key (bindings).
BindingTyped client code generated from the schema document.
PinThe record of which plugin and schema digest the client was built with; an upgrade_required error on a mismatch.
Access type (access)The identity boundary of a plugin operation: player, server, or public.
Plugin state (grant state)The plugin’s state in an environment: enabled, read-only, draining, disabled.
plugin-v1-decimal-int64The encoding profile that carries plugin and realtime int64 values as decimal text (numbers and encoding).

Realtime

TermDefinition
SubscriptionA data stream opened with Join, bound to a module and a target; recognized by subscriptionId.
TargetWhat the subscription is bound to: PlayerSelf, Room, Scene, or InterestSet.
SnapshotA full broadcast of transient state; ordered with streamEpoch and revision.
Durable eventA plugin event that can be recovered from the database, ordered by sequence.
CursorAn opaque, player-bound value that shows where you left off in a durable stream (reconnect).
EpochsessionEpoch: a socket’s write epoch; a new socket invalidates the old one’s inputs. streamEpoch: the number of resets of the state stream.
Idle closeThe server closing the socket with 4100 when no player activity arrives on a subscription that accepts input.
BackpressureWork being rejected because the client queue is full or because of the server’s frame rate limit.

Data and in-game concepts

TermDefinition
DefinitionA character’s schema and starting values; stored with immutable versions.
TraitA reusable schema fragment mixed into definitions.
ModifierA temporary or permanent bonus that affects a stat (for example from an item).
RuleAn automation bound to character events (game rules).
Minor unitThe integer equivalent of a money value (for example cents).
Basis pointA percentage unit where 10000 = 100%.
Soft deleteA record becoming invisible while its event history is preserved.
Content groupA data set published from the panel and offered to the game as a catalog (content groups).
WebhookOpen Play notifying your own server of events with a signed HTTP request (webhooks guide).
At-least-onceWebhook delivery being done at least once, and more than once if needed; deduplicate with X-Crx-Event-Id.