Игровой рынок
API игрового рынка доступен только через зарегистрированные persisted operations.
В запросе передаётся documentId и объект variables; произвольный GraphQL-текст
не принимается.
Общие правила
- Денежные суммы и игровые количества передаются строками:
"1250.000000". Клиент не должен преобразовывать их вFloat. requestIdкаждой mutation - UUIDv7. Повторять его можно только с тем же каноническим payload: это безопасный повтор одной операции, а не новая команда.after,nextCursorиpreviousCursor- непрозрачные курсоры. Их нельзя разбирать или собирать на клиенте.- Публичные операции принимают
gameServerId. Авторизованные операции используют выбранный игровой сервер. - Название, подпись, грейд и изображения предмета соответствуют текущему каталогу выбранного сервера.
- HTTP
200не гарантирует успех GraphQL-операции. Проверяйте массивerrorsиerrors[].extensions.code.
Основные коды ошибок:
| Код | Значение |
|---|---|
MARKETPLACE_DISABLED | Рынок выключен или не настроен. |
MARKETPLACE_RESTRICTED | Действие запрещено ограничением игрока. |
MARKETPLACE_REQUEST_CONFLICT | requestId уже использован с другим payload. |
MARKETPLACE_OPERATION_IN_PROGRESS | Та же операция уже выполняется. |
MARKETPLACE_OPERATION_RECOVERY_REQUIRED | Результат внешнего действия требует проверки оператором. |
MARKETPLACE_ITEM_NOT_FOUND | Предмет или запись его распарсенного каталога отсутствует. |
MARKETPLACE_OFFER_UNAVAILABLE | Предложение закончилось, зарезервировано или снято. |
MARKETPLACE_INSUFFICIENT_BALANCE | Недостаточно средств в выбранном источнике. |
MARKETPLACE_INVALID_PIN | PIN-код не прошёл проверку. |
MARKETPLACE_RATE_LIMIT_EXCEEDED | Превышен лимит запросов операции. |
Конфигурация
marketplaceConfiguration
Возвращает опубликованную конфигурацию рынка конкретного игрового сервера: валюту, разделы, правила объявлений, источники оплаты, уровни продавца, переводы и способы вывода.
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
gameServerId | Int! | ✓ | Игровой сервер текущего проекта. |
Результат: MarketplaceConfiguration.
{
"documentId": "marketplaceConfiguration",
"variables": {
"gameServerId": 1
}
}
{
"data": {
"marketplaceConfiguration": {
"enabled": true,
"gameServerId": 1,
"currency": {
"code": "CREDITS",
"name": "Кредиты",
"symbol": "CR"
},
"version": "2026-07-31T18:30:00.000000Z",
"listingPolicy": {
"sellerFeeBasisPoints": 500,
"minimumPrice": "1.000000",
"maximumPrice": "1000000.000000",
"maximumAssetsPerListing": 12,
"maximumActiveListings": 30,
"itemModerationRequired": false,
"characterModerationRequired": true,
"stackableItemsAllowed": true,
"augmentedItemsAllowed": true,
"attributedItemsAllowed": true,
"sellerTiersEnabled": true
},
"paymentSources": [
{
"source": "MAIN_BALANCE",
"default": true
},
{
"source": "MARKETPLACE_WALLET",
"default": false
}
],
"sections": [
{
"code": "weapons",
"assetType": "ITEM",
"name": "Оружие",
"description": "Оружие и экипировка",
"iconClass": "ti ti-sword"
},
{
"code": "characters",
"assetType": "CHARACTER",
"name": "Персонажи",
"description": "Продажа персонажей",
"iconClass": "ti ti-user"
}
],
"sellerTiers": [
{
"code": "starter",
"name": "Новичок",
"minimumLifetimeSales": "0.000000",
"maximumAssetsPerListing": 6,
"maximumActiveListings": 10,
"sellerFeeBasisPoints": 700
}
],
"transfers": {
"mainBalanceEnabled": true
},
"withdrawals": {
"enabled": true,
"minimumAmount": "50.000000",
"feeBasisPoints": 300,
"conversionRate": "1.000000",
"methods": [
{
"code": "BANK_CARD",
"name": "Банковская карта",
"instructions": "Укажите карту получателя",
"destinationKind": "BANK_CARD",
"destinationFields": [
{
"key": "card_number",
"type": "TEXT",
"label": "Номер карты",
"placeholder": "0000 0000 0000 0000",
"required": true,
"minimumLength": 16,
"maximumLength": 19,
"pattern": "^[0-9 ]+$",
"options": []
}
],
"minimumAmount": "100.000000",
"maximumAmount": "50000.000000",
"feeBasisPoints": 250,
"payoutCurrencyCode": "RUB"
}
]
}
}
}
}
Обзор
marketplaceOverview
Возвращает разделы с числом доступных предложений и последние опубликованные предложения.
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
gameServerId | Int! | ✓ | Игровой сервер проекта. |
first | Int | - | Число последних предложений, по умолчанию 12. |
Результат: MarketplaceOverview!.
{
"documentId": "marketplaceOverview",
"variables": {
"gameServerId": 1,
"first": 6
}
}
{
"data": {
"marketplaceOverview": {
"sections": [
{
"code": "weapons",
"assetType": "ITEM",
"name": "Оружие",
"description": "Оружие и экипировка",
"iconClass": "ti ti-sword",
"availableOfferCount": 18
}
],
"latestOffers": [
{
"id": "0198f1be-2d43-7e88-b8c0-33ec87179fd1",
"listingId": "0198f1bd-f4f9-770a-8f5d-5bdf9d3cc220",
"section": {
"code": "weapons",
"name": "Оружие",
"iconClass": "ti ti-sword"
},
"saleMode": "INDIVIDUAL",
"title": "Forgotten Blade +7",
"description": "Атрибут огня",
"unitPrice": "320.000000",
"currencyCode": "CREDITS",
"availableUnits": "1",
"minimumPurchaseUnits": "1",
"maximumPurchaseUnits": "1",
"asset": {
"type": "ITEM",
"itemId": "6364",
"name": "Forgotten Blade",
"additionalName": "Health",
"gradeCode": "S80",
"icon": "/styles/default/media/icon/1/weapon_forgotten_blade_i00.webp",
"panelIcon": null,
"enchantLevel": 7
},
"publishedAt": "2026-07-31T15:20:00.000000Z"
}
]
}
}
}
Каталог
marketplaceCatalog
Курсорная выдача опубликованных предложений с фильтрами.
Поле input | Тип | Описание |
|---|---|---|
sectionCode | String | Код раздела. |
search | String | Имя предмета, персонажа или точный ID предмета. |
minimumPrice / maximumPrice | String | Диапазон точной цены. |
minimumEnchantLevel | Int | Минимальная заточка. |
gradeCode | String | Код грейда. |
first | Int | Размер страницы, по умолчанию 24. |
after | String | Непрозрачный курсор следующей страницы. |
Результат: MarketplaceCatalogConnection!.
{
"documentId": "marketplaceCatalog",
"variables": {
"gameServerId": 1,
"input": {
"sectionCode": "weapons",
"search": "Forgotten",
"minimumPrice": "100.000000",
"maximumPrice": "500.000000",
"minimumEnchantLevel": 3,
"gradeCode": "S80",
"first": 24,
"after": null
}
}
}
{
"data": {
"marketplaceCatalog": {
"nodes": [
{
"id": "0198f1be-2d43-7e88-b8c0-33ec87179fd1",
"listingId": "0198f1bd-f4f9-770a-8f5d-5bdf9d3cc220",
"section": {
"code": "weapons",
"name": "Оружие",
"iconClass": "ti ti-sword"
},
"saleMode": "INDIVIDUAL",
"title": "Forgotten Blade +7",
"description": "Атрибут огня",
"unitPrice": "320.000000",
"currencyCode": "CREDITS",
"availableUnits": "1",
"minimumPurchaseUnits": "1",
"maximumPurchaseUnits": "1",
"asset": {
"type": "ITEM",
"itemId": "6364",
"name": "Forgotten Blade",
"additionalName": "Health",
"gradeCode": "S80",
"icon": "/styles/default/media/icon/1/weapon_forgotten_blade_i00.webp",
"panelIcon": null,
"enchantLevel": 7
},
"publishedAt": "2026-07-31T15:20:00.000000Z"
}
],
"pageInfo": {
"nextCursor": null,
"previousCursor": null,
"hasNextPage": false
},
"totalCount": 42,
"filteredCount": 1
}
}
}
Объявление
marketplaceListing
Возвращает одно опубликованное объявление, его предложения и состав каждого предложения.
| Поле | Тип | Обязательное |
|---|---|---|
gameServerId | Int! | ✓ |
listingId | ID! | ✓ |
Результат: MarketplaceListing!.
{
"documentId": "marketplaceListing",
"variables": {
"gameServerId": 1,
"listingId": "0198f1bd-f4f9-770a-8f5d-5bdf9d3cc220"
}
}
{
"data": {
"marketplaceListing": {
"id": "0198f1bd-f4f9-770a-8f5d-5bdf9d3cc220",
"section": {
"code": "weapons",
"assetType": "ITEM",
"name": "Оружие",
"iconClass": "ti ti-sword"
},
"saleMode": "INDIVIDUAL",
"publicationState": "PUBLISHED",
"moderationState": "NOT_REQUIRED",
"title": "Forgotten Blade +7",
"description": "Атрибут огня",
"sellerFeeBasisPoints": 500,
"offers": [
{
"id": "0198f1be-2d43-7e88-b8c0-33ec87179fd1",
"unitPrice": "320.000000",
"currencyCode": "CREDITS",
"availableUnits": "1",
"minimumPurchaseUnits": "1",
"maximumPurchaseUnits": "1",
"assets": [
{
"quantityPerUnit": "1",
"asset": {
"type": "ITEM",
"itemId": "6364",
"name": "Forgotten Blade",
"additionalName": "Health",
"gradeCode": "S80",
"icon": "/styles/default/media/icon/1/weapon_forgotten_blade_i00.webp",
"panelIcon": null,
"enchantLevel": 7
}
}
]
}
],
"publishedAt": "2026-07-31T15:20:00.000000Z"
}
}
}
Состояние игрока
marketplaceViewer
Единый источник доступности действий, ограничений, уровня продавца, рыночных кошельков и личной статистики. Операция использует выбранный сервер из сессии.
Результат: MarketplaceViewer!.
{
"documentId": "marketplaceViewer",
"variables": {}
}
{
"data": {
"marketplaceViewer": {
"gameServerId": 1,
"addonActive": true,
"configurationPresent": true,
"configurationEnabled": true,
"currency": {
"code": "CREDITS",
"name": "Кредиты",
"symbol": "CR"
},
"capabilities": {
"browse": {
"allowed": true,
"reason": null
},
"createListing": {
"allowed": true,
"reason": null
},
"purchase": {
"allowed": true,
"reason": null
},
"cancelListing": {
"allowed": true,
"reason": null
},
"transferToMainBalance": {
"allowed": true,
"reason": null
},
"requestWithdrawal": {
"allowed": true,
"reason": null
}
},
"restrictions": [],
"seller": {
"activeListingCount": 3,
"maximumActiveListings": 30,
"maximumAssetsPerListing": 12,
"sellerFeeBasisPoints": 500,
"lifetimeSalesAmount": "8450.000000",
"tier": {
"code": "pro",
"name": "Профессионал"
}
},
"wallets": [
{
"currencyCode": "CREDITS",
"availableBalance": "847.500000",
"reservedBalance": "150.000000",
"lifetimeSalesAmount": "8450.000000",
"lifetimePurchaseAmount": "2130.000000",
"completedSalesCount": "14",
"completedPurchaseCount": "8"
}
],
"statistics": {
"activeListings": 3,
"pendingModerationListings": 1,
"endedListings": 19,
"openSales": 1,
"completedSales": 14,
"cancelledSales": 2,
"openPurchases": 0,
"completedPurchases": 8,
"cancelledPurchases": 1,
"postedSalesGrossAmount": "8450.000000",
"postedSalesFeeAmount": "422.500000",
"postedSalesNetAmount": "8027.500000"
}
}
}
}
Объявления продавца
marketplaceSellerListings
Курсорная история объявлений текущего игрока.
Поле input | Тип | Описание |
|---|---|---|
publicationStates | [MarketplaceListingPublicationState!] | Фильтр публикации. |
moderationStates | [MarketplaceListingModerationState!] | Фильтр модерации. |
saleModes | [MarketplaceListingSaleMode!] | Режим продажи. |
first / after | Int / String | Курсорная страница. |
Результат: MarketplaceSellerListingConnection!.
{
"documentId": "marketplaceSellerListings",
"variables": {
"input": {
"publicationStates": [
"PUBLISHED"
],
"first": 20,
"after": null
}
}
}
{
"data": {
"marketplaceSellerListings": {
"nodes": [
{
"id": "0198f1bd-f4f9-770a-8f5d-5bdf9d3cc220",
"section": {
"code": "weapons",
"assetType": "ITEM",
"name": "Оружие",
"iconClass": "ti ti-sword"
},
"saleMode": "INDIVIDUAL",
"publicationState": "PUBLISHED",
"moderationState": "NOT_REQUIRED",
"endedReason": null,
"title": "Forgotten Blade +7",
"description": "Атрибут огня",
"moderationNote": null,
"sellerFeeBasisPoints": 500,
"canCancel": true,
"assets": [
{
"asset": {
"type": "ITEM",
"itemId": "6364",
"name": "Forgotten Blade",
"additionalName": "Health",
"gradeCode": "S80",
"icon": "/styles/default/media/icon/1/weapon_forgotten_blade_i00.webp",
"panelIcon": null,
"enchantLevel": 7
},
"originalQuantity": "1",
"reservedQuantity": "0",
"deliveredQuantity": "0",
"returnedQuantity": "0"
}
],
"offers": [
{
"id": "0198f1be-2d43-7e88-b8c0-33ec87179fd1",
"unitPrice": "320.000000",
"currencyCode": "CREDITS",
"totalUnits": "1",
"reservedUnits": "0",
"soldUnits": "0",
"availableUnits": "1",
"minimumPurchaseUnits": "1",
"maximumPurchaseUnits": "1",
"primaryAsset": {
"type": "ITEM",
"itemId": "6364",
"name": "Forgotten Blade",
"additionalName": "Health",
"gradeCode": "S80",
"icon": "/styles/default/media/icon/1/weapon_forgotten_blade_i00.webp",
"panelIcon": null,
"enchantLevel": 7
},
"assets": []
}
],
"publishedAt": "2026-07-31T15:20:00.000000Z",
"suspendedAt": null,
"endedAt": null,
"createdAt": "2026-07-31T15:19:58.000000Z",
"updatedAt": "2026-07-31T15:20:00.000000Z"
}
],
"pageInfo": {
"nextCursor": null,
"previousCursor": null,
"hasNextPage": false
}
}
}
}
Заказы
marketplaceOrders
История покупок и продаж с независимыми состояниями оплаты, доставки и зачисления продавцу.
Поле input | Тип | Описание |
|---|---|---|
role | MarketplaceOrderRole | ALL, BUYER или SELLER. |
outcomes | [MarketplaceOrderOutcome!] | OPEN, COMPLETED, CANCELLED. |
first / after | Int / String | Курсорная страница. |
Результат: MarketplaceOrderConnection!.
{
"documentId": "marketplaceOrders",
"variables": {
"input": {
"role": "BUYER",
"outcomes": [
"COMPLETED"
],
"first": 20
}
}
}
{
"data": {
"marketplaceOrders": {
"nodes": [
{
"id": "0198f1c5-2a0c-7e43-b45f-4f54b5be6031",
"role": "BUYER",
"outcome": "COMPLETED",
"currencyCode": "CREDITS",
"grossAmount": "320.000000",
"sellerFeeAmount": "16.000000",
"sellerNetAmount": "304.000000",
"cancellationReason": null,
"payment": {
"source": "MARKETPLACE_WALLET",
"state": "CAPTURED",
"amount": "320.000000",
"currencyCode": "CREDITS",
"capturedAt": "2026-07-31T16:00:01.000000Z",
"refundStartedAt": null,
"refundedAt": null,
"cancelledAt": null
},
"lines": [
{
"listingId": "0198f1bd-f4f9-770a-8f5d-5bdf9d3cc220",
"offerId": "0198f1be-2d43-7e88-b8c0-33ec87179fd1",
"units": "1",
"unitPrice": "320.000000",
"grossAmount": "320.000000",
"sellerFeeBasisPoints": 500,
"sellerFeeAmount": "16.000000",
"sellerNetAmount": "304.000000",
"assets": [],
"settlement": {
"state": "POSTED",
"postedAt": "2026-07-31T16:00:03.000000Z",
"reversalStartedAt": null,
"reversedAt": null,
"cancelledAt": null
}
}
],
"completedAt": "2026-07-31T16:00:03.000000Z",
"cancelledAt": null,
"createdAt": "2026-07-31T16:00:00.000000Z",
"updatedAt": "2026-07-31T16:00:03.000000Z"
}
],
"pageInfo": {
"nextCursor": null,
"previousCursor": null,
"hasNextPage": false
}
}
}
}
Журнал кошелька
marketplaceWalletEntries
Неизменяемый журнал движений доступного и зарезервированного рыночного баланса.
Поле input | Тип | Описание |
|---|---|---|
currencyCode | String | Валюта кошелька. |
types | [MarketplaceWalletEntryType!] | Типы проводок. |
first / after | Int / String | Курсорная страница. |
Результат: MarketplaceWalletEntryConnection!.
{
"documentId": "marketplaceWalletEntries",
"variables": {
"input": {
"currencyCode": "CREDITS",
"types": [
"SALE_CREDIT"
],
"first": 20
}
}
}
{
"data": {
"marketplaceWalletEntries": {
"nodes": [
{
"type": "SALE_CREDIT",
"sourceType": "SETTLEMENT",
"sourceReference": "0198f1c5-2a0c-7e43-b45f-4f54b5be6031",
"availableDelta": "304.000000",
"reservedDelta": "0.000000",
"availableBalanceAfter": "847.500000",
"reservedBalanceAfter": "150.000000",
"currencyCode": "CREDITS",
"occurredAt": "2026-07-31T16:00:03.000000Z"
}
],
"pageInfo": {
"nextCursor": null,
"previousCursor": null,
"hasNextPage": false
}
}
}
}
Переводы на основной баланс
marketplaceBalanceTransfers
Курсорная история переводов из рыночного кошелька на основной баланс.
Поле input | Тип | Описание |
|---|---|---|
currencyCode | String | Валюта. |
states | [MarketplaceBalanceTransferState!] | Состояния перевода. |
first / after | Int / String | Курсорная страница. |
{
"documentId": "marketplaceBalanceTransfers",
"variables": {
"input": {
"states": [
"COMPLETED"
],
"first": 20
}
}
}
{
"data": {
"marketplaceBalanceTransfers": {
"nodes": [
{
"id": "0198f1cc-34ec-7894-9957-05637d388ced",
"state": "COMPLETED",
"amount": "100.000000",
"currencyCode": "CREDITS",
"completedAt": "2026-07-31T16:30:02.000000Z",
"reversalStartedAt": null,
"reversedAt": null,
"createdAt": "2026-07-31T16:30:00.000000Z",
"updatedAt": "2026-07-31T16:30:02.000000Z"
}
],
"pageInfo": {
"nextCursor": null,
"previousCursor": null,
"hasNextPage": false
}
}
}
}
marketplaceBalanceTransfer
Возвращает один принадлежащий текущему игроку перевод.
| Поле | Тип | Обязательное |
|---|---|---|
id | ID! | ✓ |
Результат: MarketplaceBalanceTransfer.
{
"documentId": "marketplaceBalanceTransfer",
"variables": {
"id": "0198f1cc-34ec-7894-9957-05637d388ced"
}
}
{
"data": {
"marketplaceBalanceTransfer": {
"id": "0198f1cc-34ec-7894-9957-05637d388ced",
"state": "COMPLETED",
"amount": "100.000000",
"currencyCode": "CREDITS",
"completedAt": "2026-07-31T16:30:02.000000Z",
"reversalStartedAt": null,
"reversedAt": null,
"createdAt": "2026-07-31T16:30:00.000000Z",
"updatedAt": "2026-07-31T16:30:02.000000Z"
}
}
}
Заявки на вывод
marketplaceWithdrawals
Курсорная история заявок текущего игрока.
Поле input | Тип | Описание |
|---|---|---|
methodCode | String | Способ вывода. |
reviewStates | [MarketplaceWithdrawalReviewState!] | Проверка заявки. |
payoutStates | [MarketplaceWithdrawalPayoutState!] | Выплата. |
fundsStates | [MarketplaceWithdrawalFundsState!] | Состояние средств. |
first / after | Int / String | Курсорная страница. |
{
"documentId": "marketplaceWithdrawals",
"variables": {
"input": {
"methodCode": "BANK_CARD",
"reviewStates": [
"APPROVED"
],
"first": 20
}
}
}
{
"data": {
"marketplaceWithdrawals": {
"nodes": [
{
"id": "0198f1d2-b2a8-74db-aef4-d443f1b45dc5",
"method": {
"code": "BANK_CARD",
"name": "Банковская карта"
},
"reviewState": "APPROVED",
"payoutState": "PROCESSING",
"fundsState": "RESERVED",
"sourceAmount": "500.000000",
"feeAmount": "12.500000",
"netSourceAmount": "487.500000",
"conversionRate": "90.000000",
"payoutAmount": "43875.000000",
"sourceCurrencyCode": "CREDITS",
"payoutCurrencyCode": "RUB",
"destinationPreview": "**** 4242",
"reviewReasonCode": null,
"payoutReference": null,
"reviewedAt": "2026-07-31T17:05:00.000000Z",
"payoutStartedAt": "2026-07-31T17:10:00.000000Z",
"paidAt": null,
"cancelledAt": null,
"createdAt": "2026-07-31T17:00:00.000000Z",
"updatedAt": "2026-07-31T17:10:00.000000Z"
}
],
"pageInfo": {
"nextCursor": null,
"previousCursor": null,
"hasNextPage": false
}
}
}
}
marketplaceWithdrawal
Возвращает одну принадлежащую текущему игроку заявку.
| Поле | Тип | Обязательное |
|---|---|---|
id | ID! | ✓ |
Результат: MarketplaceWithdrawal.
{
"documentId": "marketplaceWithdrawal",
"variables": {
"id": "0198f1d2-b2a8-74db-aef4-d443f1b45dc5"
}
}
{
"data": {
"marketplaceWithdrawal": {
"id": "0198f1d2-b2a8-74db-aef4-d443f1b45dc5",
"method": {
"code": "BANK_CARD",
"name": "Банковская карта"
},
"reviewState": "APPROVED",
"payoutState": "PROCESSING",
"fundsState": "RESERVED",
"sourceAmount": "500.000000",
"feeAmount": "12.500000",
"netSourceAmount": "487.500000",
"conversionRate": "90.000000",
"payoutAmount": "43875.000000",
"sourceCurrencyCode": "CREDITS",
"payoutCurrencyCode": "RUB",
"destinationPreview": "**** 4242",
"reviewReasonCode": null,
"payoutReference": null,
"reviewedAt": "2026-07-31T17:05:00.000000Z",
"payoutStartedAt": "2026-07-31T17:10:00.000000Z",
"paidAt": null,
"cancelledAt": null,
"createdAt": "2026-07-31T17:00:00.000000Z",
"updatedAt": "2026-07-31T17:10:00.000000Z"
}
}
}
Создание объявления с предметами
createMarketplaceItemListing
Создаёт объявление и удерживает выбранные предметы до покупки либо снятия объявления.
Поле input | Тип | Обязательное |
|---|---|---|
requestId | ID! | ✓ |
sectionCode | String! | ✓ |
saleMode | MarketplaceItemSaleMode! | ✓ |
accountLogin / characterName | String! | ✓ |
title / description | String | - |
assets | [MarketplaceItemListingAssetInput!]! | ✓ |
assets[].objectId | String! | ✓ |
assets[].quantity / unitPrice | String! | ✓ |
pin | String | - |
termsAccepted | Boolean! | ✓ |
{
"documentId": "createMarketplaceItemListing",
"variables": {
"input": {
"requestId": "0198f1da-87d2-7c91-a8a5-2cbd68c25578",
"sectionCode": "resources",
"saleMode": "INDIVIDUAL",
"accountLogin": "player01",
"characterName": "Elysia",
"title": "Adena",
"description": "Продажа по 100 000",
"assets": [
{
"objectId": "200057",
"quantity": "500000",
"unitPrice": "0.000010"
}
],
"pin": "1234",
"termsAccepted": true
}
}
}
{
"data": {
"createMarketplaceItemListing": {
"requestId": "0198f1da-87d2-7c91-a8a5-2cbd68c25578",
"listingId": "0198f1da-a147-7943-a3c5-0549e22aedc6",
"publicationState": "PUBLISHED",
"moderationState": "NOT_REQUIRED",
"offerIds": [
"0198f1da-a190-728a-937b-69fccf48a6b3"
]
}
}
}
Создание объявления с персонажем
createMarketplaceCharacterListing
Создаёт объявление о продаже персонажа с его инвентарём и удерживает персонажа до покупки либо снятия объявления.
Поле input | Тип | Обязательное |
|---|---|---|
requestId | ID! | ✓ |
sectionCode | String! | ✓ |
accountLogin / characterName | String! | ✓ |
unitPrice | String! | ✓ |
title / description / pin | String | - |
termsAccepted | Boolean! | ✓ |
{
"documentId": "createMarketplaceCharacterListing",
"variables": {
"input": {
"requestId": "0198f1dc-0efd-7ff9-9af7-7ec2bc130f1c",
"sectionCode": "characters",
"accountLogin": "player01",
"characterName": "Elysia",
"unitPrice": "2500.000000",
"title": "Eva's Saint 85",
"description": "Персонаж с экипировкой",
"pin": "1234",
"termsAccepted": true
}
}
}
{
"data": {
"createMarketplaceCharacterListing": {
"requestId": "0198f1dc-0efd-7ff9-9af7-7ec2bc130f1c",
"listingId": "0198f1dc-2ea6-7cb4-8275-b7f190e58f71",
"publicationState": "UNPUBLISHED",
"moderationState": "PENDING",
"offerIds": [
"0198f1dc-2eee-7a34-b9b0-a5254ce2a270"
]
}
}
}
Покупка
purchaseMarketplaceOffer
Оплачивает покупку из выбранного источника, доставляет предметы или персонажа и зачисляет продавцу сумму за вычетом комиссии.
Поле input | Тип | Обязательное |
|---|---|---|
requestId | ID! | ✓ |
offerId | ID! | ✓ |
units | String! | ✓ |
paymentSource | MarketplacePaymentSource! | ✓ |
accountLogin | String! | ✓ |
characterName / pin | String | - |
{
"documentId": "purchaseMarketplaceOffer",
"variables": {
"input": {
"requestId": "0198f1de-33d7-7db8-ac96-0f10ff51bbdb",
"offerId": "0198f1be-2d43-7e88-b8c0-33ec87179fd1",
"units": "1",
"paymentSource": "MARKETPLACE_WALLET",
"accountLogin": "buyer01",
"characterName": "Aeris",
"pin": "1234"
}
}
}
{
"data": {
"purchaseMarketplaceOffer": {
"requestId": "0198f1de-33d7-7db8-ac96-0f10ff51bbdb",
"orderId": "0198f1de-5192-76af-8d45-75f4b9733ca4",
"outcome": "COMPLETED",
"paymentState": "CAPTURED",
"settlementState": "POSTED"
}
}
}
Снятие объявления
cancelMarketplaceListing
Завершает принадлежащее игроку объявление и возвращает все не проданные активы.
{
"documentId": "cancelMarketplaceListing",
"variables": {
"input": {
"requestId": "0198f1e0-88ad-7752-bf90-7c3052971548",
"listingId": "0198f1da-a147-7943-a3c5-0549e22aedc6",
"pin": "1234"
}
}
}
{
"data": {
"cancelMarketplaceListing": {
"requestId": "0198f1e0-88ad-7752-bf90-7c3052971548",
"listingId": "0198f1da-a147-7943-a3c5-0549e22aedc6",
"publicationState": "ENDED",
"endedReason": "WITHDRAWN_BY_SELLER",
"returnedAssetCount": 1,
"returnedQuantity": "500000"
}
}
}
Перевод рыночного баланса
transferMarketplaceBalance
Переводит точную сумму из рыночного кошелька на основной баланс, если это разрешено конфигурацией.
{
"documentId": "transferMarketplaceBalance",
"variables": {
"input": {
"requestId": "0198f1e2-6ef3-7666-99fd-4569bcd13aeb",
"amount": "100.000000",
"pin": "1234"
}
}
}
{
"data": {
"transferMarketplaceBalance": {
"requestId": "0198f1e2-6ef3-7666-99fd-4569bcd13aeb",
"transferId": "0198f1e2-8e01-7382-9f5b-72953f80d18a",
"state": "COMPLETED",
"amount": "100.000000",
"currencyCode": "CREDITS"
}
}
}
Создание заявки на вывод
requestMarketplaceWithdrawal
Рассчитывает комиссию и курс для выбранного способа, резервирует средства и создаёт заявку на проверку.
Поле input | Тип | Обязательное |
|---|---|---|
requestId | ID! | ✓ |
methodCode | String! | ✓ |
amount | String! | ✓ |
destination | JSON! | ✓ |
pin | String | - |
destination должен содержать только поля, опубликованные в
marketplaceConfiguration.withdrawals.methods[].destinationFields.
{
"documentId": "requestMarketplaceWithdrawal",
"variables": {
"input": {
"requestId": "0198f1e4-6359-76b8-8160-7440f4268fb8",
"methodCode": "BANK_CARD",
"amount": "500.000000",
"destination": {
"card_number": "4242 4242 4242 4242"
},
"pin": "1234"
}
}
}
{
"data": {
"requestMarketplaceWithdrawal": {
"requestId": "0198f1e4-6359-76b8-8160-7440f4268fb8",
"withdrawalId": "0198f1e4-82c6-7c2f-a037-d2d9f92a98a5",
"reviewState": "PENDING",
"payoutState": "NOT_STARTED",
"fundsState": "RESERVED",
"sourceAmount": "500.000000",
"feeAmount": "12.500000",
"netSourceAmount": "487.500000",
"conversionRate": "90.000000",
"payoutAmount": "43875.000000",
"sourceCurrencyCode": "CREDITS",
"payoutCurrencyCode": "RUB",
"destinationPreview": "**** 4242"
}
}
}
Связанные типы
Полный справочник типов, состояний и курсорных соединений: Типы игровых аккаунтов и рынка.