# LiveOps API

# Введение {% #overview %}

* **Версия:** 2.0.0
* **Серверы**: `https://store.xsolla.com/api`
* **[Свяжитесь с нами по электронной почте](mailto:integration@xsolla.com)**
* **Адрес для связи:** https://xsolla.com/
* **Требуемая версия TLS:** 1.2

LiveOps — это набор инструментов для повышения вовлеченности пользователей с помощью акций и персонализированных предложений.

Используйте методы API, чтобы управлять такими возможностями, как:

* **Промоакции** — создание и управление купонами, промокодами, скидками и бонусными кампаниями.
* **Персонализация** — возможность задавать условия отображения каталога товаров и применения акций только для определенного круга авторизованных пользователей.
* **Лимиты промоакций** — настройка лимитов на количество использований акции пользователем, а также периодов автоматического обновления лимитов.
* **Цепочки наград и призовые баллы** — настройка цепочек наград, привязанных к накоплению призовых баллов.
* **Ежедневные цепочки** — настройка повторяющихся ежедневных наград для мотивации регулярных входов в игру.
* **Цепочки предложений** — построение последовательных предложений покупки с ценой на каждом шаге и возможностью бесплатных наград.
* **Апселл** — способ продаж, при котором пользователю предлагается купить товар с дополнительной ценностью.

## Методы API {% #api-calls %}

Методы API делятся на следующие группы:

* **<nt>Admin</nt>** — методы для создания, обновления, активации и удаления кампаний и конфигураций цепочек. Для вызова требуется [базовая HTTP-аутентификация](https://developers.xsolla.com/ru/payment-ui-and-flow/payment-ui/how-to-get-payment-token/#payments_solution_get_user_auth_token_basic_auth) с использованием учетных данных Личного кабинета.
* **<nt>Client</nt>** — методы для получения доступных промоакций, получения активных цепочек, активации кодов и получения наград от имени аутентифицированных конечных пользователей. Аутентификация выполняется по JWT пользователя.

# Аутентификация {% #authentication %}

Методы API требуют аутентификации либо от имени пользователя, либо от имени проекта. Тип используемой схемы аутентификации указан в блоке **Безопасность** в описании каждого метода.

## Аутентификация с помощью JWT пользователя {% #authentication-using-users-jwt %}

Аутентификация с помощью JWT пользователя применяется, когда запрос выполняется из браузера, мобильного приложения или игры. По умолчанию используется `XsollaLoginUserJWT`. Подробная информация о создании токена приведена в [документации Xsolla Login API](/ru/api/login/authentication-schemes#getting-user-token).

Токен передается в заголовке `Authorization` в следующем формате: `Authorization: Bearer <user_JWT>`, где `<user_JWT>` — токен пользователя. Токен идентифицирует пользователя и обеспечивает доступ к персонализированным данным.

В качестве альтернативы вы можете использовать [токен для открытия платежного интерфейса](/ru/api/pay-station/token/create-token).

## Базовая HTTP-аутентификация {% #basic-http-authentication %}

Базовая HTTP-аутентификация применяется при взаимодействии server-to-server, когда вызов API отправляется напрямую с вашего сервера, а не из браузера пользователя или мобильного приложения. Обычно применяется базовая HTTP-аутентификация с использованием [ключа API](/ru/api/getting-started/#api_keys_overview).

<div class="note"><b>Примечание</b><br><br>Ключ API является конфиденциальным и не должен храниться или использоваться в клиентских приложениях.</div>

При базовой серверной аутентификации все запросы к API должны содержать заголовок:

- для `basicAuth` — `Authorization: Basic <your_authorization_basic_key>`, где `your_authorization_basic_key` — это пара `project_id:api_key`, закодированная по стандарту Base64;
- для `basicMerchantAuth` — `Authorization: Basic <your_authorization_basic_key>`, где `your_authorization_basic_key` — это пара `merchant_id:api_key`, закодированная по стандарту Base64.

Значения параметров вы можете найти в [Личном кабинете](https://publisher.xsolla.com/):

- `merchant_id` отображается:
  - В разделе **Настройки компании > Компания**.
  - В адресной строке браузера на любой странице Личного кабинета. URL-адрес имеет вид: `https://publisher.xsolla.com/<merchant_id>`.
- `project_id` отображается:
  - В Личном кабинете рядом с названием проекта.
  - В адресной строке браузера при работе с проектом в Личном кабинете. URL-адрес имеет вид: `https://publisher.xsolla.com/<merchant_id>/projects/<project_id>`.
- `api_key` отображается в Личном кабинете только при создании и должен храниться на вашей стороне. Создать ключ можно в разделах:
  - [Настройки компании > Ключи API](https://publisher.xsolla.com/0/settings/api_key)
  - [Настройки проекта > Ключи API](https://publisher.xsolla.com/0/projects/0/edit/api_key)

<div class="notice"><b>Внимание</b><br><br>Если необходимый метод API не включает в себя path-параметр <code>project_id</code>, используйте для авторизации ключ API, который действует во всех проектах.</div>

Подробная информация о работе с ключами API приведена в [справочнике API](/ru/api/getting-started/#api_keys_overview).

## Аутентификация с поддержкой гостевого доступа {% #authentication-with-guest-access-support %}

Для продажи корзины используется схема аутентификации `AuthForCart`, которая поддерживает два режима:

1. **Аутентификация с JWT пользователя.** Токен передается в заголовке `Authorization` в следующем формате: `Authorization: Bearer <user_JWT>`, где `<user_JWT>` — это токен пользователя. Токен идентифицирует пользователя и предоставляет доступ к персонализированным данным. В качестве альтернативы вы можете использовать [токен для открытия платежного интерфейса](/ru/api/pay-station/token/create-token).

2. Упрощенный режим без заголовка. Он применяется только для неавторизованных пользователей и может быть использована только для [продажи игровых ключей](/ru/doc/buy-button/how-to/set-up-authentication/#guides_buy_button_selling_items_not_authenticated_users). Вместо токена в запрос передаются заголовки:
   - `x-unauthorized-id` с ID запроса;
   - `x-user` с email пользователя, закодированным в формате Base64.

## Полезные ссылки {% #authentication-useful-links %}

- [Методы API по модели взаимодействия](/ru/api/getting-started/#api_interaction_model)
- [Типы эндпоинтов](/ru/api/getting-started/#api_endpoint_types)
- [Обработка ошибок](/ru/api/getting-started/#api_errors_handling)
- [Управление ключами API](/ru/api/getting-started/#api_keys_overview)

# Базовая структура товара {% #core-entity-structure %}

Товары всех типов (виртуальные предметы, бандлы, виртуальная валюта, ключи) используют схожую структуру данных. Понимание базовой структуры упрощает работу с API и позволяет быстрее ориентироваться в документации.

<div class="note"><b>Примечание</b><br><br>В некоторых методах могут использоваться дополнительные поля, но они не изменяют базовую структуру.</div>

**Идентификация**

- `merchant_id` — ID компании в [Личном кабинете](https://publisher.xsolla.com/);
- `project_id` — ID проекта в Личном кабинете;
- `sku` — артикул товара, уникальный в рамках проекта.

**Отображение в каталоге**

- `name` — название;
- `description` — описание;
- `image_url` — ссылка на изображение;
- `is_enabled` — доступность товара;
- `is_show_in_store` — отображение в каталоге.

Подробнее об управлении доступностью товаров в каталоге – в [документации](/ru/items-catalog/catalog-features/items-availability/).

**Организация**

- `type` — тип товара, например, виртуальный предмет (`virtual_item`) или бандл (`bundle`);
- `groups` — группы, к которым относится товар;
- `order` — порядок отображения в каталоге.

**Условия продажи**

- `prices` — цены в реальной или виртуальной валюте;
- `limits` — ограничения на покупку;
- `periods` — период доступности;
- `regions` — региональные ограничения.

**Пример базовой структуры:**

```json
{
  "attributes": [],
  "bundle_type": "virtual_currency_package",
  "content": [
    {
      "description": {
        "en": "Main in-game currency"
      },
      "image_url": "https://.../image.png",
      "name": {
        "en": "Crystals",
        "de": "Kristalle"
      },
      "quantity": 500,
      "sku": "com.xsolla.crystal_2",
      "type": "virtual_currency"
    }
  ],
  "description": {
    "en": "Crystals x500"
  },
  "groups": [],
  "image_url": "https://.../image.png",
  "is_enabled": true,
  "is_free": false,
  "is_show_in_store": true,
  "limits": {
    "per_item": null,
    "per_user": null,
    "recurrent_schedule": null
  },
  "long_description": null,
  "media_list": [],
  "name": {
    "en": "Medium crystal pack"
  },
  "order": 1,
  "periods": [
    {
      "date_from": null,
      "date_until": "2020-08-11T20:00:00+03:00"
    }
  ],
  "prices": [
    {
      "amount": 20,
      "country_iso": "US",
      "currency": "USD",
      "is_default": true,
      "is_enabled": true
    }
  ],
  "regions": [],
  "sku": "com.xsolla.crystal_pack_2",
  "type": "bundle",
  "vc_prices": []
}
```

# Настройка продажи товаров {% #basic-purchase-flow %}

Xsolla API позволяет реализовать логику магазина внутриигровых товаров,  включая получение каталога, управление корзиной, создание заказов и отслеживание их статусов. В зависимости от сценария интеграции методы API делятся на подразделы **Admin** и **Catalog**, которые используют разные [схемы аутентификации](/ru/api/catalog/authentication).

Ниже приведен пример базового сценария настройки и работы магазина — от создания товаров до их продажи пользователю.

## Создание товаров и групп (Admin) {% #create-items-and-groups-admin %}

Создайте каталог товаров для вашего магазина, например, виртуальные предметы, бандлы или виртуальную валюту.

Примеры методов:
- [Создать виртуальный предмет](/ru/api/catalog/virtual-items-currency-admin/admin-create-virtual-item)
- [Создать бандл](/ru/api/catalog/bundles-admin/admin-create-bundle)
- [Создать виртуальную валюту](/ru/api/catalog/virtual-items-currency-admin/admin-create-virtual-currency)

## Настройка акций, цепочек, ограничений (Admin) {% #set-up-promotions-chains-and-limits-admin %}

Настройте инструменты привлечения пользователей и монетизации, например скидки, бонусы, ежедневные награды или цепочки предложений.

Примеры методов:
- [Создать акцию с бонусами](/ru/api/liveops/promotions-bonuses/create-bonus-promotion)
- [Создать ежедневную награду](/ru/api/liveops/daily-chain-admin/admin-create-daily-chain)
- [Создать уникальное предложение по каталогу](/ru/api/liveops/promotions-unique-catalog-offers/admin-create-unique-catalog-offer)

## Получение информации о товарах (Client) {% #get-item-information-client %}

Настройте отображение товаров магазина в вашем приложении.

<div class="notice">
  <b>Внимание</b><br><br>
    Не используйте методы подраздела Admin для построения каталога пользователям — у таких методов заданы ограничения по <a href="https://developers.xsolla.com/ru/api/getting-started/#api_rate_limits" target="_blank">частоте запросов</a>, которые не рассчитаны на пользовательский трафик.
</div>

<br>

Примеры методов:
- [Получение списка виртуальных предметов](/ru/api/catalog/virtual-items-currency-catalog/get-virtual-items)
- [Получение списка групп товаров](/ru/api/catalog/virtual-items-currency-catalog/get-item-groups)
- [Получение списка бандлов](/ru/api/catalog/bundles-catalog/get-bundle-list)
- [Получение списка продаваемых товаров](/ru/api/catalog/common-catalog/get-sellable-items)

<div class="note">
  <b>Примечание</b><br><br>
    По умолчанию в методах получения каталога возвращаются товары, которые отображаются в магазине на момент запроса. Чтобы получить информацию о товарах, период отображения которых еще не наступил или уже истек, передайте параметр <code>"show_inactive_time_limited_items": 1</code> при запросе каталога.
</div>

## Продажа товаров {% #sell-items %}

Вы можете продавать товары за реальную валюту следующими способами:
- Быстрая покупка — продажа одного товара, но в любом количестве.
- Покупка корзины — пользователь наполняет корзину, добавляет и удаляет товары, изменяет количество в одном заказе.

Если товар оплачивается внутриигровой валютой, а не реальными деньгами, используйте метод [Создание заказа с указанным товаром, приобретенным за виртуальную валюту](/ru/api/catalog/virtual-payment/create-order-with-item-for-virtual-currency). Платежный интерфейс открывать не нужно — списание происходит в момент вызова метода.

Если товар бесплатный, используйте метод [Создание заказа с указанным бесплатным товаром](/ru/api/catalog/free-item/create-free-order-with-item) или метод [Создание заказа с помощью бесплатной корзины](/ru/api/catalog/free-item/create-free-order). Платежный интерфейс открывать не нужно — заказ сразу переходит в статус <code>done</code>.

### Быстрая покупка {% #fast-purchase %}

Используйте клиентский [метод создания заказа с указанным товаром](/ru/api/catalog/payment-client-side/create-order-with-item) – в ответе вы получите токен, который используется для открытия платежного интерфейса.

<div class="note">
  <b>Примечание</b><br><br>
    Информация о скидке доступна пользователю только в платежном интерфейсе. Использование промокодов не предусмотрено.
</div>

### Покупка корзины {% #cart-purchase %}

Наполнение и покупка корзины может осуществляться на клиенте или на сервере.

**Наполнение и покупка корзины на клиенте**

Самостоятельно реализуйте логику добавления и удаления товаров. Также необходимо учитывать, что до вызова метода наполнения корзины у вас не будет информации о том, какие акции будут применены при покупке. Это означает, что итоговая стоимость и сведения о добавленных бонусных предметах будут неизвестны.

Реализуйте следующую логику работы с корзиной:
1. После наполнения корзины игроком используйте метод [Наполнение корзины товарами](/ru/api/shop-builder/operation/cart-fill/) для наполнения корзины. В ответе вернется текущая информация о выбранных товарах — цены до и после применения скидок, бонусные товары.
2. Обновите содержимое корзины в соответствии с действиями пользователя:
   - Для добавления товара или изменения его количества используйте метод [Обновление товара в корзине по ID корзины](/ru/api/shop-builder/operation/put-item-by-cart-id/).
   - Для удаления товара используйте метод [Удаление товара из корзины по ID корзины](/ru/api/shop-builder/operation/delete-item-by-cart-id/).

<div class="note">
  <b>Примечание</b><br><br>
    Если вы хотите получить актуальное состояние корзины, используйте метод Получение корзины текущего пользователя.
</div>

3. Используйте метод покупки корзины [Создание заказа со всеми товарами из текущей корзины](/ru/api/shop-builder/operation/create-order/). В ответе вернутся ID заказа и платежный токен. Заказу будет присвоен статус <code>new</code>.

**Наполнение и покупка корзины на сервере**

Этот вариант наполнения корзины может занимать значительное время на настройку, поскольку каждое изменение корзины может сопровождаться вызовом большего количества методов API.

Реализуйте следующую логику работы с корзиной:
1. После наполнения корзины игроком используйте методс [Наполнение корзины товарами](/ru/api/catalog/cart-server-side)для наполнения корзины. В ответе вернется текущая информация о выбранных товарах — цены до и после применения скидок, бонусные товары.
2. Используйте метод покупки корзины [Создание заказа со всеми товарами из текущей корзины](/ru/api/shop-builder/operation/create-order/). В ответе вернутся ID заказа и платежный токен. Заказу будет присвоен статус <code>new</code>.

## Открытие платежного интерфейса {% #open-payment-ui %}

Используйте полученный токен для открытия платежного интерфейса в новом окне. Другие способы открытия платежного интерфейса описаны в [документации](/ru/payment-ui-and-flow/payment-ui/how-to-open-payment-ui/#open_payment_ui).

| Действие                          | Эндпоинт                                                                  |
|:----------------------------------|:--------------------------------------------------------------------------|
| Открыть в боевом окружении.       | <code>https://secure.xsolla.com/paystation4/?token={token}</code>         |
| Открыть в тестовом окружении.     | <code>https://sandbox-secure.xsolla.com/paystation4/?token={token}</code> |

<div class="note">
  <b>Примечание</b><br><br>
    Используйте тестовый режим (sandbox-режим) при разработке и тестировании — при совершении тестовой покупки с реальных счетов не списываются деньги. Для тестирования вы можете использовать <a href="https://developers.xsolla.com/ru/dev-resources/testing/test-cards/">тестовые банковские карты</a>.

    После проведения первого реального платежа в силу вступает строгая политика платежей в тестовом окружении. Проведение платежа в нем будет доступно только для пользователей, которые указаны в Личном кабинете в разделе [Настройки компании > Пользователи](https://publisher.xsolla.com/0/settings/users).

    Покупка виртуальной валюты и виртуальных предметов за реальную валюту возможна после подписания лицензионного договора с Xsolla. Для этого в [Личном кабинете](https://publisher.xsolla.com/) перейдите в **Договоры и налоги > Договоры**, заполните договор и дождитесь подтверждения согласования. Согласование может занять до 3 рабочих дней.
</div>

Для включения или отключения тестового режима вам необходимо изменить значение параметра `sandbox` в теле запроса методов быстрой покупки и покупки корзины. По умолчанию тестовый режим выключен.

Возможные статусы заказа: - `new` — заказ создан; - `paid` — оплата получена; - `done` — товар начислен; - `canceled` — заказ отменен; - `expired` — истек срок оплаты.

Отслеживайте статус одним из следующих способов:
- через [настройку вебхуков](/ru/virtual-goods/own-ui/server-side-token-generation/set-up-order-tracking/#payments_integration_order_tracking) на сервере вашего приложения;
- через [простые запросы ](/ru/virtual-goods/own-ui/client-side-token-generation/set-up-order-tracking/#guides_shop_builder_integrate_store_get_order_status_via_short_polling)(short-polling);
- [WebSocket API](/ru/virtual-goods/own-ui/client-side-token-generation/set-up-order-tracking/#guides_shop_builder_integrate_store_get_order_status_via_websocket_api).

## Полезные ссылки {% #basic-purchase-flow-useful-links %}

- Аутентификация
- [Методы API по модели взаимодействия](/ru/api/catalog/authentication)
- [Тестирование платежей](/ru/dev-resources/testing/general-info/#general_overview)
- [Отслеживание статуса заказа](/ru/virtual-goods/own-ui/client-side-token-generation/set-up-order-tracking/?link=200-api#payments_integration_order_tracking)
- [Вебхуки](/ru/webhooks/overview)
- [Ограничения скорости запросов](/ru/api/login/rate-limits)
- [Обработка ошибок](/ru/api/getting-started/#api_errors_handling)
- [Управление ключами API](/ru/api/getting-started/#api_keys_overview)

# Пагинация {% #pagination %}

Методы API для запроса большого количества записей (например, для построения каталога) возвращают данные постранично. Пагинация — это механизм ограничения количества элементов, возвращаемых в одном ответе API, с возможностью последовательного получения следующих страниц.

Для управления количеством возвращаемых элементов используйте следующие параметры:

- `limit` — количество элементов на странице;
- `offset` — номер элемента, с которого выполняется вывод на странице (нумерация ведется с 0);
- `has_more` — есть ли следующая страница;
- `total_items_count` — общее количество элементов.

Пример запроса:

```
GET /items?limit=20&offset=40
```

Пример ответа:

```json
{
  "items": [...],
  "has_more": true,
  "total_items_count": 135
}
```

Рекомендуется выполнять последовательные запросы до тех пор, пока в ответе не вернется `has_more = false`.

# Формат даты и времени {% #date-and-time-format %}

Дата и время передаются в формате [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).

Поддерживаются:

- смещение относительно UTC;
- значение `null`, когда нет ограничения времени отображения предмета;
- в отдельных полях используется [Unix timestamp](https://www.unixtimestamp.com/) (в секундах).

Формат: `YYYY-MM-DDTHH:MM:SS±HH:MM`

Пример: `2026-03-16T10:00:00+03:00`

# Локализация {% #localization %}

Xsolla поддерживает локализацию пользовательских полей, таких как название и описание товаров. Локализованные значения передаются в виде объекта, в котором ключом является код языка. Полный список поддерживаемых языков приведен в [документации](/ru/doc/shop-builder/references/supported-languages/).

**Поддерживаемые поля**

Локализация может быть задана для следующих параметров:

- `name`
- `description`
- `long_description`

**Формат локали**

Ключ локали может быть указан в одном из следующих форматов:

- двухбуквенный код языка: `en`, `ru`
- формат язык–страна: `en-US`, `ru-RU`, `de-DE`

**Примеры**

Пример с двухбуквенным кодом языка:

```json
{
  "name": {
    "en": "Starter Pack",
    "ru": "Стартовый набор"
  }
}
```

Пример с форматом язык–страна:

```json
{
  "description": {
    "en-US": "Premium bundle",
    "de-DE": "Premium-Paket"
  }
}
```

# Формат ответа при ошибке {% #error-response-format %}

При возникновении ошибки API возвращает HTTP-статус и тело ответа в формате JSON. Полный список ошибок в работе магазина приведен в [документации](/ru/dev-resources/references/errors/store-errors/).

**Пример ответа:**

```json
{
  "errorCode": 1102,
  "errorMessage": "Validation error",
  "statusCode": 422,
  "transactionId": "c9e1a..."
}
```

- `errorCode` — код ошибки.
- `errorMessage` — краткое описание ошибки.
- `statusCode` — HTTP статус ответа.
- `transactionId` — ID запроса. Возвращается не во всех случаях.
- `errorMessageExtended` — дополнительные данные об ошибке, например параметры запроса. Возвращаются не во всех случаях.

**Пример расширенного ответа:**

```json
{
  "errorCode": 7001,
  "errorMessage": "Chain not found",
  "errorMessageExtended": {
    "chain_id": "test_chain_id",
    "project_id": "test_project_id",
    "step_number": 2
  },
  "statusCode": 404
}
```

**Частые HTTP-статусы**

- `400` — некорректный запрос
- `401` — ошибка аутентификации
- `403` — недостаточно прав доступа
- `404` — ресурс не найден
- `422` — ошибка валидации данных
- `429` — превышено ограничение частоты запросов

**Рекомендации**

- Обрабатывайте HTTP-статус и тело ответа совместно.
- Используйте `errorCode` для обработки ошибок, связанных с логикой работы приложения.
- Используйте `transactionId`, чтобы быстрее идентифицировать запросы при анализе ошибок.

Version: 2.0.0

## Servers

```
https://store.xsolla.com/api
```

## Security

### basicAuth

Для серверных методов используется схема аутентификации `basicAuth`. Все запросы к API должны содержать заголовок `Authorization: Basic <your_authorization_basic_key>`, где `your_authorization_basic_key` — пара `project_id:api_key`, закодированная по стандарту Base64.

Вы можете использовать `merchant_id` вместо `project_id` при необходимости. Это не влияет на функциональность.

Значения параметров вы можете найти в [Личном кабинете](https://publisher.xsolla.com/):

* `merchant_id` отображается:
  * В разделе **Настройки компании > Компания**
  * В адресной строке браузера на любой странице Личного кабинета. URL-адрес имеет вид: `https://publisher.xsolla.com/<merchant_id>`.
* `api_key` отображается в Личном кабинете только при создании и должен храниться на вашей стороне. Создать ключ можно в разделах:
  * [Настройки компании > Ключи API](https://publisher.xsolla.com/0/settings/api_key)
  * [Настройки проекта > Ключи API](https://publisher.xsolla.com/0/projects/0/edit/api_key)

{% html name="div" attrs={"class": "notice"} %}
**Внимание**

Если необходимый метод API не включает в себя path-параметр `project_id`, используйте для авторизации ключ API, который действует во всех проектах.
{% /html %}

* `project_id` отображается:
  * В Личном кабинете рядом с названием проекта.
  * В адресной строке браузера при работе с проектом в Личном кабинете. URL-адрес имеет вид: `https://publisher.xsolla.com/<merchant_id>/projects/<project_id>`.

Подробная информация о работе с ключами API приведена в [справочнике API](https://developers.xsolla.com/ru/api/getting-started/#api_keys_overview).

Type: http
Scheme: basic

### XsollaLoginUserJWT

Для клиентских методов используется схема аутентификации `XsollaLoginUserJWT`. Запрос должен содержать JWT пользователя в заголовке `Authorization` в формате Bearer `<user_JWT>`. Токен идентифицирует пользователя и обеспечивает доступ к персонализированным данным. Подробная информация о создании токена приведена в [документации Xsolla Login API](/ru/api/login/authentication-schemes#getting-user-token).

В качестве альтернативы вы можете использовать [токен для открытия платежного интерфейса](/ru/api/pay-station/token/create-token).

Type: http
Scheme: bearer
Bearer Format: JWT

### AuthForCart

Для продажи корзины используется схема аутентификации `AuthForCart`, которая поддерживает два режима:

1. Аутентификация с использованием JWT пользователя. Токен передается в заголовке Authorization в следующем формате: `Authorization: Bearer <user_JWT>`, где `<user_JWT>` — это токен пользователя. Токен идентифицирует пользователя и предоставляет доступ к персонализированным данным.

В качестве альтернативы вы можете использовать [токен для открытия платежного интерфейса](/ru/api/pay-station/token/create-token).

2. Упрощенный режим без заголовка `Authorization`. Он применяется только для неавторизованных пользователей и может быть использована только для [продажи игровых ключей](/ru/doc/buy-button/how-to/set-up-authentication/#guides_buy_button_selling_items_not_authenticated_users). Вместо токена в запрос передаются специальные заголовки:
* `x-unauthorized-id` с ID запроса;
* `x-user` с email пользователя, закодированным по стандарту Base64.

Type: http
Scheme: bearer

### basicMerchantAuth

Для серверных методов используется схема аутентификации `basicMerchantAuth`. Все запросы к API должны содержать заголовок `Authorization: Basic <your_authorization_basic_key>`, где `your_authorization_basic_key` — пара `merchant_id:api_key`, закодированная по стандарту Base64.

Значения параметров вы можете найти в [Личном кабинете](https://publisher.xsolla.com/):

* `merchant_id` отображается:
  * В разделе **Настройки компании > Компания**
  * В адресной строке браузера на любой странице Личного кабинета. URL-адрес имеет вид: `https://publisher.xsolla.com/<merchant_id>`
* `api_key` отображается в Личном кабинете только при создании и должен храниться на вашей стороне. Создать ключ можно в разделе [Настройки компании > Ключи API](https://publisher.xsolla.com/0/settings/api_key).

Подробная информация о работе с ключами API приведена в [справочнике API](https://developers.xsolla.com/ru/api/getting-started/#api_keys_overview).

Type: http
Scheme: basic

## Download OpenAPI description

[LiveOps API](https://xsolla.redocly.app/_bundle/@l10n/ru/api/liveops/index.yaml)

## Общие методы API

Вы можете использовать методы из этого подраздела для управления разными видами промоакций.

### Получение списка всех акций

 - [GET /v3/project/{project_id}/admin/promotion](https://xsolla.redocly.app/ru/api/liveops/promotions-common/get-promotion-list.md): Получает список акций проекта.

### Активация акции

 - [PUT /v2/project/{project_id}/admin/promotion/{promotion_id}/activate](https://xsolla.redocly.app/ru/api/liveops/promotions-common/activate-promotion.md): Активирует акцию.

### Деактивация акции

 - [PUT /v2/project/{project_id}/admin/promotion/{promotion_id}/deactivate](https://xsolla.redocly.app/ru/api/liveops/promotions-common/deactivate-promotion.md): Деактивирует акцию.

### Информация об акции с кодом

 - [GET /v3/project/{project_id}/admin/promotion/redeemable/code/{code}](https://xsolla.redocly.app/ru/api/liveops/promotions-common/get-redeemable-promotion-by-code.md): Получение акции по промокоду или коду купона.

### Проверка кода акции

 - [GET /v2/project/{project_id}/promotion/code/{code}/verify](https://xsolla.redocly.app/ru/api/liveops/promotions-common/verify-promotion-code.md): Определяет, является ли код промокодом или купоном, и может ли пользователь его применить. 


  Примечание
    Этот метод использует JWT пользователя для авторизации.
    Передайте токен в заголовке Authorization в формате: Bearer &lt;user_JWT&gt;. Подробная информация о JWT пользователя приведена в блоке Безопасность для этого метода.

## Купоны

Используйте методы из этого подраздела для настройки и управления акциями с купонами.

<div class="note">
  <p><b>Примечание</b></p>
  <p>Подробная информация о работе с купонами приведена в <a href="https://developers.xsolla.com/ru/liveops/promotion-tools/coupons/">документации</a>.</p>
</div>

### Погашение кода купона

 - [POST /v2/project/{project_id}/coupon/redeem](https://xsolla.redocly.app/ru/api/liveops/promotions-coupons/redeem-coupon.md): Активирует код купона. Пользователь получает бонус после активации купона. 


  Примечание
    Этот метод использует JWT пользователя для авторизации.
    Передайте токен в заголовке Authorization в формате: Bearer &lt;user_JWT&gt;. Подробная информация о JWT пользователя приведена в блоке Безопасность для этого метода.

### Получение вознаграждений по купону

 - [GET /v2/project/{project_id}/coupon/code/{coupon_code}/rewards](https://xsolla.redocly.app/ru/api/liveops/promotions-coupons/get-coupon-rewards-by-code.md): Получает вознаграждения по купону по его коду.
Может использоваться, чтобы дать пользователям возможность выбрать один предмет из множества в качестве бонуса.
Стандартный случай — выбор DRM, если купон содержит игру в качестве бонуса (type=unit). 


  Примечание
    Этот метод использует JWT пользователя для авторизации.
    Передайте токен в заголовке Authorization в формате: Bearer &lt;user_JWT&gt;. Подробная информация о JWT пользователя приведена в блоке Безопасность для этого метода.

### Создание акции с купонами

 - [POST /v3/project/{project_id}/admin/coupon](https://xsolla.redocly.app/ru/api/liveops/promotions-coupons/admin-create-coupon.md): Создает акцию с купонами.

### Получение списка акций с купонами

 - [GET /v3/project/{project_id}/admin/coupon](https://xsolla.redocly.app/ru/api/liveops/promotions-coupons/get-coupons.md): Получает список акций с купонами в рамках проекта.

### Обновление акции с купонами

 - [PUT /v3/project/{project_id}/admin/coupon/{external_id}](https://xsolla.redocly.app/ru/api/liveops/promotions-coupons/update-coupon-promotion.md): Обновляет акцию с купонами.

### Получение акции с купонами

 - [GET /v3/project/{project_id}/admin/coupon/{external_id}](https://xsolla.redocly.app/ru/api/liveops/promotions-coupons/get-coupon.md): Получает указанную акцию с купонами.

### Удаление акции с купонами

 - [DELETE /v3/project/{project_id}/admin/coupon/{external_id}](https://xsolla.redocly.app/ru/api/liveops/promotions-coupons/delete-coupon-promotion.md): Удаляет акцию с купонами. Удаленная акция:
* Пропадет из списка акций, настроенных в вашем проекте.
* Не будет применяться к каталогу товаров. Пользователь не сможет получить бонусные товары по этой акции.

После удаления акция не может быть восстановлена.
Коды купонов из удаленной акции могут быть добавлены в существующие акции.

### Активация акции с купонами

 - [PUT /v2/project/{project_id}/admin/coupon/{external_id}/activate](https://xsolla.redocly.app/ru/api/liveops/promotions-coupons/activate-coupon.md): Активирует акцию с купонами.
 После создания акция с купонами по умолчанию отключена.
 Погашение по акции не будет доступно, пока вы ее не активируете.
 Используйте данный метод, чтобы включить и активировать акцию с купонами.

### Деактивация акции с купонами

 - [PUT /v2/project/{project_id}/admin/coupon/{external_id}/deactivate](https://xsolla.redocly.app/ru/api/liveops/promotions-coupons/deactivate-coupon.md): Деактивирует акцию с купонами.
 После создания акция с купонами по умолчанию отключена.
 Погашение по акции не будет доступно, пока вы ее не активируете.
 Используйте данный метод, чтобы выключить и деактивировать акцию с купонами.

### Создание кода купона

 - [POST /v2/project/{project_id}/admin/coupon/{external_id}/code](https://xsolla.redocly.app/ru/api/liveops/promotions-coupons/create-coupon-code.md): Создает код купона.

### Получение кодов купонов

 - [GET /v2/project/{project_id}/admin/coupon/{external_id}/code](https://xsolla.redocly.app/ru/api/liveops/promotions-coupons/get-coupon-codes.md): Получает коды купонов.

В ответе возвращается общее количество кодов в акции (total_count) и коды на текущей странице (codes). Чтобы получить коды со следующей страницы, увеличьте значение параметра offset на величину limit (например, “offset”: 100, затем “offset”: 200) до получения всех кодов.

В большинстве случаев достаточно “limit”: 100 или “limit”: 1000. Для разовой массовой выгрузки допустимо “limit”: 10000. Не используйте без необходимости большие значения, например, “limit”: 50000.

### Генерация кодов купонов

 - [PUT /v2/project/{project_id}/admin/coupon/{external_id}/code/generate](https://xsolla.redocly.app/ru/api/liveops/promotions-coupons/generate-coupon-codes.md): Генерирует коды купонов.

Рекомендации по работе с кодами:

* Для одной акции нет ограничений на количество кодов. Однако вы можете создать максимум 50 000 кодов за один запрос. Запросы на большее количество кодов вернут ошибку 422 Unprocessable Entity. Если вам нужно создать больше 50 000 кодов, отправьте несколько запросов.

* Для большей стабильности мы рекомендуем создавать коды частями, до 10 000 за один запрос. Например, чтобы создать 100 000 кодов, отправьте 10 запросов с "count": 10000, а не 2 запроса с "count": 50000. Дождитесь успешного ответа на каждый запрос прежде чем отправлять следующий.

* Обратите внимание на ограничение на отправку запросов — не больше 15 в секунду. При создании большого количества кодов отправляйте запросы последовательно, чтобы не превысить ограничение в 15 секунд и избежать ошибки 429.

* Чтобы получить список кодов, используйте метод Получение кодов купонов.

| Показатель | Значение |
|---|---|
| Минимальное количество кодов в запросе. | 1 |
| Максимальное количество кодов в запросе. Используйте только если вам необходимо создать максимальное количество кодов за один запрос. | 50 000 |
| Рекомендованное количество кодов в запросе. | До 10 000. Если необходимо создать больше кодов, отправьте несколько последовательных запросов. |

### Информация об ограничении на применение купонов для указанного пользователя

 - [GET /v2/project/{project_id}/admin/user/limit/coupon/external_id/{external_id}](https://xsolla.redocly.app/ru/api/liveops/promotions-coupons/get-coupon-user-limit.md): Получает информацию об оставшемся количестве применений купона для указанного пользователя.

API ограничений для пользователей позволяет ограничить доступное количество применений купона. Для настройки самого ограничения перейдите в раздел администратора:
* Купоны

### Получение ограничений для уникальных кодов купонов

 - [GET /v2/project/{project_id}/admin/code/limit/coupon/external_id/{external_id}](https://xsolla.redocly.app/ru/api/liveops/promotions-coupons/get-coupon-code-limit.md): Возвращает оставшееся количество применений кодов. Для фильтрации кодов используйте параметр запроса codes.

Для настройки самого ограничения кода перейдите в раздел администратора:
* Купоны

## Промокоды

Используйте методы из этого подраздела для настройки и управления акциями с промокодами.

<div class="note">
  <p><b>Примечание</b></p>
  <p>Подробная информация о работе с промокодами приведена в <a href="https://developers.xsolla.com/ru/liveops/promotion-tools/promo-codes/">документации</a>.</p>
</div>

### Применение промокода

 - [POST /v2/project/{project_id}/promocode/redeem](https://xsolla.redocly.app/ru/api/liveops/promotions-promo-codes/redeem-promo-code.md): Применяет промокод к корзине. При применении промокода стоимость корзины пересчитывается с учетом скидки (на всю корзину или отдельные товары), а также в нее могут быть добавлены бонусные товары. Скидка учитывается при оформлении заказа, а бонусные товары зачисляются пользователю после успешной оплаты. Пользователь может удалить промокод из корзины, отменив скидку и бонусные товары.

### Удаление промокода из корзины

 - [PUT /v2/project/{project_id}/promocode/remove](https://xsolla.redocly.app/ru/api/liveops/promotions-promo-codes/remove-cart-promo-code.md): Удаляет промокод из корзины.
После удаления промокода общая цена всех товаров в корзине будет пересчитана без учета бонусов и скидок, предоставляемых промокодом.

### Получение вознаграждения по промокоду

 - [GET /v2/project/{project_id}/promocode/code/{promocode_code}/rewards](https://xsolla.redocly.app/ru/api/liveops/promotions-promo-codes/get-promo-code-rewards-by-code.md): Получает награды промокодов по их коду.
Может использоваться для того, чтобы позволить пользователям выбрать один из множества предметов в качестве бонуса.
Стандартный случай — выбор DRM, если промокод содержит игру в качестве бонуса (type=unit). .


  Примечание
    Этот метод использует JWT пользователя для авторизации.
    Передайте токен в заголовке Authorization в формате: Bearer &lt;user_JWT&gt;. Подробная информация о JWT пользователя приведена в блоке Безопасность для этого метода.

### Создание акции с промокодами

 - [POST /v3/project/{project_id}/admin/promocode](https://xsolla.redocly.app/ru/api/liveops/promotions-promo-codes/create-promo-code.md): Создает акцию с промокодами.

### Получение списка акций с промокодами

 - [GET /v3/project/{project_id}/admin/promocode](https://xsolla.redocly.app/ru/api/liveops/promotions-promo-codes/get-promo-codes.md): Получает список промокодов проекта.

### Обновление акции с промокодами

 - [PUT /v3/project/{project_id}/admin/promocode/{external_id}](https://xsolla.redocly.app/ru/api/liveops/promotions-promo-codes/update-promo-code.md): Обновляет акцию с промокодами.

### Получение акции с промокодами

 - [GET /v3/project/{project_id}/admin/promocode/{external_id}](https://xsolla.redocly.app/ru/api/liveops/promotions-promo-codes/get-promo-code.md): Получает указанную акцию с промокодами.

### Удаление акции с промокодами

 - [DELETE /v3/project/{project_id}/admin/promocode/{external_id}](https://xsolla.redocly.app/ru/api/liveops/promotions-promo-codes/delete-promo-code.md): Удаляет акцию с промокодами. Удаленная акция:
* Пропадет из списка акций, настроенных в вашем проекте.
* Не будет применяться к каталогу товаров и к корзине. Пользователь не сможет получить бонусные товары или купить товары с применением этой акции.

После удаления акция не может быть восстановлена.
Промокоды из удаленной акции могут быть добавлены в существующие акции.

### Активация акции с промокодами

 - [PUT /v2/project/{project_id}/admin/promocode/{external_id}/activate](https://xsolla.redocly.app/ru/api/liveops/promotions-promo-codes/activate-promo-code.md): Активирует акцию с промокодами.

После создания акция с промокодами по умолчанию отключена.
 Погашение по акции не будет доступно, пока вы ее не активируете.
 Используйте данный метод, чтобы включить и активировать акцию с промокодами.

### Деактивация акции с промокодами

 - [PUT /v2/project/{project_id}/admin/promocode/{external_id}/deactivate](https://xsolla.redocly.app/ru/api/liveops/promotions-promo-codes/deactivate-promo-code.md): Деактивирует акцию с промокодами.

После создания акция с промокодами по умолчанию отключена.
 Погашение по акции не будет доступно, пока вы ее не активируете.
 Используйте данный метод, чтобы выключить и деактивировать акцию с промокодами.

### Создание кода для акции с промокодами

 - [POST /v2/project/{project_id}/admin/promocode/{external_id}/code](https://xsolla.redocly.app/ru/api/liveops/promotions-promo-codes/create-promo-code-code.md): Создает код для акции с промокодами.

### Получение кодов акции с промокодами

 - [GET /v2/project/{project_id}/admin/promocode/{external_id}/code](https://xsolla.redocly.app/ru/api/liveops/promotions-promo-codes/get-promocode-codes.md): Получает коды акции с промокодами.

В ответе возвращается общее количество кодов в акции (total_count) и коды на текущей странице (codes). Чтобы получить коды со следующей страницы, увеличьте значение параметра offset на величину limit (например, “offset”: 100, затем “offset”: 200) до получения всех кодов.

В большинстве случаев достаточно “limit”: 100 или “limit”: 1000. Для разовой массовой выгрузки допустимо “limit”: 10000. Не используйте без необходимости большие значения, например, “limit”: 50000.

### Генерация кодов для акции с промокодами

 - [PUT /v2/project/{project_id}/admin/promocode/{external_id}/code/generate](https://xsolla.redocly.app/ru/api/liveops/promotions-promo-codes/generate-promo-code-codes.md): Генерирует коды для акции с промокодами.

Рекомендации по работе с кодами:

* Для одной акции нет ограничений на количество кодов. Однако вы можете создать максимум 50 000 кодов за один запрос. Запросы на большее количество кодов вернут ошибку 422 Unprocessable Entity. Если вам нужно создать больше 50 000 кодов, отправьте несколько запросов.

* Для большей стабильности мы рекомендуем создавать коды частями, до 10 000 за один запрос. Например, чтобы создать 100 000 кодов, отправьте 10 запросов с "count": 10000, а не 2 запроса с "count": 50000. Дождитесь успешного ответа на каждый запрос прежде чем отправлять следующий.

* Обратите внимание на ограничение на отправку запросов — не больше 15 в секунду. При создании большого количества кодов отправляйте запросы последовательно, чтобы не превысить ограничение в 15 секунд и избежать ошибки 429.

Чтобы получить список кодов, используйте метод Получение кодов акции с промокодами.

| Показатель | Значение |
|---|---|
| Минимальное количество кодов в запросе. | 1 |
| Максимальное количество кодов в запросе. Используйте только если вам необходимо создать максимальное количество кодов за один запрос. | 50 000 |
| Рекомендованное количество кодов в запросе. | До 10 000. Если необходимо создать больше кодов, отправьте несколько последовательных запросов. |

### Информация об ограничении на применение промокодов для указанного пользователя

 - [GET /v2/project/{project_id}/admin/user/limit/promocode/external_id/{external_id}](https://xsolla.redocly.app/ru/api/liveops/promotions-promo-codes/get-promo-code-user-limit.md): Получает информацию об оставшемся количестве применений промокода для указанного пользователя.

API ограничений для пользователей позволяет ограничить доступное количество применений промокода. Для настройки самого ограничения перейдите в раздел администратора:
* Промокоды

### Информация об ограничении на применение промокодов

 - [GET /v2/project/{project_id}/admin/code/limit/promocode/external_id/{external_id}](https://xsolla.redocly.app/ru/api/liveops/promotions-promo-codes/get-promo-code-code-limit.md): Возвращает оставшееся количество применений кодов. Для фильтрации кодов используйте параметр запроса codes.

Для настройки самого ограничения перейдите в раздел администратора:
* Промокоды

## Уникальное предложение каталога

Используйте методы из этого подраздела для настройки и управления уникальными предложениями в каталоге.

<div class="note">
  <p><b>Примечание</b></p>
  <p>Подробная информация о работе с уникальным каталогом предложений приведена в <a href="https://developers.xsolla.com/ru/liveops/promotion-tools/unique-offer/">документации</a>.</p>
</div>

### Создание уникального предложения каталога

 - [POST /v3/project/{project_id}/admin/unique_catalog_offer](https://xsolla.redocly.app/ru/api/liveops/promotions-unique-catalog-offers/admin-create-unique-catalog-offer.md): Создает уникальное акционное предложение по каталогу.

### Получение списка уникальных предложений каталога

 - [GET /v3/project/{project_id}/admin/unique_catalog_offer](https://xsolla.redocly.app/ru/api/liveops/promotions-unique-catalog-offers/get-unique-catalog-offers.md): Получает список уникальных акционных предложений каталога проекта.

### Обновление уникального предложения каталога

 - [PUT /v3/project/{project_id}/admin/unique_catalog_offer/{external_id}](https://xsolla.redocly.app/ru/api/liveops/promotions-unique-catalog-offers/update-unique-catalog-offer-promotion.md): Обновляет уникальное акционное предложение каталога.

### Получение уникального предложения каталога

 - [GET /v3/project/{project_id}/admin/unique_catalog_offer/{external_id}](https://xsolla.redocly.app/ru/api/liveops/promotions-unique-catalog-offers/get-unique-catalog-offer.md): Получает указанное уникальное акционное предложение по каталогу.

### Удаление уникального предложения каталога

 - [DELETE /v3/project/{project_id}/admin/unique_catalog_offer/{external_id}](https://xsolla.redocly.app/ru/api/liveops/promotions-unique-catalog-offers/delete-unique-catalog-offer-promotion.md): Удаляет уникальное акционное предложение каталога. Удаленная акция:
* Пропадет из списка акций, настроенных в вашем проекте.
* Не будет применяться к каталогу товаров и к корзине. Пользователь не сможет купить товары с применением этой акции.

После удаления акция не может быть восстановлена.

### Активация уникального предложения каталога

 - [PUT /v2/project/{project_id}/admin/unique_catalog_offer/{external_id}/activate](https://xsolla.redocly.app/ru/api/liveops/promotions-unique-catalog-offers/activate-unique-catalog-offer.md): Активирует уникальное предложение каталога. Созданная акция по умолчанию отключена. Пока акция не активирована, ее кодами нельзя воспользоваться.

### Отключение уникального предложения каталога

 - [PUT /v2/project/{project_id}/admin/unique_catalog_offer/{external_id}/deactivate](https://xsolla.redocly.app/ru/api/liveops/promotions-unique-catalog-offers/deactivate-unique-catalog-offer.md): Отключает уникальное предложение каталога. После отключения акции ее кодами нельзя воспользоваться. Привязанные к акции скрытые товары не отображаются в каталоге.

### Создание кода уникального предложения каталога

 - [POST /v2/project/{project_id}/admin/unique_catalog_offer/{external_id}/code](https://xsolla.redocly.app/ru/api/liveops/promotions-unique-catalog-offers/create-unique-catalog-offer-code.md): Создает уникальный код предложения по каталогу.

### Получение списка кодов уникального предложения каталога

 - [GET /v2/project/{project_id}/admin/unique_catalog_offer/{external_id}/code](https://xsolla.redocly.app/ru/api/liveops/promotions-unique-catalog-offers/get-unique-catalog-offer-codes.md): Получает уникальные коды предложений по каталогу.

### Генерация кодов уникального предложения каталога

 - [PUT /v2/project/{project_id}/admin/unique_catalog_offer/{external_id}/code/generate](https://xsolla.redocly.app/ru/api/liveops/promotions-unique-catalog-offers/generate-unique-catalog-offer-codes.md): Генерирует уникальные коды предложений по каталогу.

## Скидки

Используйте методы из этого подраздела для настройки и управления акциями со скидками.

<div class="note">
  <p><b>Примечание</b></p>
  <p>Подробная информация о работе со скидками приведена в <a href="https://developers.xsolla.com/ru/liveops/promotion-tools/discounts/">документации</a>.</p>
</div>

### Создание акции со скидками для товара

 - [POST /v3/project/{project_id}/admin/promotion/item](https://xsolla.redocly.app/ru/api/liveops/promotions-discounts/create-item-promotion.md): Создает акцию со скидками для товара.

Акция дает скидку (%) на товары.
Скидка будет применена ко всем ценам на указанные товары.

### Получение списка акций со скидками

 - [GET /v3/project/{project_id}/admin/promotion/item](https://xsolla.redocly.app/ru/api/liveops/promotions-discounts/get-item-promotion-list.md): Получает список акций со скидками в рамках проекта.

Акция дает скидку (%) на товары.
Скидка будет применена ко всем ценам на указанные товары.

### Обновление акции со скидками

 - [PUT /v3/project/{project_id}/admin/promotion/{promotion_id}/item](https://xsolla.redocly.app/ru/api/liveops/promotions-discounts/update-item-promotion.md): Обновляет акцию.

ПримечаниеНовые данные заменят старые. Если вы хотите обновить только часть акции, вам также следует передать в запросе все необходимые данные.

Акция дает скидку (%) на товары.
Скидка будет применена ко всем ценам на указанные товары.

### Получение акции со скидками

 - [GET /v3/project/{project_id}/admin/promotion/{promotion_id}/item](https://xsolla.redocly.app/ru/api/liveops/promotions-discounts/get-item-promotion.md): Получает акцию, применяемую к определенным товарам.

Акция дает скидку (%) на товары.
Скидка будет применена ко всем ценам на указанные товары.

### Удаление скидочной акции

 - [DELETE /v3/project/{project_id}/admin/promotion/{promotion_id}/item](https://xsolla.redocly.app/ru/api/liveops/promotions-discounts/delete-item-promotion.md): Удаляет скидочную акцию. Удаленная акция:
* Пропадет из списка акций, настроенных в вашем проекте.
* Не будет применяться к каталогу товаров и к корзине. Пользователь не сможет купить товары с применением этой акции.

После удаления акция не может быть восстановлена.

## Бонусы

Используйте методы из этого подраздела для настройки и управления акциями с бонусами.

<div class="note">
  <p><b>Примечание</b></p>
  <p>Подробная информация о работе с бонусами приведена в <a href="https://developers.xsolla.com/ru/liveops/promotion-tools/bonuses/">документации</a>.</p>
</div>

### Создание акции с бонусами

 - [POST /v3/project/{project_id}/admin/promotion/bonus](https://xsolla.redocly.app/ru/api/liveops/promotions-bonuses/create-bonus-promotion.md): Создает акцию с бонусами.

Акция добавляет бесплатные бонусные товары к покупке, совершенной пользователем.
Акция может быть применена к каждой покупке в рамках проекта или к покупке, включающей определенные товары.

### Получение списка акций с бонусами

 - [GET /v3/project/{project_id}/admin/promotion/bonus](https://xsolla.redocly.app/ru/api/liveops/promotions-bonuses/get-bonus-promotion-list.md): Получает список акций с бонусами в рамках проекта.

Акция добавляет бесплатные бонусные товары к покупке, совершенной пользователем.
Акция может быть применена к каждой покупке в рамках проекта или к покупке, включающей определенные товары.

### Обновление акции с бонусами

 - [PUT /v3/project/{project_id}/admin/promotion/{promotion_id}/bonus](https://xsolla.redocly.app/ru/api/liveops/promotions-bonuses/update-bonus-promotion.md): Обновляет акцию.

ПримечаниеНовые данные заменят старые. Если вы хотите обновить только часть акции, вам также следует передать в запросе все необходимые данные.

Акция добавляет бесплатные бонусные товары к покупке, совершенной пользователем.
Акция может быть применена к каждой покупке в рамках проекта или к покупке, включающей определенные товары.

### Получение акции с бонусами

 - [GET /v3/project/{project_id}/admin/promotion/{promotion_id}/bonus](https://xsolla.redocly.app/ru/api/liveops/promotions-bonuses/get-bonus-promotion.md): Получает акцию с бонусами.

Акция добавляет бесплатные бонусные товары к покупке, совершенной пользователем.
Акция может быть применена к каждой покупке в рамках проекта или к покупке, включающей определенные товары.

### Удаление бонусной акции

 - [DELETE /v3/project/{project_id}/admin/promotion/{promotion_id}/bonus](https://xsolla.redocly.app/ru/api/liveops/promotions-bonuses/delete-bonus-promotion.md): Удаляет бонусную акцию. Удаленная акция:
* Пропадет из списка акций, настроенных в вашем проекте.
* Не будет применяться к каталогу товаров и к корзине. Пользователь не сможет получить бонусные товары по этой акции.

После удаления акция не может быть восстановлена.

## Персонализированный каталог

Персонализация позволяет задавать условия отображения каталога товаров и применения акций только для определенного круга авторизованных пользователей. Условия задаются на основе атрибутов пользователей и позволяют показывать релевантные товары, предложения и скидки.

Доступны следующие типы персонализации:

* [Персонализация на стороне Xsolla](/ru/liveops/promotion-tools/personalization/#guides_personalization_on_xsolla_side). Правила и логика персонализации настраиваются и хранятся на стороне Xsolla. Вы передаете атрибуты пользователя, а Xsolla на их основе формирует персонализированный каталог.
* [Персонализация на стороне партнера](/ru/liveops/promotion-tools/personalization/#guides_personalization_on_partner_side). Вы самостоятельно настраиваете правила и логику персонализации и передаете в Xsolla готовый каталог для конкретного пользователя.

<div class="note">
  <b>Примечание</b><br><br>
  Вы можете использовать только один тип персонализации. Чтобы изменить его, используйте
  <a href="/ru/liveops/promotion-tools/personalization/#guides_personalization_change">инструкцию</a>.
</div>

Чтобы настроить персонализацию на стороне Xsolla с помощью Xsolla API:

1. Создайте товары с помощью методов подраздела **Admin** из группы [Виртуальные предметы и валюта](/ru/api/catalog/virtual-items-currency-admin/admin-get-virtual-items-list/), [Бандлы](/ru/api/catalog/bundles-admin/admin-create-bundle) или [Игровые ключи](/ru/api/catalog/game-keys-admin).
2. [Настройте атрибуты пользователя, используя Xsolla Login API](/ru/liveops/promotion-tools/personalization/#web_shop_guide_personalization_setting_attributes) и поддерживайте значения атрибутов в актуальном состоянии: обновляйте их в Xsolla, когда они меняются у пользователя в игре.
3. Настройте персонализацию для товаров или акций:
    * Для персонализации каталога товаров задайте правила отображения каталога с помощью метода  [Создание правила фильтрации каталога](/ru/api/liveops/personalized-catalog/create-filter-rule):
        * В массиве [attribute_conditions](/ru/api/liveops/personalized-catalog/create-filter-rule#personalized-catalog/create-filter-rule/t=request&path=attribute_conditions) укажите условия доступности товаров в каталоге на основе проверки атрибутов пользователя.
        * В массиве [items](/ru/api/liveops/personalized-catalog/create-filter-rule#personalized-catalog/create-filter-rule/t=request&path=items) передайте список товаров, которые должен видеть пользователь, если значения его атрибутов соответствуют условиям.
    * Для настройки персонализированных акций используйте [методы создания и обновления акции нужного типа](/ru/api/liveops/promotions-discounts/create-item-promotion) и в массиве [attribute_conditions](/ru/api/liveops/promotions-discounts/create-item-promotion) передайте условия, которые определяют доступность акции на основе проверки атрибутов пользователя.

4. Передайте [JWT пользователя](/ru/api/login/getting-user-token?#getting-user-token) с его атрибутами в методы [получения каталога товаров](https://developers.xsolla.com/ru/api/catalog/virtual-items-currency-catalog/get-virtual-items), чтобы получить персонализированный каталог.

**Процесс настройки и применения персонализации на стороне Xsolla для товаров каталога:**

![Персонализация каталога товаров](https://cdn.xsolla.net/developers/current/images/api_docs/personalization-catalog.png)

**Процесс настройки и применения персонализации на стороне Xsolla для акций:**

![Персонализация акций](https://cdn.xsolla.net/developers/current/images/api_docs/personalization-liveops.png)

<div class="note">
<b>Примечание</b><br><br>
Подробная информация приведена:
<ul>
  <li>в <a href="/ru/liveops/promotion-tools/personalization/">инструкции по настройке персонализации на стороне Xsolla и стороне партнера</a>;</li>
  <li>в пошаговом руководстве по <a href="/ru/doc/shop-builder/tutorials/personalization-tutorial/">персонализации каталога товаров на стороне Xsolla</a></li>
</ul>
</div>

### Получение списка правил фильтрации каталога

 - [GET /v2/project/{project_id}/admin/user/attribute/rule](https://xsolla.redocly.app/ru/api/liveops/personalized-catalog/get-filter-rules.md): Получает все правила, применяемые к атрибутам пользователя.

### Создание правила фильтрации каталога

 - [POST /v2/project/{project_id}/admin/user/attribute/rule](https://xsolla.redocly.app/ru/api/liveops/personalized-catalog/create-filter-rule.md): Создает правило для пользовательских атрибутов.

### Получение всех правил каталога для поиска на стороне клиента

 - [GET /v2/project/{project_id}/admin/user/attribute/rule/all](https://xsolla.redocly.app/ru/api/liveops/personalized-catalog/get-all-filter-rules.md): Возвращает список всех правил каталога для поиска на стороне клиента.

ВниманиеВозвращает только id правила, имя и is_enabled

### Получение правила фильтрации каталога

 - [GET /v2/project/{project_id}/admin/user/attribute/rule/{rule_id}](https://xsolla.redocly.app/ru/api/liveops/personalized-catalog/get-filter-rule-by-id.md): Получает конкретное правило, применяемое к атрибутам пользователя.

### Обновление правила фильтрации каталога

 - [PUT /v2/project/{project_id}/admin/user/attribute/rule/{rule_id}](https://xsolla.redocly.app/ru/api/liveops/personalized-catalog/update-filter-rule-by-id.md): Обновляет определенное правило, применяемое к атрибутам пользователя. Для неуказанных свойств (при их необязательности) будет использоваться значение по умолчанию.

### Корректировка правила фильтрации каталога

 - [PATCH /v2/project/{project_id}/admin/user/attribute/rule/{rule_id}](https://xsolla.redocly.app/ru/api/liveops/personalized-catalog/patch-filter-rule-by-id.md): Обновляет определенное правило, применяемое к атрибутам пользователя. Для неуказанных свойств будет использоваться текущее значение.

### Удаление правила фильтрации каталога

 - [DELETE /v2/project/{project_id}/admin/user/attribute/rule/{rule_id}](https://xsolla.redocly.app/ru/api/liveops/personalized-catalog/delete-filter-rule-by-id.md): Удаляет определенное правило.

## Управление

### Обновление лимитов акций для пользователя

 - [DELETE /v2/project/{project_id}/admin/user/limit/promotion/all](https://xsolla.redocly.app/ru/api/liveops/user-limits-admin/reset-all-user-promotions-limit.md): Обновляет все лимиты по всем акциям для указанного пользователя, чтобы он мог снова использовать эти акции.

API лимитов пользователя позволяет ограничить количество раз, когда пользователи могут использовать рекламную акцию. Для настройки самого лимита перейдите в раздел Admin нужного типа акции:
* Акции со скидками
* Бонусные акции

### Обновление лимита акций для пользователей

 - [DELETE /v2/project/{project_id}/admin/user/limit/promotion/id/{promotion_id}/all](https://xsolla.redocly.app/ru/api/liveops/user-limits-admin/reset-user-promotion-limit.md): Обновляет лимит акции, чтобы пользователь мог снова воспользоваться этой акцией. Если параметр user равен null, этот вызов обновляет это ограничение для всех пользователей.

API лимитов пользователя позволяет ограничить количество раз, когда пользователи могут использовать рекламную акцию. Для настройки самого лимита перейдите в раздел Admin нужного типа акции:
* Акции со скидками
* Бонусные акции

### Получение лимита акций для пользователя

 - [GET /v2/project/{project_id}/admin/user/limit/promotion/id/{promotion_id}](https://xsolla.redocly.app/ru/api/liveops/user-limits-admin/get-user-promotion-limit.md): Возвращает оставшееся количество раз, когда указанный пользователь может воспользоваться акцией в пределах установленного лимита.

API лимитов пользователя позволяет ограничить количество раз, когда пользователи могут использовать рекламную акцию. Для настройки самого лимита перейдите в раздел Admin нужного типа акции:
* Акции со скидками
* Бонусные акции

### Увеличение лимита акций для пользователя

 - [POST /v2/project/{project_id}/admin/user/limit/promotion/id/{promotion_id}](https://xsolla.redocly.app/ru/api/liveops/user-limits-admin/add-user-promotion-limit.md): Увеличивает оставшееся количество раз, когда указанный пользователь может воспользоваться акцией в пределах установленного лимита.

API лимитов пользователя позволяет ограничить количество раз, когда пользователи могут использовать рекламную акцию. Для настройки самого лимита перейдите в раздел Admin нужного типа акции:
* Акции со скидками
* Бонусные акции

### Настройка лимита акций для пользователя

 - [PUT /v2/project/{project_id}/admin/user/limit/promotion/id/{promotion_id}](https://xsolla.redocly.app/ru/api/liveops/user-limits-admin/set-user-promotion-limit.md): Задает количество раз, когда указанный пользователь может воспользоваться рекламной акцией в пределах лимита, примененного после его увеличения или уменьшения.

API лимитов пользователя позволяет ограничить количество раз, когда пользователи могут использовать рекламную акцию. Для настройки самого лимита перейдите в раздел Admin нужного типа акции:
* Акции со скидками
* Бонусные акции

### Уменьшение лимита акций для пользователя

 - [DELETE /v2/project/{project_id}/admin/user/limit/promotion/id/{promotion_id}](https://xsolla.redocly.app/ru/api/liveops/user-limits-admin/remove-user-promotion-limit.md): Уменьшает оставшееся количество раз, когда указанный пользователь может воспользоваться акцией в пределах установленного лимита.

API лимитов пользователя позволяет ограничить количество раз, когда пользователи могут использовать рекламную акцию. Для настройки самого лимита перейдите в раздел Admin нужного типа акции:
* Акции со скидками
* Бонусные акции

## Admin

### Получение списка призовых баллов

 - [GET /v2/project/{project_id}/admin/items/value_points](https://xsolla.redocly.app/ru/api/liveops/reward-chain-value-points-admin/admin-get-value-points-list.md): Получает список призовых баллов для проекта администрирования.

### Создание призовых баллов

 - [POST /v2/project/{project_id}/admin/items/value_points](https://xsolla.redocly.app/ru/api/liveops/reward-chain-value-points-admin/admin-create-value-points.md): Создает призовые баллы, которые выдаются за покупку товаров в каталоге.

### Получение призовых баллов

 - [GET /v2/project/{project_id}/admin/items/value_points/sku/{item_sku}](https://xsolla.redocly.app/ru/api/liveops/reward-chain-value-points-admin/admin-get-value-point.md): Получает призовые баллы по артикулу для проекта администрирования.

### Обновление призовых баллов

 - [PUT /v2/project/{project_id}/admin/items/value_points/sku/{item_sku}](https://xsolla.redocly.app/ru/api/liveops/reward-chain-value-points-admin/admin-update-value-point.md): Обновляет призовые баллы, идентифицированные по артикулу.

### Удаление призовых баллов

 - [DELETE /v2/project/{project_id}/admin/items/value_points/sku/{item_sku}](https://xsolla.redocly.app/ru/api/liveops/reward-chain-value-points-admin/admin-delete-value-point.md): Удаляет призовые баллы, идентифицированные по артикулу товара.

### Получение списка товаров с призовыми баллами

 - [GET /v2/project/{project_id}/admin/items/{value_point_sku}/value_points/rewards](https://xsolla.redocly.app/ru/api/liveops/reward-chain-value-points-admin/admin-get-items-value-point-reward.md): Получает список всех товаров с призовыми баллами для проекта администрирования.

### Настройка призовых баллов для товаров

 - [PUT /v2/project/{project_id}/admin/items/{value_point_sku}/value_points/rewards](https://xsolla.redocly.app/ru/api/liveops/reward-chain-value-points-admin/admin-set-items-value-point-reward.md): Присваивает призовые баллы одному или нескольким товарам по артикулу. Пользователи получают призовые баллы после покупки этих товаров.

Обратите внимание, что этот запрос PUT перезаписывает все ранее установленные призовые баллы для товаров в проекте.

Чтобы избежать непреднамеренного удаления призовых баллов, включайте все товары и соответствующие им значения в каждый запрос PUT.

Если вы хотите обновить призовые баллы только для определенного товара, сохранив значения призовых баллов для других товаров, вам следует получить текущий набор призовых баллов с помощью запроса GET, изменить значения призовых баллов для желаемого товара, а затем отправить измененный набор призовых баллов обратно с обновленными значениями призовых баллов для конкретного товара.

### Частичное обновление призовых баллов для товаров

 - [PATCH /v2/project/{project_id}/admin/items/{value_point_sku}/value_points/rewards](https://xsolla.redocly.app/ru/api/liveops/reward-chain-value-points-admin/admin-patch-items-value-point-reward.md): Частично обновляет количество призовых баллов для одного или нескольких товаров по артикулам этих товаров. Пользователи получают призовые баллы после покупки этих товаров.

Принципы обновления призовых баллов:
  * Если у товара еще нет призовых баллов, отправка ненулевого значения в поле amount создаст их.
  * Если у товара уже есть призовые баллы, отправка ненулевого значения в поле amount обновит их.
  * Если в поле amount передано значение 0, существующие призовые баллы для этого товара будут удалены.

В отличие от метода PUT (Настройка призовых баллов для товаров), этот метод PATCH не перезаписывает все ранее установленные призовые баллы для товаров в проекте, а обновляет только указанные.

В одном запросе можно обновить до 100 товаров. В одном запросе нельзя передавать одинаковые артикулы товаров.

### Удаление призовых баллов с товаров

 - [DELETE /v2/project/{project_id}/admin/items/{value_point_sku}/value_points/rewards](https://xsolla.redocly.app/ru/api/liveops/reward-chain-value-points-admin/admin-delete-items-value-point-reward.md): Удаляет призовые баллы со ВСЕХ товаров.

### Получение списка цепочек наград

 - [GET /v3/project/{project_id}/admin/reward_chain](https://xsolla.redocly.app/ru/api/liveops/reward-chain-value-points-admin/admin-get-reward-chains.md): Получает список цепочек наград.

Внимание! Все проекты имеют ограничение на количество товаров, которые вы можете получить в ответе. Значение по умолчанию и максимальное значение — 10 товаров в ответе.Чтобы получить больше данных постранично, используйте поля limit и offset.

### Создание цепочек наград

 - [POST /v3/project/{project_id}/admin/reward_chain](https://xsolla.redocly.app/ru/api/liveops/reward-chain-value-points-admin/admin-create-reward-chain.md): Создает цепочку наград.

### Получение цепочек наград

 - [GET /v3/project/{project_id}/admin/reward_chain/id/{reward_chain_id}](https://xsolla.redocly.app/ru/api/liveops/reward-chain-value-points-admin/admin-get-reward-chain.md): Получает определенную цепочку наград.

### Обновление цепочек наград

 - [PUT /v3/project/{project_id}/admin/reward_chain/id/{reward_chain_id}](https://xsolla.redocly.app/ru/api/liveops/reward-chain-value-points-admin/admin-update-reward-chain.md): Обновляет определенную цепочку наград.

### Удаление цепочек наград

 - [DELETE /v3/project/{project_id}/admin/reward_chain/id/{reward_chain_id}](https://xsolla.redocly.app/ru/api/liveops/reward-chain-value-points-admin/admin-delete-reward-chain.md): Удаляет определенную цепочку наград.

### Переключение цепочки наград

 - [PUT /v3/project/{project_id}/admin/reward_chain/id/{reward_chain_id}/toggle](https://xsolla.redocly.app/ru/api/liveops/reward-chain-value-points-admin/admin-toggle-reward-chain.md): Включение/отключение цепочки наград.

### Сброс цепочки наград

 - [POST /v3/project/{project_id}/admin/reward_chain/id/{reward_chain_id}/reset](https://xsolla.redocly.app/ru/api/liveops/reward-chain-value-points-admin/admin-reset-reward-chain.md): Сбрасывает баланс призовых баллов и прогресс всех пользователей в цепочке наград. Баланс привязан к типу баллов, а не к цепочке. Если эти баллы используются в других цепочках, баланс будет сброшен во всех цепочках с этими баллами. После выполнения сброса вы можете обновить срок действия цепочки наград, и пользователи смогут снова продвигаться по ней. Баланс клана рассчитывается как сумма балансов его участников, поэтому после выполнения сброса баланс клана также будет обнулен.Этот запрос необратим и применяется ко всем пользователям проекта.

Внимание

Не следует сбрасывать цепочку наград в период ее действия. В этом случае пользователи могут потерять заработанные очки до получения награды.

## Client

### Получение цепочки наград текущего пользователя

 - [GET /v2/project/{project_id}/user/reward_chain](https://xsolla.redocly.app/ru/api/liveops/reward-chain-client/get-reward-chains-list.md): Метод клиента. Получает цепочки наград текущего пользователя.


Внимание
Все проекты имеют ограничение на количество товаров, которые вы можете получить в ответе. Значение по умолчанию и максимальное значение — 50 товаров на ответ. Чтобы получить больше данных постранично, используйте поля limit и offset.





  Примечание
    Этот метод использует JWT пользователя для авторизации.
    Передайте токен в заголовке Authorization в формате: Bearer &lt;user_JWT&gt;. Подробная информация о JWT пользователя приведена в блоке Безопасность для этого метода.

### Получение призовых баллов текущего пользователя

 - [GET /v2/project/{project_id}/user/reward_chain/{reward_chain_id}/balance](https://xsolla.redocly.app/ru/api/liveops/reward-chain-client/get-user-reward-chain-balance.md): Метод клиента. Возвращает призовые баллы текущего пользователя. 


  Примечание
    Этот метод использует JWT пользователя для авторизации.
    Передайте токен в заголовке Authorization в формате: Bearer &lt;user_JWT&gt;. Подробная информация о JWT пользователя приведена в блоке Безопасность для этого метода.

### Получение награды на уровне

 - [POST /v2/project/{project_id}/user/reward_chain/{reward_chain_id}/step/{step_id}/claim](https://xsolla.redocly.app/ru/api/liveops/reward-chain-client/claim-user-reward-chain-step-reward.md): Метод клиента. Запрашивает награду на уровне для текущего пользователя в цепочке наград. 


  Примечание
    Этот метод использует JWT пользователя для авторизации.
    Передайте токен в заголовке Authorization в формате: Bearer &lt;user_JWT&gt;. Подробная информация о JWT пользователя приведена в блоке Безопасность для этого метода.

## Клиент кланов

### Получение 10 участников, внесших наибольший вклад в продвижение по клановой цепочке наград

 - [GET /v2/project/{project_id}/user/clan/contributors/{reward_chain_id}/top](https://xsolla.redocly.app/ru/api/liveops/clan-reward-chain-client/get-user-clan-top-contributors.md): Возвращает 10 участников, внесших наибольший вклад в определенную цепочку наград для текущего клана пользователя. Если пользователь не состоит в клане, в ответе вернется пустой массив. 


  Примечание
    Этот метод использует JWT пользователя для авторизации.
    Передайте токен в заголовке Authorization в формате: Bearer &lt;user_JWT&gt;. Подробная информация о JWT пользователя приведена в блоке Безопасность для этого метода.

### Обновление клана текущего пользователя

 - [PUT /v2/project/{project_id}/user/clan/update](https://xsolla.redocly.app/ru/api/liveops/clan-reward-chain-client/user-clan-update.md): Обновляет текущий клан пользователя через атрибуты пользователя. Выдает пользователю награды, которые он не забрал из цепочки наград старого клана, и возвращает их в ответе. Если пользователь состоял в клане, а теперь нет — принадлежность к клану будет удалена. Если пользователь сменил клан, принадлежность к клану изменится и будет указан новый клан. 


  Примечание
    Этот метод использует JWT пользователя для авторизации.
    Передайте токен в заголовке Authorization в формате: Bearer &lt;user_JWT&gt;. Подробная информация о JWT пользователя приведена в блоке Безопасность для этого метода.

## Admin

### Получение списка ежедневных наград

 - [GET /v2/project/{project_id}/admin/daily_chain](https://xsolla.redocly.app/ru/api/liveops/daily-chain-admin/admin-get-daily-chains.md): Возвращает список ежедневных наград для администрирования.

ПримечаниеМетод возвращает список элементов с учетом пагинации. Максимальное количество элементов в ответе — 50 (установлено по умолчанию). Чтобы получить доступ к следующим элементам списка, используйте параметры limit и offset. Например, при вызове метода с параметрами limit = 25 и offset = 100 вернется 25 элементов, начиная со 101-го в общем списке.

### Создание ежедневной награды

 - [POST /v2/project/{project_id}/admin/daily_chain](https://xsolla.redocly.app/ru/api/liveops/daily-chain-admin/admin-create-daily-chain.md): Создает ежедневную награду.

### Получение ежедневной награды

 - [GET /v2/project/{project_id}/admin/daily_chain/id/{daily_chain_id}](https://xsolla.redocly.app/ru/api/liveops/daily-chain-admin/admin-get-daily-chain.md): Возвращает определенную ежедневную награду для администрирования.

### Обновление ежедневной награды

 - [PUT /v2/project/{project_id}/admin/daily_chain/id/{daily_chain_id}](https://xsolla.redocly.app/ru/api/liveops/daily-chain-admin/admin-update-daily-chain.md): Обновляет определенную ежедневную награду.

### Удаление ежедневной награды

 - [DELETE /v2/project/{project_id}/admin/daily_chain/id/{daily_chain_id}](https://xsolla.redocly.app/ru/api/liveops/daily-chain-admin/admin-delete-daily-chain.md): Удаляет определенную ежедневную награду.

### Переключение ежедневной награды

 - [PUT /v2/project/{project_id}/admin/daily_chain/id/{daily_chain_id}/toggle](https://xsolla.redocly.app/ru/api/liveops/daily-chain-admin/admin-toggle-daily-chain.md): Включает или отключает ежедневную награду.

### Сброс ежедневной награды

 - [POST /v2/project/{project_id}/admin/daily_chain/id/{daily_chain_id}/reset](https://xsolla.redocly.app/ru/api/liveops/daily-chain-admin/admin-reset-daily-chain.md): Сбрасывает прогресс для всех пользователей в ежедневной награде. Применяется только к ежедневным наградам с типом rolling.

## Client

### Получение ежедневных наград для текущего пользователя

 - [GET /v2/project/{project_id}/user/daily_chain](https://xsolla.redocly.app/ru/api/liveops/daily-chain-client/get-daily-chains-list.md): Метод клиента. Получает ежедневные награды текущего пользователя.

ПримечаниеМетод возвращает список элементов с учетом пагинации. Максимальное количество элементов в ответе — 50 (установлено по умолчанию). Чтобы получить доступ к следующим элементам списка, используйте параметры limit и offset. Например, при вызове метода с параметрами limit = 25 и offset = 100 вернется 25 элементов, начиная со 101-го в общем списке.




  Примечание
    Этот метод использует JWT пользователя для авторизации.
    Передайте токен в заголовке Authorization в формате: Bearer &lt;user_JWT&gt;. Подробная информация о JWT пользователя приведена в блоке Безопасность для этого метода.

### Получение ежедневной награды по ее ID для текущего пользователя

 - [GET /v2/project/{project_id}/user/daily_chain/{daily_chain_id}](https://xsolla.redocly.app/ru/api/liveops/daily-chain-client/get-user-daily-chain-by-id.md): Метод клиента. Возвращает ежедневную награду по ее ID для текущего пользователя. 


  Примечание
    Этот метод использует JWT пользователя для авторизации.
    Передайте токен в заголовке Authorization в формате: Bearer &lt;user_JWT&gt;. Подробная информация о JWT пользователя приведена в блоке Безопасность для этого метода.

### Получение ежедневной награды за уровень

 - [POST /v2/project/{project_id}/user/daily_chain/{daily_chain_id}/step/number/{step_number}/claim](https://xsolla.redocly.app/ru/api/liveops/daily-chain-client/claim-user-daily-chain-step-reward.md): Метод клиента. Возвращает награду на текущем уровне в цепочке ежедневных наград для текущего пользователя. Все уровни могут быть пройдены только в заданном порядке. Награду за пропущенный уровень нельзя получить за виртуальную или реальную валюту, или просмотр рекламного ролика.


  Примечание
    Этот метод использует JWT пользователя для авторизации.
    Передайте токен в заголовке Authorization в формате: Bearer &lt;user_JWT&gt;. Подробная информация о JWT пользователя приведена в блоке Безопасность для этого метода.

## Admin

### Получение списка цепочек предложений

 - [GET /v2/project/{project_id}/admin/offer_chain](https://xsolla.redocly.app/ru/api/liveops/offer-chain-admin/admin-get-offer-chains.md): Возвращает список цепочек предложений для администрирования.

Внимание Все проекты имеют ограничение на количество элементов, возвращаемых в одном ответе. Максимальное значение — 10 элементов в ответе. Чтобы получить больше данных, используйте query-параметры limit и offset для пагинации.

### Создание цепочки предложений

 - [POST /v2/project/{project_id}/admin/offer_chain](https://xsolla.redocly.app/ru/api/liveops/offer-chain-admin/admin-create-offer-chain.md): Создает цепочку предложений.

### Получение цепочки предложений

 - [GET /v2/project/{project_id}/admin/offer_chain/id/{offer_chain_id}](https://xsolla.redocly.app/ru/api/liveops/offer-chain-admin/admin-get-offer-chain.md): Возвращает конкретную цепочку предложений для администрирования.

### Обновление цепочки предложений

 - [PUT /v2/project/{project_id}/admin/offer_chain/id/{offer_chain_id}](https://xsolla.redocly.app/ru/api/liveops/offer-chain-admin/admin-update-offer-chain.md): Обновляет конкретную цепочку предложений.

### Удаление цепочки предложений

 - [DELETE /v2/project/{project_id}/admin/offer_chain/id/{offer_chain_id}](https://xsolla.redocly.app/ru/api/liveops/offer-chain-admin/admin-delete-offer-chain.md): Удаляет конкретную цепочку предложений.

После удаления цепочки:Все уже полученные пользователями награды сохраняются.Непройденные уровни становятся недоступны, и получить награды за них больше нельзя.

Удаление цепочки необратимо и не сохраняет прогресс пользователя, в отличие от временного отключения цепочки с помощью метода Переключение цепочки предложений.

### Переключение цепочки предложений

 - [PUT /v2/project/{project_id}/admin/offer_chain/id/{offer_chain_id}/toggle](https://xsolla.redocly.app/ru/api/liveops/offer-chain-admin/admin-toggle-offer-chain.md): Включает или отключает цепочку предложений.

При отключении цепочки пользователи теряют доступ к ней, но их прогресс сохраняется.

После повторного включения цепочки пользователь может продолжить прохождение с того уровня, на котором остановился.

## Client

### Получение цепочек предложений для текущего пользователя

 - [GET /v2/project/{project_id}/user/offer_chain](https://xsolla.redocly.app/ru/api/liveops/offer-chain-client/get-offer-chains-list.md): Возвращает цепочки предложений для текущего пользователя.

Внимание Все проекты имеют ограничение на количество элементов, возвращаемых в одном ответе. Максимальное значение — 30 элементов на запрос. Чтобы получить больше данных, используйте параметры limit и offset для пагинации.




  Примечание
    Этот метод использует JWT пользователя для авторизации.
    Передайте токен в заголовке Authorization в формате: Bearer &lt;user_JWT&gt;. Подробная информация о JWT пользователя приведена в блоке Безопасность для этого метода.

### Получение цепочки предложений по ее ID для текущего пользователя

 - [GET /v2/project/{project_id}/user/offer_chain/{offer_chain_id}](https://xsolla.redocly.app/ru/api/liveops/offer-chain-client/get-user-offer-chain-by-id.md): Возвращает цепочку предложений по ее ID для текущего пользователя. 


  Примечание
    Этот метод использует JWT пользователя для авторизации.
    Передайте токен в заголовке Authorization в формате: Bearer &lt;user_JWT&gt;. Подробная информация о JWT пользователя приведена в блоке Безопасность для этого метода.

### Получение награды за уровень цепочки предложений

 - [POST /v2/project/{project_id}/user/offer_chain/{offer_chain_id}/step/number/{step_number}/claim](https://xsolla.redocly.app/ru/api/liveops/offer-chain-client/claim-user-offer-chain-step-reward.md): Завершает прохождение текущим пользователем уровня цепочки предложений и выдает связанную с ним награду.


Внимание
Используйте этот метод только для бесплатных уровней.
Для уровней, доступных за реальную валюту, используйте метод Создание заказа на награду за уровень цепочки предложений.





  Примечание
    Этот метод использует JWT пользователя для авторизации.
    Передайте токен в заголовке Authorization в формате: Bearer &lt;user_JWT&gt;. Подробная информация о JWT пользователя приведена в блоке Безопасность для этого метода.

### Создание заказа на награду за уровень цепочки предложений

 - [POST /v2/project/{project_id}/user/offer_chain/{offer_chain_id}/step/number/{step_number}/order](https://xsolla.redocly.app/ru/api/liveops/offer-chain-client/order-user-offer-chain-step-reward.md): Создает заказ на товар, связанный с указанным уровнем цепочки предложений. Полученный заказ получает статус new.

Чтобы открыть платежный интерфейс в новом окне, воспользуйтесь следующей ссылкой: https://secure.xsolla.com/paystation4/?token={token}, где {token} — полученный токен.

Для целей тестирования используйте этот URL-адрес: https://sandbox-secure.xsolla.com/paystation4/?token={token}.


Внимание 
Используйте этот метод только на стороне клиента. Метод определяет страну пользователя по IP-адресу, чтобы применить соответствующую валюту и доступные способы оплаты. Вызов с сервера может привести к некорректному определению валюты и повлиять на способы оплаты в Pay Station.





Внимание
Используйте только для получения наград на платных уровнях цепочки предложений.
Для платных используйте метод Получение награды за уровень цепочки предложений.





  Примечание
    Этот метод использует JWT пользователя для авторизации.
    Передайте токен в заголовке Authorization в формате: Bearer &lt;user_JWT&gt;. Подробная информация о JWT пользователя приведена в блоке Безопасность для этого метода.

## payment-client-side

### Создание заказа на награду за уровень цепочки предложений

 - [POST /v2/project/{project_id}/user/offer_chain/{offer_chain_id}/step/number/{step_number}/order](https://xsolla.redocly.app/ru/api/liveops/offer-chain-client/order-user-offer-chain-step-reward.md): Создает заказ на товар, связанный с указанным уровнем цепочки предложений. Полученный заказ получает статус new.

Чтобы открыть платежный интерфейс в новом окне, воспользуйтесь следующей ссылкой: https://secure.xsolla.com/paystation4/?token={token}, где {token} — полученный токен.

Для целей тестирования используйте этот URL-адрес: https://sandbox-secure.xsolla.com/paystation4/?token={token}.


Внимание 
Используйте этот метод только на стороне клиента. Метод определяет страну пользователя по IP-адресу, чтобы применить соответствующую валюту и доступные способы оплаты. Вызов с сервера может привести к некорректному определению валюты и повлиять на способы оплаты в Pay Station.





Внимание
Используйте только для получения наград на платных уровнях цепочки предложений.
Для платных используйте метод Получение награды за уровень цепочки предложений.





  Примечание
    Этот метод использует JWT пользователя для авторизации.
    Передайте токен в заголовке Authorization в формате: Bearer &lt;user_JWT&gt;. Подробная информация о JWT пользователя приведена в блоке Безопасность для этого метода.

## Admin

### Получение информации об апселле в проекте

 - [GET /v2/project/{project_id}/admin/items/upsell](https://xsolla.redocly.app/ru/api/liveops/upsell-admin/get-upsell-configurations-for-project-admin.md): Возвращает информацию об апселле в проекте: включен или выключен апселл, какой тип апселла используется, а также список товаров, используемых в апселле.

### Создание апселла

 - [POST /v2/project/{project_id}/admin/items/upsell](https://xsolla.redocly.app/ru/api/liveops/upsell-admin/post-upsell.md): Создает апселл в проекте. 


  Уведомление
    Этот метод использует JWT пользователя для авторизации.
    Передайте токен в заголовке Authorization в формате Bearer &lt;user_JWT&gt;. Подробная информация о JWT пользователя приведена в блоке Безопасность для этого метода.

### Обновление апселла

 - [PUT /v2/project/{project_id}/admin/items/upsell](https://xsolla.redocly.app/ru/api/liveops/upsell-admin/put-upsell.md): Обновляет апселл в проекте. 


  Уведомление
    Этот метод использует JWT пользователя для авторизации.
    Передайте токен в заголовке Authorization в формате Bearer &lt;user_JWT&gt;. Подробная информация о JWT пользователя приведена в блоке Безопасность для этого метода.

### Активация/деактивация апселла в проекте

 - [PUT /v2/project/{project_id}/admin/items/upsell/{toggle}](https://xsolla.redocly.app/ru/api/liveops/upsell-admin/put-upsell-toggle-active-inactive.md): Меняет статус апселла в проекте: активирует или деактивирует.


  Уведомление
    Этот метод использует JWT пользователя для авторизации.
    Передайте токен в заголовке Authorization в формате Bearer &lt;user_JWT&gt;. Подробная информация о JWT пользователя приведена в блоке Безопасность для этого метода.

## Client

### Получение списка товаров для апселла в проекте

 - [GET /v2/project/{project_id}/items/upsell](https://xsolla.redocly.app/ru/api/liveops/upsell-client/get-upsell-for-project-client.md): Получает список товаров для апселла в проекте, если они уже настроены. 


  Примечание
    Этот метод использует JWT пользователя для авторизации.
    Передайте токен в заголовке Authorization в формате: Bearer &lt;user_JWT&gt;. Подробная информация о JWT пользователя приведена в блоке Безопасность для этого метода.

## Admin

### Получение информации о программе лояльности

 - [GET /projects/{project_id}/admin/program](https://xsolla.redocly.app/ru/api/liveops/loyalty-program-admin/loyalty-get-programs.md): Возвращает информацию о программе лояльности проекта.

### Получение списка баллов лояльности в программе

 - [GET /projects/{project_id}/admin/programs/{loyalty_program_id}/loyalty_points](https://xsolla.redocly.app/ru/api/liveops/loyalty-program-admin/loyalty-get-program-loyalty-points.md): Возвращает список баллов лояльности в программе.

### Получение баланса баллов лояльности пользователя

 - [GET /projects/{project_id}/users/{user_id}/points/{point_id}/balance](https://xsolla.redocly.app/ru/api/liveops/loyalty-program-admin/loyalty-get-user-point-balance.md): Возвращает текущий баланс указанных баллов лояльности.

### Списание баллов лояльности у пользователя

 - [POST /projects/{project_id}/users/{user_id}/points/{point_id}/balance/debit](https://xsolla.redocly.app/ru/api/liveops/loyalty-program-admin/loyalty-debit-user-point-balance.md): Списывает указанное количество баллов лояльности с баланса пользователя.

### Начисление баллов лояльности пользователю

 - [POST /projects/{project_id}/users/{user_id}/points/{point_id}/balance/credit](https://xsolla.redocly.app/ru/api/liveops/loyalty-program-admin/loyalty-credit-user-point-balance.md): Начисляет указанное количество баллов лояльности на баланс пользователя.

## Client

### Получение баланса баллов лояльности пользователя

 - [GET /v1/projects/{project_id}/loyalty_point_balance](https://xsolla.redocly.app/ru/api/liveops/loyalty-program-client/loyalty-get-user-balance.md): Возвращает текущий баланс баллов лояльности.

### Создание заказа с указанным товаром, приобретаемым за баллы лояльности

 - [POST /v2/project/{project_id}/payment/item/{item_sku}/loyalty_point/{loyalty_point_sku}](https://xsolla.redocly.app/ru/api/liveops/loyalty-program-client/loyalty-create-order-with-item-for-loyalty-points.md): Создает заказ с указанным товаром, который полностью оплачивается баллами лояльности пользователя. Чтобы купить несколько товаров сразу, передайте их количество в параметре quantity.

