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

Каталог и остатки

JSON API для каталога наличия: товары, категории, пакетное обновление остатков и цен. Ключ связи с вашей системой — external_id.

Это не импорт файла в модуль «Прайс-листы». Файл прайса: Прайс-листы.

Базовый префикс: /api/integrations/v1
Цены при записи — в копейках. Обозначения: Структура и обозначения.

Подходит для ERP / склада / учётной системы, которая выгружает номенклатуру и остатки в магазин.


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

GET /productsproducts.read

Query: since, per_page, cursor, external_id, article.

Snapshot (то же для GET /products/{id}):

json
{
  "id": 100,
  "external_id": "prod-1",
  "name": "Колодки BOSCH",
  "article": "0986AB1234",
  "brand_id": 12,
  "brand": "BOSCH",
  "slug": "kolodki-bosch",
  "is_active": true,
  "description": null,
  "image_source_mode": "download",
  "images": [
    { "url": "https://…/photo1.jpg", "is_main": true, "sort_order": 1 }
  ],
  "images_count": 1,
  "has_images": true,
  "updated_at": "2026-07-10T10:00:00+03:00"
}

Перед upsert сначала читайте товар по external_id или id: если has_images: true, блок images в batch можно не передавать — существующие фото не затираются.

bash
curl -sS "https://ВАШ_ДОМЕН/api/integrations/v1/products?external_id=prod-1" \
 -H "Authorization: Bearer pp_abc123:ВАШ_СЕКРЕТ" \
 -H "Accept: application/json"
bash
curl -sS "https://ВАШ_ДОМЕН/api/integrations/v1/products/100" \
 -H "Authorization: Bearer pp_abc123:ВАШ_СЕКРЕТ" \
 -H "Accept: application/json"

Batch: категории

Upsert

POST /categories/batch-upsertcategories.write

Тело: массив категорий или { "categories": [ ... ] }.

ПолеОбяз.Описание
external_idдаВнешний id категории
nameдаНазвание
parent_external_idнетРодитель
description / slug / sort_order / is_active / image_urlнетПрочее

200: { "processed", "created", "updated", "errors": [{ "external_id", "message" }] }

Удаление (деактивация)

POST /categories/deletecategories.delete Тело: { "external_ids": ["cat-1", "cat-2"] }200: { "requested", "deactivated", "not_found": [] }


Batch: товары

Upsert

POST /products/batch-upsertproducts.write

Тело: массив или { "products": [ ... ] }.

ПолеОбяз.Описание
external_idдаВнешний id товара
nameдаНазвание
brandнетБренд (создастся при необходимости)
articleнетАртикул
category_external_id / category_external_idsнетКатегории
replace_categoriesнетЗаменить набор категорий
description_short / description_fullнетОписания
slug / sort_order / is_activeнетСлужебные
attributes[]нетАтрибуты (name обязателен вместе с блоком); у атрибута можно external_id, group_external_id
replace_attributesнетЗаменить атрибуты
images[]нет{ "url", "sort_order?", "is_main?" }

200: { "processed", "created", "updated", "errors": [...] }

bash
curl -sS -X POST "https://ВАШ_ДОМЕН/api/integrations/v1/products/batch-upsert" \
 -H "Authorization: Bearer pp_abc123:ВАШ_СЕКРЕТ" \
 -H "Content-Type: application/json" \
 -d '{
 "products": [
 {
 "external_id": "prod-1",
 "name": "Колодки BOSCH",
 "brand": "BOSCH",
 "article": "0986AB1234",
 "category_external_id": "cat-brakes",
 "is_active": true
 }
 ]
 }'
json
{
 "processed": 1,
 "created": 1,
 "updated": 0,
 "errors": []
}

Удаление (soft-delete)

POST /products/deleteproducts.delete Тело: { "external_ids": ["prod-1"] }200: { "requested", "deactivated", "not_found": [] }


Остатки и цены

POST /stocks/batch-updatestocks.write

Тело: массив или объект:

json
{
 "storage_id": 1,
 "pick_up_point_id": 1,
 "stocks": [
 {
 "product_external_id": "prod-1",
 "quantity": 10,
 "selling_price": 150000,
 "purchase_price": 100000,
 "old_price": 170000,
 "delivery_days": 2
 }
 ]
}
ПолеОбяз.Описание
stocks.*.product_external_idдаИщет товар по внешнему id
stocks.*.quantityдаОстаток ≥ 0
stocks.*.purchase_price / selling_price / old_priceнетКопейки
stocks.*.supply_date / delivery_daysнетПоставка
storage_id / pick_up_point_idусловноВ теле или в настройках API; оба должны быть известны, иначе 422

Ненайденный товар попадает в errors, HTTP при этом обычно остаётся 200.

bash
curl -sS -X POST "https://ВАШ_ДОМЕН/api/integrations/v1/stocks/batch-update" \
 -H "Authorization: Bearer pp_abc123:ВАШ_СЕКРЕТ" \
 -H "Content-Type: application/json" \
 -d '{
 "storage_id": 1,
 "pick_up_point_id": 1,
 "stocks": [
 {
 "product_external_id": "prod-1",
 "quantity": 10,
 "selling_price": 150000,
 "purchase_price": 100000
 }
 ]
 }'
json
{
 "processed": 1,
 "updated": 1,
 "errors": []
}

Дальше

База знаний для EMS-платформы PlatParts.