Перейти до основного вмісту

Товари через API

API товарів дозволяє читати, створювати, оновлювати й видаляти товари, послуги, комплекти та продукцію. Через цей ресурс інтеграції синхронізують каталог, ціни, ознаки товару, додаткові поля, модифікації та базові складські показники.

Повʼязані інструкції:

Endpoint-и

МетодEndpointПризначення
GET/v1/productsотримати список товарів
POST/v1/productsстворити товар
GET/v1/products/:idотримати один товар
PUT/v1/products/:idоновити товар
DELETE/v1/products/:idвидалити товар

Отримання списку товарів

GET /v1/products підтримує:

ПараметрПризначення
offsetСторінка або зміщення списку.
limitКількість записів. За замовчуванням 100, максимум 1000.
queryПошук за назвою, кодом або SKU.
producer_idФільтр за виробником.
product_typeФільтр за типом товару.
category_idФільтр за категорією.
archiveПоказувати архівні товари.
updated_fromОновлено від.
updated_toОновлено до.
extendedДодати залишки, резерви й очікування.
with_imagesДодати світлини.
with_custom_fieldsДодати додаткові поля.
stock_idСклад для розрахунку показників у extended.

Доступні значення product_type:

  • goods;
  • kit;
  • service;
  • product.

Отримання одного товару

GET /v1/products/:id повертає один товар за внутрішнім ID Skynum.

Для картки товару також можна використовувати параметри extended, with_images і with_custom_fields, якщо інтеграції потрібні залишки, світлини або додаткові поля.

Поля у відповіді

ПолеЩо означає
idВнутрішній ID товару.
titleНазва товару.
codeКод товару.
skuАртикул.
product_typeТип товару.
discount_disabledЧи заборонені знижки для товару.
barcode_accountingЧи ведеться облік модифікацій.
datevalid_accountingЧи ведеться облік термінів придатності.
serial_accountingЧи ведеться облік серійних номерів.
contragent_idКонтрагент, привʼязаний до товару.
noveltyОзнака новинки.
visible_in_shopВидимість в інтернет-магазині.
shopwire_statusСтатус товару для інтеграцій інтернет-магазинів.
top_salesОзнака топ-продажу.
available_in_skyposДоступність у Skynum.Каса.
availability_in_shopДоступність в інтернет-магазині.
archiveЧи товар в архіві.
international_codeМіжнародний код товару.
category_idID категорії.
category_titleНазва категорії.
kingroup_idID спорідненої групи.
kingroup_codeКод спорідненої групи.
kingroup_titleНазва спорідненої групи.
measure_idID одиниці виміру.
measure_titleНазва одиниці виміру.
producer_idID виробника.
producer_titleНазва виробника.
nds_rateСтавка ПДВ.
warranty_periodГарантійний термін.
multiplicityКратність продажу або відвантаження.
min_shop_quantityМінімальна кількість для інтернет-магазину.
price_minМінімальна ціна.
price_supplyПрихідна ціна.
price_retailРоздрібна ціна.
price_wholesaleГуртова ціна.
price_promoПерекреслена ціна.
custom_pricesДодаткові ціни товару.
modificationsМодифікації, якщо товар ведеться з модифікаціями.
archivated_atДата архівації.
descriptionОпис товару мовою за замовчуванням.
short_descriptionКороткий опис мовою за замовчуванням.
market_descriptionОпис для маркетплейсів мовою за замовчуванням.
imagesСвітлини, якщо передано with_images=true.
custom_fieldsДодаткові поля, якщо передано with_custom_fields=true.
remainsЗалишок, якщо передано extended=true.
reserveРезерв, якщо передано extended=true.
waitingОчікування, якщо передано extended=true.
title_{language}Назва товару вторинною мовою, якщо в компанії ввімкнена багатомовність.
description_{language}Опис вторинною мовою, якщо в компанії ввімкнена багатомовність.
short_description_{language}Короткий опис вторинною мовою, якщо в компанії ввімкнена багатомовність.
market_description_{language}Опис для маркетплейсів вторинною мовою, якщо в компанії ввімкнена багатомовність.
created_atДата створення.
updated_atДата оновлення.

Створення товару

Для створення товару потрібен обʼєкт product. Обовʼязкове поле - title.

{
"product": {
"title": "Кросівки чоловічі",
"code": "10001",
"sku": "SHOES-10001",
"category_id": "category-id",
"measure_id": "measure-id",
"price_retail": 2500,
"price_supply": 1500
}
}

Якщо measure_id не передати, код API встановлює одиницю виміру за замовчуванням із налаштувань компанії.

Поля для запису

API приймає такі основні поля товару:

ПолеПризначення
titleНазва товару.
codeКод товару.
skuАртикул.
category_idКатегорія товару. У внутрішній моделі це group_id.
measure_idОдиниця виміру.
producer_idВиробник.
kingroup_idСпоріднена група.
contragent_idКонтрагент, якщо товар привʼязується до постачальника або іншого контрагента.
weightedОзнака вагового товару.
visible_in_shopВидимість в інтернет-магазині.
shopwire_statusСтатус товару для інтеграцій інтернет-магазинів.
available_in_skyposДоступність у Skynum.Каса.
availability_in_shopДоступність в інтернет-магазині.
discount_disabledЗаборонити знижки для товару.
noveltyНовинка.
top_salesТоп продажів.
nds_rateСтавка ПДВ.
warranty_periodГарантійний термін.
multiplicityКратність продажу або відвантаження.
min_shop_quantityМінімальна кількість для інтернет-магазину.
datevalid_accountingОблік термінів придатності.
serial_accountingОблік серійних номерів.
archivated_atДата архівації.
price_minЦіна мінімум.
price_supplyЦіна прихідна.
price_retailЦіна роздрібна.
price_wholesaleЦіна гуртова.
price_oldЦіна перекреслена для запису через API.
custom_pricesДодаткові ціни.
custom_fieldsДодаткові поля.

Системні ціни

Для запису підтримуються системні ціни:

Поле APIЦіна в Skynum
price_supplyЦіна прихідна
price_retailЦіна роздрібна
price_wholesaleЦіна гуртова
price_minЦіна мінімум
price_oldЦіна перекреслена

У відповіді API перекреслена ціна повертається як price_promo, тому що це технічна назва поля в моделі.

інформація

Додаткові ціни не є системними. Їх передають у custom_prices, де ключем є ID додаткової ціни, а значенням - ціна товару.

Додаткові ціни

Приклад custom_prices:

{
"product": {
"custom_prices": {
"custom-price-id": 2300
}
}
}

Список додаткових цін можна отримати через Додаткові ціни через API.

Додаткові поля

Додаткові поля передаються у custom_fields.

{
"product": {
"custom_fields": {
"field-id-1": "Значення",
"field-id-2": true,
"field-id-3": 15
}
}
}

Для значень власних довідників використовуйте Власні довідники через API.

Модифікації у відповіді

Якщо для товару ввімкнений облік модифікацій, у відповіді може бути масив modifications.

Поля модифікації у відповіді:

ПолеЩо означає
idID модифікації.
titleНазва модифікації.
visible_in_shopВидимість модифікації в інтернет-магазині.
shopwire_statusСтатус модифікації для інтеграцій інтернет-магазинів.
use_pricesЧи використовує модифікація власні ціни.
codeКод модифікації.
skuАртикул модифікації.
price_minМінімальна ціна.
price_supplyПрихідна ціна.
price_retailРоздрібна ціна.
price_wholesaleГуртова ціна.
custom_pricesДодаткові ціни.
imagesСвітлини, якщо передано with_images=true.
remainsЗалишок, якщо передано extended=true.
reserveРезерв, якщо передано extended=true.
waitingОчікування, якщо передано extended=true.
created_atДата створення.
updated_atДата оновлення.
попередження

Якщо зовнішня система продає або резервує товари з модифікаціями, у документах потрібно передавати не тільки товар, а й конкретну модифікацію.

Залишки в товарному ресурсі

Параметр extended=true додає:

  • remains;
  • reserve;
  • waiting.

stock_id уточнює, по якому складу рахувати ці показники.

попередження

Зміна залишків, резервів або очікувань не означає, що товар потрапить у вибірку updated_from. Для регулярної синхронізації кількості використовуйте Звіти через API.

Світлини

Параметр with_images=true додає до відповіді масив URL світлин товару або модифікації.

API товарів читає світлини, але в поточних полях запису товару немає окремого сценарію завантаження зображень.

Видалення товару

Endpoint:

DELETE /v1/products/:id
попередження

Не використовуйте видалення як звичайний сценарій синхронізації каталогу. Якщо товар уже використовується в документах, залишках, серійних номерах, партіях або звітах, видалення може бути неможливим або шкідливим для обліку.

Чеклист

Перед запуском синхронізації товарів перевірте:

  • яка система є головною для назви, коду, SKU і категорії;
  • чи використовуються модифікації;
  • чи потрібно передавати серійний облік або терміни придатності;
  • які системні й додаткові ціни синхронізуються;
  • чи потрібні додаткові поля;
  • чи потрібні світлини у відповіді;
  • чи потрібні залишки через extended, чи краще використовувати звіти;
  • як інтеграція обробляє архівні товари;
  • як інтеграція уникає дублювання товарів.

Підсумок

API товарів відповідає за каталог і властивості товарів. Для структури каталогу використовуйте Категорії через API, для залишків і резервів - Звіти через API.