API звітів SonarQube та вебхуки
У цій статті описано, як програмно отримати доступ до звітів про безпеку SonarQube, збережених на платформі Procurize. Вона охоплює REST API для переліку та отримання звітів, завантаження архівів звітів та підписки на сповіщення вебхуків, коли надходять нові звіти.
Огляд
Підмодуль SonarQube Reports дозволяє організаціям централізовано зберігати та керувати звітами про безпеку та якість коду, створеними SonarQube. Платформа Procurize надає ці дані через:
- REST API для отримання метаданих про збережені звіти
- Кінцеву точку для завантаження артефактів звітів у вигляді ZIP‑архівів
- Вебхуки для майже реального часу сповіщень, коли нові звіти стають доступними
Ці можливості дозволяють інтегруватися з CI/CD конвеєрами, системами GRC, внутрішніми панелями та інструментами управління ризиками третіх сторін.
Аутентифікація та авторизація
Усі API‑запити, описані в цій статті, не вимагають автентифікації.
Ідентифікатор організації
Для всіх запросів, описаних нижче, потрібен ідентифікатор організації.
Його можна знайти у панелі налаштувань організації за адресою https://dashboard.procurize.ai.
Зверніть увагу, що доступ до панелі налаштувань вимагає авторизації, а для доступу до панелі налаштувань організації потрібна роль користувача не нижче Administrator у цій організації.

Базовий URL
Усі кінцеві точки REST API розміщені під наступним базовим URL:
https://api.procurize.com
REST API звітів SonarQube
Перелік звітів
Отримує посторінковий список звітів про безпеку SonarQube, збережених на платформі.
Кінцева точка
GET /security/report/list
Параметри запиту
org(обов’язково): Ідентифікатор організації.version(необов’язково): Точна версія продукту у форматі Semantic Versioning.minver(необов’язково): Мінімальна версія продукту у форматі Semantic Versioning.maxver(необов’язково): Максимальна версія продукту у форматі Semantic Versioning.
Зверніть увагу, що принаймні один з параметрів version, minver або maxver повинен бути вказаний у запиті.
Приклад запиту
curl "https://api.procurize.com/security/report/list?org=00000000-0000-0000-0000-000000000001&version=1.0"
Приклад відповіді
{
"organizationId": "00000000-0000-0000-0000-000000000001",
"reports": [
{
"projectName": "Test product",
"id": "00000000-0000-0000-0000-000000000002",
"reportType": "CWE Top 25",
"reportVersion": 2024,
"projectVersion": "1.0",
"date": "2025-12-17T09:05:48.5946432+00:00",
"uploadDate": "2025-12-17T09:05:48.5946432+00:00",
"vulnerabilitiesCount": 0,
"securityRating": "A"
}
]
}
Завантажити архів звіту
Завантажує ZIP‑архів, що містить повний набір артефактів звіту SonarQube. Архів включає HTML‑ та PDF‑звіти.
Кінцева точка
GET /security/report/files
org(обов’язково): Ідентифікатор організації.reports(обов’язково): Масив ідентифікаторів звітів.
Приклад запиту
curl "https://api.procurize.com/security/report/files?org=00000000-0000-0000-0000-000000000001&reports=00000000-0000-0000-0000-000000000002&reports=00000000-0000-0000-0000-000000000003"
Відповідь
- Content‑Type:
application/zip - Тіло відповіді містить бінарний ZIP‑файл
Клієнти повинні потоково читати відповідь та зберігати її на диск.
Обробка помилок
API використовує стандартні коди статусу HTTP.
200 OK: Запит успішний204 No Content: Звіт не існує400 Bad Request: Неправильні параметри або некоректний запит500 Internal Server Error: Неочікувана помилка сервера
У відповідях про помилки повертаються машинозчитуваний код помилки та зрозуміле повідомлення.
Вебхуки
Вебхуки Procurize дозволяють зовнішнім системам отримувати сповіщення, коли нові звіти SonarQube надходять або оновлюються.
Налаштування вебхукiв
Вебхуки можна додавати або редагувати у панелі налаштувань організації, розділ Security reports за адресою https://dashboard.procurize.ai.
Зверніть увагу, що доступ до панелі налаштувань вимагає авторизації, а для доступу до панелі налаштувань організації потрібна роль користувача не нижче Administrator у цій організації.

Для перевірки вебхукiв можна використовувати популярні онлайн‑сервіси, наприклад https://webhook-test.com
Корисне навантаження вебхука
Події вебхука надсилаються у вигляді HTTP POST‑запитів з JSON‑навантаженням.
Приклад навантаження
{
"organizationId": "00000000-0000-0000-0000-000000000001",
"reports": [
{
"projectName": "Test product",
"id": "00000000-0000-0000-0000-000000000002",
"reportType": "CWE Top 25",
"reportVersion": 2024,
"projectVersion": "1.0",
"date": "2025-12-17T09:05:48.5946432+00:00",
"uploadDate": "2025-12-17T09:05:48.5946432+00:00",
"vulnerabilitiesCount": 0,
"securityRating": "A"
}
]
}
Безпека вебхука
Для гарантування автентичності запити вебхука містять заголовок підпису, згенерований за допомогою спільного секрету.
- Підпис розраховується за алгоритмом HMAC‑SHA256
- Клієнти повинні перевіряти підпис перед обробкою навантаження
Це запобігає неавторизованим або підробленим доставкам вебхуків.
Доставлення та повторні спроби
- Вебхуки вважаються успішно доставленими, якщо сервер повертає відповідь
2xx - Неуспішні доставки автоматично повторюються щогодини
- Події можуть бути доставлені кілька разів; споживачі повинні реалізовувати ідемпотентну обробку
Типові варіанти використання
- Автоматичне імпортування виявлень SonarQube у внутрішні дашборди безпеки
- Запуск процесів відповідності, коли не проходять quality gates
- Архівація звітів безпеки для аудитів та переглядів ризиків постачальників
- Синхронізація сторонніх систем з останньою постурою безпеки коду
