API отчётов SonarQube и вебхуки
Эта статья описывает, как программно получать отчёты по безопасности SonarQube, хранящиеся в платформе Procurize. Она охватывает REST API для перечисления и получения отчётов, загрузки архивов отчётов и подписки на уведомления вебхуков при поступлении новых отчётов.
Обзор
Подмодуль отчётов SonarQube позволяет организациям централизованно хранить и управлять отчётами по безопасности и качеству кода, генерируемыми SonarQube. Платформа Procurize предоставляет эти данные через:
- REST API для получения метаданных о хранящихся отчётах
- Конечную точку для загрузки артефактов отчётов в виде ZIP‑архивов
- Вебхуки для почти мгновенных уведомлений при появлении новых отчётов
Эти возможности позволяют интегрировать данные с конвейерами CI/CD, системами GRC, внутренними дашбордами и сторонними инструментами управления рисками.
Аутентификация и авторизация
Все запросы к API, описанные в этой статье, не требуют аутентификации.
Идентификатор организации
Идентификатор организации требуется для всех запросов, описанных здесь.
Вы можете найти его в панели настроек организации по адресу https://dashboard.procurize.ai.
Обратите внимание, что доступ к панели настроек требует авторизации, а доступ к панели настроек организации возможен только пользователям с ролью не ниже «Администратор» в этой организации.

Базовый 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.
Настройка вебхуков
Вебхуки можно добавить или изменить в панели настроек организации, раздел Security reports, по адресу https://dashboard.procurize.ai.
Обратите внимание, что доступ к панели настроек требует авторизации, а доступ к панели настроек организации возможен только пользователям с ролью не ниже «Администратор» в этой организации.

Для проверки вебхуков можно воспользоваться популярными онлайн‑сервисами, например 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
- Архивирование отчётов по безопасности для аудитов и проверок рисков поставщиков
- Синхронизация сторонних систем с актуальным состоянием безопасности кода
