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/list | GET | Получить метаданные отчетов для выбранного диапазона и версии. |
/security/report/files | GET | Загрузить выбранные отчеты в виде ZIP-архива. |
/security/report/html | GET | Получить отдельный отчет в формате HTML. |
/security/report/pdf | GET | Получить отдельный отчет в формате PDF. |
/security/report/zip | GET | Получить отдельный отчет в виде ZIP-архива. |
/security/report/project-files | GET | Загрузить все отчеты проекта в виде ZIP-архива. |
/security/report/directory-files | GET | Загрузить все отчеты группы проектов (директории) в виде ZIP-архива. |
/security/reports/fetch | POST | Получить последние отчеты из сервиса SonarQube. |
Аутентификация и авторизация#
Точки доступа для получения списка отчетов и их загрузки, описанные в этой статье, не требуют аутентификации.
Точка доступа POST /security/reports/fetch требует аутентификации с помощью API‑токена — см. API Tokens.
Идентификатор организации#
Идентификатор организации требуется для большинства запросов, описанных здесь. Вы можете передать либо ID организации (UUID), либо её псевдоним — см. Идентификаторы и псевдонимы.
Вы можете найти его в панели настроек организации по адресу https://dashboard.procurize.ai.
Обратите внимание, что доступ к панели настроек требует авторизации, а доступ к панели настроек организации требует роли пользователя не ниже Администратора в этой организации.

Идентификаторы и псевдонимы#
Параметры области принимают либо ID сущности (UUID), либо читаемый псевдоним. Псевдонимы упрощают чтение запросов и стабильны в разных средах.
| Параметр | Принимает | Примеры псевдонимов |
|---|---|---|
org | ID организации или псевдоним | aspose, groupdocs |
directory | ID директории (группы проектов) или псевдоним | aspose-imaging, groupdocs-annotation |
project | ID проекта или псевдоним | 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: Неожиданная ошибка сервера
Ответы с ошибками включают машинно‑читаемый код ошибки и человекочитаемое сообщение.
