top of page

Що варто знати про вимоги до інтеграцій: API як контракт (Ч. 1)


Коли ми говоримо про інтеграцію систем, мова часто йде про обмін даними десь “під капотом”. Інтеграція - це договір між двома сторонами, у якому кожна має свої зобов’язання. Якщо взаємодія здійснюється через АРІ, цей договір - API-контракт (API contract).

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


Що таке API контракт

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

API контракт

Основні складові контракту:

  1. Кінцеві точки (endpoints) - адреси, за якими можна викликати функціональність, наприклад:GET /api/v1/customers/{id}

POST /api/v1/orders

  1. Методи (methods) - визначають тип дії: GET (отримати), POST (створити), PUT (оновити), DELETE (видалити).

  2. Тіла запитів і відповідей (request/response bodies) - структура повідомлень, наприклад, у форматі JSON або XML.

  3. Статус-коди (status codes) - як система відповідає на результат: 200 OK, 400 Bad Request, 500 Internal Server Error.

  4. Заголовки (headers) - додаткова службова інформація.

    1. системні (наприклад, Content-Type, Authorization);

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

  5. Приклад: X-Client-Version: 2.1.0X-Request-ID: a12f9d0e-5678-42aa-bc1f-08d3f9c12234

  6. Метод авторизації (authentication/authorization) - як споживач доводить, що він має право викликати API:

    1. API ключ (API key)

    2. маркер доступу (token)

    3. OAuth 2.0

    4. базова автентифікація (Basic Auth)

Правила версіонування (versioning) - наприклад, через URL (/v1/...) або заголовки (Accept: application/vnd.company.v2+json).


Контракт - це більше, ніж формат повідомлення

Уявімо, що одна система надсилає запит на створення замовлення:

POST /api/v1/orders

{

  "customerId": 125,

  "items": [

    {"productId": "A123", "quantity": 2}

  ]

}


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

{

  "orderId": "ORD-2025-0012",

  "status": "created",

  "estimatedDelivery": "2025-10-15"

}


Контракт описує не лише структуру, а й очікувану поведінку, обмеження та виключення.

Поради для аналітика: 

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

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

Нефункціональні вимоги до API

У контексті інтеграцій нефункціональні вимоги часто мають не менше значення, ніж функціональні.

  1. Продуктивність (performance):

    • середній час відгуку (response time);

    • обмеження кількості запитів на хвилину (rate limiting);

    • допустимі обсяги даних у запиті/відповіді.

Приклад вимоги:API має обробляти не менше 100 запитів за секунду з середнім часом відповіді до 500 мс.

  1. Надійність і доступність (reliability & availability):

    • чи підтримується повтор викликів у разі збою;

    • SLA (рівень доступності, наприклад, 99.9% uptime);

    • поведінка під час тимчасових помилок.

Приклад вимоги: Рівень доступності АРІ має складати п’ять дев’яток (99.999% часу АРІ є доступним).

  1. Безпека:

    • шифрування трафіку (TLS/HTTPS);

    • захист токенів;

    • політика доступу за ролями (role-based access).

Приклад вимоги: АРІ є доступним для користувачів із валідним токеном, однак, виклики POST, PUT, DELETE - лише тим, що мають право змінювати дані.

  1. Моніторинг і логування:

    • чи ведеться аудит викликів;

    • чи можна ідентифікувати джерело кожного запиту (X-Request-ID).

  2. Сумісність і версійність:

    • backward compatibility (зворотна сумісність) - старі клієнти не мають “зламатися” після оновлення API;

    • політика попередження про breaking changes.

Приклад вимоги:API має підтримувати дві останні основні версії.Про несумісні зміни (breaking changes) слід повідомляти не пізніше, ніж за 30 днів.

Інші формати обміну повідомленнями

REST API - не єдиний спосіб інтеграції. Вимоги змінюються залежно від технології.

Webhooks

Це “зворотні виклики”: система-джерело надсилає повідомлення системі-споживачу, коли відбувається певна подія.


webhook та API

На що звернути увагу у вимогах:

  • як часто можуть надходити повідомлення;

  • як система має реагувати на дублікати;

  • чи є повторна спроба у разі помилки (retry policy);

  • автентифікація відправника.

Приклад вимоги:Система повинна повторно надсилати webhook у разі отримання відповіді 5xx до трьох разів з інтервалом 10 секунд.

Веб-сокети (Web Sockets)

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

Важливо уточнити:

  • чи потрібен постійний канал зв’язку;

  • як відновлюється з’єднання після розриву;

  • чи передається автентифікація у кожному повідомленні.

Приклад вимоги:У разі втрати з’єднання клієнт має автоматично повторно підключатися протягом 5 секунд.

Черги повідомлень (Message Queues)

Підходять для асинхронних обмінів, коли миттєва відповідь не потрібна. Приклади технологій: RabbitMQ, Kafka.

У вимогах важливо вказати:

  • гарантії доставки (єдине повідомлення - exactly-once, як мінімум одне повідомлення - at-least-once);

  • максимальний розмір черги;

  • політику повторів при збої.


Черга повідомлень

Як формулювати вимоги до контракту

Під час збору вимог до інтеграції ставте запитання, які виходять за межі “що саме передається”.

Напрямок

Приклад питання

Безпека

Який метод автентифікації використовується? Як оновлюються токени?

Надійність

Що робить система у разі помилки 5xx? Чи є retry policy?

Сумісність

Як часто оновлюється API? Чи підтримується зворотна сумісність?

Тестування

Чи доступне sandbox-середовище для інтеграцій?

Логування

Як відстежити проблемний запит у логах? Чи є кореляційний ID?

Ремарка: Навіть якщо аналітик не створює Swagger-документацію, безумовно варто знати, що там має бути.Контракт - це не тільки технічний документ, це частина вимог, яку потрібно узгодити з обох боків.

Приклад формулювання вимоги

Назва: Вимоги до виклику сервісу створення замовлення

Опис:

●     Сервіс доступний за методом POST /api/v1/orders.

●     Формат запиту - JSON, поля customerId та items - рядки та є обов’язковими.

●     У разі помилки повертається код 400 із описом у полі errorMessage.

●     Аутентифікація - токен у заголовку Authorization.

●     Максимум 10 запитів за хвилину з одного клієнта.

●     Сервіс повинен відповідати протягом ≤ 500 мс.

●     Усі виклики логуються із зазначенням X-Request-ID.

Підсумки

Контракт API - це угода, а не лише технічна специфікація.Добре прописані вимоги до інтеграції:

●     допомагають уникнути “мовних бар’єрів” між командами;

●     спрощують тестування й підтримку;

●     роблять розвиток системи передбачуваним.

У другій частині розглянемо:

●     як формулювати вимоги, коли ви власник API;

●     як збирати правильні запитання, коли ви споживач чужого API;

●     і як забезпечити керованість змін (версії, сумісність, логування змін - changelog).


Якщо ви маєте бажання поглибити свої технічні знання, зверніть увагу на тренінги Technical skillsfor Business Analyst та Advanced Technical skills for Business Analyst



Новини та статті з бізнес-аналізу: 


 
 
 

Коментарі


bottom of page