API отчетов SonarQube#

В этой статье описывается, как программно получать отчеты по безопасности SonarQube, хранящиеся на платформе Procurize. Рассматривается REST API для получения списка отчетов и их загрузки в форматах HTML, PDF и ZIP.

Обзор#

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

  • Получать метаданные отчетов для организации, группы проектов или проекта
  • Загружать отдельный отчет в формате HTML, PDF или ZIP
  • Загружать выбранные отчеты в виде ZIP-архива
  • Загружать все отчеты проекта или группы проектов в виде ZIP-архива
  • Получать последние отчеты OWASP Top 10 и CWE Top 25 напрямую из сервиса SonarQube

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

Точки доступа#

Точка доступаМетодНазначение
/security/report/listGETПолучить метаданные отчетов для выбранного диапазона и версии.
/security/report/filesGETЗагрузить выбранные отчеты в виде ZIP-архива.
/security/report/htmlGETПолучить отдельный отчет в формате HTML.
/security/report/pdfGETПолучить отдельный отчет в формате PDF.
/security/report/zipGETПолучить отдельный отчет в виде ZIP-архива.
/security/report/project-filesGETЗагрузить все отчеты проекта в виде ZIP-архива.
/security/report/directory-filesGETЗагрузить все отчеты группы проектов (директории) в виде ZIP-архива.
/security/reports/fetchPOSTПолучить последние отчеты из сервиса SonarQube.

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

Точки доступа для получения списка отчетов и их загрузки, описанные в этой статье, не требуют аутентификации.

Точка доступа POST /security/reports/fetch требует аутентификации с помощью API‑токена — см. API Tokens.

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

Идентификатор организации требуется для большинства запросов, описанных здесь. Вы можете передать либо ID организации (UUID), либо её псевдоним — см. Идентификаторы и псевдонимы.

Вы можете найти его в панели настроек организации по адресу https://dashboard.procurize.ai.

Обратите внимание, что доступ к панели настроек требует авторизации, а доступ к панели настроек организации требует роли пользователя не ниже Администратора в этой организации.

Кнопка копировать ID

Идентификаторы и псевдонимы#

Параметры области принимают либо ID сущности (UUID), либо читаемый псевдоним. Псевдонимы упрощают чтение запросов и стабильны в разных средах.

ПараметрПринимаетПримеры псевдонимов
orgID организации или псевдонимaspose, groupdocs
directoryID директории (группы проектов) или псевдонимaspose-imaging, groupdocs-annotation
projectID проекта или псевдонимaspose-imaging-net, groupdocs-annotation-java

Например, следующие два запроса эквивалентны:

curl "https://api.procurize.com/security/report/list?org=00000000-0000-0000-0000-000000000001&version=1.0"
curl "https://api.procurize.com/security/report/list?org=aspose&version=1.0"

Примечание: Псевдонимы не поддерживаются для параметра id точек доступа массовой загрузки. Передавайте UUID директории или проекта в GET /security/report/project-files и GET /security/report/directory-files.

Базовый URL#

Все точки доступа REST API доступны по следующему базовому URL:

https://api.procurize.com

REST API отчетов SonarQube#

Получить список отчетов#

Возвращает отчеты по безопасности, доступные для выбранной области и версии, без содержимого файлов. Используйте эту точку доступа для получения ID отчетов, которые можно передать в точки доступа загрузки.

Endpoint

GET /security/report/list

Query Parameters

  • org (необязательно): ID организации или псевдоним (например, aspose или groupdocs). Наиболее широкий диапазон.
  • directory (необязательно): ID директории (группы проектов) или псевдоним (например, aspose-imaging или groupdocs-annotation). Уже диапазон.
  • project (необязательно): ID проекта или псевдоним (например, aspose-imaging-net или groupdocs-annotation-java). Самый узкий диапазон.
  • version (необязательно): Точная версия проекта.
  • minver (необязательно): Минимальная версия проекта.
  • maxver (необязательно): Максимальная версия проекта.

По крайней мере один из параметров области org, directory или project обязателен. Приоритет областей следующий: если указан project, ищется только этот проект; иначе, если указан directory, ищется вся группа проектов; иначе ищется вся организация (org). Когда org указан вместе с project или directory, цель дополнительно проверяется на принадлежность к этой организации.

По крайней мере один из version, minver или maxver обязателен. Если указан version, параметры minver и maxver игнорируются.

Request Example

curl "https://api.procurize.com/security/report/list?org=aspose&version=1.0"

Scoping to a project group or a project by alias:

curl "https://api.procurize.com/security/report/list?directory=aspose-imaging&minver=1.0&maxver=2.0"

curl "https://api.procurize.com/security/report/list?project=aspose-imaging-net&version=1.0"

Response Example

{
  "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"
    }
  ]
}

Response Fields

  • organizationId: Организация, к которой принадлежат отчеты.
  • reports[].id: Уникальный ID отчета. Передайте это значение в точки доступа загрузки.
  • reports[].projectName: Отображаемое название продукта.
  • reports[].projectVersion: Версия продукта.
  • reports[].reportType: Тип отчета (OWASP Top 10 или CWE Top 25).
  • reports[].reportVersion: Версия (год) стандарта отчета.
  • reports[].date: Дата генерации отчета.
  • reports[].uploadDate: Дата загрузки отчета в Procurize.
  • reports[].vulnerabilitiesCount: Количество найденных уязвимостей.
  • reports[].securityRating: Общий рейтинг безопасности (A–E, где A — лучший).

Загрузка отчетов по ID#

Загружает ZIP‑архив, содержащий выбранные отчеты. Каждый отчет включён в форматах HTML и PDF.

Endpoint

GET /security/report/files

Query Parameters

  • org (обязательно): ID организации или псевдоним (например, aspose или groupdocs).
  • reports (обязательно): ID отчетов для включения. Повторяйте параметр для указания нескольких отчетов.

Request Example

curl "https://api.procurize.com/security/report/files?org=aspose&reports=00000000-0000-0000-0000-000000000002&reports=00000000-0000-0000-0000-000000000003" -o reports.zip

Response

  • Content-Type: application/zip
  • Тело ответа содержит бинарный ZIP‑файл.

Клиенты должны потоково получать ответ и сохранять его на диск.

Работа с отдельным отчетом#

Точки доступа /security/report/html, /security/report/pdf и /security/report/zip возвращают один конкретный отчет и используют одинаковые правила выбора.

Выбор отчета#

Тип отчета и версия всегда обязательны:

  • rt (обязательно): Тип отчета. Поддерживаемые значения: OWASP Top 10 и CWE Top 25.
  • rv (обязательно): Версия отчета — год издания стандарта, например 2025 для OWASP Top 10 или 2024 для CWE Top 25.

Конкретный отчет выбирается одним из двух способов:

  • По ID отчета — передайте id (ID отчета) вместе с project (ID проекта или псевдоним) или org (ID организации или псевдоним). Не передавайте version в этом режиме.
  • По версии проекта — передайте project (ID проекта или псевдоним, например aspose-imaging-net или groupdocs-annotation-java) и version (версия проекта). Параметр org в этом режиме не используется.

Если указаны одновременно project и org, параметр org игнорируется.

Получить отчет в формате HTML#

Отображает один отчет в виде HTML‑страницы или возвращает его как загружаемый HTML‑файл.

Endpoint

GET /security/report/html

Query Parameters

  • rt (обязательно): Тип отчета.
  • rv (обязательно): Версия отчета.
  • Параметры выбора отчета: см. Выбор отчета.
  • download (необязательно): Установите true, чтобы вернуть HTML как файл для загрузки (Content-Disposition: attachment). Если параметр опущен или false, отчет возвращается встроенно.

Request Example

curl "https://api.procurize.com/security/report/html?rt=OWASP+Top+10&rv=2025&id=00000000-0000-0000-0000-000000000004&project=aspose-imaging-net"

Чтобы загрузить HTML‑файл вместо отображения его встроенно:

curl "https://api.procurize.com/security/report/html?rt=OWASP+Top+10&rv=2025&project=aspose-imaging-net&version=1.0&download=true" -o report.html

Response

  • Content-Type: text/html

Получить отчет в формате PDF#

Возвращает один отчет в виде PDF‑документа.

Endpoint

GET /security/report/pdf

Query Parameters

  • rt (обязательно): Тип отчета.
  • rv (обязательно): Версия отчета.
  • Параметры выбора отчета: см. Выбор отчета.

Request Example

curl "https://api.procurize.com/security/report/pdf?rt=CWE+Top+25&rv=2024&project=aspose-imaging-net&version=1.0" -o report.pdf

Response

  • Content-Type: application/pdf

Получить отчет в формате ZIP#

Возвращает один отчет в виде ZIP‑архива, содержащего версии HTML и PDF.

Endpoint

GET /security/report/zip

Query Parameters

  • rt (обязательно): Тип отчета.
  • rv (обязательно): Версия отчета.
  • Параметры выбора отчета: см. Выбор отчета.

Request Example

curl "https://api.procurize.com/security/report/zip?rt=CWE+Top+25&rv=2024&id=00000000-0000-0000-0000-000000000004&org=groupdocs" -o report.zip

Response

  • Content-Type: application/zip

Загрузка всех отчетов проекта#

Загружает ZIP‑архив, содержащий все отчеты указанного проекта, в форматах HTML и PDF.

Endpoint

GET /security/report/project-files

Query Parameters

  • id (обязательно): ID проекта. Псевдонимы не поддерживаются; передайте UUID проекта.
  • rt (необязательно): Фильтр по типу отчета. Поддерживаемые значения: OWASP Top 10 и CWE Top 25.
  • rv (необязательно): Фильтр по версии отчета (год).
  • version (необязательно): Фильтр по версии проекта.

Если фильтры не указаны, включаются все отчеты проекта. Параметры фильтра могут комбинироваться и применяются независимо.

Request Example

curl "https://api.procurize.com/security/report/project-files?id=00000000-0000-0000-0000-000000000005" -o project-reports.zip

Response

  • Content-Type: application/zip

Загрузка всех отчетов группы проектов#

Загружает ZIP‑архив, содержащий отчеты всех проектов в указанной директории (группе проектов), в форматах HTML и PDF.

Endpoint

GET /security/report/directory-files

Query Parameters

  • id (обязательно): ID директории (группы проектов). Псевдонимы не поддерживаются; передайте UUID директории.
  • rt (необязательно): Фильтр по типу отчета. Поддерживаемые значения: OWASP Top 10 и CWE Top 25.
  • rv (необязательно): Фильтр по версии отчета (год).
  • version (необязательно): Фильтр по версии проекта.

Если фильтры не указаны, включаются отчеты всех проектов в директории. Параметры фильтра могут комбинироваться и применяются независимо.

Request Example

curl "https://api.procurize.com/security/report/directory-files?id=00000000-0000-0000-0000-000000000006" -o directory-reports.zip

Response

  • Content-Type: application/zip

Получение отчетов из SonarQube#

Загружает последние данные отчета по безопасности продукта из сервиса SonarQube в Procurize. Сервис получает последние данные о проблемах из SonarQube, преобразует их в JSON‑представления последних версий отчетов OWASP Top 10 и CWE Top 25 и возвращает их в ответе.

Endpoint

POST /security/reports/fetch

Authentication

Эта точка доступа требует API‑токен, передаваемый в заголовке X-API-Key. Подробности о создании и использовании токенов см. в разделе API Tokens.

Query Parameters

Источник SonarQube выбирается одним из двух способов:

  • По проекту — передайте project (ID проекта или псевдоним — см. Идентификаторы и псевдонимы). Не передавайте url или key.
  • По сервису SonarQube — передайте url (URL сервиса SonarQube) и key (ключ проекта SonarQube) вместе. Не передавайте project.

Request Example

Получить отчет для проекта по его псевдониму:

curl -X POST "https://api.procurize.com/security/reports/fetch?project=aspose-imaging-net" \
  -H "X-API-Key: YOUR_API_TOKEN"

Получить отчет напрямую из сервиса SonarQube:

curl -X POST "https://api.procurize.com/security/reports/fetch?url=https://sonarqube.example.com&key=my-project-key" \
  -H "X-API-Key: YOUR_API_TOKEN"

Response Example

{
  "Owasp10_2025": {
    "TOTAL_SECURITY_RATING": "A",
    "TOTAL_COUNT": 0,
    ...
  },
  "Cwe25_2025": {
    "TOTAL_SECURITY_RATING": "A",
    "TOTAL_COUNT": 0,
    ...
  }
}

Ответ полезен в конвейерах сборки релизов для решения, останавливать ли сборку при обнаружении уязвимостей в публичных форматах отчетов по безопасности.

Notes

  • Загрузка отчета требует личного разрешения для продукта, к которому принадлежат отчеты. Если у вас нет этого разрешения, отправьте запрос всё равно: платформа вернёт 403 Forbidden и автоматически уведомит администраторов платформы, которые рассмотрят запрос и сообщат вам о решении.
  • Не каждый сервис SonarQube может быть зарегистрирован на платформе Procurize. Чтобы зарегистрировать новый сервис, обратитесь к администратору платформы; требуется токен администратора для этого сервиса.

Обработка ошибок#

API использует стандартные коды состояния HTTP.

  • 200 OK: Запрос выполнен успешно
  • 204 No Content: Отчет не существует
  • 400 Bad Request: Неверные параметры или некорректный запрос
  • 401 Unauthorized: Отсутствует или неверный API‑токен
  • 403 Forbidden: Доступ запрещён (например, отсутствует разрешение для продукта)
  • 500 Internal Server Error: Неожиданная ошибка сервера

Ответы с ошибками включают машинно‑читаемый код ошибки и человекочитаемое сообщение.

Смотрите также:#

Связанные статьи#

What are Security Reports?

Security reports repository

How to Configure Security Reports

наверх
Выберите язык