SonarQube Reports API#

У цій статті описано, як програмно отримати звіти безпеки 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.

Ідентифікатор організації#

Для більшості запитів, описаних тут, потрібен ідентифікатор організації. Ви можете передати або UUID організації, або її псевдонім — див. Ідентифікатори та псевдоніми.
Знайти його можна у панелі налаштувань організації за адресою https://dashboard.procurize.ai.
Зверніть увагу, що доступ до панелі налаштувань вимагає авторизації, а доступ до панелі налаштувань організації можливий лише користувачам з роллю щонайменше «Адміністратор» у цій організації.

Кнопка копіювання ID

Ідентифікатори та псевдоніми#

Параметри області приймають або UUID сутності, або зрозумілий людям псевдонім. Псевдоніми спрощують читання запитів і залишаються стабільними між середовищами.

ПараметрПриймаєПриклади псевдонімів
orgІдентифікатор або псевдонім організаціїaspose, groupdocs
directoryІдентифікатор або псевдонім директорії (групи проєктів)aspose-imaging, groupdocs-annotation
projectІдентифікатор або псевдонім проєкту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

SonarQube Reports REST API#

Перелік звітів#

Повертає доступні звіти безпеки для вибраного обсягу та версії без вмісту файлів. Використовуйте цю точку, щоб дізнатися ID звітів, які можна передати у точки завантаження.

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

GET /security/report/list

Параметри запиту

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

Потрібен принаймні один із параметрів області org, directory або project. Пріоритетність обсягів: якщо вказано project, шукається лише цей проєкт; інакше, якщо вказано directory, шукається вся група проєктів; інакше — вся організація (org). Якщо org вказано разом із project або directory, ціль додатково перевіряється на приналежність до цієї організації.

Потрібен принаймні один із параметрів version, minver або maxver. Якщо вказано version, параметри minver і maxver ігноруються.

Приклад запиту

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

Перехід до групи проєктів або проєкту за псевдонімом:

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"

Приклад відповіді

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

Поля відповіді

  • organizationId: Організація, до якої належать звіти.
  • reports[].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.

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

GET /security/report/files

Параметри запиту

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

Приклад запиту

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

Відповідь

  • 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‑файл.

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

GET /security/report/html

Параметри запиту

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

Приклад запиту

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

Відповідь

  • Content-Type: text/html

Отримати звіт у форматі PDF#

Повертає один звіт у вигляді PDF‑документа.

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

GET /security/report/pdf

Параметри запиту

  • rt (обов’язково): Тип звіту.
  • rv (обов’язково): Версія звіту.
  • Параметри вибору звіту: див. розділ Вибір звіту.

Приклад запиту

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

Відповідь

  • Content-Type: application/pdf

Отримати звіт у форматі ZIP#

Повертає один звіт у вигляді ZIP‑архіву, що містить як HTML, так і PDF‑версії.

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

GET /security/report/zip

Параметри запиту

  • rt (обов’язково): Тип звіту.
  • rv (обов’язково): Версія звіту.
  • Параметри вибору звіту: див. розділ Вибір звіту.

Приклад запиту

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

Відповідь

  • Content-Type: application/zip

Завантаження всіх звітів проєкту#

Завантажує ZIP‑архів, що містить усі звіти вказаного проєкту у форматах HTML та PDF.

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

GET /security/report/project-files

Параметри запиту

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

Якщо фільтри не вказані, включаються всі звіти проєкту. Параметри фільтрації можна комбінувати — вони застосовуються незалежно один від одного.

Приклад запиту

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

Відповідь

  • Content-Type: application/zip

Завантаження всіх звітів групи проєктів#

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

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

GET /security/report/directory-files

Параметри запиту

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

Якщо фільтри не вказані, включаються звіти всіх проєктів у директорії. Параметри фільтрації можна комбінувати — вони застосовуються незалежно один від одного.

Приклад запиту

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

Відповідь

  • Content-Type: application/zip

Отримання звітів з SonarQube#

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

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

POST /security/reports/fetch

Автентифікація

Точка вимагає API‑токен, переданий у заголовку X-API-Key. Деталі створення та використання токенів — див. API Tokens.

Параметри запиту

Джерело SonarQube вибирається одним із двох способів:

  • За проєктом — передайте project (ID або псевдонім проєкту — див. Ідентифікатори та псевдоніми). Не передавайте url або key.
  • За сервісом SonarQube — передайте url (URL сервісу SonarQube) та key (ключ проєкту SonarQube) разом. Не передавайте project.

Приклад запиту

Отримати звіт за псевдонімом проєкту:

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"

Приклад відповіді

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

Відповідь корисна у конвеєрах збірки, щоб вирішити, чи зупиняти збірку при виявленні вразливостей у публічних форматах звітів безпеки.

Примітки

  • Завантаження звіту вимагає особистого дозволу на продукт, до якого належать звіти. Якщо у вас немає такого дозволу, все одно надсилайте запит: платформа поверне 403 Forbidden і автоматично повідомить адміністраторів платформи, які розглянуть запит і повідомлять про рішення.
  • Не кожен сервіс SonarQube може бути зареєстрований у Procurize. Щоб зареєструвати новий сервіс, зверніться до адміністратора платформи; потрібен токен адміністратора для цього сервісу.

Обробка помилок#

API використовує стандартні коди статусу HTTP.

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

Відповіді з помилками містять машинно‑читабельний код помилки та зрозуміле повідомлення.

Дивіться також:#

Пов’язані статті#

Що таке звіти безпеки?

Репозиторій звітів безпеки

Як налаштувати звіти безпеки

на верх
Виберіть мову