SELLER API

API продавца — Gaming Goods

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

Base URL

Production
https://gaming-goods.ru/api/partner/v1

Все запросы продавца идут на этот базовый URL. Ответы возвращаются в формате JSON.

Аутентификация

API использует X-API-Key заголовок для аутентификации. Для получения ключа продавца напишите на business@gaming-goods.com. Каждый запрос должен содержать заголовок:

HTTP Header
X-API-Key: pk_live_xxxxxxxxxxxxxxxxxxxx

Концепции

Listing — собственный товар продавца с уникальным названием и описанием. Создаётся через POST /seller/products, проходит модерацию.

Offer — ключи к ЛЮБОМУ существующему товару маркетплейса (C2C). Несколько продавцов могут добавлять офферы к одному товару с разной ценой — выигрывает самый дешёвый.

delivery_type: AUTO — ключи загружаются заранее (массовая активация); MANUAL — продавец выдаёт ключ вручную после заказа.

Дашборд продавца

GET/seller/dashboard

Сводная статистика: товары, продажи, начисления.

Response
{
  "total_products": 42,
  "active_products": 38,
  "pending_products": 2,
  "total_sales": 1240,
  "pending_rewards": 24500,
  "available_rewards": 187600
}

Список своих товаров

GET/seller/products

Собственные товары продавца с пагинацией.

ПараметрТипОписание
limitintegerКоличество (по умолчанию 20, макс. 100)
offsetintegerСмещение для пагинации
Response
{
  "items": [
    {
      "id": "a1b2c3d4-...",
      "slug": "...",
      "title": "Cyberpunk 2077 Steam Key",
      "price": 19.99,
      "currency": "EUR",
      "stock_quantity": 12,
      "delivery_type": "AUTO",
      "moderation_status": "approved",
      "is_active": true,
      "stock_available": 12,
      "created_at": "2026-03-14T12:00:00Z"
    }
  ],
  "limit": 20,
  "offset": 0,
  "total": 42
}

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

POST/seller/products

Создаёт новый товар. delivery_type: AUTO (с массивом codes) или MANUAL. Цена в той же валюте, что currency. Товар уходит на модерацию.

Request Body
{
  "name": "Cyberpunk 2077 Steam Key",
  "description": "Открытый мир в жанре...",
  "category": "Game Keys",
  "brand": "CD Projekt",
  "price": 19.99,
  "currency": "EUR",
  "delivery_type": "AUTO",
  "image_url": "https://...",
  "codes": ["AAAA-BBBB-CCCC", "..."]
}
Response
{
  "product": {
    "id": "a1b2c3d4-...",
    "title": "Cyberpunk 2077 Steam Key",
    "price": 19.99,
    "currency": "EUR",
    "delivery_type": "AUTO",
    "moderation_status": "pending",
    "is_active": true
  }
}

Детали своего товара

GET/seller/products/{productId}

Полная информация о товаре. Возвращает 404 для чужих товаров.

Response
{
  "id": "a1b2c3d4-...",
  "title": "Cyberpunk 2077 Steam Key",
  "price": 19.99,
  "currency": "EUR",
  "stock_quantity": 12,
  "delivery_type": "AUTO",
  "moderation_status": "approved",
  "is_active": true,
  "stock_available": 12
}

Обновление товара

PUT/seller/products/{productId}

Обновляет поля (название, описание, цена, картинка). После значимых правок товар может уйти на повторную модерацию.

Request Body
{
  "name": "Cyberpunk 2077 Steam Key — RU",
  "price": 17.99,
  "image_url": "https://..."
}
Response
{
  "product": {
    "id": "a1b2c3d4-...",
    "title": "Cyberpunk 2077 Steam Key — RU",
    "price": 17.99,
    "moderation_status": "pending"
  }
}

Деактивация товара

POST/seller/products/{productId}/deactivate

Снимает товар с продажи (is_active = false). Восстановить можно через PUT.

Response
{
  "product": {
    "id": "a1b2c3d4-...",
    "is_active": false
  }
}

Загрузка ключей

POST/seller/products/{productId}/codes

Добавляет активационные ключи к собственному товару с delivery_type = AUTO. Не работает для MANUAL и не для чужих товаров.

Request Body
{
  "codes": [
    "AAAA-BBBB-CCCC-DDDD",
    "EEEE-FFFF-GGGG-HHHH"
  ]
}
Response
{
  "uploaded": 2,
  "stock_available": 14
}

Добавление офферов

POST/seller/offers

Добавляет ключи к ЛЮБОМУ существующему товару маркетплейса (C2C). Несколько продавцов могут офферить одну позицию с разной ценой — выигрывает самый дешёвый. price_cents в евроцентах.

Request Body
{
  "product_id": "a1b2c3d4-...",
  "price_cents": 1799,
  "codes": ["AAAA-BBBB-CCCC", "EEEE-FFFF-GGGG"]
}
Response
{
  "added": 2
}

Список своих офферов

GET/seller/offers

Возвращает офферы продавца с пагинацией.

ПараметрТипОписание
pageintegerНомер страницы
page_sizeintegerКоличество на странице (макс. 100)
Response
{
  "offers": [
    {
      "product_id": "a1b2c3d4-...",
      "price_cents": 1799,
      "available": 12,
      "sold": 4
    }
  ],
  "total": 18,
  "page": 1,
  "page_size": 20
}

Обновление цены оффера

PATCH/seller/offers/{productId}/price

Меняет цену для всех собственных непроданных офферов товара с указанной старой цены.

Request Body
{
  "old_price_cents": 1799,
  "new_price_cents": 1699
}
Response
{
  "updated": 12
}

Удаление офферов

DELETE/seller/offers/{productId}

Удаляет все собственные непроданные офферы по товару. Проданные оффера остаются.

Response
{
  "deleted": 12
}

Формат ошибок

Ошибки возвращаются с HTTP-кодом и единым телом. Поле code — машиночитаемый идентификатор, message — описание для разработчика.

Error Response
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "price must be positive"
  }
}
400VALIDATION_ERROR — некорректные параметры или тело запроса
401UNAUTHORIZED — отсутствует или невалидный X-API-Key
404NOT_FOUND — товар не найден или принадлежит другому продавцу
422BUSINESS_RULE_VIOLATION — нарушение правил (например, дубликат кода)
429Too Many Requests — превышен лимит 100 req/min
503SERVICE_UNAVAILABLE — Seller API временно недоступен

Получить ключ продавца

Напишите нам, чтобы оформить продавца и получить X-API-Key.