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

Игровой рынок

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_CONFLICTrequestId уже использован с другим payload.
MARKETPLACE_OPERATION_IN_PROGRESSТа же операция уже выполняется.
MARKETPLACE_OPERATION_RECOVERY_REQUIREDРезультат внешнего действия требует проверки оператором.
MARKETPLACE_ITEM_NOT_FOUNDПредмет или запись его распарсенного каталога отсутствует.
MARKETPLACE_OFFER_UNAVAILABLEПредложение закончилось, зарезервировано или снято.
MARKETPLACE_INSUFFICIENT_BALANCEНедостаточно средств в выбранном источнике.
MARKETPLACE_INVALID_PINPIN-код не прошёл проверку.
MARKETPLACE_RATE_LIMIT_EXCEEDEDПревышен лимит запросов операции.

Конфигурация​

QuerydocumentId: marketplaceConfigurationauth: public

marketplaceConfiguration​

Возвращает опубликованную конфигурацию рынка конкретного игрового сервера: валюту, разделы, правила объявлений, источники оплаты, уровни продавца, переводы и способы вывода.

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

Результат: MarketplaceConfiguration.

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

Обзор​

QuerydocumentId: marketplaceOverviewauth: public

marketplaceOverview​

Возвращает разделы с числом доступных предложений и последние опубликованные предложения.

ПолеТипОбязательноеОписание
gameServerIdInt!✓Игровой сервер проекта.
firstInt-Число последних предложений, по умолчанию 12.

Результат: MarketplaceOverview!.

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

Каталог​

QuerydocumentId: marketplaceCatalogauth: public

marketplaceCatalog​

Курсорная выдача опубликованных предложений с фильтрами.

Поле inputТипОписание
sectionCodeStringКод раздела.
searchStringИмя предмета, персонажа или точный ID предмета.
minimumPrice / maximumPriceStringДиапазон точной цены.
minimumEnchantLevelIntМинимальная заточка.
gradeCodeStringКод грейда.
firstIntРазмер страницы, по умолчанию 24.
afterStringНепрозрачный курсор следующей страницы.

Результат: MarketplaceCatalogConnection!.

Запрос
documentId: marketplaceCatalog
{
"documentId": "marketplaceCatalog",
"variables": {
"gameServerId": 1,
"input": {
"sectionCode": "weapons",
"search": "Forgotten",
"minimumPrice": "100.000000",
"maximumPrice": "500.000000",
"minimumEnchantLevel": 3,
"gradeCode": "S80",
"first": 24,
"after": null
}
}
}
Ответ
200 OK
{
"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
}
}
}

Объявление​

QuerydocumentId: marketplaceListingauth: public

marketplaceListing​

Возвращает одно опубликованное объявление, его предложения и состав каждого предложения.

ПолеТипОбязательное
gameServerIdInt!✓
listingIdID!✓

Результат: MarketplaceListing!.

Запрос
documentId: marketplaceListing
{
"documentId": "marketplaceListing",
"variables": {
"gameServerId": 1,
"listingId": "0198f1bd-f4f9-770a-8f5d-5bdf9d3cc220"
}
}
Ответ
200 OK
{
"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"
}
}
}

Состояние игрока​

QuerydocumentId: marketplaceViewerauth: Bearer session

marketplaceViewer​

Единый источник доступности действий, ограничений, уровня продавца, рыночных кошельков и личной статистики. Операция использует выбранный сервер из сессии.

Результат: MarketplaceViewer!.

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

Объявления продавца​

QuerydocumentId: marketplaceSellerListingsauth: Bearer session

marketplaceSellerListings​

Курсорная история объявлений текущего игрока.

Поле inputТипОписание
publicationStates[MarketplaceListingPublicationState!]Фильтр публикации.
moderationStates[MarketplaceListingModerationState!]Фильтр модерации.
saleModes[MarketplaceListingSaleMode!]Режим продажи.
first / afterInt / StringКурсорная страница.

Результат: MarketplaceSellerListingConnection!.

Запрос
documentId: marketplaceSellerListings
{
"documentId": "marketplaceSellerListings",
"variables": {
"input": {
"publicationStates": [
"PUBLISHED"
],
"first": 20,
"after": null
}
}
}
Ответ
200 OK
{
"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
}
}
}
}

Заказы​

QuerydocumentId: marketplaceOrdersauth: Bearer session

marketplaceOrders​

История покупок и продаж с независимыми состояниями оплаты, доставки и зачисления продавцу.

Поле inputТипОписание
roleMarketplaceOrderRoleALL, BUYER или SELLER.
outcomes[MarketplaceOrderOutcome!]OPEN, COMPLETED, CANCELLED.
first / afterInt / StringКурсорная страница.

Результат: MarketplaceOrderConnection!.

Запрос
documentId: marketplaceOrders
{
"documentId": "marketplaceOrders",
"variables": {
"input": {
"role": "BUYER",
"outcomes": [
"COMPLETED"
],
"first": 20
}
}
}
Ответ
200 OK
{
"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
}
}
}
}

Журнал кошелька​

QuerydocumentId: marketplaceWalletEntriesauth: Bearer session

marketplaceWalletEntries​

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

Поле inputТипОписание
currencyCodeStringВалюта кошелька.
types[MarketplaceWalletEntryType!]Типы проводок.
first / afterInt / StringКурсорная страница.

Результат: MarketplaceWalletEntryConnection!.

Запрос
documentId: marketplaceWalletEntries
{
"documentId": "marketplaceWalletEntries",
"variables": {
"input": {
"currencyCode": "CREDITS",
"types": [
"SALE_CREDIT"
],
"first": 20
}
}
}
Ответ
200 OK
{
"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
}
}
}
}

Переводы на основной баланс​

QuerydocumentId: marketplaceBalanceTransfersauth: Bearer session

marketplaceBalanceTransfers​

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

Поле inputТипОписание
currencyCodeStringВалюта.
states[MarketplaceBalanceTransferState!]Состояния перевода.
first / afterInt / StringКурсорная страница.
Запрос
documentId: marketplaceBalanceTransfers
{
"documentId": "marketplaceBalanceTransfers",
"variables": {
"input": {
"states": [
"COMPLETED"
],
"first": 20
}
}
}
Ответ
200 OK
{
"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
}
}
}
}
QuerydocumentId: marketplaceBalanceTransferauth: Bearer session

marketplaceBalanceTransfer​

Возвращает один принадлежащий текущему игроку перевод.

ПолеТипОбязательное
idID!✓

Результат: MarketplaceBalanceTransfer.

Запрос
documentId: marketplaceBalanceTransfer
{
"documentId": "marketplaceBalanceTransfer",
"variables": {
"id": "0198f1cc-34ec-7894-9957-05637d388ced"
}
}
Ответ
200 OK
{
"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"
}
}
}

Заявки на вывод​

QuerydocumentId: marketplaceWithdrawalsauth: Bearer session

marketplaceWithdrawals​

Курсорная история заявок текущего игрока.

Поле inputТипОписание
methodCodeStringСпособ вывода.
reviewStates[MarketplaceWithdrawalReviewState!]Проверка заявки.
payoutStates[MarketplaceWithdrawalPayoutState!]Выплата.
fundsStates[MarketplaceWithdrawalFundsState!]Состояние средств.
first / afterInt / StringКурсорная страница.
Запрос
documentId: marketplaceWithdrawals
{
"documentId": "marketplaceWithdrawals",
"variables": {
"input": {
"methodCode": "BANK_CARD",
"reviewStates": [
"APPROVED"
],
"first": 20
}
}
}
Ответ
200 OK
{
"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
}
}
}
}
QuerydocumentId: marketplaceWithdrawalauth: Bearer session

marketplaceWithdrawal​

Возвращает одну принадлежащую текущему игроку заявку.

ПолеТипОбязательное
idID!✓

Результат: MarketplaceWithdrawal.

Запрос
documentId: marketplaceWithdrawal
{
"documentId": "marketplaceWithdrawal",
"variables": {
"id": "0198f1d2-b2a8-74db-aef4-d443f1b45dc5"
}
}
Ответ
200 OK
{
"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"
}
}
}

Создание объявления с предметами​

MutationdocumentId: createMarketplaceItemListingauth: Bearer session

createMarketplaceItemListing​

Создаёт объявление и удерживает выбранные предметы до покупки либо снятия объявления.

Поле inputТипОбязательное
requestIdID!✓
sectionCodeString!✓
saleModeMarketplaceItemSaleMode!✓
accountLogin / characterNameString!✓
title / descriptionString-
assets[MarketplaceItemListingAssetInput!]!✓
assets[].objectIdString!✓
assets[].quantity / unitPriceString!✓
pinString-
termsAcceptedBoolean!✓
Запрос
documentId: createMarketplaceItemListing
{
"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
}
}
}
Ответ
200 OK
{
"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"
]
}
}
}

Создание объявления с персонажем​

MutationdocumentId: createMarketplaceCharacterListingauth: Bearer session

createMarketplaceCharacterListing​

Создаёт объявление о продаже персонажа с его инвентарём и удерживает персонажа до покупки либо снятия объявления.

Поле inputТипОбязательное
requestIdID!✓
sectionCodeString!✓
accountLogin / characterNameString!✓
unitPriceString!✓
title / description / pinString-
termsAcceptedBoolean!✓
Запрос
documentId: createMarketplaceCharacterListing
{
"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
}
}
}
Ответ
200 OK
{
"data": {
"createMarketplaceCharacterListing": {
"requestId": "0198f1dc-0efd-7ff9-9af7-7ec2bc130f1c",
"listingId": "0198f1dc-2ea6-7cb4-8275-b7f190e58f71",
"publicationState": "UNPUBLISHED",
"moderationState": "PENDING",
"offerIds": [
"0198f1dc-2eee-7a34-b9b0-a5254ce2a270"
]
}
}
}

Покупка​

MutationdocumentId: purchaseMarketplaceOfferauth: Bearer session

purchaseMarketplaceOffer​

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

Поле inputТипОбязательное
requestIdID!✓
offerIdID!✓
unitsString!✓
paymentSourceMarketplacePaymentSource!✓
accountLoginString!✓
characterName / pinString-
Запрос
documentId: purchaseMarketplaceOffer
{
"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"
}
}
}
Ответ
200 OK
{
"data": {
"purchaseMarketplaceOffer": {
"requestId": "0198f1de-33d7-7db8-ac96-0f10ff51bbdb",
"orderId": "0198f1de-5192-76af-8d45-75f4b9733ca4",
"outcome": "COMPLETED",
"paymentState": "CAPTURED",
"settlementState": "POSTED"
}
}
}

Снятие объявления​

MutationdocumentId: cancelMarketplaceListingauth: Bearer session

cancelMarketplaceListing​

Завершает принадлежащее игроку объявление и возвращает все не проданные активы.

Запрос
documentId: cancelMarketplaceListing
{
"documentId": "cancelMarketplaceListing",
"variables": {
"input": {
"requestId": "0198f1e0-88ad-7752-bf90-7c3052971548",
"listingId": "0198f1da-a147-7943-a3c5-0549e22aedc6",
"pin": "1234"
}
}
}
Ответ
200 OK
{
"data": {
"cancelMarketplaceListing": {
"requestId": "0198f1e0-88ad-7752-bf90-7c3052971548",
"listingId": "0198f1da-a147-7943-a3c5-0549e22aedc6",
"publicationState": "ENDED",
"endedReason": "WITHDRAWN_BY_SELLER",
"returnedAssetCount": 1,
"returnedQuantity": "500000"
}
}
}

Перевод рыночного баланса​

MutationdocumentId: transferMarketplaceBalanceauth: Bearer session

transferMarketplaceBalance​

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

Запрос
documentId: transferMarketplaceBalance
{
"documentId": "transferMarketplaceBalance",
"variables": {
"input": {
"requestId": "0198f1e2-6ef3-7666-99fd-4569bcd13aeb",
"amount": "100.000000",
"pin": "1234"
}
}
}
Ответ
200 OK
{
"data": {
"transferMarketplaceBalance": {
"requestId": "0198f1e2-6ef3-7666-99fd-4569bcd13aeb",
"transferId": "0198f1e2-8e01-7382-9f5b-72953f80d18a",
"state": "COMPLETED",
"amount": "100.000000",
"currencyCode": "CREDITS"
}
}
}

Создание заявки на вывод​

MutationdocumentId: requestMarketplaceWithdrawalauth: Bearer session

requestMarketplaceWithdrawal​

Рассчитывает комиссию и курс для выбранного способа, резервирует средства и создаёт заявку на проверку.

Поле inputТипОбязательное
requestIdID!✓
methodCodeString!✓
amountString!✓
destinationJSON!✓
pinString-

destination должен содержать только поля, опубликованные в marketplaceConfiguration.withdrawals.methods[].destinationFields.

Запрос
documentId: requestMarketplaceWithdrawal
{
"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"
}
}
}
Ответ
200 OK
{
"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"
}
}
}

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

Полный справочник типов, состояний и курсорных соединений: Типы игровых аккаунтов и рынка.