Storefront
Storefront обслуживает магазин и игровые услуги единым контрактом. Все ID непрозрачны. Денежные значения не передаются через Float: units содержит точное целое число минимальных единиц, а decimal - готовое десятичное представление.
StorefrontMoney
| Поле | Тип | Описание |
|---|
units | String! | Точная сумма в минимальных единицах |
decimal | String! | Точная сумма с десятичной точкой |
currencyCode | String! | Код валюты |
currencyScale | Int! | Количество десятичных знаков |
StorefrontPrice
| Поле | Тип | Описание |
|---|
base | StorefrontMoney! | Цена до корректировок |
effective | StorefrontMoney! | Итоговая цена |
adjustments | [StorefrontPriceAdjustment!]! | Применённые скидки и кампании |
fromPrice | Boolean! | Цена начинается от указанного значения |
hasSavings | Boolean! | Итоговая цена ниже базовой |
StorefrontPriceAdjustment содержит code, источник SALE, REFERRAL, VIP или CAMPAIGN, целый percentage и точный amount. В расчёте заказа StorefrontCheckoutAdjustment дополнительно содержит kind: DISCOUNT или SURCHARGE.
StorefrontPageInfo
| Поле | Тип | Описание |
|---|
endCursor | ID | Курсор следующего запроса |
hasNextPage | Boolean! | Есть следующая страница |
ShopOffer
| Поле | Тип | Описание |
|---|
id | ID! | Непрозрачный ID предложения |
sku | String! | Стабильный код предложения |
name | String! | Локализованное название |
description | String! | Локализованное описание |
imageReference | String | Разрешённая ссылка на изображение |
categoryId | ID | Непрозрачный ID категории |
pricingMode | ShopPricingMode! | BUNDLE или SELECTION |
deliveryModes | [ShopDeliveryMode!]! | Разрешённые способы доставки |
selectionLimitCount | Int | Максимум выбранных позиций |
items | [ShopOfferItem!]! | Состав или варианты выбора |
price | StorefrontPrice! | Цена предложения |
selectionPrices | [ShopSelectionPrice!]! | Цена каждого варианта выбора |
availability | ShopOfferAvailability! | Доступность и лимиты |
sortOrder | Int! | Порядок каталога |
ShopOfferConnection возвращает items и pageInfo. Значения ShopDeliveryMode: ACCOUNT_CHARACTER, DIRECT_CHARACTER, WAREHOUSE, GUEST_CHARACTER.
ShopOfferItem
| Поле | Тип | Описание |
|---|
assetReference | String! | Идентификатор выдаваемого ресурса |
quantity | Int! | Базовое количество |
enchantLevel | Int! | Уровень улучшения |
selectionKey | String | Ключ выбираемой позиции |
quantitySelectable | Boolean! | Игрок может менять множитель количества |
maximumQuantityMultiplier | Int! | Максимальный множитель |
ShopOfferAvailability
| Поле | Тип | Описание |
|---|
status | ShopOfferAvailabilityStatus! | Причина доступности или блокировки |
available | Boolean! | Разрешена ли покупка сейчас |
startsAt | DateTime | Начало публикации |
endsAt | DateTime | Окончание публикации |
globalLimit | ShopPurchaseLimitProgress | Общий лимит предложения |
customerLimit | ShopPurchaseLimitProgress | Лимит игрока |
gameAccountLimit | ShopPurchaseLimitProgress | Лимит игрового аккаунта |
gameAccountSelectionRequired | Boolean! | Для проверки нужен выбор аккаунта |
Статусы: AVAILABLE, NOT_STARTED, ENDED, CUSTOMER_NOT_ELIGIBLE, GLOBAL_LIMIT_REACHED, CUSTOMER_LIMIT_REACHED, GAME_ACCOUNT_LIMIT_REACHED, BLOCKED_OFFER_PURCHASED.
ShopPurchaseLimitProgress содержит windowSeconds, maximumPurchases, currentPurchases, remainingPurchases, признак evaluated и ближайшее nextAvailableAt.
ShopCategory
| Поле | Тип | Описание |
|---|
id | ID! | Непрозрачный ID категории |
name | String! | Локализованное название |
sortOrder | Int! | Порядок отображения |
ShopCategoryConnection возвращает items и pageInfo.
ShopQuote
| Поле | Тип | Описание |
|---|
id | ID! | Непрозрачный ID расчёта |
offer | ShopOffer! | Зафиксированное предложение |
quantity | Int! | Количество предложений |
selectedItems | [ShopQuoteSelection!]! | Принятые варианты и множители |
deliveryItems | [ShopQuoteDeliveryItem!]! | Итоговый состав выдачи |
unitAmount | StorefrontMoney! | Цена единицы |
subtotal | StorefrontMoney! | Сумма до корректировок заказа |
adjustments | [StorefrontCheckoutAdjustment!]! | Корректировки заказа |
total | StorefrontMoney! | Сумма к списанию или оплате |
hasSavings | Boolean! | Есть экономия |
delivery | ShopQuoteDelivery! | Режим и проверенный получатель |
expiresAt | DateTime! | Момент истечения расчёта |
ShopQuoteSelection содержит selectionKey и quantityMultiplier; ShopQuoteDeliveryItem - assetReference, quantity, enchantLevel; ShopQuoteDelivery - mode, accountLogin, characterName.
ShopPurchase
| Поле | Тип | Описание |
|---|
orderId | ID! | Непрозрачный ID заказа |
quoteId | ID! | Использованный расчёт |
orderStatus | StorefrontOrderStatus! | Состояние заказа |
paymentId | ID | Непрозрачный ID списания |
paymentStatus | StorefrontPaymentStatus! | Состояние списания или возврата |
total | StorefrontMoney! | Итоговая сумма |
createdAt | DateTime! | Время создания |
Статусы заказа: CONFIRMED, PENDING_PAYMENT, PAID, FULFILLING, FULFILLED, CANCELLED. Статусы оплаты: NOT_REQUIRED, DEBIT_PENDING, PAID, REVERSAL_PENDING, REVERSED, REQUIRES_REVIEW.
При нулевом итоге покупка подтверждается без оплаты: paymentId равен null, paymentStatus равен NOT_REQUIRED. Заказ проходит состояния CONFIRMED, FULFILLING и FULFILLED; подтверждение ещё не означает завершённую выдачу.
StorefrontExternalPaymentPreparation
| Поле | Тип | Описание |
|---|
orderId | ID! | Созданный гостевой заказ |
quoteId | ID! | Расчёт Storefront |
orderStatus | StorefrontOrderStatus! | Состояние заказа |
intent | StorefrontExternalPaymentIntent! | Платёжное намерение и срок действия |
methods | [StorefrontExternalPaymentMethod!]! | Доступные способы с отдельными расчётами |
Способ содержит id, code, name, необязательный iconAssetId и paymentQuote. Расчёт способа содержит id, paymentAmount, destinationAmount, payerFee и expiresAt.
StorefrontExternalPaymentExecution
| Поле | Тип | Описание |
|---|
orderId | ID! | Гостевой заказ |
quoteId | ID! | Расчёт Storefront |
orderStatus | StorefrontOrderStatus! | Состояние заказа |
intent | StorefrontExternalPaymentIntent! | Состояние платёжного намерения |
attempt | StorefrontExternalPaymentAttempt! | Текущая попытка оплаты |
action | StorefrontExternalPaymentAction | Следующее действие клиента |
action.kind принимает REDIRECT, FORM_POST, QR_CODE, DEEP_LINK или WAIT; заполнено только поле, соответствующее kind. Статусы платежа: OPEN, PROCESSING, SETTLED, CANCELLED, EXPIRED. Статусы попытки: CREATED, REQUIRES_CUSTOMER_ACTION, PENDING_PROVIDER, AUTHORIZED, CAPTURED, DECLINED, CANCELLED, EXPIRED, REVIEW_REQUIRED.
GameServiceOffer
| Поле | Тип | Описание |
|---|
id | ID! | Непрозрачный ID услуги |
name | String! | Локализованное название |
description | String! | Локализованное описание |
imageReference | String! | Изображение услуги |
category | GameServiceLocalizedCategory! | Код, название и описание категории |
targetKind | GameServiceTargetKind! | GAME_ACCOUNT или CHARACTER |
fields | [GameServiceField!]! | Настраиваемые поля покупки |
price | StorefrontPrice! | Цена услуги |
availability | GameServiceAvailability! | Доступность и период публикации |
sortOrder | Int! | Порядок каталога |
GameServiceOfferConnection возвращает items и pageInfo. GameServiceCategoryConnection возвращает категории с полями code, name, description, sortOrder и курсор.
GameServiceField
| Поле | Тип | Описание |
|---|
code | String! | Код поля |
kind | GameServiceFieldKind! | TEXT, OPTION или COLOR |
required | Boolean! | Поле обязательно |
name | String! | Локализованное название |
description | String! | Локализованное описание |
textConstraint | GameServiceTextConstraint | Политика и границы длины текста |
options | [GameServiceOption!]! | Разрешённые варианты |
sortOrder | Int! | Порядок поля |
determinesPrice | Boolean! | Выбор определяет цену |
GameServiceTextConstraint.policy принимает FREE_TEXT, ALPHANUMERIC_NAME, EXTENDED_NAME или ACCOUNT_NAME. GameServiceOption содержит value, необязательное visualValue, name, description, необязательную price и sortOrder.
GameServiceQuote
| Поле | Тип | Описание |
|---|
id | ID! | Непрозрачный ID расчёта |
offer | GameServiceOffer! | Зафиксированная услуга |
fieldValues | [GameServiceFieldValue!]! | Проверенные значения полей |
target | GameServicePurchaseTarget! | Проверенный аккаунт или персонаж |
unitAmount | StorefrontMoney! | Цена единицы |
subtotal | StorefrontMoney! | Сумма до корректировок |
adjustments | [StorefrontCheckoutAdjustment!]! | Корректировки заказа |
total | StorefrontMoney! | Итоговая сумма |
hasSavings | Boolean! | Есть экономия |
expiresAt | DateTime! | Момент истечения расчёта |
GameServicePurchase
Поля и статусы совпадают с ShopPurchase: orderId, quoteId, orderStatus, paymentId, paymentStatus, total, createdAt.
Кейсы и награды
CaseConfig
Конфигурация кейса:
| Поле | Тип | Описание |
|---|
id | ID! | ID кейса |
name | String! | Название |
price | Float! | Цена |
salePrice | Float | Цена со скидкой |
salePercent | Int | Процент скидки |
image | String | Изображение |
items | [CaseItem!]! | Предметы в кейсе |
available | Boolean! | Доступен |
availableUntil | DateTime | Доступен до |
broadcast | Int | Объявления (0 = выкл) |
category | Int | ID категории |
salesRestriction | CaseSalesRestriction | Глобальное ограничение |
individualLimit | CaseIndividualLimit | Индивидуальный лимит |
CaseItem
Предмет в кейсе:
| Поле | Тип | Описание |
|---|
id | ID! | ID |
itemId | Int! | ID предмета |
name | String! | Название |
count | Int! | Количество |
enchantLevel | Int! | Уровень заточки |
icon | String | Иконка |
weight | Int! | Вес (шанс выпадения) |
rarity | String | Редкость (common, rare, epic, legendary) |
CaseCategory
Категория кейсов:
| Поле | Тип | Описание |
|---|
id | ID! | ID |
name | String! | Название |
sort | Int! | Порядок сортировки |
CaseSalesRestriction
Глобальное ограничение кейса:
| Поле | Тип | Описание |
|---|
enabled | Boolean! | Включено |
time | Int! | Период (секунды) |
count | Int! | Максимальное количество |
CaseIndividualLimit
Индивидуальный лимит кейса:
| Поле | Тип | Описание |
|---|
enabled | Boolean! | Включено |
time | Int! | Период (секунды) |
count | Int! | Максимальное количество |
CaseOpenResult
Результат открытия кейса:
| Поле | Тип | Описание |
|---|
item | WarehouseItem! | Выигранный предмет |
balance | Float | Обновленный баланс |
bonusBalance | Float | Обновленный бонусный баланс |
LuckyWheelConfig
Конфигурация колеса:
| Поле | Тип | Описание |
|---|
id | ID! | ID |
price | Float! | Цена вращения |
broadcast | Int! | Объявления |
items | [LuckyWheelItem!]! | Предметы на колесе |
LuckyWheelItem
Предмет колеса:
| Поле | Тип | Описание |
|---|
id | ID! | ID |
itemId | Int! | ID предмета |
name | String! | Название |
count | Int! | Количество |
enchantLevel | Int! | Уровень заточки |
icon | String | Иконка |
weight | Int! | Вес (шанс) |
LuckyWheelSpin
Запись вращения:
| Поле | Тип | Описание |
|---|
id | ID! | ID |
itemId | Int! | ID предмета |
itemName | String! | Название |
itemCount | Int! | Количество |
createdAt | String! | Дата |
LuckyWheelSpinResult
Результат вращения:
| Поле | Тип | Описание |
|---|
item | WarehouseItem! | Выигранный предмет |
key | Int! | Индекс выигрышной ячейки |
balance | Float | Обновленный баланс |
bonusBalance | Float | Обновленный бонусный баланс |
LuckyWheelSpinConnection
Страница истории вращений:
| Поле | Тип | Описание |
|---|
nodes | [LuckyWheelSpin!]! | Записи текущей страницы |
totalCount | Int! | Общее количество вращений |
pageInfo | LuckyWheelPageInfo! | Данные следующей страницы |
LuckyWheelPageInfo
| Поле | Тип | Описание |
|---|
hasNextPage | Boolean! | Есть следующая страница |
hasPreviousPage | Boolean! | Есть предыдущая страница |
endCursor | String | Курсор следующей страницы |
DailyRewardStatus
Статус ежедневных наград:
| Поле | Тип | Описание |
|---|
currentDay | Int! | Текущий день |
lastClaimDate | DateTime | Дата последнего получения |
rewards | [DailyReward!]! | Список наград по дням |
canClaim | Boolean! | Можно забрать награду |
nextClaimAt | DateTime | Время следующей награды |
DailyReward
Награда за день:
| Поле | Тип | Описание |
|---|
day | Int! | Номер дня |
items | [DailyRewardItem!]! | Предметы |
claimed | Boolean! | Получена |
DailyRewardItem
Предмет ежедневной награды:
| Поле | Тип | Описание |
|---|
itemId | Int! | ID предмета |
name | String | Название |
count | Int! | Количество |
enchantLevel | Int! | Уровень заточки |
DailyRewardClaimResult
Результат получения награды:
| Поле | Тип | Описание |
|---|
item | WarehouseItem | Полученный предмет |
balance | Float | Обновленный баланс |
bonusBalance | Float | Обновленный бонусный баланс |
warehouse | [WarehouseItem!] | Обновленный склад |
BonusCodeRedemptionResult
Результат активации бонус-кода:
| Поле | Тип | Описание |
|---|
requiresRecipient | Boolean! | Требуется повторить операцию с игровым аккаунтом и персонажем |
rewardType | BonusCodeRewardType! | Тип награды: BALANCE или ITEMS |
amount | Float | Сумма |
bonusExpiresAt | DateTime | Время истечения бонусного баланса |
balance | Float | Обновленный баланс |
bonusBalance | Float | Обновленный бонусный баланс |
itemsCount | Int | Количество предметов |
characterName | String | Имя персонажа-получателя |
baseAmount | Float | Основная сумма до применения VIP |
vipBonusAmount | Float | Фиксированная дополнительная VIP-сумма |
vipMultiplier | Float! | Применённый множитель; 1 без усиления |
vipApplied | Boolean! | Была ли применена VIP-политика награды |
baseItemsCount | Int | Количество основных предметных позиций |
vipBonusItemsCount | Int | Количество дополнительных VIP-позиций |
GiftCodePackage
Пакет подарочного кода:
| Поле | Тип | Описание |
|---|
id | ID! | ID пакета |
name | String! | Название |
description | String | Описание |
price | Decimal! | Точная строка цены списания |
denomination | Decimal! | Точная строка номинала |
popular | Boolean! | Пакет выделен как популярный |
GiftCodeStore
Состояние магазина подарочных кодов:
| Поле | Тип | Описание |
|---|
enabled | Boolean! | Функция включена для игрового сервера |
customAmount | GiftCodeCustomAmount! | Настройки произвольного номинала |
packages | [GiftCodePackage!]! | Включённые пакеты в заданном порядке |
GiftCodeCustomAmount содержит enabled: Boolean! и nullable-поля minimum, maximum, priceRate типа Decimal. Денежные значения передаются JSON-строками, например "100.0001", а не числами с плавающей точкой.
GiftCodePurchase
Покупка подарочного кода:
| Поле | Тип | Описание |
|---|
id | ID! | ID записи |
code | String! | Код |
denomination | Decimal! | Точная строка номинала |
status | String! | Состояние бонус-кода, например ACTIVE или REDEEMED |
createdAt | DateTime! | Дата покупки |
GiftCodeResult
Результат покупки подарочного кода:
| Поле | Тип | Описание |
|---|
purchaseId | ID! | ID идемпотентной покупки |
code | String! | Сгенерированный код |
denomination | Decimal! | Точная строка номинала |
balance | Decimal | Основной баланс после исходного списания |
bonusBalance | Decimal | Бонусный баланс после исходного списания |
Повтор завершенной покупки возвращает тот же код и сохраненный результат списания, а не новый снимок текущего баланса.
Поддержка и активность
PlayerSupportPortal
| Поле | Тип | Описание |
|---|
| enabled | Boolean! | Раздел включён для проекта |
| provider | String! | Текущий способ обработки: INTERNAL или OMNIDESK |
| minimumTitleLength / maximumTitleLength | Int! | Границы длины темы |
| minimumMessageLength / maximumMessageLength | Int! | Границы длины сообщения |
| attachmentsEnabled | Boolean! | Разрешены ли вложения |
| maxFileSizeMb / maxFiles / maxTotalSizeMb | Int! | Ограничения загрузки |
| allowedMimeTypes | [String!]! | Разрешённые MIME-типы |
| writeAccess | PlayerSupportWriteAccess! | Может ли игрок писать |
| categories | [PlayerSupportCategory!]! | Опубликованные категории |
PlayerSupportWriteAccess
| Поле | Тип | Описание |
|---|
| allowed | Boolean! | Создание и ответы разрешены |
| reason | String | Причина ограничения |
| expiresAt | DateTime | Время окончания ограничения |
PlayerSupportCategory
| Поле | Тип | Описание |
|---|
| id | ID! | ID категории |
| name | String! | Название на языке запроса |
| icon | String | Класс настроенной иконки |
PlayerSupportTicket
| Поле | Тип | Описание |
|---|
| id | ID! | ID обращения |
| title | String! | Тема |
| categoryId | Int! | ID категории |
| status | PlayerSupportTicketStatus! | Состояние обращения |
| messages | PlayerSupportMessageConnection! | Текущая выборка сообщений |
| messagesCount | Int! | Общее число сообщений |
| unreadCount | Int! | Непрочитанные ответы команды |
| lastMessage | String! | Краткий текст последнего сообщения |
| createdAt / updatedAt | DateTime! | Время создания и изменения |
PlayerSupportTicketConnection
| Поле | Тип | Описание |
|---|
| items | [PlayerSupportTicket!]! | Текущая выборка |
| pageInfo | PlayerSupportCursorPageInfo! | Курсоры продолжения |
PlayerSupportTicketSummary
| Поле | Тип | Описание |
|---|
| all | Int! | Все обращения игрока |
| waitingForPlayer | Int! | Ожидают игрока |
| waitingForStaff | Int! | Ожидают команду |
| closed | Int! | Закрытые |
PlayerSupportMessage
| Поле | Тип | Описание |
|---|
| id | ID! | ID сообщения |
| content | String! | Текст или маркер редактирования |
| author | PlayerSupportMessageAuthor! | PLAYER или STAFF |
| authorLabel | String | Публичная подпись автора |
| redacted | Boolean! | Сообщение отредактировано сотрудником |
| deliveryState | PlayerSupportMessageDeliveryState | Состояние внешней доставки |
| feedback | PlayerSupportMessageFeedback | Последняя оценка текущего игрока |
| feedbackAllowed | Boolean! | Может ли текущий игрок оценить ответ |
| attachments | [PlayerSupportAttachment!]! | Доступные вложения |
| createdAt | DateTime! | Время создания |
PlayerSupportMessageConnection
| Поле | Тип | Описание |
|---|
| items | [PlayerSupportMessage!]! | Текущая выборка |
| pageInfo | PlayerSupportCursorPageInfo! | Курсоры продолжения |
PlayerSupportCursorPageInfo
| Поле | Тип | Описание |
|---|
| nextCursor | String | Курсор следующей выборки |
| previousCursor | String | Курсор предыдущей выборки |
| hasMore | Boolean! | В выбранном направлении остались записи |
PlayerSupportAttachment
| Поле | Тип | Описание |
|---|
| url | String! | Краткоживущая ссылка на оригинал |
| thumbnailUrl | String! | Краткоживущая ссылка на превью |
PlayerSupportMutationResult
| Поле | Тип | Описание |
|---|
| message | String! | Локализованное подтверждение |
| ticketId | ID! | ID обращения |
| messageId | ID! | ID созданного сообщения |
| deliveryPending | Boolean! | Внешняя доставка ещё не завершена |
PlayerSupportMessageFeedbackResult
| Поле | Тип | Описание |
|---|
| messageId | ID! | ID оценённого ответа сотрудника |
| feedback | PlayerSupportMessageFeedback! | Сохранённая оценка |
Входные типы
CreatePlayerSupportTicketInput содержит requestId, categoryId, title, message, необязательные account, character и attachmentClaim.
ReplyPlayerSupportTicketInput содержит requestId, ticketId, message и необязательный attachmentClaim.
RatePlayerSupportMessageInput содержит обязательные messageId и feedback.
PlayerSupportAttachmentClaimInput содержит обязательные id и credential предварительно загруженной заявки.
Перечисления
- PlayerSupportTicketStatus: NEW, WAITING_FOR_STAFF, WAITING_FOR_PLAYER, CANCELLED, CLOSED.
- PlayerSupportMessageAuthor: PLAYER, STAFF.
- PlayerSupportMessageDeliveryState: PENDING, DELIVERED, FAILED.
- PlayerSupportMessageFeedback: HELPFUL, NOT_HELPFUL.
Notification
Уведомление:
| Поле | Тип | Описание |
|---|
id | ID! | ID |
type | String! | Тип уведомления |
title | String! | Заголовок |
message | String! | Текст |
isRead | Boolean! | Прочитано |
createdAt | DateTime! | Дата |
BalanceInfo
Баланс:
| Поле | Тип | Описание |
|---|
balance | Decimal! | Доступный основной баланс точной десятичной строкой |
bonusBalance | Decimal! | Доступный бонусный баланс точной десятичной строкой |
paymentDebt | Decimal! | Задолженность точной десятичной строкой |
purchasesRestricted | Boolean! | Покупки и вывод с этого баланса ограничены до погашения долга |
ModuleStatuses
Статусы модулей:
| Поле | Тип | Описание |
|---|
cases | Boolean! | Кейсы включены |
dailyRewards | Boolean! | Ежедневные награды |
giftCodes | Boolean! | Подарочные коды |
luckyWheel | Boolean! | Колесо фортуны |
market | Boolean! | Маркетплейс |
referralProgram | Boolean! | Партнерская программа |