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

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

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

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

Повну синхронізацію всіх товарів виконуйте не частіше ніж 1 раз на добу.

Для частішого оновлення використовуйте інкрементальну синхронізацію через фільтри updated_from і updated_to: передавайте час останньої успішної синхронізації й отримуйте тільки товари, які змінилися після неї. Такий запит можна виконувати частіше, наприклад раз на 10 хвилин, якщо інтеграції потрібні оперативні зміни каталогу.

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

Endpoint-и

МетодEndpointПризначення
GET/v1/productsотримати список товарів
GET/v1/products/:idотримати один товар
POST/v1/productsстворити товар
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Додати додаткові поля.
with_featuresДодати характеристики товару або модифікацій.
stock_idСклад для розрахунку показників у extended.

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

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

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

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

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

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

ПолеЩо означає
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.
featuresХарактеристики, якщо передано with_features=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Додаткові поля.
featuresХарактеристики товару.

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

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

Поле 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.

Характеристики

Характеристики передаються у features.

{
"product": {
"features": [
{
"parent": "feature-id",
"child": "feature-value-id"
}
]
}
}

У відповіді характеристика містить:

ПолеЩо означає
feature_idID характеристики.
feature_titleНазва характеристики.
value_idID значення, якщо характеристика має значення з довідника.
valueЗначення характеристики.
datatypeТип значення характеристики.

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

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

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

ПолеЩо означає
idID модифікації.
titleНазва модифікації.
visible_in_shopВидимість модифікації в інтернет-магазині.
shopwire_statusСтатус модифікації для інтеграцій інтернет-магазинів.
use_pricesЧи використовує модифікація власні ціни.
codeКод модифікації.
skuАртикул модифікації.
price_minМінімальна ціна.
price_supplyПрихідна ціна.
price_retailРоздрібна ціна.
price_wholesaleГуртова ціна.
custom_pricesДодаткові ціни.
featuresХарактеристики, якщо передано with_features=true.
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_at товару. Для регулярної синхронізації кількості використовуйте updated_from і updated_to, а в запит додавайте extended=true.

Світлини

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

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

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

Endpoint:

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

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

Чеклист

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

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

Повʼязані матеріали

Підсумок

API товарів відповідає за каталог, властивості товарів і базові складські показники у відповіді з extended=true. Для структури каталогу використовуйте Категорії через API, для агрегованих і датованих звітних даних - Звіти через API.