BimpДовідка

Вивантаження даних Bimp для аналітики через API

Оновлено 5 хв читання

На цій сторінці
Коротко

Для власної аналітики читайте дані методами api-readList з пагінацією offset/count (до 100 записів) і періодом periodable, а залишки — курсорним inventory/api-readList/cursor. Повну вигрузку робіть один раз, далі завантажуйте лише зміни за період. Якщо потрібні готові таблиці для Looker Studio чи Power BI, використайте інтеграцію з BigQuery.

Що будуємо

Регулярне вивантаження даних Bimp (продажі, закупівлі, залишки, ціни, гроші) у ваше сховище, дашборд чи BI-систему. Якщо вам достатньо готових звітів у Looker Studio або Power BI, скористайтеся інтеграцією з BigQuery: BigQuery і Looker Studio, Power BI, Довідник полів BigQuery. API підходить, коли потрібно самостійно вибрати набір полів, розклад і місце зберігання. Токен компанії передається в заголовку access-token (Початок роботи з API).

Які методи і в якому порядку

КрокМетодЩо вивантажуємо
1organization/api-readList, warehouse/api-readList, currency/api-readList, lineOfBusiness/api-readList, project/api-readListДовідники для розшифрування uuid у звітах
2counterparty/api-readList, nomenclature/api-readList, nomenclature-group/api-readListКонтрагенти, товари, групи
3invoiceForCustomerPayment/api-readList і invoiceForCustomerPayment/api-readЗамовлення покупців: шапка і позиції
4salesInvoice/api-readList і salesInvoice/api-readВідвантаження (продаж товарів і послуг)
5customerPayment/api-readListОплати від покупців
6invoiceForSupplierPayment/api-readList, purchaseInvoice/api-readList, paymentToSupplier/api-readListЗакупівлі: замовлення, надходження, оплати
7inventory/api-readList/cursor і nomenclature/api-readLeftoversПоточні залишки і залишки на дату або їх зміна за період
8nomenclature/api-readPricesЦіни по прайс-листах
9financing-balance/api-readListЗалишки коштів на рахунках і в касах
10otherExpenses/api-readList, otherIncome/api-readListВитрати й доходи

Як читати великі списки

Усі методи api-readList повертають дані порціями. Є три способи пагінації:

СпосібДе застосовуєтьсяПараметри
offset і countБільшість POST-методівpagination: { "offset": 0, "count": 100 }, максимум count — 100
Курсорinventory/api-readList/cursorlimit (до 200), lastId; відповідь повертає next_cursor
Номер сторінкиinventory/api-readListpage і pageSize (до 100)

Приклад пакетного читання замовлень за період:

curl -X POST https://app.bimpsoft.com/org2/invoiceForCustomerPayment/api-readList \
  -H "access-token: $COMPANY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "pagination": { "offset": 0, "count": 100 },
    "periodable": ["2026-10-01T00:00:00.000Z", "2026-10-31T23:59:59.999Z"]
  }'

Збільшуйте offset на count, доки відповідь не стане порожньою або коротшою за count. Дати передавайте в UTC у форматі ISO 8601 із літерою Z.

Щоб читання було стабільним, поки дані змінюються, сортуйте результат у своєму сховищі за uuid і робіть upsert (вставка або оновлення за uuid), а не додавання.

Як завантажувати лише зміни

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

РесурсФільтр часуЩо означає
Замовлення покупцівperiodableПеріод за датою документа
Замовлення покупцівchangeStatusTimeПеріод зміни статусу
Відвантаження, надходження, оплатиperiodableПеріод за датою документа
Номенклатураcreated, updatedПара дат [від, до] (кожну можна замінити null)
Ціниperiodable у nomenclature/api-readPricesЦіни або їх зміни за період [початок, кінець)
Залишкиperiodable у nomenclature/api-readLeftoversЗалишок на дату або зміна за період
КонтрагентиperiodableПеріод у counterparty/api-readList

Алгоритм інкременту:

  1. Перед початком запуску запишіть поточний час T_start.
  2. Прочитайте дані за період [T_prev, T_start], де T_prev — час початку попереднього успішного запуску. Беріть невелике перекриття (5–10 хвилин) і прибирайте повтори за uuid.
  3. Після успішного завершення збережіть T_start як T_prev.

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

Як вивантажити залишки і ціни

  • Поточні залишки — GET /org2/inventory/api-readList/cursor з orgId, warehouseId і limit=200. З byBatches=true кожен рядок розбивається за партіями.
  • Залишок на дату або зміна за період — nomenclature/api-readLeftovers з periodable (пара [початок, кінець]), необов’язковими warehouseUuid і nomenclatureUuids. Відповідь: uuid, name, leftover.
  • Залишки, резерви і собівартість — nomenclature/api-readStocks: stock, reserve, leftover, minimumLeftover, maximumLeftover, primeCost (фільтри warehouseUuid[], nomenclatureUuid[]).
  • Партії — nomenclature/api-readBatches (nomenclatureUuid): дата надходження, кількість, ціна, постачальник, термін придатності (shelfLife).
  • Ціни — nomenclature/api-readPrices; деталі й приклади — у статті Вивантаження залишків і цін.

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

Як організувати завантаження

  1. Довідники — першими. Завантажте організації, склади, валюти, проєкти, напрями діяльності, групи й товари. Документи містять лише uuid цих об’єктів.
  2. Документи — за періодами. Обробляйте місяць за місяцем, щоб при збої повторювати лише один період.
  3. Деталізація. api-readList повертає шапку документа (для замовлень покупців — масив products лише з uuid рядків). Позиції з кількістю, ціною й знижкою повертає api-read за uuid документа. Для великих обсягів плануйте по одному api-read на документ.
  4. Швидкість. Не перевищуйте 15 запитів на секунду з одного IP, інакше запити потраплять у чергу, а надлишок — отримає 429. Запускайте паралельні потоки обережно і ставте паузу при 429 (Ліміти).
  5. Токен. Токен доступу діє 1 годину: у довгих вивантаженнях оновлюйте його методом auth/api-refresh, а після закінчення тижня входьте знову.
  6. Окремий користувач. Для вивантаження створіть окремого API-користувача з правами лише на читання потрібних розділів: Ролі та права доступу.

Вебхуки замість опитування

Для оперативних показників (залишки, статуси замовлень, зміни товарів) підписуйтесь на вебхуки inventory_balance, order_status, product_upsert і складайте події в сховище — це дешевше за часте опитування. Вебхуки не замінюють повну вигрузку: пропущена подія не повторюється, тому раз на добу робіть звірку. Формат подій — у статті Вебхуки.

Типові помилки

У звіті замість назв — довгі uuid. Причина: у api-readList поля buyer, status, warehouse повертаються як uuid. Рішення: завантажте довідники й зв’яжіть їх у сховищі.

Дані задвоїлись. Причина: інкремент із перекриттям записує повторні рядки. Рішення: upsert за uuid.

Суми не збігаються зі звітами Bimp. Причина: у вивантаженні не враховано скасовані документи, валюту або ПДВ. Рішення: звіряйте з потрібним звітом у Bimp на тому самому періоді; для швидкої звірки використовуйте Рух грошових коштів. Позначки managerialAccounting і bookkeperAccounting у відвантаженнях і надходженнях розділяють управлінський та бухгалтерський облік.

Помилка 429 при масовому читанні. Перевищено 15 запитів на секунду. Зменште паралельність і повторюйте запит із паузою.

Дані за ранні періоди порожні. Причина: передано periodable не в UTC або без Z. Рішення: використовуйте формат 2026-10-01T00:00:00.000Z.

Часті питання

Чим вивантаження через API відрізняється від BigQuery-інтеграції?

BigQuery-інтеграція автоматично дає готові таблиці в сховищі Google для Looker Studio і Power BI. API потрібне, коли ви завантажуєте дані у власне сховище або сервіс і самі керуєте набором полів та розкладом.

Як завантажувати лише нові й змінені дані?

Передавайте періоди: periodable (для документів), changeStatusTime (замовлення покупців), created і updated (номенклатура). Запам'ятовуйте час останнього успішного запуску і беріть його як початок наступного періоду.

Скільки записів повертає один запит?

У POST-методів із pagination — до 100 (count). Курсорний inventory/api-readList/cursor — до 200 (limit).

Які ліміти на запити?

15 запитів на секунду з одного IP, далі черга з 30 запитів, решта отримує 429.

Стаття допомогла?

Читайте далі

Не знайшли відповідь?Напишіть нам — підтримка відповідає в робочий час.