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škasMetodasTikslas
/security/report/listGETGauti ataskaitų metaduomenis pasirinktam apimčiai ir versijai.
/security/report/filesGETAtsisiųsti pasirinktų ataskaitų ZIP archyvą.
/security/report/htmlGETGauti vieną ataskaitą HTML formatu.
/security/report/pdfGETGauti vieną ataskaitą PDF formatu.
/security/report/zipGETGauti vieną ataskaitą ZIP archyvu.
/security/report/project-filesGETAtsisiųsti visų projekto ataskaitų ZIP archyvą.
/security/report/directory-filesGETAtsisiųsti visų projekto grupės (katalogo) ataskaitų ZIP archyvą.
/security/reports/fetchPOSTGauti 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.

Kopijuoti ID mygtukas

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.

ParametrasPriimaPavyzdžiai pseudonimų
orgOrganizacijos ID arba pseudonimasaspose, groupdocs
directoryKatalogo (projekto grupės) ID arba pseudonimasaspose-imaging, groupdocs-annotation
projectProjekto ID arba pseudonimasaspose-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 id parametre, naudojamame masinio atsisiuntimo pabaigos taškuose. Pateikite katalogo arba projekto UUID į GET /security/report/project-files ir GET /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., aspose arba groupdocs). Plačiausia apimtis.
  • directory (nebūtinas): Katalogo (projekto grupės) ID arba pseudonimas (pvz., aspose-imaging arba groupdocs-annotation). Siauresnė apimtis.
  • project (nebūtinas): Projekto ID arba pseudonimas (pvz., aspose-imaging-net arba groupdocs-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 10 arba CWE 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, kur A yra 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., aspose arba groupdocs).
  • 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 10 ir CWE Top 25.
  • rv (būtinas): Ataskaitos versija – standarto leidimo metai, pvz., 2025 OWASP Top 10 arba 2024 CWE Top 25.

Tada ataskaita pasirenkama vienu iš dviejų būdų:

  • Pagal ataskaitos ID – perduokite id (ataskaitos ID) kartu su project (projekto ID arba pseudonimas) arba org (organizacijos ID arba pseudonimas). Šiuo atveju nenaudokite version.
  • Pagal projekto versiją – perduokite project (projekto ID arba pseudonimas, pvz., aspose-imaging-net arba groupdocs-annotation-java) ir version (projekto versija). Šiuo atveju org parametras 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): Nustatykite true, jei norite gauti HTML kaip failą (Content-Disposition: attachment). Jei nenurodyta arba false, 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 10 ir CWE 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 10 ir CWE 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). Nenaudokite url arba key.
  • Pagal SonarQube paslaugą – perduokite url (SonarQube paslaugos URL) ir key (SonarQube projekto raktas) kartu. Nenaudokite project.

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 Forbidden ir 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ėkminga
  • 204 No Content: Ataskaita neegzistuoja
  • 400 Bad Request: Netinkami parametrai arba neteisinga užklausa
  • 401 Unauthorized: Trūksta arba neteisingas API raktas
  • 403 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ą.

Taip pat žiūrėkite:#

Susiję straipsniai#

Kas yra saugumo ataskaitos?

Saugumo ataskaitų saugykla

Kaip konfigūruoti saugumo ataskaitas

į viršų
Pasirinkti kalbą