Skip to content

Core concepts

A project represents the product you are integrating. Environments separate its configuration and runtime data. An OAuth M2M client is bound to a project and environment; API requests do not select an environment by passing a name in the body.

The Streakline service host and your project’s environment are separate choices. The QA API host selects the QA service. The credential selects the customer environment within that service.

Define your event vocabulary and rules in the workspace. Release a configuration to the target environment before sending runtime events. Changing a draft does not change the environment’s active configuration.

Streakline uses customer-defined keys for events, streaks, balances, and store items. Examples in these guides are illustrative. Replace them with keys from your released configuration.

An event records an occurrence in your product. Its type selects the scoring rule; its idempotency key identifies the occurrence. The same event type can occur many times with different keys.

The server applies the active rules, including cooldowns and daily caps. A client SDK can predict progress from a cached model, but that prediction is not a committed server result.

Levels derive from score and the configured level curve. Configured streaks use customer-owned definition keys with daily, weekly, or monthly periods. Each definition can require one or more event types and minimum counts.

A profile’s streaks map contains the state for those definitions. Use those keys when displaying or importing configured streak progress.

Balances are named quantities in a profile’s balances map. A trusted server can purchase a released store item, spend its configured balance, and apply its grant atomically. Purchasing requires the store:purchase scope.

Use a stable internal user UUID from your application. Credentials, profile state, and offline queues are tied to that identity. Your backend authenticates the customer and decides which user they are allowed to act as.

cacheNamespace separates local SDK storage between installations or environments. It does not grant access to an environment or user.