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), или нейния псевдоним — вижте Identifiers and Aliases.

Можете да го намерите в панела за настройки на организацията на https://dashboard.procurize.ai.
Моля, обърнете внимание, че достъпът до панела за настройки изисква упълномощаване, а достъпът до панела за настройки на организацията изисква потребителска роля поне „Administrator“ в тази организация.

Бутон за копиране на ID

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

Параметрите за обхват приемат или 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

REST API за отчети на SonarQube#

Изброяване на отчети#

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

Endpoint

GET /security/report/list

Query Parameters

  • 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 се игнорират.

Request Example

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"

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: Уникален идентификатор на отчета. Предайте тази стойност към краените точки за изтегляне.
  • 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 (задължително): Идентификатор или псевдоним на организация (например 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 или псевдоним на проект — вижте Identifiers and Aliases). Не предавайте 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

към върха
Изберете език