
Документація
Загальний опис
Метою розробки є інтеграція з ЄДР для автоматизації та централізації отримання даних про КБВ (кінцевого бенефеціарного власника) для учасників що є юридичними особами. Дана інформація може бути як обовʼязковою так і не обовʼязковою для певних процедур (наразі розробка інтеграції відбувається тільки для процедур де є документ з типом x_ultimateBeneficiaryInfo).
Для реалізації цієї інтеграції необхідно виконати дії:
- Додати до базової моделі award необовʼязкову до заповнення поле beneficiaries моделю даних beneficiariesGeneralInfo (модель даних наведено нижче)
- Налаштувати інтеграцію з ЄДР де після відправки запиту заповнюється модель beneficiariesGeneralInfo
- При внесенні інформації змінюємо award.dateModified, dateModified (procedure) та systemDateModified
- Майданчики відображають дану інформацію організатору в його кабінеті. Відображення в інших місцях не є обовʼязковою (портал, кабінети учасників)
Business flow
Майданчик, залучає користувача до участі в аукціоні де звіт з інформацією про КБВ (x_ultimateBeneficiaryInfo) визначений як тип документу
- Учасник є юридичною особою
- Учасник подає заявку на участь
- Майданчик активує заявку на участь
- Заявка на участь перейшла в кваліфікацію
- Під час створення award ЦБД направляє асинхроний запит в ЄДР з авторизаційним ключем і даними для пошуку де виконуються умови:
- Для award в статусах: pending_waiting, pending_admission, pending
- Для award.bidders.identifier.UA-EDR
- Для процедур де x_ultimateBeneficiaryInfo є типом документу. Перелік процедур
- LLE, LLD, LLP - Оренда за законом
- LRE - Земельні торги - оренда
- LSE + LSP - Земельні торги - продаж/продаж з переважним правом
- REM - Процедури розподілу квот
- SSW - Продаж майна приватних компаній (Закриті пропозиції)
- SPE + SPD - Мала приватизація
- LPE - Велика приватизація
- LAE + LAP + LAW - Продаж арештованої землі
- APE + APD - Арештовані активи АРМА
- SAE + SAD - Санкційне майно
- SUE+SUD - Спеціальні дозволи на користування надрами
- Процедури, яких немає в переліку не використовують даний функціонал - РО попереджено що додавання нових напрямків йде через розробку
- ЦБД отримує дані з ЄДР
- Перевіряє отримані дані:
- Якщо в отриманій відповіді містяться дані, які не можна внести в award → ЦБД не вносить дані в award
- Якщо в отриманій відповіді містяться дані, які можна внести в award → ЦБД вносить дані в award
- При внесенні даних змінюється:
- award.dateModified
- dateModified (procedure)
- systemDateModified
Як працює сервіс ЄДР
Сервіс ЄДР реалізований як API для автоматичного отримання даних для внесення інформації про КБВ учасника торгів що кваліфікується. Взаємодія працює по протоколу HTTP з використанням авторизації через JWT. Загальна логіка процесу: спочатку через метод авторизації отримуємо access та refresh токени, а потім використовуємо їх для виклику ендпоінту отримання даних для заповнення інформації про КБВ за кодом ЄДРПОУ юридичною особи. - Детальніше буде додано після отримання тестового ключа
Дія тестового ключа 6 місяців
Доступні ендпоінти (Потребує перевірки та доповнення після отримання тестових ключей)
Авторизація (отримання токенів)
Оновлення access_token
Метод отримання унікального ідентифікатора
Метод: POST
Ендпоінт: https://targetServer/1.0/subjects?code=ХХХХХХХХ, де code - код ЄДРПОУ учасника
Приймає на вхід:
- Обовʼязковий query-параметр: code
Приклад запиту:
Приклади відповіді:
Якщо code знайдено, а також токен авторизації є валідним:
Якщо code не знайдено:
Якщо сплив термін дії токена авторизації:
Якщо сервіс наразі недоступний:
Також можливий кейс, що АРІ поверне 403 помилку, якщо, наприклад, ЄДР змінить права доступу нашого акаунту.
Помилки
Коди помилок та відповідей:
Коди відповідей HTTP
Код | Текст | Пояснення |
|---|
200 | OK | Запит успішно оброблено і повернуто результат |
400 | Bad Request | Запит має помилку або не може бути оброблений. Відповідне повідомлення з поясненнями додане до відповіді. |
401 | Unauthorized | Параметри авторизації не правильні, або не вказані взагалі. |
402 | PaymentRequired | Для виконання запиту необхідна оплата. |
403 | Forbidden | Запит вірний але в обробці відмовлено. Відповідне повідомлення з поясненнями додано до відповіді. |
404 | Not Found | Адреса не правильна або ресурс до якого йде запит не існує. |
406 | Not Acceptable | Дані передані в запиті мають не зрозумілий формат. |
429 | Many Requests | API повертає таку відповідь коли вичерпано обмеження запитів до ресурсу. |
500 | Internal Server Error | Щось зламалось. |
502 | Bad Gateway | Сервіс вимкнено або проходить оновлення. |
Повідомлення з інформацією про помилку.
У разі помилки API повертає відповідь з поясненням, формат - JSON, наприклад:
{"errors":[{"message":"Invalid or expired token","code":2}]}
Перелік кодів помилок
У відповіді, окрім повідомлення з поясненням, додатково надається код помилки, який можна використовувати для автоматизованої обробки. Протягом часу, текстове повідомлення може модифікуватись, але код залишається незмінним.
Код | Текст | Пояснення |
1 | Could not authenticate you або Authentication credentials were not provided | Помилка аутентифікації. |
2 | Invalid or expired token | Недіючий або некоректний токен. |
3 | Your account is not permitted to access this resource | Відповідь надається разом із HTTP статусом 403. Користувач, з використанням токену якого було виконано аутентифікацію, не має достатніх прав для виконання запиту. |
4 | Sorry, that page does not exist | Відповідь надається разом із HTTP статусом 404. Сторінка до якої виконується запит не знайдена. |
5 | Paiment required | Відповідь надається разом із HTTP статусом 402. Недостатньо коштів для виконання платного запиту. |
6 | Parse Error або `search_date` has wrong format | Відповідь надається разом із HTTP статусом 400. Не правильний формат одного або декількох параметрів запиту. |
9 | Rate limit exceeded | Відповідь надається разом із HTTP статусом 429. Вичерпано кількість запитів, дозволених виконати протягом проміжку часу. |
10 | `code` or `passport` parameter must be provided. | У запиті не надано параметрів необхідних для виконання пошуку. |
11 | `passport` parameter has wrong value. | Один або більше параметрів запиту має невірний формат. |
20 | Internal error | Відповідь надається разом із HTTP статусом 500. |
Технічні вимоги до автоматичного збагачення award даними КБВ з ЄДР
Ключові правила
- Інтеграція тригериться тільки при створенні award в модель даних beneficiariesGeneralInfo
- Запит асинхронний
- Дані записуються тільки якщо валідні
- Запис — атомарний (все або нічого)
- Можливі декілька КБВ
- Retry (3 рази) тільки для:
- Slack alert тільки для:
- Fallback текст при недоступності ЄДР
- У разі отримання першої відповіді від ЄДР з HTTP статусом 402 або 429 ЦБД має призупинити направлення всіх наступних запитів до сервісу ЄДР до моменту ручного або автоматичного відновлення інтеграції після внесення коштів / відновлення ліміту.
- Система повинна обробляти помилки ЄДР:
- технічні помилки (500, 502) → retry (Якщо не вдається отримати відповідь виводимо в поле systemReason текст "Не вдалось отримати інформацію з сервісу")
- авторизаційні (401) → refresh token
- бізнес/доступ (402, 403, 406, 429) → зупинка або alert
- помилки даних (400) → без retry, з логуванням
- помилки даних (404) → без retry (Якщо не вдається отримати відповідь виводимо в поле systemReason текст "Суб'єкт не знайдено в ЄДР")
Система не повинна виконувати безкінечні повторні запити.
| Технічна назва | Бізнес назва (x-legalName) | Тип | Read only | Обовʼязковість (потребує уточнень) | Коментар |
|---|
| uk_UA | en_US |
|---|
beneficiaries
| Інформація про кінцевого бенефеціарного влсника | Information about the ultimate beneficial owner
| list of objects | true | false |
| | | fallback | | | object | true | false | Може бути тільки один в разі відсутності даних про КБВ | | |
| systemReason | Системна причина відсутності даних | Systemic reason for missing data | string | true | false |
| | | excluded | Ознака виключення відомостей про КБВ за вказівкою Міністерства юстиції України | | | true | false |
| | | isMissing | Ознака відсутності КБВ юридичної особи | |
| true | false |
| | | reason | Причина відсутності КБВ юридичної особи | | string (multilang) | true | false |
| | | informationDate | Дата отримання даних | Date of information | string ($dateTime) | true | true |
| | | beneficiariesGeneralInfo | | | object | true | false | Може бути декілька. Якщо хоча б один КБВ невалідний → НЕ записується жоден |
|
| beneficialName | ПІБ кінцевого бенефеціарного власника | Full name of the ultimate beneficial owner | string (multilang) | true | true | В запиті Прізвище це відповідь на один запит, Імʼя та По батькові - відповідь на інший запит |
|
| address | Адреса | Address | model | true | true |
|
|
| beneficiariesType | Тип бенефіціарного володіння | Type of beneficiaries | string (multilang) | true | true |
|
|
| role | Роль КБВ по відношенню до пов’язаного суб’єкта |
| string | true | true | Відповідь на запит текстове відображення ролі (roleText) |
|
| interest | Відсоток частки статутного капіталу або відсоток права голосу |
| float | true | true |
|
|
| indirectInterest | Відсоток частки статутного капіталу або відсоток права голосу у разі непрямого впливу |
| float | true | true |
|
|
| otherImpact | Інший характер та міру впливу |
| |
|
|
|
|
| beneficiaryFalse | Ознака можливої недостовірності інформації про КБВ |
| |
|
|
|
|
Правила обробки помилок
| HTTP code | Тип | Retry | Зупинка інтеграції | Slack | Дія |
|---|
| 400 | DATA | Ні | Ні | Так | помилка запиту |
| 401 | AUTH | Так (1 раз) | НІ | Ні | refresh token |
| 402 | BUSINESS | Ні | Так | Так | очікування оплати |
| 403 | ACCESS | Ні | Ні (можливо) | Так | перевірка доступу |
| 404 | DATA | Ні | Ні | Ні | суб'єкт відсутній |
| 406 | DATA | Ні | Ні (можливо) | Так | помилка формату |
| 429 | BUSINESS | НІ | Так | Так | перевищено ліміт |
| 500 | TECH | Так (3 рази) | Ні | Ні | тимчасова помилка |
| 502 | TECH | Так (3 рази) | Ні | Ні | сервіс недоступний |
Інтеграція
Зупинка інтеграції
Тригер
Інтеграція зупиняється при:
Поведінка
- всі нові запити НЕ виконуються
- статус інтеграції змінюється
Статуси інтеграції
| Статус | Опис |
|---|
active | Запити до ЄДР виконуються |
payment_required | Отримано 402, запити зупинено |
rate_limit_exceeded | Отримано 429, запити зупинено |
suspended | Загальний статус призупинення |
| auth_error | Проблема з токеном |
| access_denied | 403 |
| invalid_request | 400/406 |
Сценарії роботи інтеграції з ЄДР
User Story 1
| Як | ЦБД Prozorro.Sale |
| я хочу | автоматично отримувати та зберігати інформацію про кінцевих бенефіціарних власників (КБВ) з ЄДР при створенні award |
| щоб | забезпечити актуальність, централізацію та зменшити залежність від ручного введення даних |
USE CASE 1 — Успішне отримання та збереження КБВ
Назва | Отримання та запис КБВ з ЄДР в award |
| Актори | - ЦБД (primary)
- ЄДР API (external)
|
| Передумови | - Процедура входить в перелік дозволених (LLE, LLD, …, SUD)
- В процедурі використовується документ
x_ultimateBeneficiaryInfo - Учасник є юридичною особою
award.bidders.identifier.scheme = UA-EDRaward.status ∈ {pending_waiting, pending_admission, pending}
|
| Основний сценарій | - Учасник подає заявку
- Майданчик активує заявку
- Заявка переходить у кваліфікацію
- ЦБД створює
award - ЦБД перевіряє умови запуску інтеграції
- ЦБД виконує авторизацію в ЄДР (отримує JWT токен)
- ЦБД відправляє запит до ЄДР з
code = ЄДРПОУ - ЄДР повертає дані КБВ (може бути список)
- ЦБД валідовує відповідь
- Дані відповідають моделі
beneficiariesGeneralInfo - ЦБД записує дані в
award.beneficiaries - Оновлює:
award.dateModifiedprocedure.dateModifiedsystemDateModified
|
| Результат | award містить список КБВ (може бути декілька) |
Acceptance Criteria
1 | Given | Всі умови виконані |
When | Створюється award |
Then | Відправляється запит до ЄДР |
2
| Given | ЄДР повернув валідні дані |
When | Дані проходять валідацію |
Then | Вони записуються в award.beneficiaries |
3 | Given | Дані записані |
Then | оновлюються всі dateModified: award.dateModifieddateModified (procedure)systemDateModified
|
USE CASE 2 — Дані не можуть бути внесені
Назва | Відмова у записі КБВ |
| Актори | - ЦБД (primary)
- ЄДР API (external)
|
| Передумови | Отримано HTTP код: 400, 401, 402, 403, 404, 406, 429 |
| Основний сценарій | - ЦБД отримує відповідь від ЄДР
- Перевіряє структуру
- Дані:
- неповні / некоректні / не мапляться
- ЦБД НЕ записує дані
|
| Результат | award без змін |
Acceptance Criteria
1 | Given | Дані не відповідають моделі |
When | Виконується валідація |
Then | Дані не записуються |
USE CASE 3 — Retry при помилках 500 / 502
Назва | Повторна спроба отримання даних |
| Актори | - ЦБД (primary)
- ЄДР API (external)
|
| Передумови | Отримано HTTP код: 500, 502 |
| Основний сценарій | - ЦБД відправляє запит
- Отримує 500 або 502
- Виконує retry
- Повторює до 3 разів
|
| Альтернативний сценарій | після 3 невдалих спроб → fallback |
| Результат | - якщо успіх → UC1
- якщо ні → запис тексту помилки
|
Acceptance Criteria
1 | Given | Отримано 500/502 |
When | Виконується retry |
Then | Система повторює запит до 3 разів |
2 | Given | Всі retry невдалі |
Then | Записується повідомлення: "Не вдалось отримати інформацію з сервісу" |
USE CASE 4 — Логування помилок в Slack
Назва | Моніторинг інтеграції з ЄДР |
| Актори | - ЦБД (primary)
- ЄДР API (external)
|
| Передумови | - Отримано HTTP код:
400, 401, 402, 403, 404, 406, 429
|
| Основний сценарій | - ЦБД отримує помилку
- Формує повідомлення
- Відправляє в Slack канал
|
| Результат | |
Acceptance Criteria
1 | Given | Отримано помилку зі списку |
When | Обробляється відповідь |
Then | Відправляється повідомлення в Slack |
USE CASE 5 — Інтеграція не запускається
Назва | Неініціювання запиту до ЄДР |
| Актори | - ЦБД (primary)
- ЄДР API (external)
|
| Передумови | Будь-яка з умов НЕ виконується: - процедура не з переліку
- відсутній
x_ultimateBeneficiaryInfo - не юрособа
- не UA-EDR
- статус award не підходить
|
| Основний сценарій | - Створюється award
- ЦБД перевіряє умови
- Інтеграція НЕ запускається
|
| Результат | Жодних запитів до ЄДР |
Acceptance Criteria
1 | Given | Умови не виконані |
When | Створюється award |
Then | запит до ЄДР не виконується |
USE CASE 6 — Обробка множинних КБВ
Назва | Запис кількох бенефіціарів |
| Актори | - ЦБД (primary)
- ЄДР API (external)
|
| Передумови | - Процедура входить в перелік дозволених (LLE, LLD, …, SUD)
- В процедурі використовується документ
x_ultimateBeneficiaryInfo - Учасник є юридичною особою
award.bidders.identifier.scheme = UA-EDRaward.status ∈ {pending_waiting, pending_admission, pending}
|
| Основний сценарій | - ЄДР повертає список КБВ
- ЦБД мапить кожен запис
- Формує list of objects
- Записує в
award.beneficiaries[]
|
| Результат | Збережено всі КБВ |
Acceptance Criteria
1 | Given | ЄДР повертає кілька КБВ |
When | Відбувається запис |
Then | Всі КБВ зберігаються в масиві |
User Story 2. Зупинка запитів в разі отримання помилок 402 або 429
| Як | ЦБД Prozorro.Sale |
| я хочу | зупиняти направлення запитів до ЄДР після першого отримання помилки 402 або 429 |
| щоб | не створювати зайве навантаження на сервіс, не витрачати ліміти та уникати повторних неуспішних запитів до моменту відновлення доступу/поповнення коштів. |
| додатково | Після внесення коштів або відновлення ліміту система має відновити направлення запитів до ЄДР. |
USE CASE 7 — Зупинка запитів після отримання 402
Назва | Автоматичне призупинення інтеграції з ЄДР при помилці 402 Payment Required |
| Актори | - ЦБД
- ЄДР
- Адміністратор/відповідальна команда
- Slack канал
|
| Передумови | - Інтеграція з ЄДР активна
- ЦБД направляє запит до ЄДР для отримання даних КБВ
- ЄДР повертає HTTP
402 - У вимогах уже передбачено фіксацію таких помилок у Slack.
|
| Основний сценарій | - ЦБД направляє запит до ЄДР.
- ЄДР повертає відповідь
402 Payment Required. - ЦБД фіксує факт отримання помилки.
- ЦБД змінює внутрішній статус інтеграції з ЄДР на умовний:
suspended;- або
payment_required; - або
temporarily_disabled.
- ЦБД припиняє направлення нових запитів до ЄДР.
- ЦБД відправляє повідомлення в Slack канал.
- Для нових awards, які підпадають під умови інтеграції, запит до ЄДР не виконується.
- У відповідному полі/технічному статусі фіксується причина:
Запити до ЄДР тимчасово призупинено через необхідність оплати.
|
| Результат | - Нові запити до ЄДР не направляються.
- Команда отримала повідомлення про необхідність внесення коштів.
- Дані КБВ для нових awards тимчасово не збагачуються.
|
Acceptance Criteria
1 | Given | ЦБД отримала від ЄДР відповідь 402 |
When | Система обробляє відповідь |
Then | Інтеграція з ЄДР переходить у статус призупинення. |
2
| Given | Інтеграція має статус призупинення через 402 |
When | Створюється новий award, який відповідає умовам інтеграції |
Then | ЦБД не направляє запит до ЄДР. |
3 | Given | Отримано 402 |
| When | Система фіксує помилку |
Then | Повідомлення надсилається в Slack канал. |
USE CASE 8 — Зупинка запитів після отримання 429
Назва | Автоматичне призупинення інтеграції з ЄДР при помилці 429 Many Requests |
| Актори | - ЦБД
- ЄДР
- Slack канал
- Адміністратор/відповідальна команда
|
| Передумови | - Інтеграція з ЄДР активна
- ЦБД направляє запит до ЄДР
- ЄДР повертає HTTP
429 429 означає, що вичерпано обмеження запитів до ресурсу.
|
| Основний сценарій | - ЦБД направляє запит до ЄДР.
- ЄДР повертає відповідь
429 Many Requests. - ЦБД фіксує помилку.
- ЦБД призупиняє направлення нових запитів до ЄДР.
- ЦБД відправляє повідомлення в Slack канал.
- Нові awards, які підпадають під інтеграцію, не ініціюють запит до ЄДР.
- Система фіксує причину призупинення:
Перевищено ліміт запитів до ЄДР.
|
| Результат | - Інтеграція тимчасово зупинена.
- Нові запити до ЄДР не виконуються.
- Команда повідомлена про перевищення ліміту.
|
Acceptance Criteria
1 | Given | ЦБД отримала відповідь 429 |
When | Система обробляє відповідь |
Then | Направлення нових запитів до ЄДР зупиняється. |
2
| Given | Інтеграція призупинена через 429 |
When | Створюється новий award |
Then | ЦБД не направляє запит до ЄДР |
3 | Given | Отримано 429 |
| When | Система обробляє помилку |
Then | Повідомлення надсилається в Slack канал. |
USE CASE 9 — Відновлення запитів після внесення коштів
Назва | Ручне або автоматичне відновлення інтеграції з ЄДР після внесення коштів |
| Актори | - Адміністратор/відповідальна команда
- ЦБД
- ЄДР
|
| Передумови | - Інтеграція з ЄДР була призупинена через
402 - Кошти внесено / доступ до сервісу відновлено
|
| Основний сценарій | - Відповідальна команда вносить кошти.
- Адміністратор ініціює відновлення інтеграції.
- ЦБД змінює статус інтеграції з:
payment_required / suspended- на
active.
- ЦБД відновлює направлення запитів до ЄДР.
- При створенні наступного award ЦБД знову виконує стандартну логіку запиту до ЄДР.
- Якщо ЄДР повертає
200, дані КБВ обробляються та записуються в award.
|
| Результат | - Інтеграція з ЄДР активна.
- Нові запити знову направляються.
- Дані КБВ можуть бути отримані та внесені в award.
|
Acceptance Criteria
1 | Given | Інтеграція призупинена через 402 |
| And | Кошти внесено |
When | Адміністратор активує інтеграцію |
Then | Статус інтеграції змінюється на active. |
2
| Given | Інтеграція активна після відновлення |
When | Створюється новий award |
Then | ЦБД направляє запит до ЄДР |
3 | Given | ЄДР після відновлення повертає 200 |
| When | ЦБД отримує валідні дані |
Then | Дані записуються в award.beneficiaries |
USE CASE 10 — Відновлення після вичерпання ліміту запитів
Назва | Відновлення інтеграції після помилки 429 |
| Актори | - Адміністратор/відповідальна команда
- ЦБД
- ЄДР
|
| Передумови | - Інтеграція була призупинена через
429 - Ліміт запитів поновлено або відповідальна команда підтвердила можливість повторного використання сервісу
|
| Основний сценарій | - Відповідальна команда перевіряє, що ліміт запитів відновлено.
- Адміністратор активує інтеграцію.
- ЦБД змінює статус інтеграції на
active. - Наступні awards знову запускають запит до ЄДР.
- Якщо ЄДР повертає успішну відповідь — дані обробляються за стандартним сценарієм.
|
| Результат | - Запити до ЄДР відновлені.
- Система продовжує автоматичне збагачення awards даними КБВ.
|
Acceptance Criteria
1 | Given | Інтеграція призупинена через 429 |
When | Ліміт запитів відновлено |
And | Адміністратор активує інтеграцію |
Then | ЦБД знову направляє запити до ЄДР |
2
| Given | Інтеграція активована після 429 |
When | Створюється award |
Then | Запит до ЄДР виконується |
User Story 3. Обробка помилок інтеграції з ЄДР та забезпечення стабільності системи
| Як | ЦБД Prozorro.Sale |
| я хочу | коректно обробляти всі типи помилок від ЄДР (400, 401, 403, 404, 406, 500, 502) |
| щоб | забезпечити стабільну роботу системи, не втрачати дані та мати можливість відновлення інтеграції |
USE CASE 11 — Обробка 401 (Unauthorized)
Назва | Автоматичне оновлення токена при помилці 401 |
| Актори | |
| Передумови | - Запит до ЄДР виконано
- Отримано
401 Unauthorized
|
| Основний сценарій | - ЦБД отримує
401 - Визначає, що токен невалідний / протермінований
- Виконує запит на оновлення
access_token через refresh_token - Отримує новий токен
- Повторює запит до ЄДР (1 раз)
- Якщо успішно → стандартний сценарій (запис даних)
|
| Альтернативний сценарій | Refresh token невалідний → перейти до помилки критичного рівня |
| Результат | Інтеграція відновлюється без втручання людини |
Acceptance Criteria
1 | Given | Отримано 401 |
When | Токен протермінований |
Then | Система виконує refresh token |
2
| Given | Токен оновлено |
Then | Запит повторюється 1 раз |
3 | Given | повторний запит успішний |
Then | дані записуються в award |
USE CASE 12 — Помилка 400 (Bad Request)
Назва | Обробка некоректного запиту до ЄДР |
| Актори | |
| Передумови | - неправильний формат параметрів
- неправильний code
|
| Основний сценарій | - ЦБД отримує
400 - Аналізує помилку
- Визначає:
- помилка у формуванні запиту
- НЕ виконує retry
- Логує помилку
- Надсилає повідомлення в Slack
|
| Рішення | Виправлення формату запиту (dev fix) |
| Результат | - запит не повторюється
- потрібне втручання розробника
|
Acceptance Criteria
1
| Given | Отримано 400 |
When | Обробляється помилка |
Then | Retry не виконується |
And | Slack отримує повідомлення |
USE CASE 13 — Помилка 403 (Forbidden)
Назва | Обробка відсутності прав доступу |
| Актори | |
| Передумови | - змінились права доступу до API
- акаунт не має доступу
|
| Основний сценарій | - ЦБД отримує
403 - Фіксує помилку
- НЕ виконує retry
- Відправляє alert в Slack
- (опційно) переводить інтеграцію в статус
restricted
|
| Рішення | - перевірка прав доступу
- перевидача ключів / ролей
|
| Результат | Інтеграція не працює до виправлення |
Acceptance Criteria
1
| Given | Отримано 403 |
Then | Retry не виконується |
And | Slack отримує повідомлення |
USE CASE 14 — Помилка 404 (Not Found)
Назва | Обробка відсутності суб’єкта в ЄДР |
| Актори | |
| Передумови | ЄДРПОУ не знайдено |
| Основний сценарій | - ЦБД отримує
404 - Визначає, що суб'єкт відсутній
- НЕ виконує retry
- Записує beneficiaries тільки поле reason:
- "Суб'єкт не знайдено в ЄДР"
|
| Результат | |
Acceptance Criteria
1
| Given | Отримано 404 |
Then | Retry не виконується |
And | Записує beneficiaries тільки поле reason: - "Суб'єкт не знайдено в ЄДР"
|
USE CASE 15 — Помилка 406 (Not Acceptable)
Назва | Обробка помилки формату даних |
| Актори | |
| Передумови | Некоректний формат request/response |
| Основний сценарій | - ЦБД отримує
406 - Фіксує помилку
- НЕ виконує retry
- Відправляє alert в Slack
|
| Рішення | - перевірка контракту API
- виправлення формату
|
| Результат | - інтеграція потребує доопрацювання
|
Acceptance Criteria
1
| Given | Отримано 406 |
Then | Retry не виконується |
And | Slack отримує повідомлення |