SonarQube ataskaitų API#
Šiame straipsnyje aprašoma, kaip programiškai pasiekti SonarQube saugumo ataskaitas, saugomas Procurize platformoje. Jame aptariamas REST API, skirtas ataskaitų sąrašų gavimui ir jų atsisiuntimui HTML, PDF ir ZIP formatu.
Apžvalga#
SonarQube ataskaitų submodulis leidžia organizacijoms centralizuotai saugoti ir valdyti saugumo bei kodo kokybės ataskaitas, kurias generuoja SonarQube. Procurize platforma atskleidžia šiuos duomenis per viešąjį REST API, kuris leidžia:
- Gauti ataskaitų metaduomenis organizacijai, projekto grupei arba projektui
- Atsisiųsti vieną ataskaitą HTML, PDF arba ZIP formatu
- Atsisiųsti pasirinktų ataskaitų ZIP archyvą
- Atsisiųsti visų projekto arba projekto grupės ataskaitų ZIP archyvą
- Gauti naujausias OWASP Top 10 ir CWE Top 25 ataskaitas tiesiai iš SonarQube paslaugos
Šios galimybės leidžia integruoti su CI/CD kanalais, GRC sistemomis, vidiniais prietaisų skydeliais ir trečiųjų šalių rizikos valdymo įrankiais.
Pabaigos taškai#
| Pabaigos taškas | Metodas | Tikslas |
|---|---|---|
/security/report/list | GET | Gauti ataskaitų metaduomenis pasirinktam apimčiai ir versijai. |
/security/report/files | GET | Atsisiųsti pasirinktų ataskaitų ZIP archyvą. |
/security/report/html | GET | Gauti vieną ataskaitą HTML formatu. |
/security/report/pdf | GET | Gauti vieną ataskaitą PDF formatu. |
/security/report/zip | GET | Gauti vieną ataskaitą ZIP archyvu. |
/security/report/project-files | GET | Atsisiųsti visų projekto ataskaitų ZIP archyvą. |
/security/report/directory-files | GET | Atsisiųsti visų projekto grupės (katalogo) ataskaitų ZIP archyvą. |
/security/reports/fetch | POST | Gauti naujausias ataskaitas iš SonarQube paslaugos. |
Autentifikacija ir autorizacija#
Ataskaitų sąrašo ir atsisiuntimo pabaigos taškai, aprašyti šiame straipsnyje, nereikalauja autentifikacijos.
POST /security/reports/fetch pabaigos taškas reikalauja autentifikacijos naudojant API raktą – žr. API raktus.
Organizacijos ID#
Daugumai čia aprašytų užklausų reikalingas organizacijos identifikatorius. Galite pateikti tiek organizacijos ID (UUID), tiek jos pseudonimą – žr. Identifikatoriai ir pseudonimai.
Jį rasite organizacijos nustatymų skydelyje adresu https://dashboard.procurize.ai.
Atkreipkite dėmesį, kad prieiga prie nustatymų skydelio reikalauja autorizacijos, o prieiga prie organizacijos nustatymų skydelio – bent administratoriaus rolės organizacijoje.

Identifikatoriai ir pseudonimai#
Apimties parametrai priima tiek elemento ID (UUID), tiek žmogui suprantamą pseudonimą. Pseudonimai palengvina užklausų skaitymą ir yra stabilūs skirtingose aplinkose.
| Parametras | Priima | Pavyzdžiai pseudonimų |
|---|---|---|
org | Organizacijos ID arba pseudonimas | aspose, groupdocs |
directory | Katalogo (projekto grupės) ID arba pseudonimas | aspose-imaging, groupdocs-annotation |
project | Projekto ID arba pseudonimas | aspose-imaging-net, groupdocs-annotation-java |
Pavyzdžiui, šios dvi užklausos yra ekvivalentinės:
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"
Pastaba: Pseudonimai nepalaikomi
idparametre, naudojamame masinio atsisiuntimo pabaigos taškuose. Pateikite katalogo arba projekto UUID įGET /security/report/project-filesirGET /security/report/directory-files.
Bazinis URL#
Visi REST API pabaigos taškai yra pasiekiami per šį bazinį URL:
https://api.procurize.com
SonarQube ataskaitų REST API#
Gauti ataskaitų sąrašą#
Grąžina saugumo ataskaitas, prieinamas pasirinktam apimčiai ir versijai, be jų failų turinio. Naudokite šį pabaigos tašką norėdami sužinoti ataskaitų ID, kuriuos vėliau galite perduoti atsisiuntimo pabaigos taškams.
Pabaigos taškas
GET /security/report/list
Užklausos parametrai
org(nebūtinas): Organizacijos ID arba pseudonimas (pvz.,asposearbagroupdocs). Plačiausia apimtis.directory(nebūtinas): Katalogo (projekto grupės) ID arba pseudonimas (pvz.,aspose-imagingarbagroupdocs-annotation). Siauresnė apimtis.project(nebūtinas): Projekto ID arba pseudonimas (pvz.,aspose-imaging-netarbagroupdocs-annotation-java). Mažiausia apimtis.version(nebūtinas): Tikslus projekto versijos numeris.minver(nebūtinas): Minimalus projekto versijos numeris.maxver(nebūtinas): Maksimalus projekto versijos numeris.
Būtinas bent vienas iš apimties parametrų org, directory arba project. Prioritetas: jei nurodytas project, ieškoma tik šio projekto; jei nurodytas directory, ieškoma visoje projekto grupėje; priešingu atveju – visoje organizacijoje (org). Kai org nurodytas kartu su project arba directory, tikslas papildomai tikrinamas, ar priklauso nurodytai organizacijai.
Būtinas bent vienas iš version, minver arba maxver. Jei nurodytas version, minver ir maxver ignoruojami.
Užklausos pavyzdys
curl "https://api.procurize.com/security/report/list?org=aspose&version=1.0"
Apimties nustatymas pagal projekto grupės arba projekto pseudonimą:
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"
Atsakymo pavyzdys
{
"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"
}
]
}
Atsakymo laukai
organizationId: Organizacija, kuriai priklauso ataskaitos.reports[].id: Unikalus ataskaitos ID. Naudokite šią reikšmę atsisiuntimo pabaigos taškuose.reports[].projectName: Produkto rodomas pavadinimas.reports[].projectVersion: Produkto versija.reports[].reportType: Ataskaitos tipas (OWASP Top 10arbaCWE Top 25).reports[].reportVersion: Ataskaitos standarto metai.reports[].date: Ataskaitos generavimo data.reports[].uploadDate: Data, kai ataskaita įkelta į Procurize.reports[].vulnerabilitiesCount: Rastos pažeidžiamumo skaičius.reports[].securityRating: Bendras saugumo įvertinimas (A–E, kurAyra geriausias).
Atsisiųsti ataskaitas pagal ID#
Atsisiųsti ZIP archyvą, kuriame yra pasirinktos ataskaitos. Kiekviena ataskaita įtraukiama tiek HTML, tiek PDF formatu.
Pabaigos taškas
GET /security/report/files
Užklausos parametrai
org(būtinas): Organizacijos ID arba pseudonimas (pvz.,asposearbagroupdocs).reports(būtinas): Atsisiųsti norimi ataskaitų ID. Kartokite parametrą, jei norite įtraukti kelias ataskaitas.
Užklausos pavyzdys
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
Atsakymas
- Content-Type:
application/zip - Atsakymo kūnas – binarinis ZIP failas.
Klientai turėtų srauti atsakymą ir išsaugoti jį diske.
Darbas su viena ataskaita#
/security/report/html, /security/report/pdf ir /security/report/zip pabaigos taškai grąžina vieną konkrečią ataskaitą ir taiko tas pačias pasirinkimo taisykles.
Ataskaitos pasirinkimas#
Ataskaitos tipas ir versija visada būtini:
rt(būtinas): Ataskaitos tipas. Galimos reikšmės –OWASP Top 10irCWE Top 25.rv(būtinas): Ataskaitos versija – standarto leidimo metai, pvz.,2025OWASP Top 10 arba2024CWE Top 25.
Tada ataskaita pasirenkama vienu iš dviejų būdų:
- Pagal ataskaitos ID – perduokite
id(ataskaitos ID) kartu suproject(projekto ID arba pseudonimas) arbaorg(organizacijos ID arba pseudonimas). Šiuo atveju nenaudokiteversion. - Pagal projekto versiją – perduokite
project(projekto ID arba pseudonimas, pvz.,aspose-imaging-netarbagroupdocs-annotation-java) irversion(projekto versija). Šiuo atvejuorgparametras nenaudojamas.
Kai project ir org nurodyti kartu, org ignoruojamas.
Gauti ataskaitą kaip HTML#
Sugeneruoja vieną ataskaitą HTML puslapyje arba grąžina ją kaip atsisiųstą HTML failą.
Pabaigos taškas
GET /security/report/html
Užklausos parametrai
rt(būtinas): Ataskaitos tipas.rv(būtinas): Ataskaitos versija.- Ataskaitos pasirinkimo parametrai: žr. Ataskaitos pasirinkimas.
download(nebūtinas): Nustatykitetrue, jei norite gauti HTML kaip failą (Content-Disposition: attachment). Jei nenurodyta arbafalse, ataskaita grąžinama tiesiogiai.
Užklausos pavyzdys
curl "https://api.procurize.com/security/report/html?rt=OWASP+Top+10&rv=2025&id=00000000-0000-0000-0000-000000000004&project=aspose-imaging-net"
Norėdami atsisiųsti HTML failą vietoj tiesioginio rodymo:
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
Atsakymas
- Content-Type:
text/html
Gauti ataskaitą kaip PDF#
Grąžina vieną ataskaitą PDF dokumentu.
Pabaigos taškas
GET /security/report/pdf
Užklausos parametrai
rt(būtinas): Ataskaitos tipas.rv(būtinas): Ataskaitos versija.- Ataskaitos pasirinkimo parametrai: žr. Ataskaitos pasirinkimas.
Užklausos pavyzdys
curl "https://api.procurize.com/security/report/pdf?rt=CWE+Top+25&rv=2024&project=aspose-imaging-net&version=1.0" -o report.pdf
Atsakymas
- Content-Type:
application/pdf
Gauti ataskaitą kaip ZIP#
Grąžina vieną ataskaitą ZIP archyvu, kuriame yra tiek HTML, tiek PDF versijos.
Pabaigos taškas
GET /security/report/zip
Užklausos parametrai
rt(būtinas): Ataskaitos tipas.rv(būtinas): Ataskaitos versija.- Ataskaitos pasirinkimo parametrai: žr. Ataskaitos pasirinkimas.
Užklausos pavyzdys
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
Atsakymas
- Content-Type:
application/zip
Atsisiųsti visas projekto ataskaitas#
Atsisiųsti ZIP archyvą, kuriame yra visos nurodyto projekto ataskaitos, tiek HTML, tiek PDF formatu.
Pabaigos taškas
GET /security/report/project-files
Užklausos parametrai
id(būtinas): Projekto ID. Pseudonimai nepalaikomi; naudokite projekto UUID.rt(nebūtinas): Filtruoti pagal ataskaitos tipą. Galimos reikšmės –OWASP Top 10irCWE Top 25.rv(nebūtinas): Filtruoti pagal ataskaitos versiją (metus).version(nebūtinas): Filtruoti pagal projekto versiją.
Jei filtrų nenurodyta, įtraukiamos visos projekto ataskaitos. Filtravimo parametrus galima kombinuoti, jie taikomi nepriklausomai.
Užklausos pavyzdys
curl "https://api.procurize.com/security/report/project-files?id=00000000-0000-0000-0000-000000000005" -o project-reports.zip
Atsakymas
- Content-Type:
application/zip
Atsisiųsti visas projekto grupės ataskaitas#
Atsisiųsti ZIP archyvą, kuriame yra visų nurodyto katalogo (projekto grupės) projektų ataskaitos, tiek HTML, tiek PDF formatu.
Pabaigos taškas
GET /security/report/directory-files
Užklausos parametrai
id(būtinas): Katalogo (projekto grupės) ID. Pseudonimai nepalaikomi; naudokite katalogo UUID.rt(nebūtinas): Filtruoti pagal ataskaitos tipą. Galimos reikšmės –OWASP Top 10irCWE Top 25.rv(nebūtinas): Filtruoti pagal ataskaitos versiją (metus).version(nebūtinas): Filtruoti pagal projekto versiją.
Jei filtrų nenurodyta, įtraukiamos visų katalogo projektų ataskaitos. Filtravimo parametrus galima kombinuoti, jie taikomi nepriklausomai.
Užklausos pavyzdys
curl "https://api.procurize.com/security/report/directory-files?id=00000000-0000-0000-0000-000000000006" -o directory-reports.zip
Atsakymas
- Content-Type:
application/zip
Gauti ataskaitas iš SonarQube#
Įkelia naujausius saugumo ataskaitų duomenis apie produktą iš SonarQube paslaugos į Procurize. Paslauga gauna naujausius problemų duomenis iš SonarQube, konvertuoja juos į JSON atstovavimus naujausioms OWASP Top 10 ir CWE Top 25 ataskaitų versijoms ir grąžina juos atsakyme.
Pabaigos taškas
POST /security/reports/fetch
Autentifikacija
Šis pabaigos taškas reikalauja API rakto, perduodamo X-API-Key antraštėje. Daugiau informacijos apie raktų generavimą ir naudojimą – žr. API raktus.
Užklausos parametrai
SonarQube šaltinis pasirenkamas vienu iš dviejų būdų:
- Pagal projektą – perduokite
project(projekto ID arba pseudonimas – žr. Identifikatoriai ir pseudonimai). Nenaudokiteurlarbakey. - Pagal SonarQube paslaugą – perduokite
url(SonarQube paslaugos URL) irkey(SonarQube projekto raktas) kartu. Nenaudokiteproject.
Užklausos pavyzdys
Gauti ataskaitą projekto pagal jo pseudonimą:
curl -X POST "https://api.procurize.com/security/reports/fetch?project=aspose-imaging-net" \
-H "X-API-Key: YOUR_API_TOKEN"
Gauti ataskaitą tiesiai iš SonarQube paslaugos:
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"
Atsakymo pavyzdys
{
"Owasp10_2025": {
"TOTAL_SECURITY_RATING": "A",
"TOTAL_COUNT": 0,
...
},
"Cwe25_2025": {
"TOTAL_SECURITY_RATING": "A",
"TOTAL_COUNT": 0,
...
}
}
Atsakymas naudingas išleidimo procesų kanalams, kad būtų galima sustabdyti kūrimą, jei viešosios saugumo ataskaitos formatuose aptinkamos pažeidžiamybės.
Pastabos
- Ataskaitos įkėlimas reikalauja asmeninio leidimo produktui, kuriam priklauso ataskaitos. Jei neturite šio leidimo, vis tiek siųskite užklausą: platforma grąžins
403 Forbiddenir automatiškai informuos platformos administratorius, kurie peržiūrės užklausą ir praneš jums apie sprendimą. - Ne kiekviena SonarQube paslauga gali būti registruota Procurize platformoje. Norėdami registruoti naują paslaugą, susisiekite su platformos administratoriumi; tam reikalingas administratoriaus raktas.
Klaidos tvarkymas#
API naudoja standartinius HTTP būsenų kodus.
200 OK: Užklausa sėkminga204 No Content: Ataskaita neegzistuoja400 Bad Request: Netinkami parametrai arba neteisinga užklausa401 Unauthorized: Trūksta arba neteisingas API raktas403 Forbidden: Prieiga draudžiama (pvz., trūksta leidimo produktui)500 Internal Server Error: Netikėta serverio klaida
Klaidos atsakymai turi mašininiu būdu skaitomą klaidos kodą ir žmogui suprantamą pranešimą.
