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

Управление товарами

Товары (Items) - это предметы, доступные для покупки в магазинах вашей игры или приложения.

Создание товара

POST /api/v1/items

Создает новый товар в каталоге магазина.

Требуется авторизация: x-account-key

Запрос

POST /api/v1/items HTTP/1.1
Host: API_HOST
x-account-key: YOUR_ACCOUNT_KEY
Content-Type: application/json

{
"store_id": "store_xyz789",
"name": "gems_100",
"display_name": "100 Gems Pack",
"description": "Набор из 100 кристаллов",
"price": "499",
"type": "consumable",
"meta": {
"gems_amount": 100,
"bonus_gems": 10,
"category": "currency"
}
}

Параметры запроса

ПараметрТипОбязательныйОписание
store_idstringДаID магазина
namestringДаУникальное имя товара (SKU)
display_namestringДаОтображаемое название товара
descriptionstringНетОписание товара
pricestringДаЦена в минимальных единицах валюты (копейки/центы)
typestringДаТип товара
metaobjectНетДополнительные метаданные

Успешный ответ (200 OK)

{
"id": "item_abc123",
"name": "gems_100",
"display_name": "100 Gems Pack",
"description": "Набор из 100 кристаллов"
}

Параметры ответа

ПараметрТипОписание
idstringУникальный идентификатор товара
namestringИмя товара (SKU)
display_namestringОтображаемое название
descriptionstringОписание товара

Возможные ошибки

  • 400 Bad Request - неверные параметры запроса
  • 401 Unauthorized - неверный или отсутствующий x-account-key
  • 500 Internal Server Error - внутренняя ошибка сервера

Получение списка товаров

GET /api/v1/items

Получает все товары магазина.

Требуется авторизация: Bearer токен

Запрос

GET /api/v1/items?store_id=store_xyz789 HTTP/1.1
Host: API_HOST
Authorization: Bearer YOUR_ACCESS_TOKEN
Content-Type: application/json

Параметры запроса

ПараметрТипОбязательныйОписание
store_idstringДаID магазина

Успешный ответ (200 OK)

{
"items": [
{
"id": "item_abc123",
"name": "gems_100",
"display_name": "100 Gems Pack",
"description": "Набор из 100 кристаллов",
"price": 499,
"type": "consumable",
"store_id": "store_xyz789",
"metadata": {
"gems_amount": 100,
"bonus_gems": 10
}
},
{
"id": "item_def456",
"name": "gems_500",
"display_name": "500 Gems Pack",
"description": "Большой набор кристаллов",
"price": 1999,
"type": "consumable",
"store_id": "store_xyz789",
"metadata": {
"gems_amount": 500,
"bonus_gems": 100
}
}
]
}

Параметры ответа

ПараметрТипОписание
itemsarrayМассив товаров

ItemDto

ПараметрТипОписание
idstringУникальный идентификатор товара
namestringИмя товара (SKU)
display_namestringОтображаемое название
descriptionstringОписание товара
priceintegerЦена в минимальных единицах валюты
typestringТип товара
store_idstringID магазина
metadataobjectДополнительные метаданные

Возможные ошибки

  • 400 Bad Request - неверные параметры запроса
  • 401 Unauthorized - неверный или отсутствующий токен
  • 500 Internal Server Error - внутренняя ошибка сервера

Получение товара по ID

GET /api/v1/items/{item_id}

Получает детальную информацию о конкретном товаре.

Требуется авторизация: Bearer токен

Запрос

GET /api/v1/items/item_abc123 HTTP/1.1
Host: API_HOST
Authorization: Bearer YOUR_ACCESS_TOKEN
Content-Type: application/json

Параметры пути

ПараметрТипОписание
item_idstringID товара

Успешный ответ (200 OK)

{
"id": "item_abc123",
"name": "gems_100",
"display_name": "100 Gems Pack",
"description": "Набор из 100 кристаллов",
"price": 499,
"type": "consumable",
"store_id": "store_xyz789",
"metadata": {
"gems_amount": 100,
"bonus_gems": 10,
"category": "currency"
}
}

Возможные ошибки

  • 400 Bad Request - неверные параметры запроса
  • 401 Unauthorized - неверный или отсутствующий токен
  • 404 Not Found - товар не найден

Типы товаров

ТипОписание
consumableРасходуемый товар (валюта, зелья)
non_consumableПостоянный товар (скин, разблокировка)
subscriptionПодписка

Цена товара

Цена указывается в минимальных единицах валюты:

ВалютаПримерЗначение
USD$4.99"499"
EUR4.99"499"
RUB499"49900"
{
"price": "499" // $4.99 или 4.99
}

Имя товара (name/SKU)

Поле name используется как уникальный идентификатор товара в вашей системе (SKU).

Примеры хороших имен

// Валюта
'gems_100' // 100 кристаллов
'gems_500' // 500 кристаллов
'coins_1000' // 1000 монет

// Подписки
'sub_monthly' // Месячная подписка
'sub_yearly' // Годовая подписка

// Предметы
'sword_legendary' // Легендарный меч
'armor_epic_chest' // Эпическая броня

// Наборы
'starter_pack' // Стартовый набор
'battle_pass_s1' // Боевой пропуск сезон 1

Правила для имен

  • Используйте только латинские буквы, цифры и подчеркивания
  • Делайте их понятными и описательными
  • Используйте единый стиль именования
  • Имя должно быть уникальным в рамках магазина
  • Избегайте специальных символов и пробелов

Метаданные (meta)

Поле meta позволяет хранить любую дополнительную информацию о товаре:

Примеры использования

// Валюта
{
"meta": {
"gems_amount": 100,
"bonus_gems": 10,
"category": "currency",
"popular": true
}
}

// Предмет
{
"meta": {
"item_type": "weapon",
"rarity": "legendary",
"level_required": 50,
"stats": {
"damage": 150,
"critical_chance": 0.25
}
}
}

// Подписка
{
"meta": {
"duration_days": 30,
"benefits": [
"no_ads",
"daily_bonus",
"exclusive_items"
]
}
}

Массовый импорт покупок

Если вам нужно загрузить большое количество покупок сразу, используйте эндпоинт импорта. Запрос принимает CSV файл и идентификатор магазина через multipart/form-data.

Требуется авторизация: Bearer токен

curl --location 'https://API_HOST/api/v1/purchases/import' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer ••••••' \
--form 'file=@"/path/to/file"' \
--form 'store_id="your_store_id"'

Параметры запроса (form-data)

ПараметрТипОбязательныйОписание
filefileДаФайл с данными покупок
store_idstringДаID магазина

Успешный ответ (200 OK)

{
"ok": true
}

Связанные разделы