Хмарні системи з відкритим API завжди мають обмеження у використанні через необхідність зробити сервіс максимально надійним та стабільним для клієнтів.
Щоб забезпечити роботу високонавантаженого сервісу, виникає необхідність аналізувати трафік та обмежувати випадки некоректної роботи сервісу.
У Live API є 2 види обмежень на роботу з API:
- Повне блокування API логіну;
- Обмеження API логіну по кількості запитів.
Блокування API логіну
Цей тип обмежень застосовується до логінів API тільки в тому випадку, якщо інтеграція суттєво порушить роботу будь-якої частини системи.
Блокування може застосовуватися в таких випадках:
- Масова відправка однакових запитів;
- зазвичай це пов'язано з тим, що інтеграція не перевіряє відповіді від нашого сервісу;
- Високий відсоток помилкових запитів;
- помилки інтеграції не виправляються. Особливо це актуально при відправленні запитів на створення замовлення. У такому випадку простіше вимкнути таку інтеграцію, ніж потім розбиратися з такими замовленнями на касі;
- Забагато замовлень;
- якщо інтеграція створює понад 1000 замовлень на добу для одного закладу, швидше за все, система використовується неправильно;
- пікове навантаження для будь-яких груп методів API;
- зазвичай через помилки в логіці інтеграції;
- навантажувальне тестування та/або стрес-тестування інтеграції;
- навантажувальне тестування в середовищі продукту заборонено для будь-яких інтеграцій, тому при виявленні таких інтеграцій система може заблокувати їх назавжди;
- інші випадки
- Неможливо описати всі варіанти, які можуть призвести до блокування. Однак випадки неналежного використання API регулярно оновлюватимуться.
Обмеження API логіна за кількістю запитів або «Забагато запитів» (відповідь з кодом 429)
Це обмеження застосовується до API логіна тільки в тому випадку, якщо інтеграція починає надсилати необґрунтовано велику кількість запитів до однієї групи запитів.
Як це працює:
- Усі методи API поділяються на групи запитів на основі даних, що повертаються;
- Кожен метод входить в одну групу запитів;
- Максимально допустима кількість запитів на один тайм-слот (часовий інтервал) для кожної групи запитів визначається експертом на основі аналізу історії даних. При цьому кількість таких запитів:
- не залежить від кількості закладів, з котрими працює інтеграція: для методів роботи з довідниками мережі;
- залежить від кількості закладів з котрими працює інтеграція: для методів роботи із замовленнями, складським списком та іншими даними в залежності від закладу.
- Тайм-слот відрізняється для різних груп методів (зазвичай від 1 до 10 хв)
- в більшості випадків це 1 хвилина.
- Якщо інтеграція вже виконала максимально допустиму кількість запитів до певної групи методів у поточному тайм-слоті (часовому інтервалі), то поки цей таймс-слот не закінчиться, всі запити до методів групи одразу повертати відповідь з кодом 429.
Приклади груп запитів:
- Довідники (включає всі довідники, отримані для мережі);
- Деталі замовлень (включає весь набір методів, котрі повертають замовлення);
- Інші.
Приклади, коли може застосуватись блокування:
- Інтеграція не кешує довідники закладів та перезавантажує каталоги при кожному новому запиті, що створює необґрунтоване навантаження на API;
- Інтеграція працює під високим навантаженням (створює багато замовлень), але не використовує групові методи, котрі повертають інформацію про велику кількість замовлень одразу. Замість цього вона циклічно переглядає список усіх замовлень і запитує статус кожного з них;
- Інтеграція запитує списки найменувань (номенклатури) одночасно для всіх RMS, котрі входять у мережу HQ, що створює невиправдане навантаження на API. Правильним рішенням являється запит списку найменувань для кожного RMS по черзі;
- Інші випадки.
Неможливо описати усі варіанти, що призводять до обмеження. Однак випадки некоректного використання API будуть регулярно оновлюватись.