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), или нейния псевдоним — вижте Identifiers and Aliases.
Можете да го намерите в панела за настройки на организацията на https://dashboard.procurize.ai.
Моля, обърнете внимание, че достъпът до панела за настройки изисква упълномощаване, а достъпът до панела за настройки на организацията изисква потребителска роля поне „Administrator“ в тази организация.

Идентификатори и псевдоними#
Параметрите за обхват приемат или 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: Неочаквана грешка в сървъра
Отговорите за грешка включват машинно‑четим код за грешка и човеко‑четимо съобщение.
