Skip to main content

Personalization Service

Overview

The Personalization Service stores end-user-specific data for frontend applications. It is similar to browser local storage, but the data is shared between clients and devices for the same authenticated context.

The managed, multi-tenant service works with the User Service. Common uses include preferences, profile settings, favorites, watch history, and playback progress.

Personalization Service C4 Context Diagram

Common use cases

  • User preferences and settings
  • Profile-specific data
  • Favorites and watch lists
  • Recently viewed content
  • Playback progress

How data is organized

Keys

Keys are strings matching ^[\\w-]+(:[\\w-]+)*$. Colons provide simple namespaces, for example ui:preferences, playback:movie:100, and content:favorites.

Values

Key-value and array values are valid JSON. Each JSON value is limited to 10,240 bytes. Progress values use the separate Progress API and are integers.

Scopes

ScopeIdentity used
USERAuthenticated user
PROFILEAuthenticated user and active profile
APPLICATIONAuthenticated user, active profile, and application

The same key can contain different values in different scopes. The requested scope must be available in the authenticated context.

Interfaces

The Personalization Service exposes the following functionality through its GraphQL API.

Data API

The Data API stores, reads, and deletes one JSON value per scoped key. See the Key-value API.

Progress API

The Progress API stores frequently changing integer values such as playback positions. See the Progress API.

Array API

The Array API stores collections of independently addressable items, including favorites and watch history. New integrations should use the itemId-based operations described in the Array API. Earlier array operations remain available for compatibility but are deprecated; see Migrate from deprecated Array APIs.

Choose an API

RequirementAPI
Store one JSON value under a keyKey-value API
Store frequently changing integer progressProgress API
Store a collection with item identity, ordering, or paginationArray API
Address items by a domain identifierArray API with itemId

Endpoint

https://personalization.service.eu.axinom.net/graphql

Authentication and authorization

All requests require a JWT bearer token issued through the User Service. The token determines the tenant, environment, user, profile, and application context used for scope resolution.

Every scope requires a user. PROFILE requires a profile, and APPLICATION requires both a profile and an application.

Limits at a glance

LimitValue
Key and itemId syntax^[\\w-]+(:[\\w-]+)*$
Maximum itemId length256 characters
JSON value size10,240 bytes
Cursor page size1–500; default 20
Lookup/delete raw selectors100 maximum

See Errors and limits for the complete contract.

Pricing

The service fee follows a tiered model depending on the number of end users whose data is stored. See Mosaic Pricing for more information.

Was this page helpful?