Тендери компанії на JavaScript: блок «Держзакупівлі» в інтерфейсі
Оновлено 26.09.2026
Картка контрагента в CRM, сервіс перевірки компаній чи кабінет менеджера з тендерів виграють від блоку «Держзакупівлі». Людина відкриває компанію і бачить: скільки тендерів вона оголосила як замовник, скільки виграла як учасник, на які суми, і останні закупівлі списком. Initask API повертає ці дані за кодом ЄДРПОУ запитом `GET https://dani.initask.com/v1/company/{edrpou}/tenders`. Нижче приклад на JavaScript і поради щодо інтерфейсу.
Приклад
```javascript const r = await fetch("https://dani.initask.com/v1/company/42062483/tenders?role=buyer&limit=3", { headers: { Authorization: `Bearer ${process.env.INITASK_KEY}` }, }); const { ok, data, error } = await r.json(); console.log(r.headers.get("X-RateLimit-Remaining"), data); ```
Запит робить сервер з ключем у змінній середовища. Браузер отримує готові дані для блоку, ключ Initask API у код сторінки не потрапляє.
Верх блоку: чотири числа
Підсумок у відповіді дає чотири числа, які варто показати великим шрифтом: кількість тендерів як замовник, їхня очікувана сума в гривнях, кількість перемог як учасник і сума перемог. Для коду з прикладу це вісім тендерів замовника на 294448 гривень і нуль перемог. Поруч з числами посилання на сторінки замовника і учасника на tender.initask.com для тих, кому потрібні деталі.
Перемикач ролі
Під числами перелік тендерів. Параметр `role` визначає, що в ньому: `buyer` дає тендери, оголошені компанією як замовником, `winner` тендери, які вона виграла. Зручно зробити перемикач із двох вкладок. Друга вкладка робить окремий запит на сервер. Поле `total` у відповіді показує, скільки всього тендерів у вибраній ролі, і його варто вивести в назві вкладки.
Кожен рядок переліку містить номер тендера в Prozorro, назву закупівлі, статус, суму, валюту, дату і посилання. У прикладі це закупівлі послуг із соціально-психологічної адаптації ветеранів по 33460 гривень зі статусом `complete`. Назви закупівель бувають довгими, тому в рядку показуйте перші слова і повну назву в підказці.
Форматування сум і дат
Суми в тендерах приходять числами в гривнях, і їх варто форматувати з розділенням розрядів, щоб великі суми читалися з першого погляду. Дата тендера містить час і часовий пояс, а людині зазвичай досить дня: обріжте час при показі. Для підсумкових сум корисно скорочення на кшталт «тис.» і «млн» у великих числах, але в підказці варто показати точне значення.
Скільки рядків
Параметр `limit` задає кількість тендерів від 1 до 200, без нього 50. Для картки контрагента досить пʼяти-десяти останніх, для сторінки аналітики більше. Не просіть 200 для блоку, який показує кілька рядків: відповідь буде важчою без жодної користі.
Три стани порожнечі
Інтерфейс має розрізняти три випадки, і кожен показувати по-своєму.
Перший: нулі в підсумку, назва null і порожній перелік. Компанія в завантажених тендерах не була ні замовником, ні переможцем. Показуйте «Участі в держзакупівлях не знайдено».
Другий: підсумок є, але в обраній ролі перелік порожній, наприклад замовник без перемог. Показуйте порожню вкладку з поясненням.
Третій: поле `items` дорівнює null. Перелік тимчасово недоступний, і це треба сказати прямо: «Перелік тендерів тимчасово недоступний, спробуйте пізніше». Підсумок при цьому можна показати.
Коди, помилки і 429
Параметр `edrpou` приймає код ЄДРПОУ з 8 цифр або РНОКПП підприємця з 10 цифр. Відповідь 400 приходить, коли довжина коду відмінна від 5-8 або 10 цифр, `role` поза buyer і winner або `limit` поза межами 1-200. Після вичерпання ліміту приходить 429 з заголовком `Retry-After`, і блок має показати, що дані тимчасово недоступні.
| План | Запитів | Ціна, грн на місяць |
|---|---|---|
| Безкоштовний | 100 на добу | 0 |
| Старт | 10000 на місяць | 990 |
| Про | 100000 на місяць | 2990 |
Відповідь кешується шлюзом на 10 хвилин. На своєму сервері зберігайте результат для картки контрагента довше, наприклад добу: історія закупівель змінюється повільно.
Що робити
- Перенесіть запит на сервер і віддавайте блоку підсумок і перелік.
- Покажіть чотири числа підсумку і перемикач ролей з кількістю тендерів.
- Обробіть три стани порожнечі окремими повідомленнями.
- Поруч розмістіть картку компанії за ЄДРПОУ, а для пошуку за назвою підключіть пошук компаній.
- Опис полів у документації тендерів, тарифи на сторінці Ціни і ліміти.
Питання і відповіді
Як показати тендери компанії на сайті?
Запит fetch з сервера до https://dani.initask.com/v1/company/{edrpou}/tenders повертає підсумок замовника і переможця і перелік тендерів обраної ролі.
Як переключитися між тендерами замовника і перемогами?
Параметр role=buyer дає тендери, оголошені компанією, role=winner її перемоги. Без параметра береться buyer.
Що означає items: null?
Перелік тимчасово недоступний. Покажіть підсумок і повідомте, що перелік можна подивитися пізніше.