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

Введение

API каталога позволяет настраивать каталог внутриигровых товаров на стороне Xsolla и отображать каталог пользователям в вашем игровом магазине.

API позволяет вам управлять такими сущностями каталога, как:

  • Виртуальные предметы — внутриигровые предметы, например оружие, скины, бустеры.
  • Виртуальная валюта — виртуальные деньги, которые используются для приобретения виртуальных товаров. Пакеты виртуальной валюты — предустановленные наборы виртуальной валюты.
  • Бандлы — комбинированные наборы виртуальных предметов, валюты или игровых ключей, продаваемые как единый артикул.
  • Игровые ключи — ключи для игр и DLC, распространяемые через такие платформы, как Steam, или других DRM-провайдеров.
  • Группы — логические группировки для организации и сортировки товаров в каталоге.

Методы API

Методы API делятся на следующие группы:

  • Admin — методы для создания, обновления, удаления и настройки товаров и групп каталога. Для вызова требуется базовая HTTP-аутентификация с использованием учетных данных Личного кабинета. Не предназначены для построения витрин для конечных пользователей.
  • Catalog — методы для получения товаров и построения витрин для конечных пользователей. Поддерживают опциональную аутентификацию с использованием JWT пользователя для возврата персонализированных данных, таких как пользовательские лимиты и активные промоакции.
Скачать описание OpenAPI
Языки
Серверы
https://store.xsolla.com/api/
Mock server
https://xsolla.redocly.app/_mock/ru/api/catalog/
Операции
Операции

Получение списка всех виртуальных предметовClient-side

Запрос

Gets a list of all virtual items for searching on client-side.

Attention

Returns only item SKU, name, groups and description

Note

The use of the item catalog API calls is available without authorization, but to get a personalized catalog, you must pass the user JWT in the Authorization header.
Безопасность
XsollaLoginUserJWT
Путь
project_idintegerобязательный

ID проекта. Вы можете найти этот параметр в Личном кабинете рядом с названием проекта.

Пример: 44056
Запрос
localestring

Язык ответа. Двухбуквенный код языка в нижнем регистре в соответствии с ISO 639-1.

По умолчанию "en"
promo_codestring[ 1 .. 128 ] characters

Уникальный код, чувствительный к регистру. Содержит буквы и цифры.

Пример: promo_code=WINTER2021
curl -i -X GET \
  'https://store.xsolla.com/api/v2/project/44056/items/virtual_items/all?locale=en&promo_code=WINTER2021' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Ответы

Список всех виртуальных предметов успешно получен.

Телоapplication/json
itemsArray of objects
Пример: [{"description":"Big Rocket - description","groups":[{"external_id":"accessory","name":{"en":"accessory"}}],"name":"Big Rocket","sku":"com.xsolla.big_rocket_1"},{"description":"description","groups":[{"external_id":"hair","name":{"en":"Hair"}}],"name":"SHOTGUN FOR TRUE RAIDERS","sku":"com.xsolla.shotgun_raider_1"},{"description":"description","groups":[],"name":"SHOTGUN FOR TRUE RAIDERS","sku":"com.xsolla.shotgun_raider_2"}]
Ответ
application/json
{ "items": [ {}, {}, {} ] }

Получение списка товаров по указанной группеClient-side

Запрос

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

Внимание

Все проекты имеют ограничение на количество товаров, которые вы можете получить в ответе. Значение по умолчанию и максимальное значение — 50 товаров на ответ. Чтобы получить больше данных постранично, используйте поля limit и offset.

Примечание

Без авторизации метод возвращает общие данные. Используйте авторизацию, чтобы получить персонализированные данные пользователя, такие как лимиты и акции.
Безопасность
XsollaLoginUserJWT
Путь
project_idintegerобязательный

ID проекта. Вы можете найти этот параметр в Личном кабинете рядом с названием проекта.

Пример: 44056
external_idstringобязательный

External ID группы.

По умолчанию "all"
Запрос
limitinteger>= 1

Лимит количества элементов на странице.

Пример: limit=50
offsetinteger>= 0

Номер элемента, с которого выполняется вывод на странице (нумерация ведется с 0).

Пример: offset=0
localestring

Язык ответа. Двухбуквенный код языка в нижнем регистре в соответствии с ISO 639-1.

По умолчанию "en"
additional_fields[]Array of strings

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

Элементы Перечисление"media_list""order""long_description""custom_attributes""item_order_in_group"
countrystring

Двухбуквенное обозначение страны в верхнем регистре согласно стандарту ISO 3166-1 alpha-2. Ознакомьтесь со списком стран, поддерживаемых Xsolla, а также с процессом определения страны.

Пример: country=US
promo_codestring[ 1 .. 128 ] characters

Уникальный код, чувствительный к регистру. Содержит буквы и цифры.

Пример: promo_code=WINTER2021
show_inactive_time_limited_itemsinteger

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

По умолчанию 0
Пример: show_inactive_time_limited_items=1
curl -i -X GET \
  'https://store.xsolla.com/api/v2/project/44056/items/virtual_items/group/{external_id}?limit=50&offset=0&locale=en&additional_fields%5B%5D=media_list&country=US&promo_code=WINTER2021&show_inactive_time_limited_items=1' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Ответы

Список предметов из указанной группы успешно получен.

Телоapplication/json
has_moreboolean(Pagination_has-more)

Используется как индикатор того, что остались еще страницы.

Пример: true
itemsArray of objects
Пример: [{"attributes":[{"external_id":"stack_size","name":"Stack size","values":[{"value":"5"}]}],"can_be_bought":true,"description":"Big Rocket - description","groups":[{"external_id":"weapons","name":"weapons"}],"image_url":"https://popmedia.blob.core.windows.net/popyourself/male/outfit/male_armor_white_a-01.png","is_free":false,"limits":{"per_item":null,"per_user":{"available":3,"limit_exceeded_visibility":"show","recurrent_schedule":{"interval_type":"weekly","reset_next_date":1746057600},"total":5}},"name":"Big Rocket","periods":[{"date_from":"2020-08-11T10:00:00+03:00","date_until":"2020-08-11T20:00:00+03:00"}],"price":{"amount":"100.99","amount_without_discount":"100.99","currency":"USD"},"promotions":[{"bonus":[{"image_url":"https://cdn.xsolla.net/img/misc/images/2fc5c491a47413a8e8000447889093c2.png","name":"Xsolla Minigun","quantity":1,"sku":"com.xsolla.minigun_1","type":"virtual_good"}],"date_end":"2026-04-15T16:16:00+03:00","date_start":"2020-04-15T16:16:00+03:00","discount":{"percent":"50.00"},"name":"Bonus promotion"}],"sku":"com.xsolla.big_rocket_1","type":"virtual_good","virtual_item_type":"non_renewing_subscription","virtual_prices":[{"amount":100,"amount_without_discount":100,"description":"description","image_url":"http://image.png","is_default":true,"name":"SHOTGUN FOR TRUE RAIDERS","sku":"com.xsolla.vc_1","type":"virtual_currency"}]},{"attributes":[{"external_id":"stack_size","name":"Stack size","values":[{"value":"5"}]},{"external_id":"rating","name":"Rating","values":[{"value":"3.9"}]},{"external_id":"genre","name":"Genre","values":[{"value":"Strategy"},{"value":"Tactical"},"Turn-based"]}],"can_be_bought":true,"description":"description","groups":[{"external_id":"weapons","name":{"en":"weapons"}}],"image_url":"http://image.png","is_free":false,"limits":null,"name":"SHOTGUN FOR TRUE RAIDERS","periods":[],"price":{"amount":"101.0","amount_without_discount":"101.0","currency":"USD"},"promotions":[],"sku":"com.xsolla.shotgun_raider","type":"virtual_good","virtual_item_type":"non_renewing_subscription","virtual_prices":[{"amount":100,"amount_without_discount":100,"description":"description","image_url":"http://image.png","is_default":true,"name":"SHOTGUN FOR TRUE RAIDERS","sku":"com.xsolla.vc_1","type":"virtual_currency"},{"amount":200,"amount_without_discount":200,"description":"description","image_url":"http://image.png","is_default":false,"name":"SHOTGUN FOR TRUE RAIDERS","sku":"com.xsolla.vc_2","type":"virtual_currency"}]}]
Ответ
application/json
{ "has_more": false, "items": [ {}, {} ] }

Получение виртуального предмета по артикулуClient-side

Запрос

Получает виртуальный предмет по артикулу для построения каталога.

Примечание

Без авторизации метод возвращает общие данные. Используйте авторизацию, чтобы получить персонализированные данные пользователя, такие как лимиты и акции.
Безопасность
XsollaLoginUserJWT
Путь
project_idintegerобязательный

ID проекта. Вы можете найти этот параметр в Личном кабинете рядом с названием проекта.

Пример: 44056
item_skustringобязательный

Артикул товара.

Пример: booster_mega_1
Запрос
localestring

Язык ответа. Двухбуквенный код языка в нижнем регистре в соответствии с ISO 639-1.

По умолчанию "en"
countrystring

Двухбуквенное обозначение страны в верхнем регистре согласно стандарту ISO 3166-1 alpha-2. Ознакомьтесь со списком стран, поддерживаемых Xsolla, а также с процессом определения страны.

Пример: country=US
show_inactive_time_limited_itemsinteger

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

По умолчанию 0
Пример: show_inactive_time_limited_items=1
additional_fields[]Array of strings

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

Элементы Перечисление"media_list""order""long_description""custom_attributes""item_order_in_group"
curl -i -X GET \
  'https://store.xsolla.com/api/v2/project/44056/items/virtual_items/sku/booster_mega_1?locale=en&country=US&show_inactive_time_limited_items=1&additional_fields%5B%5D=media_list' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Ответы

Виртуальный товар был успешно получен.

Телоapplication/json
attributesArray of objects(Virtual-Items-Currency_client-attributes)

Список атрибутов и их значений, соответствующих товару. Может использоваться для фильтрации каталога.

По умолчанию []
Пример: {"value":{"external_id":"genre","name":"Жанр","values":[{"external_id":"genre_e3364991f92e751689a68b96598a5a5a84010b85","value":"Casual"},{"external_id":"genre_eba07bfd0f982940773cba3744d97264dd58acd7","value":"Strategy"},{"external_id":"genre_b8d0c6d8f0524c2b2d79ebb93aa3cd0e8b5199a8","value":"Mobile"}]}}
can_be_boughtboolean(Can_be_bought)

Если true, пользователь может купить товар.

Пример: true
custom_attributesobject(json)(item-custom-attributes-response)

JSON-объект, содержащий атрибуты товара и их значения.

descriptionobject

Описание товара.

Пример: "Big Rocket - description"
groupsArray of objects(items_client_groups_response)

Группы, к которым принадлежит товар.

По умолчанию []
Пример: [{"external_id":"exclusive","name":"Exclusive"}]
image_urlstring

URL-адрес изображения.

Пример: "https://popmedia.blob.core.windows.net/popyourself/male/outfit/male_armor_white_a-01.png"
is_freeboolean(value-is_free)

Если true, товар бесплатный.

По умолчанию false
Пример: false
item_idnumber

ID предмета (артикул).

limitsobject or null(client-item-limit-response)

Ограничения на продажу товара.

nameobject

Название товара.

Пример: "Big Rocket"
periodsArray of objects(item-periods-response)

Период продажи товара.

priceobject or null

Цены на товар.

promotionsArray of objects(Catalog_item_promotions)

Примененные акции для отдельных товаров в корзине. Массив возвращается, если:

  • Скидочная акция настроена для отдельного товара.

  • Используется промокод с настройкой Скидка на выбранные товары.

Если акции на уровне отдельных товаров не применялись, возвращается пустой массив.

skustring

Уникальный ID товара. Артикул может содержать только строчные и заглавные латинские буквы, цифры, точки, тире и подчеркивания.

Пример: "big_rocket"
typestring

Тип товара: virtual_good/virtual_currency/bundle.

Пример: "virtual_good"
virtual_item_typestring

Тип виртуального предмета.

Перечисление ЗначениеОписание
consumable

Предмет исчезает из инвентаря после использования (например, патроны).

non_consumable

Предмет остается в инвентаре в течение неограниченного времени.

non_renewing_subscription

Предмет с ограниченным сроком действия, который может служить представлением доступа к сервисам или контенту в течение ограниченного периода времени.

Пример: "non-consumable"
virtual_pricesArray of objects

Виртуальные цены.

vp_rewardsArray of objects(client-item-value-point-reward)

Стоимость призовых баллов товара.

Ответ
application/json
{ "attributes": [ {} ], "can_be_bought": true, "custom_attributes": { "attr": "value", "purchased": 0 }, "description": { "en": "Honshu Boshin Wakizashi - Modern Tactical Samurai / Ninja Sword - Hand Forged 1060 Carbon Steel - Full Tang, Fully Functional, Battle Ready - Black TPR, Steel Guard and Pommel" }, "groups": [ {} ], "image_url": "https://cdn.xsolla.net/img/misc/images/8ab44fe99038a56de01950ba4a971b77.png", "is_free": false, "item_id": 488833, "limits": { "per_item": null, "per_user": {} }, "name": { "en": "Sword Xsolla Skin" }, "periods": [ {} ], "price": { "amount": "4.99", "amount_without_discount": "4.99", "currency": "USD" }, "promotions": [], "sku": "com.xsolla.swords_1", "type": "virtual_good", "virtual_item_type": "non_consumable", "virtual_prices": [], "vp_rewards": [] }
Операции
Операции
Операции
Операции
Операции
Операции

Корзина (на стороне клиента)

Операции

Корзина (на стороне сервера)

Операции

Оплата (на стороне клиента)

Операции

Оплата (на стороне сервера)

Операции
Операции
Операции
Операции
Операции
Операции
Операции
Операции

Catalog

Данный API позволяет получать продаваемые товары любого вида или конкретный товар.

Операции
Операции
Операции