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

Звіти через API

Звіти через API повертають складські й продажні показники: залишки, резерви, очікувані товари, рейтинг продажів, журнал продажів, аналіз продажів і звіт за касирами.

Частина звітів повертає результат одразу. Великі продажні звіти запускаються як задача: API повертає task_id, після чого інтеграція перевіряє статус задачі й забирає результат, коли він готовий.

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

Не викликайте endpoint-и звітів частіше ніж 1 раз на годину. Це обмеження стосується всіх звітів у цьому розділі: залишків, резервів, очікувань і продажних звітів.

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

Endpoint-и

МетодEndpointПризначення
GET/v1/reports/remainsзалишки товарів
GET/v1/reports/reservesрезерви товарів
GET/v1/reports/waitingsочікувані товари
POST/v1/reports/sales_ratingзапустити рейтинг продажів
POST/v1/reports/sales_registryзапустити журнал продажів
POST/v1/reports/sales_analyticзапустити аналіз продажів
POST/v1/reports/cashiersзапустити звіт за касирами
GET/v1/report_tasks/:id/statusперевірити статус задачі звіту
POST/v1/report_tasks/:id/cancelскасувати задачу звіту

Залишки

Endpoint:

GET /v1/reports/remains

Параметри:

ПараметрПризначення
dateДата, на яку потрібно отримати залишки.
stock_idСклад або магазин.
category_idКатегорія товарів.
contragent_idКонтрагент.
typepriceТип ціни для розрахунку цінового поля звіту.

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

ПолеЩо означає
stock_idID складу.
stock_titleНазва складу.
product_idID товару.
product_titleНазва товару.
product_codeКод товару.
modification_codeКод модифікації.
modification_idID модифікації.
modification_titleНазва модифікації.
product_skuАртикул товару.
price_retailРоздрібна ціна.
price_wholesaleГуртова ціна.
datevalidТермін придатності, якщо товар ведеться за термінами.
measure_titleОдиниця виміру.
priceЦіна, розрахована за параметром typeprice або обліковою ціною за замовчуванням.
quantityКількість залишку.
amountСума залишку.
інформація

date важлива для складського обліку: залишок рахується за датами документів, а не тільки за поточним моментом.

Резерви

Endpoint:

GET /v1/reports/reserves

Параметри:

ПараметрПризначення
dateДата, на яку потрібно отримати резерви.
stock_idСклад.
category_idКатегорія товарів.
product_idКонкретний товар.
filial_idФілія або юридична особа.
by_documentsДеталізація за документами. Працює, коли передано product_id.

Поля звичайної відповіді:

ПолеЩо означає
stock_idID складу.
stock_titleНазва складу.
product_idID товару.
product_titleНазва товару.
product_codeКод товару.
modification_idID модифікації.
modification_titleНазва модифікації.
product_skuАртикул товару.
measure_titleОдиниця виміру.
quantityКількість у резерві.

Якщо by_documents=true і передано product_id, відповідь додатково містить:

ПолеЩо означає
typedocТип документа, який сформував резерв.
document_idID документа резерву.
docnumНомер документа.
docdateДата документа.
contragent_titleНазва контрагента.

Очікування

Endpoint:

GET /v1/reports/waitings

Параметри:

ПараметрПризначення
dateДата, на яку потрібно отримати очікування.
stock_idСклад.
category_idКатегорія товарів.
product_idКонкретний товар.
filial_idФілія або юридична особа.
by_documentsДеталізація за документами.

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

ПолеЩо означає
stock_idID складу, на який очікується товар.
stock_titleНазва складу.
product_idID товару.
product_titleНазва товару.
product_codeКод товару.
product_skuАртикул товару.
measure_titleОдиниця виміру.
modification_titleНазва модифікації.
modification_idID модифікації.
quantityОчікувана кількість.
priceПрихідна ціна очікуваного товару.
amountСума очікування.
currency_titleВалюта.

Якщо by_documents=true, відповідь додатково містить:

ПолеЩо означає
due_dateТермін виконання або очікувана дата.
docnumНомер документа.
docdateДата документа.
document_idID документа очікування.

Асинхронні звіти

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

Типовий порядок:

  1. Виконати POST /v1/reports/... з параметрами звіту.
  2. Отримати task_id і status.
  3. Періодично запитувати GET /v1/report_tasks/:id/status.
  4. Коли задача завершиться, забрати result.
  5. Якщо задача більше не потрібна, скасувати її через POST /v1/report_tasks/:id/cancel.

Відповідь запуску звіту:

ПолеЩо означає
task_idID задачі звіту.
statusПоточний статус задачі.
попередження

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

Рейтинг продажів

Endpoint:

POST /v1/reports/sales_rating

Параметри:

ПараметрПризначення
date_startПочаток періоду.
date_endКінець періоду.
stock_idСклад або магазин.
group_idКатегорія товарів.
sale_channel_idКанал продажів.
producer_idВиробник.
sortingВаріант сортування звіту.
kits_by_componentsРозглядати комплекти за компонентами.

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

ЗначенняЩо означає
amount_saleЗа сумою продажів.
quantity_saleЗа кількістю.

Журнал продажів

Endpoint:

POST /v1/reports/sales_registry

Параметри:

ПараметрПризначення
date_startПочаток періоду.
date_endКінець періоду.
stock_idСклад або магазин.
group_idКатегорія товарів.
producer_idВиробник.
contragent_idКонтрагент.
sale_documentsТипи продажних документів для звіту.
cashier_idКасир.
executor_idВиконавець.
sale_channel_idКанал продажів.
currency_idВалюта звіту.

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

ЗначенняЩо означає
1Продажі через основну програму.
2Продажі через Skynum.Каса.

Аналіз продажів

Endpoint:

POST /v1/reports/sales_analytic

Параметри:

ПараметрПризначення
date_startПочаток періоду.
date_endКінець періоду.
group_byОзнака групування звіту.
stock_idСклад або магазин.
group_product_idКатегорія товарів.
sale_channel_idКанал продажів.
producer_idВиробник.
supplier_idПостачальник.
client_idПокупець.
group_client_idГрупа покупців.
currency_idВалюта звіту.
multicurrency_costing_methodМетод розрахунку собівартості для мультивалютного сценарію.

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

ЗначенняЩо означає
by_daysГрупування за днями.
by_groupsГрупування за категоріями товарів.
by_productsГрупування за товарами.
by_stocksГрупування за складами.
by_clientsГрупування за покупцями.
by_suppliersГрупування за постачальниками.

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

ЗначенняЩо означає
documentЗа курсом на дату документа.
period_endЗа курсом на кінець періоду.
presentЗа поточним курсом.
inside_documentЗа курсом з документа.

Звіт за касирами

Endpoint:

POST /v1/reports/cashiers

Параметри:

ПараметрПризначення
date_startПочаток періоду.
date_endКінець періоду.
computer_idРобоче місце Skynum.Каса.
user_idКористувач або касир.
by_bankboxДеталізація за банківськими рахунками.
consolidatedКонсолідований варіант звіту.

Статус задачі звіту

Endpoint:

GET /v1/report_tasks/:id/status

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

ПолеЩо означає
idID задачі звіту.
statusСтатус задачі.
errorТекст помилки, якщо задача завершилася з помилкою.
resultРезультат звіту, коли задача завершена й результат доступний.
created_atДата створення задачі.
updated_atДата оновлення задачі.

result повертається як масив рядків звіту. Набір полів залежить від конкретного звіту та його параметрів.

Скасування задачі звіту

Endpoint:

POST /v1/report_tasks/:id/cancel

Відповідь:

ПолеЩо означає
idID задачі звіту.
statusСтатус після скасування.

Перевірка доступу до ресурсів

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

Поля, для яких перевіряється доступ:

ПолеЩо означає
filial_idФілія або юридична особа.
stock_idСклад або магазин.
computer_idРобоче місце Skynum.Каса.
cashbox_idКаса.
bankbox_idБанківський рахунок.

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

Коли використовувати звіти, а не товари

Використовуйте /v1/reports/..., якщо потрібно отримати звітні дані, а не інкрементальну синхронізацію товарів:

  • отримати залишки на конкретну дату;
  • порахувати доступну кількість за фільтрами звіту;
  • показати резерви за фільтрами звіту;
  • показати очікувані поставки за фільтрами звіту;
  • синхронізувати кількість по складах;
  • отримати дані на конкретну дату;
  • отримати агреговану аналітику продажів;
  • отримати звіти, які залежать від активованих документів і фільтрів.
інформація

Якщо інтеграції потрібно регулярно забирати зміни товарів разом із залишками, резервами й очікуваннями, використовуйте Товари через API з фільтрами updated_from, updated_to і параметром extended=true.

Чеклист

Перед інтеграцією зі звітами перевірте:

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

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

Підсумок

Звіти API — джерело агрегованої аналітики, даних на конкретну дату й звітних вибірок для зовнішніх систем. Товари описують каталог і можуть повертати базові складські показники через extended=true, документи створюють облікові рухи, а звіти показують результат цих рухів у залишках, резервах, очікуваннях і продажах.