Перейти до змісту

Зміни

2026-10-20

  • Товари — нові PUT /products/{id} і PUT /products змінюють лише передані поля: назву, опис, категорію, бренд, штрихкод, одиницю, extra (зливається з додатковими полями товару) і stock по складах. Див. Зміна товарів.
  • Товари (несумісна зміна) — POST /products тепер лише створює: id у тілі — 422, наявний товар із тим самим sku/barcode — 409 з details.product_id, а помилка в запиті не створює нічого. Раніше такий запит відповідав 201 і міг лишити товар без змін. Див. Створення товарів.
  • POST /product_stock — приймає cost_price; "price": 0 тепер зберігається. updated у відповіді — список id товарів.

2026-10-19

  • Акції — у stock товару нове поле promotion: акція, що діє на товар на складі, зокрема на додаткову ціну (price_type; ціна до й після акції, кінець акції). promotion_id у позиції продажу зараховує продаж до акції в HugeProfit; price такої позиції можна не передавати — ціну акції підставимо самі. Нові коди помилок promotion_*. Див. Продаж за акцією.
  • Товари — ціна акції в sale_price тепер із двома знаками після коми ("5.40", а не "5.4").
  • Продажі — усі поля запиту POST/PUT /sales тепер описані в одному блоці; PUT замінює продаж повністю. Див. Sales.

2026-10-17

  • Кур'єрська доставка (Нова Пошта) — delivery продажу приймає адресу для кур'єра (settlement_ref, street, house, flat), а POST /sales/{id}/waybill відправляє посилку до дверей. Нові довідники GET /delivery/settlements і GET /delivery/streets. Див. Доставка.

2026-10-16

  • ТТН Нової Пошти — новий POST /sales/{id}/waybill створює ТТН через підключений акаунт Нової Пошти (накладений платіж, оголошена вартість, платник, розміри посилки) і зберігає її номер у продажі; нове право delivery:write. Див. ТТН Нової Пошти.
  • Продажі — нове поле delivery зберігає разом із продажем адресу клієнта у відділенні Нової Пошти; описано client_delivery_id, delivery_info і tracking_number. Див. Sales.
  • Довідник — carrier_accounts Нової Пошти містять senders. Див. Reference.
  • Безпечний повтор POST /sales — нове поле external_id (ваш номер замовлення): повтор із тим самим номером не створює другий продаж, а відповідає 409 з details.sale_id; фільтр GET /sales?external_id=; номер є в об'єкті продажу й у вебхуках order_*. Див. Безпечний повтор запиту.
  • Продажі — amount більше не обов'язковий і рахується з позицій; переданий має збігатися із сумою позицій, інакше 422 з details.expected. sale_amount за замовчуванням — amount мінус знижка (раніше знижка не віднімалася). Нечислові або завеликі суми, кількості й знижки — 422 (раніше 500 або тихий нуль). Нестача залишку — 422 з details.shortages.
  • Виправлено — PUT /sales повертає новий id продажу (редагування створює продаж під новим id), а не старий.
  • Опитування змін — фільтри updated_from/updated_to у GET /sales і /query; after_id продовжує список після останнього отриманого продажу. Див. Продажі.
  • Вебхуки — order_update тепер приходить і на зміну статусу (зокрема від відстеження доставки), і на додану ТТН; у data є status, tracking_number, external_id, previous_status, previous_id. Див. Вебхуки.
  • Наклейка ТТН — новий GET /sales/{id}/waybill/label повертає PDF. Див. Наклейка ТТН.
  • Товари — фільтри sku і barcode (до 500 значень через кому) у GET /products і /query.
  • Доставка — GET /delivery/warehouses: точний фільтр number, сортування за номером, limit до 500.
  • Помилки — помилки, що раніше мали code на кшталт NotCorrectInstockError, тепер мають стабільні коди з таблиці: відхилена операція — 422 validation_error, вичерпаний ліміт тарифу — новий 403 limit_exceeded.

2026-10-07

  • Ліміт запитів — кожен ключ може робити 120 запитів на хвилину; відповіді містять заголовки X-RateLimit-*, а понад ліміт API відповідає 429 з Retry-After. Див. Ліміт запитів.

2026-10-06

  • Поставки — новий список payments: усі оплати за товар із датою, зокрема відкладені та часткові. Див. Shipments.
  • Витрати — новий фільтр shipment_id у GET /expenses і в /query; без дат повертає всі оплати поставки незалежно від дати. Див. Expenses.
  • Товари — type тепер повертає також bundle і service (раніше вони приходили як simple); комплекти містять склад у bundle_items; новий GET /products/{id}/similar; URL зображень закінчуються версією ?c=, яка змінюється при заміні фото. Див. Products.
  • Замовлення — GET /orders/{id} повертає tracking_number і sale_status; новий PUT /orders/{id} скасовує замовлення, створене цим самим ключем (знімаючи резерв), або задає його order_text. Див. Orders.
  • Доставка — пошук міст і відділень Нової Пошти та Meest: GET /delivery/cities, GET /delivery/warehouses. Див. Delivery.
  • Довідник — нова секція carrier_accounts: підключені служби доставки, їхній id — це account_id для пошуку Meest. Див. Reference.
  • Медіа — хостинг зображень: POST /media завантажує зображення й повертає публічні посилання, GET /media — файли акаунта. Див. Media.
  • Виробництво — новий POST /productions/{id}/run запускає рецепт: списує компоненти, оприбутковує результати, записує витрати. Див. Запуск рецепта.
  • Списання — новий POST /write_offs списує товар зі складу одним викликом; категорії — у write_off_categories з /reference. Див. Write-offs.
  • Виправлено — залишки, змінені через POST /product_stock, тепер доходять до підключених маркетплейсів.

2026-10-05

  • Вебхуки — url має вказувати на публічний http(s)-хост: localhost і адреси приватних мереж відхиляються з 422 (зокрема в /webhooks/test), редиректи більше не виконуються. Див. Підписки.

2026-09-30

  • Клієнти — пошук за телефоном у GET /clients і в /query: phone тепер збігається з повним номером у будь-якому записі (380671234567, 0671234567, +38 (067) 123-45-67), а новий фільтр phone_contains знаходить клієнтів, у номері яких є вказані цифри (щонайменше 3). Див. Clients.

2026-09-17

  • Клієнти — новий фільтр with_chats=telegram у GET /clients, GET /clients/{id} і в /query: вбудовує чати клієнта в месенджерах масивом chats (type, integration_id, chat_id). Див. Clients.

v2.0 — перший реліз

Публічний API v2 запускається паралельно з v1 (/bapi), який продовжує працювати без змін.

  • Чиста, стабільна схема — впорядковані назви полів, один конверт відповіді, вкладені items.
  • Ресурси — reference, склади, постачальники, товари (+ залишки, синк), категорії, клієнти (+ теги), продажі, замовлення з маркетплейсів, поставки, витрати, виробництво.
  • Composite /query — кілька ресурсів одним викликом, з ?include= на кожному ресурсі.
  • Нативні вебхуки — надійна черга доставки, HMAC-підписи, ретраї з backoff, журнал доставок і синхронний /webhooks/test.
  • Хешовані API-ключі зі scopes; інтроспекція через GET /me.

Ще не доступно

Запуск виробництва (списання зі складу) поки не доступний через API — рецепти можна створювати й читати, але не виконувати.