API Rapoarte SonarQube#

Acest articol descrie cum să accesați programatic rapoartele de securitate SonarQube stocate pe platforma Procurize. Acoperă API-ul REST pentru listarea rapoartelor și descărcarea lor în formatele HTML, PDF și ZIP.

Prezentare generală#

Submodulul SonarQube Reports permite organizațiilor să stocheze și să gestioneze centralizat rapoartele de securitate și calitate a codului generate de SonarQube. Platforma Procurize expune aceste date printr-un API REST public care vă permite să:

  • Listați metadatele rapoartelor pentru o organizație, un grup de proiecte sau un proiect
  • Descărcați un singur raport în format HTML, PDF sau ZIP
  • Descărcați rapoarte selectate ca arhivă ZIP
  • Descărcați toate rapoartele unui proiect sau ale unui grup de proiecte ca arhivă ZIP
  • Preluați cele mai recente rapoarte OWASP Top 10 și CWE Top 25 direct dintr-un serviciu SonarQube

Aceste capabilități permit integrarea cu pipeline‑uri CI/CD, sisteme GRC, tablouri de bord interne și instrumente terțe de management al riscurilor.

Puncte finale#

Punct finalMetodăScop
/security/report/listGETListează metadatele rapoartelor pentru domeniul și versiunea selectate.
/security/report/filesGETDescarcă rapoartele selectate ca arhivă ZIP.
/security/report/htmlGETObține un singur raport în format HTML.
/security/report/pdfGETObține un singur raport în format PDF.
/security/report/zipGETObține un singur raport ca arhivă ZIP.
/security/report/project-filesGETDescarcă toate rapoartele unui proiect ca arhivă ZIP.
/security/report/directory-filesGETDescarcă toate rapoartele unui grup de proiecte (director) ca arhivă ZIP.
/security/reports/fetchPOSTPreia cele mai recente rapoarte dintr-un serviciu SonarQube.

Autentificare și autorizare#

Punctele finale de listare și descărcare a rapoartelor descrise în acest articol nu necesită autentificare.

Punctul final POST /security/reports/fetch necesită autentificare cu un token API — vezi API Tokens.

ID organizație#

Un identificator de organizație este necesar pentru majoritatea cererilor descrise aici. Puteți furniza fie ID‑ul organizației (un UUID), fie aliasul acesteia — vezi Identificatori și aliasuri.
Îl puteți găsi în panoul de setări al organizației la https://dashboard.procurize.ai.
Rețineți că accesul la panoul de setări necesită autorizare, iar accesul la panoul de setări al organizației necesită un rol de utilizator de cel puțin Administrator în acea organizație.

Buton Copiere ID

Identificatori și aliasuri#

Parametrii de domeniu acceptă fie ID‑ul entității (un UUID), fie un alias ușor de citit. Aliasurile fac cererile mai ușor de înțeles și sunt stabile între medii.

ParametruAcceptăAliasuri exemplu
orgID organizație sau aliasaspose, groupdocs
directoryID director (grup de proiecte) sau aliasaspose-imaging, groupdocs-annotation
projectID proiect sau aliasaspose-imaging-net, groupdocs-annotation-java

De exemplu, următoarele două cereri sunt echivalente:

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"

Notă: Aliasurile nu sunt suportate pentru parametrul id al punctelor finale de descărcare în bloc. Trebuie să furnizați UUID‑ul directorului sau al proiectului pentru GET /security/report/project-files și GET /security/report/directory-files.

URL de bază#

Toate punctele finale ale API‑ului REST sunt servite sub următorul URL de bază:

https://api.procurize.com

API REST Rapoarte SonarQube#

Listarea rapoartelor#

Returnează rapoartele de securitate disponibile pentru domeniul și versiunea selectate, fără conținutul fișierelor. Utilizați acest punct final pentru a descoperi ID‑urile rapoartelor care pot fi transmise punctelor finale de descărcare.

Endpoint

GET /security/report/list

Parametri de interogare

  • org (opțional): ID organizație sau alias (de exemplu, aspose sau groupdocs). Cel mai larg domeniu.
  • directory (opțional): ID director (grup de proiecte) sau alias (de exemplu, aspose-imaging sau groupdocs-annotation). Domeniu mai restrâns.
  • project (opțional): ID proiect sau alias (de exemplu, aspose-imaging-net sau groupdocs-annotation-java). Cel mai restrâns domeniu.
  • version (opțional): Versiunea exactă a proiectului.
  • minver (opțional): Versiunea minimă a proiectului.
  • maxver (opțional): Versiunea maximă a proiectului.

Este necesar cel puțin unul dintre parametrii de domeniu org, directory sau project. Prioritatea este: dacă este specificat project, se caută doar acel proiect; altfel, dacă este specificat directory, se caută întreg grupul de proiecte; altfel, se caută întreaga organizație (org). Când org este specificat împreună cu project sau directory, ținta este validată suplimentar pentru a aparține acelei organizații.

Este necesar cel puțin unul dintre version, minver sau maxver. Dacă este specificat version, minver și maxver sunt ignorate.

Exemplu de cerere

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

Scoparea către un grup de proiecte sau un proiect prin alias:

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"

Exemplu de răspuns

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

Câmpuri din răspuns

  • organizationId: Organizația căreia îi aparțin rapoartele.
  • reports[].id: ID unic al raportului. Transmiteți această valoare către punctele finale de descărcare.
  • reports[].projectName: Numele afișat al produsului.
  • reports[].projectVersion: Versiunea produsului.
  • reports[].reportType: Tipul raportului (OWASP Top 10 sau CWE Top 25).
  • reports[].reportVersion: Versiunea (anul) standardului raportului.
  • reports[].date: Data generării raportului.
  • reports[].uploadDate: Data încărcării raportului în Procurize.
  • reports[].vulnerabilitiesCount: Numărul de vulnerabilități găsite.
  • reports[].securityRating: Evaluarea globală de securitate (A–E, unde A este cea mai bună).

Descărcarea rapoartelor prin ID#

Descarcă o arhivă ZIP care conține rapoartele selectate. Fiecare raport este inclus atât în format HTML, cât și PDF.

Endpoint

GET /security/report/files

Parametri de interogare

  • org (obligatoriu): ID organizație sau alias (de exemplu, aspose sau groupdocs).
  • reports (obligatoriu): ID‑urile rapoartelor de inclus. Repetați parametrul pentru a include mai multe rapoarte.

Exemplu de cerere

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

Răspuns

  • Content-Type: application/zip
  • Corpul răspunsului conține fișierul ZIP binar.

Clienții ar trebui să transmită fluxul răspunsului și să îl salveze pe disc.

Lucrul cu un singur raport#

Punctele finale /security/report/html, /security/report/pdf și /security/report/zip returnează un raport specific și împărtășesc aceleași reguli de selecție.

Selecția raportului#

Tipul și versiunea raportului sunt întotdeauna obligatorii:

  • rt (obligatoriu): Tipul raportului. Valorile suportate sunt OWASP Top 10 și CWE Top 25.
  • rv (obligatoriu): Versiunea raportului — anul ediției standardului, de exemplu 2025 pentru OWASP Top 10 sau 2024 pentru CWE Top 25.

Raportul exact este apoi selectat în una dintre cele două moduri:

  • Prin ID raport — furnizați id (ID raport) împreună cu fie project (ID proiect sau alias), fie org (ID organizație sau alias). Nu furnizați version în acest mod.
  • Prin versiunea proiectului — furnizați project (ID proiect sau alias, de exemplu aspose-imaging-net sau groupdocs-annotation-java) și version (versiunea proiectului). Parametrul org nu este utilizat în acest mod.

Când project și org sunt ambele specificate, org este ignorat.

Obține raportul ca HTML#

Redă un singur raport ca pagină HTML sau îl returnează ca fișier HTML descărcabil.

Endpoint

GET /security/report/html

Parametri de interogare

  • rt (obligatoriu): Tipul raportului.
  • rv (obligatoriu): Versiunea raportului.
  • Parametrii de selecție a raportului: vezi Selecția raportului.
  • download (opțional): Setează la true pentru a returna HTML‑ul ca descărcare de fișier (Content-Disposition: attachment). Dacă este omis sau false, raportul este returnat inline.

Exemplu de cerere

curl "https://api.procurize.com/security/report/html?rt=OWASP+Top+10&rv=2025&id=00000000-0000-0000-0000-000000000004&project=aspose-imaging-net"

Pentru a descărca fișierul HTML în loc să fie redat inline:

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

Răspuns

  • Content-Type: text/html

Obține raportul ca PDF#

Returnează un singur raport ca document PDF.

Endpoint

GET /security/report/pdf

Parametri de interogare

  • rt (obligatoriu): Tipul raportului.
  • rv (obligatoriu): Versiunea raportului.
  • Parametrii de selecție a raportului: vezi Selecția raportului.

Exemplu de cerere

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

Răspuns

  • Content-Type: application/pdf

Obține raportul ca ZIP#

Returnează un singur raport ca arhivă ZIP care conține atât versiunea HTML, cât și cea PDF.

Endpoint

GET /security/report/zip

Parametri de interogare

  • rt (obligatoriu): Tipul raportului.
  • rv (obligatoriu): Versiunea raportului.
  • Parametrii de selecție a raportului: vezi Selecția raportului.

Exemplu de cerere

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

Răspuns

  • Content-Type: application/zip

Descărcarea tuturor rapoartelor unui proiect#

Descarcă o arhivă ZIP care conține toate rapoartele proiectului specificat, în formatele HTML și PDF.

Endpoint

GET /security/report/project-files

Parametri de interogare

  • id (obligatoriu): ID proiect. Aliasurile nu sunt suportate; furnizați UUID‑ul proiectului.
  • rt (opțional): Filtrează după tipul raportului. Valorile suportate sunt OWASP Top 10 și CWE Top 25.
  • rv (opțional): Filtrează după versiunea raportului (anul).
  • version (opțional): Filtrează după versiunea proiectului.

Dacă nu sunt specificate filtre, toate rapoartele proiectului sunt incluse. Parametrii de filtrare pot fi combinați și sunt aplicați independent.

Exemplu de cerere

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

Răspuns

  • Content-Type: application/zip

Descărcarea tuturor rapoartelor unui grup de proiecte#

Descarcă o arhivă ZIP care conține rapoartele tuturor proiectelor din directorul (grupul de proiecte) specificat, în formatele HTML și PDF.

Endpoint

GET /security/report/directory-files

Parametri de interogare

  • id (obligatoriu): ID director (grup de proiecte). Aliasurile nu sunt suportate; furnizați UUID‑ul directorului.
  • rt (opțional): Filtrează după tipul raportului. Valorile suportate sunt OWASP Top 10 și CWE Top 25.
  • rv (opțional): Filtrează după versiunea raportului (anul).
  • version (opțional): Filtrează după versiunea proiectului.

Dacă nu sunt specificate filtre, rapoartele tuturor proiectelor din director sunt incluse. Parametrii de filtrare pot fi combinați și sunt aplicați independent.

Exemplu de cerere

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

Răspuns

  • Content-Type: application/zip

Preluarea rapoartelor din SonarQube#

Încarcă cele mai recente date de raport de securitate pentru un produs dintr-un serviciu SonarQube în Procurize. Serviciul preia ultimele date de issue din SonarQube, le convertește în reprezentări JSON ale celor mai noi versiuni ale rapoartelor OWASP Top 10 și CWE Top 25 și le returnează în răspuns.

Endpoint

POST /security/reports/fetch

Autentificare

Acest punct final necesită un token API, transmis în antetul X-API-Key. Pentru detalii despre generarea și utilizarea token‑urilor, vezi API Tokens.

Parametri de interogare

Sursa SonarQube este selectată în una dintre cele două moduri:

  • Prin proiect — furnizați project (ID proiect sau alias — vezi Identificatori și aliasuri). Nu furnizați url sau key.
  • Prin serviciu SonarQube — furnizați url (URL serviciu SonarQube) și key (cheia proiectului SonarQube) împreună. Nu furnizați project.

Exemplu de cerere

Preluarea raportului pentru un proiect prin alias:

curl -X POST "https://api.procurize.com/security/reports/fetch?project=aspose-imaging-net" \
  -H "X-API-Key: YOUR_API_TOKEN"

Preluarea raportului direct dintr-un serviciu 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"

Exemplu de răspuns

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

Răspunsul este util în pipeline‑urile de construire pentru a decide dacă se oprește o construcție atunci când vulnerabilitățile sunt detectate în formatele publice de rapoarte de securitate.

Observații

  • Încărcarea unui raport necesită permisiune personală pentru produsul căruia îi aparțin rapoartele. Dacă nu aveți această permisiune, trimiteți totuși cererea: platforma va returna 403 Forbidden și va notifica automat administratorii platformei, care vor revizui cererea și vă vor comunica decizia.
  • Nu toate serviciile SonarQube pot fi înregistrate pe platforma Procurize. Pentru a înregistra un nou serviciu, contactați administratorul platformei; este necesar un token de administrator pentru acel serviciu.

Gestionarea erorilor#

API‑ul folosește coduri de stare HTTP standard.

  • 200 OK: Cerere cu succes
  • 204 No Content: Raportul nu există
  • 400 Bad Request: Parametri invalizi sau cerere malformată
  • 401 Unauthorized: Lipsește sau este invalid token‑ul API
  • 403 Forbidden: Acces refuzat (de exemplu, lipsă permisiune pentru produs)
  • 500 Internal Server Error: Eroare neașteptată a serverului

Răspunsurile de eroare includ un cod de eroare mașină și un mesaj pentru oameni.

Vezi și:#

Articole conexe#

Ce sunt rapoartele de securitate?

Depozitul de rapoarte de securitate SonarQube

Cum să configurați rapoartele de securitate

Sus
Selectaţi limba