Кейсы и награды
Страница описывает операции раздела API в едином формате карточек операций.
Кейсы
cases
Описание
Список кейсов.
Входные данные
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
gameServerId | Int! | да | Игровой сервер, для которого запрашивается история |
Результат
Тип ответа - [CaseConfig!]!.
Ошибки
MODULE_DISABLED- нужный модуль наград отключен.VALIDATION- параметры запроса указаны неверно.INSUFFICIENT_BALANCE- недостаточно средств для платного действия.
Пример обмена
{
"documentId": "cases",
"variables": {}
}
{
"data": {
"cases": {}
}
}
Связанные типы
Конфигурация кейса
caseConfig
Описание
Конфигурация кейса.
Входные данные
| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
id | Int | ✓ | ID сущности. |
Результат
Тип ответа - CaseConfig.
Ошибки
MODULE_DISABLED- нужный модуль наград отключен.VALIDATION- параметры запроса указаны неверно.INSUFFICIENT_BALANCE- недостаточно средств для платного действия.
Пример обмена
{
"documentId": "caseConfig",
"variables": {
"id": 1
}
}
{
"data": {
"caseConfig": {}
}
}
Связанные типы
Категории кейсов
caseCategories
Описание
Категории кейсов.
Входные данные
Операция не принимает переменные.
Результат
Тип ответа - [CaseCategory!]!.
Ошибки
MODULE_DISABLED- нужный модуль наград отключен.VALIDATION- параметры запроса указаны неверно.INSUFFICIENT_BALANCE- недостаточно средств для платного действия.
Пример обмена
{
"documentId": "caseCategories",
"variables": {}
}
{
"data": {
"caseCategories": {}
}
}
Связанные типы
Открыть кейс
openCase
Описание
Открыть кейс.
Входные данные
| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
caseId | ID! | да | ID кейса. |
requestId | ID! | да | UUIDv7 операции, создаваемый клиентом до первой отправки. |
Результат
Тип ответа - CaseOpenResult!.
Ошибки
MODULE_DISABLED- нужный модуль наград отключен.VALIDATION- параметры запроса указаны неверно.INSUFFICIENT_BALANCE- недостаточно средств для платного действия.
Пример обмена
{
"documentId": "openCase",
"variables": {
"caseId": "1",
"requestId": "019b33d8-c10d-7c49-9d8a-7442dfcb5376"
}
}
{
"data": {
"openCase": {
"item": {
"id": "019b33d8-c393-7a80-9160-c39bc26fe27a",
"itemId": 57,
"name": "Adena",
"count": 100000
},
"balance": 490,
"bonusBalance": 0
}
}
}
Повтор с тем же requestId возвращает результат той же операции и не списывает оплату, VIP-попытку или предмет повторно. Тот же UUID нельзя использовать для другого кейса.
Связанные типы
Колесо фортуны
luckyWheelConfig
Описание
Конфигурация колеса.
Входные данные
Операция не принимает переменные.
Результат
Тип ответа - LuckyWheelConfig.
Ошибки
MODULE_DISABLED- нужный модуль наград отключен.VALIDATION- параметры запроса указаны неверно.INSUFFICIENT_BALANCE- недостаточно средств для платного действия.
Пример обмена
{
"documentId": "luckyWheelConfig",
"variables": {}
}
{
"data": {
"luckyWheelConfig": {}
}
}
Связанные типы
История вращений
luckyWheelHistory
Описание
История вращений с курсорной пагинацией. Передавайте pageInfo.endCursor в after, чтобы получить следующую страницу.
Входные данные
first: Int- количество записей, от 1 до 25. По умолчанию 10.after: String- курсор следующей страницы. Для первой страницы не передается.
Результат
Тип ответа - LuckyWheelSpinConnection!.
Ошибки
MODULE_DISABLED- нужный модуль наград отключен.VALIDATION- параметры запроса указаны неверно.INSUFFICIENT_BALANCE- недостаточно средств для платного действия.
Пример обмена
{
"documentId": "luckyWheelHistory",
"variables": {
"first": 10,
"after": null
}
}
{
"data": {
"luckyWheelHistory": {
"nodes": [],
"totalCount": 0,
"pageInfo": {
"hasNextPage": false,
"hasPreviousPage": false,
"endCursor": null
}
}
}
}
Связанные типы
Крутить колесо
spinLuckyWheel
Описание
Колесо фортуны.
Входные данные
Операция не принимает переменные.
Результат
Тип ответа - LuckyWheelSpinResult!.
Ошибки
MODULE_DISABLED- нужный модуль наград отключен.VALIDATION- параметры запроса указаны неверно.INSUFFICIENT_BALANCE- недостаточно средств для платного действия.
Пример обмена
{
"documentId": "spinLuckyWheel",
"variables": {}
}
{
"data": {
"spinLuckyWheel": {}
}
}
Связанные типы
Ежедневные награды
dailyRewardsInfo
Описание
Статус наград.
Входные данные
Операция не принимает переменные.
Результат
Тип ответа - DailyRewardStatus!.
Ошибки
MODULE_DISABLED- нужный модуль наград отключен.VALIDATION- параметры запроса указаны неверно.INSUFFICIENT_BALANCE- недостаточно средств для платного действия.
Пример обмена
{
"documentId": "dailyRewardsInfo",
"variables": {}
}
{
"data": {
"dailyRewardsInfo": {}
}
}
Связанные типы
Забрать награду
claimDailyReward
Описание
Ежедневная награда.
Входные данные
| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
day | Int | ✓ | День награды. |
Результат
Тип ответа - DailyRewardClaimResult!.
Ошибки
MODULE_DISABLED- нужный модуль наград отключен.VALIDATION- параметры запроса указаны неверно.INSUFFICIENT_BALANCE- недостаточно средств для платного действия.
Пример обмена
{
"documentId": "claimDailyReward",
"variables": {
"day": 1
}
}
{
"data": {
"claimDailyReward": {}
}
}
Связанные типы
Бонус-коды
activateBonusCode
Описание
Активирует бонус-код в текущем проекте и на выбранном игровом сервере. Для баланса получатель не нужен. Для предметной награды первый вызов без получателя возвращает requiresRecipient: true, после чего клиент повторяет операцию с аккаунтом и персонажем.
Входные данные
| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
input.code | String! | ✓ | Код активации. |
input.gameAccountName | String | Игровой аккаунт получателя; обязателен для предметной награды и политики «на игровой аккаунт». | |
input.characterName | String | Персонаж получателя; обязателен для предметной награды. |
Результат
Тип ответа - BonusCodeRedemptionResult!.
Ошибки
VALIDATION- параметры запроса указаны неверно.CODE_NOT_FOUND,CODE_DISABLED,CODE_NOT_STARTED,CODE_EXPIRED- код недоступен.ALREADY_USED,ALREADY_USED_FOR_ACCOUNT,GROUP_ALREADY_ACTIVATED- нарушена политика повторного использования.NOT_AVAILABLE_FOR_ACCOUNT- код не предназначен для текущего игрока.VIP_REQUIRED,VIP_FROZEN,VIP_LEVEL_REQUIRED- не выполнено VIP-условие кода.VIP_UNAVAILABLE- статус временно нельзя проверить; код не резервируется.DELIVERY_FAILED- выдача награды не подтверждена.
Пример обмена
{
"documentId": "activateBonusCode",
"variables": {
"input": {
"code": "ADEN-VANGUARD-2026",
"gameAccountName": "GameLogin",
"characterName": "Hero"
}
}
}
{
"data": {
"activateBonusCode": {
"requiresRecipient": false,
"rewardType": "ITEMS",
"amount": null,
"bonusExpiresAt": null,
"balance": null,
"bonusBalance": null,
"itemsCount": 2,
"characterName": "Hero",
"baseAmount": null,
"vipBonusAmount": null,
"vipMultiplier": 1,
"vipApplied": true,
"baseItemsCount": 1,
"vipBonusItemsCount": 1
}
}
}
Связанные типы
Подарочные коды
giftCodeStore
Описание
Состояние магазина подарочных кодов, доступные пакеты и правила произвольного номинала для выбранного игрового сервера.
Входные данные
| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
gameServerId | Int! | ✓ | Игровой сервер проекта. |
Результат
Тип ответа - GiftCodeStore!. Если функция выключена, enabled имеет значение false, а список пакетов пуст.
Ошибки
VALIDATION- параметры запроса указаны неверно.
Пример обмена
{
"documentId": "giftCodeStore",
"variables": {
"gameServerId": 1
}
}
{
"data": {
"giftCodeStore": {
"enabled": true,
"customAmount": {
"enabled": true,
"minimum": "100",
"maximum": "5000",
"priceRate": "0.1"
},
"packages": [
{
"id": "1",
"name": "Стартовый подарок",
"description": "100 единиц подарочного баланса",
"price": "10",
"denomination": "100",
"popular": false
}
]
}
}
}
Связанные типы
История покупок
giftCodeHistory
Описание
Последние 20 завершенных покупок подарочных кодов текущего игрока на выбранном сервере. Отключение новых покупок не удаляет историю.
Входные данные
Передайте gameServerId: Int! выбранного сервера проекта.
Результат
Тип ответа - [GiftCodePurchase!]!. Номинал передается точной строкой.
Ошибки
- Ошибка авторизации или недоступный сервер не возвращают историю.
VALIDATION- параметры запроса указаны неверно.
Пример обмена
{
"documentId": "giftCodeHistory",
"variables": {
"gameServerId": 1
}
}
{
"data": {
"giftCodeHistory": [
{
"id": "42",
"code": "GIFT-7Q4N-P9XM",
"denomination": "500",
"status": "ACTIVE",
"createdAt": "2026-07-24T12:30:00+00:00"
}
]
}
}
Связанные типы
Купить подарочный код
buyGiftCode
Описание
Покупает пакет или код произвольного номинала. requestId делает повтор одного запроса безопасным: баланс не списывается и код не создаётся второй раз.
Входные данные
| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
input.requestId | ID! | ✓ | UUID запроса для идемпотентности. |
input.packageId | ID | условно | ID включённого пакета. |
input.customAmount | Decimal | условно | Точная строка произвольного номинала, до четырех знаков после точки, в разрешённом диапазоне. |
Укажите ровно одно из полей packageId и customAmount. Например, "customAmount": "100.0001"; JSON-числа отклоняются. Сохраните UUID и исходные параметры до завершения покупки. Повтор в том же контексте игрока и сервера использует сохраненные условия; смена пакета или номинала с тем же UUID отклоняется. При потере ответа не создавайте новый UUID.
Результат
Тип ответа - GiftCodeResult!.
Ошибки
NOT_CONFIGURED- новые покупки подарочных кодов выключены для сервера.VALIDATION- параметры запроса указаны неверно.INSUFFICIENT_BALANCE- недостаточно средств для платного действия.PAYMENT_DEBT- погасите задолженность баланса, затем начните новую покупку с новымrequestId.INVALID_PURCHASE- конфликт UUID и параметров покупки.PURCHASE_IN_PROGRESS- результат еще не определен;extensions.retryable: true, повторите исходный запрос.PURCHASE_FAILED- покупка завершилась без выдачи кода; исходное списание возвращено либо не выполнялось.
У ошибок категории gift_code поле extensions.retryable явно отделяет продолжающуюся покупку от окончательной ошибки. Ошибку связи не следует считать подтверждением отказа в списании.
Пример обмена
{
"documentId": "buyGiftCode",
"variables": {
"input": {
"requestId": "01984f36-4b55-7d31-98f4-f82a6ba7d5d1",
"packageId": "1"
}
}
}
{
"data": {
"buyGiftCode": {
"purchaseId": "43",
"code": "GIFT-4Z2K-M8QA",
"denomination": "100",
"balance": "890",
"bonusBalance": "50"
}
}
}