Перейти к основному содержимому

Кейсы и награды

Страница описывает операции раздела API в едином формате карточек операций.

Кейсы​

QuerydocumentId: casesauth: public

cases​

Описание​

Список кейсов.

Входные данные​

ПолеТипОбязательноОписание
gameServerIdInt!даИгровой сервер, для которого запрашивается история

Результат​

Тип ответа - [CaseConfig!]!.

Ошибки​

  • MODULE_DISABLED - нужный модуль наград отключен.
  • VALIDATION - параметры запроса указаны неверно.
  • INSUFFICIENT_BALANCE - недостаточно средств для платного действия.

Пример обмена​

Запрос
documentId: cases
{
"documentId": "cases",
"variables": {}
}
Ответ
200 OK
{
"data": {
"cases": {}
}
}

Связанные типы​

Конфигурация кейса​

QuerydocumentId: caseConfigauth: public

caseConfig​

Описание​

Конфигурация кейса.

Входные данные​

ПолеТипОбязательныйОписание
idInt✓ID сущности.

Результат​

Тип ответа - CaseConfig.

Ошибки​

  • MODULE_DISABLED - нужный модуль наград отключен.
  • VALIDATION - параметры запроса указаны неверно.
  • INSUFFICIENT_BALANCE - недостаточно средств для платного действия.

Пример обмена​

Запрос
documentId: caseConfig
{
"documentId": "caseConfig",
"variables": {
"id": 1
}
}
Ответ
200 OK
{
"data": {
"caseConfig": {}
}
}

Связанные типы​

Категории кейсов​

QuerydocumentId: caseCategoriesauth: public

caseCategories​

Описание​

Категории кейсов.

Входные данные​

Операция не принимает переменные.

Результат​

Тип ответа - [CaseCategory!]!.

Ошибки​

  • MODULE_DISABLED - нужный модуль наград отключен.
  • VALIDATION - параметры запроса указаны неверно.
  • INSUFFICIENT_BALANCE - недостаточно средств для платного действия.

Пример обмена​

Запрос
documentId: caseCategories
{
"documentId": "caseCategories",
"variables": {}
}
Ответ
200 OK
{
"data": {
"caseCategories": {}
}
}

Связанные типы​

Открыть кейс​

MutationdocumentId: openCaseauth: Bearer session

openCase​

Описание​

Открыть кейс.

Входные данные​

ПолеТипОбязательныйОписание
caseIdID!даID кейса.
requestIdID!даUUIDv7 операции, создаваемый клиентом до первой отправки.

Результат​

Тип ответа - CaseOpenResult!.

Ошибки​

  • MODULE_DISABLED - нужный модуль наград отключен.
  • VALIDATION - параметры запроса указаны неверно.
  • INSUFFICIENT_BALANCE - недостаточно средств для платного действия.

Пример обмена​

Запрос
documentId: openCase
{
"documentId": "openCase",
"variables": {
"caseId": "1",
"requestId": "019b33d8-c10d-7c49-9d8a-7442dfcb5376"
}
}
Ответ
200 OK
{
"data": {
"openCase": {
"item": {
"id": "019b33d8-c393-7a80-9160-c39bc26fe27a",
"itemId": 57,
"name": "Adena",
"count": 100000
},
"balance": 490,
"bonusBalance": 0
}
}
}

Повтор с тем же requestId возвращает результат той же операции и не списывает оплату, VIP-попытку или предмет повторно. Тот же UUID нельзя использовать для другого кейса.

Связанные типы​

Колесо фортуны​

QuerydocumentId: luckyWheelConfigauth: public

luckyWheelConfig​

Описание​

Конфигурация колеса.

Входные данные​

Операция не принимает переменные.

Результат​

Тип ответа - LuckyWheelConfig.

Ошибки​

  • MODULE_DISABLED - нужный модуль наград отключен.
  • VALIDATION - параметры запроса указаны неверно.
  • INSUFFICIENT_BALANCE - недостаточно средств для платного действия.

Пример обмена​

Запрос
documentId: luckyWheelConfig
{
"documentId": "luckyWheelConfig",
"variables": {}
}
Ответ
200 OK
{
"data": {
"luckyWheelConfig": {}
}
}

Связанные типы​

История вращений​

QuerydocumentId: luckyWheelHistoryauth: Bearer session

luckyWheelHistory​

Описание​

История вращений с курсорной пагинацией. Передавайте pageInfo.endCursor в after, чтобы получить следующую страницу.

Входные данные​

  • first: Int - количество записей, от 1 до 25. По умолчанию 10.
  • after: String - курсор следующей страницы. Для первой страницы не передается.

Результат​

Тип ответа - LuckyWheelSpinConnection!.

Ошибки​

  • MODULE_DISABLED - нужный модуль наград отключен.
  • VALIDATION - параметры запроса указаны неверно.
  • INSUFFICIENT_BALANCE - недостаточно средств для платного действия.

Пример обмена​

Запрос
documentId: luckyWheelHistory
{
"documentId": "luckyWheelHistory",
"variables": {
"first": 10,
"after": null
}
}
Ответ
200 OK
{
"data": {
"luckyWheelHistory": {
"nodes": [],
"totalCount": 0,
"pageInfo": {
"hasNextPage": false,
"hasPreviousPage": false,
"endCursor": null
}
}
}
}

Связанные типы​

Крутить колесо​

MutationdocumentId: spinLuckyWheelauth: Bearer session

spinLuckyWheel​

Описание​

Колесо фортуны.

Входные данные​

Операция не принимает переменные.

Результат​

Тип ответа - LuckyWheelSpinResult!.

Ошибки​

  • MODULE_DISABLED - нужный модуль наград отключен.
  • VALIDATION - параметры запроса указаны неверно.
  • INSUFFICIENT_BALANCE - недостаточно средств для платного действия.

Пример обмена​

Запрос
documentId: spinLuckyWheel
{
"documentId": "spinLuckyWheel",
"variables": {}
}
Ответ
200 OK
{
"data": {
"spinLuckyWheel": {}
}
}

Связанные типы​

Ежедневные награды​

QuerydocumentId: dailyRewardsInfoauth: public

dailyRewardsInfo​

Описание​

Статус наград.

Входные данные​

Операция не принимает переменные.

Результат​

Тип ответа - DailyRewardStatus!.

Ошибки​

  • MODULE_DISABLED - нужный модуль наград отключен.
  • VALIDATION - параметры запроса указаны неверно.
  • INSUFFICIENT_BALANCE - недостаточно средств для платного действия.

Пример обмена​

Запрос
documentId: dailyRewardsInfo
{
"documentId": "dailyRewardsInfo",
"variables": {}
}
Ответ
200 OK
{
"data": {
"dailyRewardsInfo": {}
}
}

Связанные типы​

Забрать награду​

MutationdocumentId: claimDailyRewardauth: Bearer session

claimDailyReward​

Описание​

Ежедневная награда.

Входные данные​

ПолеТипОбязательныйОписание
dayInt✓День награды.

Результат​

Тип ответа - DailyRewardClaimResult!.

Ошибки​

  • MODULE_DISABLED - нужный модуль наград отключен.
  • VALIDATION - параметры запроса указаны неверно.
  • INSUFFICIENT_BALANCE - недостаточно средств для платного действия.

Пример обмена​

Запрос
documentId: claimDailyReward
{
"documentId": "claimDailyReward",
"variables": {
"day": 1
}
}
Ответ
200 OK
{
"data": {
"claimDailyReward": {}
}
}

Связанные типы​

Бонус-коды​

MutationdocumentId: activateBonusCodeauth: Bearer session

activateBonusCode​

Описание​

Активирует бонус-код в текущем проекте и на выбранном игровом сервере. Для баланса получатель не нужен. Для предметной награды первый вызов без получателя возвращает requiresRecipient: true, после чего клиент повторяет операцию с аккаунтом и персонажем.

Входные данные​

ПолеТипОбязательныйОписание
input.codeString!✓Код активации.
input.gameAccountNameStringИгровой аккаунт получателя; обязателен для предметной награды и политики «на игровой аккаунт».
input.characterNameStringПерсонаж получателя; обязателен для предметной награды.

Результат​

Тип ответа - 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
{
"documentId": "activateBonusCode",
"variables": {
"input": {
"code": "ADEN-VANGUARD-2026",
"gameAccountName": "GameLogin",
"characterName": "Hero"
}
}
}
Ответ
200 OK
{
"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
}
}
}

Связанные типы​

Подарочные коды​

QuerydocumentId: giftCodeStoreauth: public

giftCodeStore​

Описание​

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

Входные данные​

ПолеТипОбязательныйОписание
gameServerIdInt!✓Игровой сервер проекта.

Результат​

Тип ответа - GiftCodeStore!. Если функция выключена, enabled имеет значение false, а список пакетов пуст.

Ошибки​

  • VALIDATION - параметры запроса указаны неверно.

Пример обмена​

Запрос
documentId: giftCodeStore
{
"documentId": "giftCodeStore",
"variables": {
"gameServerId": 1
}
}
Ответ
200 OK
{
"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
}
]
}
}
}

Связанные типы​

История покупок​

QuerydocumentId: giftCodeHistoryauth: Bearer session

giftCodeHistory​

Описание​

Последние 20 завершенных покупок подарочных кодов текущего игрока на выбранном сервере. Отключение новых покупок не удаляет историю.

Входные данные​

Передайте gameServerId: Int! выбранного сервера проекта.

Результат​

Тип ответа - [GiftCodePurchase!]!. Номинал передается точной строкой.

Ошибки​

  • Ошибка авторизации или недоступный сервер не возвращают историю.
  • VALIDATION - параметры запроса указаны неверно.

Пример обмена​

Запрос
documentId: giftCodeHistory
{
"documentId": "giftCodeHistory",
"variables": {
"gameServerId": 1
}
}
Ответ
200 OK
{
"data": {
"giftCodeHistory": [
{
"id": "42",
"code": "GIFT-7Q4N-P9XM",
"denomination": "500",
"status": "ACTIVE",
"createdAt": "2026-07-24T12:30:00+00:00"
}
]
}
}

Связанные типы​

Купить подарочный код​

MutationdocumentId: buyGiftCodeauth: Bearer session

buyGiftCode​

Описание​

Покупает пакет или код произвольного номинала. requestId делает повтор одного запроса безопасным: баланс не списывается и код не создаётся второй раз.

Входные данные​

ПолеТипОбязательныйОписание
input.requestIdID!✓UUID запроса для идемпотентности.
input.packageIdIDусловноID включённого пакета.
input.customAmountDecimalусловноТочная строка произвольного номинала, до четырех знаков после точки, в разрешённом диапазоне.

Укажите ровно одно из полей 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
{
"documentId": "buyGiftCode",
"variables": {
"input": {
"requestId": "01984f36-4b55-7d31-98f4-f82a6ba7d5d1",
"packageId": "1"
}
}
}
Ответ
200 OK
{
"data": {
"buyGiftCode": {
"purchaseId": "43",
"code": "GIFT-4Z2K-M8QA",
"denomination": "100",
"balance": "890",
"bonusBalance": "50"
}
}
}

Связанные типы​