...
- Учасник є юридичною особою
- Учасник подає заявку на участь
- Майданчик активує заявку на участь
- Заявка на участь перейшла в кваліфікацію
- Під час створення award ЦБД направляє асинхроний запит в ЄДР з авторизаційним ключем і даними для пошуку де виконуються умови:
- Для award в статусах: pending_waiting, pending_admission, pending
- Для award.buyers.identifier.UA-EDR
- Для процедур з переліку процедур
- 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 ЄДР здійснюється за допомогою статичного API токена.
Токен передається у заголовку: Authorization: Token {API_TOKEN}
Обмін даними здійснюється по протоколу HTTPS, що забезпечує захищене передавання токена.
Формат відповіді визначається заголовком: Accept: application/jsonСервіс ЄДР реалізований як API для автоматичного отримання даних для внесення інформації про КБВ учасника торгів що кваліфікується. Взаємодія працює по протоколу HTTP з використанням авторизації через JWT. Загальна логіка процесу: спочатку через метод авторизації отримуємо access та refresh токени, а потім використовуємо їх для виклику ендпоінту отримання даних для заповнення інформації про КБВ за кодом ЄДРПОУ юридичною особи. - Детальніше буде додано після отримання тестового ключа
Дія тестового ключа 6 місяців
...
- Інтеграція тригериться тільки при створенні award в модель даних beneficiariesGeneralInfo
- Запит асинхронний
- Дані записуються тільки якщо валідні
- Запис — атомарний (все або нічого):
- або записуються всі КБВ (якщо хоча б один КБД не валідний - не записується жоден)
- або записується один fallback - обʼєкт
- Основний сценарій:
- Створюється award
- Перевіряються умови
- Виконується авторизація в ЄДР
- Виконується запит до ЄДР
- Отримується відповідь
- Відбувається валідація
- Якщо валідно:
- запис у
award.beneficiaries[] - оновлення:
- award.dateModified
- procedure.dateModified
- systemDateModified
- запис у
- Retry (до 3 разів) тільки для: 500, 502
- retry з exponential backoff
- після 3 спроб → fallback де systemReason = "Не вдалось отримати інформацію з сервісу"
- API_TOKEN зберігається:
- у захищеному конфігураційному середовищі
- не логуються
- не передається у відкритому вигляді
Обмеження
- Система не повинна виконувати безкінечні повторні запити.
- Інтеграція не виконується без умов
- Частковий запис даних заборонений
...
| HTTP code | Retry | Зупинка інтеграції | Slack | Дія |
|---|---|---|---|---|
| 400 | Ні | Ні (можливо) | Так | помилка запиту |
| 401 | Так (1 раз)Ні | НІ | Ні | refresh token |
| 402 | Ні | Так | Так | очікування оплати |
| 403 | Ні | Ні (можливо) | Так | перевірка доступу |
| 404 | Ні | Ні | Ні | суб'єкт відсутній |
| 406 | Ні | Ні (можливо) | Так | помилка формату |
| 429 | НІ | Так | Так | перевищено ліміт |
| 500 | Так (3 рази) | Ні | Ні | тимчасова помилка |
| 502 | Так (3 рази) | Ні | Ні | сервіс недоступний |
Правила додаткової обробки помилок
Обробка 401
означає невалідний або відкликаний токен
retry НЕ виконується
надсилається Slack alert
статус інтеграції →
отримано 401
refresh token
повторити запит (1 раз)
Якщо refresh fail
integration status =auth_error
повідомлення в slack
Обробка 404
- Отримано 404
- запис в поле systemReason = "Суб'єкт не знайдено в ЄДР"
...
Назва | Автоматичне оновлення токена при помилці 401 |
| Актори |
|
| Передумови |
|
| Основний сценарій |
| Альтернативний сценарій |
| |
| Результат |
|
...