PDF
Розділ: Огляд, формат, ліміти

Огляд, формат і ліміти

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

ApexSFA — хмарна система для дистрибʼюторів: заявки торгових з мобільного застосунку, склад і WMS, логістика, продажі, B2B-кабінет. Інтеграції потрібні, щоб ApexSFA працювала разом з обліковою системою дистрибʼютора, з виробниками й постачальниками та з вашими CRM і BI.

1.1. Які є інтеграції

ІнтеграціяХто використовуєНапрямТранспортАвтентифікаціяРозділ
Обмін з обліковою системоюДистрибʼютор (облікова система або інтегратор)Облікова система → ApexSFA: довідники, ціни, залишки, продажі, борги, каса. ApexSFA → облікова система: заявки, оплати, приходи, інвентаризації, рейсиHTTPS, JSONКлюч обміну + підпис X-Signature3, 3a
Готова обробка обмінуДистрибʼютор на обліковій системі BAS або суміснійТе саме, що обмін, без програмуванняHTTPSКлюч обміну8
Файли заказів виробника (API)Виробник / мережа, що надсилає дистрибʼютору замовлення файломВиробник → ApexSFA: файл заказів; ApexSFA → виробник: файл-відповідь зі станом кожного документаHTTPS; XML / CSV / JSONAPI-токен asfa_…4
Файли заказів виробника (SFTP)Виробник, якому зручніше класти файли в текуТе саме, що й API, але файламиSFTPЛогін + ключ ed255195
Вихідні вебхукиВаші CRM, BI, ботApexSFA → ваш URL: події заявокHTTPS POST, JSONПідпис HMAC-SHA2566

Мобільний застосунок і портал працюють через внутрішнє API. Воно не є публічним контрактом і може змінюватися без попередження — для інтеграцій використовуйте лише ендпоінти з цієї документації.

1.2. Середовища

СередовищеБазовий URL APIПризначення
Продhttps://api.apexsfa.com/api/v1Бойові дані
Тестовевидається разом із тестовими ключамиПеревірка інтеграції до запуску; дані тестові

Перевірка доступності: GET /api/v1/health → {"status":"ok"}.

curl
curl -s https://api.apexsfa.com/api/v1/health
# {"status":"ok"}

1.3. Формат

  • Протокол — лише HTTPS.
  • Кодування — UTF-8. Тіла запитів і відповідей — JSON (Content-Type: application/json), крім файлів заказів (розділ 4).
  • Ідентифікатори обʼєктів ApexSFA — UUID (рядок).
  • Ваші ідентифікатори (external_id) — рядки до 50 символів; рекомендуємо GUID обʼєкта з вашої системи (36 символів).
  • Ціни, кількості, суми сервер приймає числом або рядком; у відповідях суми приходять рядком ("1250.00") — не перетворюйте їх у float, якщо важлива точність.
  • Дата й час у відповідях — ISO 8601 з часовим поясом (UTC, 2026-10-27T08:15:00+00:00). Дати без часу — YYYY-MM-DD.

Стандартна обгортка відповіді

JSON
{
  "data": { "...": "..." },
  "meta": { "request_id": null, "timestamp": "2026-10-27T10:15:00.123456" }
}

Ендпоінти файлів заказів (розділ 4) повертають «плоский» обʼєкт або {"data": [...]}; ендпоінти обміну з обліковою системою — {"data": {...}}.

Помилки

Усі помилки повертаються в єдиному форматі:

JSON
{
  "error": {
    "code": "INVALID_CREDENTIALS",
    "message": "Bearer API token required",
    "details": [],
    "request_id": "req_3ef16c7613ef48e0b78dfa8d"
  }
}

request_id дублюється в заголовку відповіді X-Request-Id — указуйте його, коли звертаєтесь у підтримку. Можна передати власний X-Request-Id у запиті — сервер поверне його ж (зручно для наскрізного логування).

HTTPcodeКоли
400VALIDATION_ERRORТіло або параметри не пройшли валідацію; у details — [{field, code, message}]
401INVALID_CREDENTIALSНемає токена, недійсний підпис, токен відкликано чи прострочено
403FORBIDDENТокену бракує прав
404NOT_FOUNDОбʼєкт не знайдено (або він не належить вашому токену)
409CONFLICTСтан не дозволяє дію (напр. файл-відповідь ще не готовий)
413—Тіло завелике (файл заказів понад 20 МБ)
422VALIDATION_ERROR, BATCH_ATOMIC_FAILURE, BUSINESS_RULE_VIOLATIONДані зрозумілі, але не можуть бути застосовані
429RATE_LIMIT_EXCEEDEDПеревищено ліміт запитів; дивіться заголовок Retry-After, якщо він є
500INTERNAL_ERRORПомилка сервера; повторіть пізніше
503SERVICE_UNAVAILABLEТимчасова недоступність

Орієнтуйтеся насамперед на HTTP-статус, а code і message використовуйте для діагностики.

Порада. Повторювати запит має сенс лише для 429, 5xx і мережевих помилок — з паузою, що зростає (наприклад, 5 с → 30 с → 2 хв). 4xx (крім 429) без виправлення запиту повторювати не треба.

1.4. Ліміти

ЛімітЗначення
API-токен100 запитів за 60 с (за замовчуванням; може бути змінено для токена)
Обмін з обліковою системою600 запитів за 60 с на тенант і IP; пакет до 5000 конвертів (рекомендовано 1000)
Файл заказів через APIдо 20 МБ
Файл заказів через SFTPдо 50 МБ

1.5. Версіонування

Версія API — у шляху: /api/v1. У межах v1 зміни лише сумісні: можуть додаватися нові ендпоінти, нові необовʼязкові поля запиту й нові поля відповіді. Ваш клієнт має ігнорувати невідомі поля у відповідях. Несумісні зміни можливі лише в новій версії шляху (/api/v2) — з попереднім повідомленням.

1.6. Тенант і точка синхронізації

Тенант — ізольований простір даних однієї компанії-клієнта ApexSFA. Компанія-дистрибʼютор може складатися з кількох тенантів: кожна філія з окремою базою облікової системи — окрема точка синхронізації зі своїм тенантом і своїм ключем обміну. Усе, що надходить із ключем точки, потрапляє лише в цю точку; усе, що облікова система забирає з ApexSFA, — лише документи цієї точки.

  • Ідентифікатор тенанта (Tenant Id, UUID) потрібен для обміну з обліковою системою (заголовок X-Tenant-Id).
  • API-токени (asfa_…) самі визначають тенант — передавати його не треба.
  • Дані різних тенантів суворо ізольовані.

1.7. Як отримати доступ

  1. Залиште запит «Запросити доступ» на apexsfa.com/developers або напишіть на hello@apexsfa.com: яка інтеграція потрібна, для якої компанії, хто інтегратор.
  2. Для обміну з обліковою системою ви отримаєте Tenant Id і ключ обміну.
  3. Для файлів заказів через API — API-токен asfa_…, привʼязаний до виробника. Токен показується один раз — збережіть його в сховищі секретів.
  4. Для SFTP обліковку виробника створює дистрибʼютор на порталі ApexSFA і передає виробнику логін, адресу сервера, порт, відбиток ключа сервера й приватний ключ.
  5. Для вебхуків — передайте нам URL-приймач і перелік подій; ми видамо секрет підпису.

Рекомендований порядок: тестове середовище → перевірка сценаріїв → прод.