API отчётов SonarQube и вебхуки

Эта статья описывает, как программно получать отчёты по безопасности SonarQube, хранящиеся в платформе Procurize. Она охватывает REST API для перечисления и получения отчётов, загрузки архивов отчётов и подписки на уведомления вебхуков при поступлении новых отчётов.

Обзор

Подмодуль отчётов SonarQube позволяет организациям централизованно хранить и управлять отчётами по безопасности и качеству кода, генерируемыми SonarQube. Платформа Procurize предоставляет эти данные через:

  • REST API для получения метаданных о хранящихся отчётах
  • Конечную точку для загрузки артефактов отчётов в виде ZIP‑архивов
  • Вебхуки для почти мгновенных уведомлений при появлении новых отчётов

Эти возможности позволяют интегрировать данные с конвейерами CI/CD, системами GRC, внутренними дашбордами и сторонними инструментами управления рисками.

Аутентификация и авторизация

Все запросы к API, описанные в этой статье, не требуют аутентификации.

Идентификатор организации

Идентификатор организации требуется для всех запросов, описанных здесь.
Вы можете найти его в панели настроек организации по адресу https://dashboard.procurize.ai.
Обратите внимание, что доступ к панели настроек требует авторизации, а доступ к панели настроек организации возможен только пользователям с ролью не ниже «Администратор» в этой организации.

Кнопка копирования ID

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