API Raportów SonarQube#
Ten artykuł opisuje, jak programowo uzyskać dostęp do raportów bezpieczeństwa SonarQube przechowywanych na platformie Procurize. Obejmuje REST API do wyświetlania listy raportów i pobierania ich w formatach HTML, PDF i ZIP.
Przegląd#
Podmoduł Raportów SonarQube umożliwia organizacjom centralne przechowywanie i zarządzanie raportami bezpieczeństwa i jakości kodu generowanymi przez SonarQube. Platforma Procurize udostępnia te dane poprzez publiczne REST API, które pozwala na:
- Wyświetlenie metadanych raportów dla organizacji, grupy projektów lub projektu
- Pobranie pojedynczego raportu w formacie HTML, PDF lub ZIP
- Pobranie wybranych raportów jako archiwum ZIP
- Pobranie wszystkich raportów projektu lub grupy projektów jako archiwum ZIP
- Pobranie najnowszych raportów OWASP Top 10 i CWE Top 25 bezpośrednio z usługi SonarQube
Te możliwości umożliwiają integracje z pipeline’ami CI/CD, systemami GRC, wewnętrznymi pulpitami nawigacyjnymi oraz narzędziami do zarządzania ryzykiem firm trzecich.
Endpunkty#
| Endpoint | Metoda | Cel |
|---|---|---|
/security/report/list | GET | Wyświetla metadane raportów dla wybranego zakresu i wersji. |
/security/report/files | GET | Pobiera wybrane raporty jako archiwum ZIP. |
/security/report/html | GET | Pobiera pojedynczy raport w formacie HTML. |
/security/report/pdf | GET | Pobiera pojedynczy raport w formacie PDF. |
/security/report/zip | GET | Pobiera pojedynczy raport jako archiwum ZIP. |
/security/report/project-files | GET | Pobiera wszystkie raporty projektu jako archiwum ZIP. |
/security/report/directory-files | GET | Pobiera wszystkie raporty grupy projektów (katalogu) jako archiwum ZIP. |
/security/reports/fetch | POST | Pobiera najnowsze raporty z usługi SonarQube. |
Uwierzytelnianie i autoryzacja#
Endpointy wyświetlania listy raportów i ich pobierania opisane w tym artykule nie wymagają uwierzytelnienia.
Endpoint POST /security/reports/fetch wymaga uwierzytelnienia przy użyciu tokenu API — zobacz Tokeny API.
Identyfikator organizacji#
Identyfikator organizacji jest wymagany dla większości opisanych tutaj żądań. Można podać zarówno ID organizacji (UUID), jak i jej alias — zobacz Identyfikatory i aliasy.
Można go znaleźć w panelu ustawień organizacji pod adresem https://dashboard.procurize.ai.
Uwaga: dostęp do panelu ustawień wymaga autoryzacji, a dostęp do panelu ustawień organizacji wymaga roli użytkownika co najmniej Administrator w tej organizacji.

Identyfikatory i aliasy#
Parametry zakresu akceptują zarówno ID encji (UUID), jak i czytelny alias. Aliasy ułatwiają odczyt żądań i są stabilne w różnych środowiskach.
| Parametr | Akceptuje | Przykładowe aliasy |
|---|---|---|
org | ID organizacji lub alias | aspose, groupdocs |
directory | ID katalogu (grupy projektów) lub alias | aspose-imaging, groupdocs-annotation |
project | ID projektu lub alias | aspose-imaging-net, groupdocs-annotation-java |
Na przykład, następujące dwa żądania są równoważne:
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"
Uwaga: Aliasów nie obsługuje się dla parametru id endpointów pobierania zbiorczego. Przekaż UUID katalogu lub projektu do GET /security/report/project-files i GET /security/report/directory-files.
Podstawowy URL#
Wszystkie endpointy REST API są dostępne pod następującym podstawowym URL:
https://api.procurize.com
REST API Raportów SonarQube#
Wyświetlanie raportów#
Zwraca raporty bezpieczeństwa dostępne dla wybranego zakresu i wersji, bez ich zawartości plików. Użyj tego endpointu, aby odnaleźć ID raportów, które można przekazać do endpointów pobierania.
Endpoint
GET /security/report/list
Query Parameters
org(opcjonalny): ID organizacji lub alias (np.asposelubgroupdocs). Najszerszy zakres.directory(opcjonalny): ID katalogu (grupy projektów) lub alias (np.aspose-imaginglubgroupdocs-annotation). Węższy zakres.project(opcjonalny): ID projektu lub alias (np.aspose-imaging-netlubgroupdocs-annotation-java). Najwęższy zakres.version(opcjonalny): Dokładna wersja projektu.minver(opcjonalny): Minimalna wersja projektu.maxver(opcjonalny): Maksymalna wersja projektu.
Co najmniej jeden z parametrów zakresu org, directory lub project jest wymagany. Zakresy są priorytetyzowane w następujący sposób: jeśli podano project, przeszukiwany jest tylko ten projekt; w przeciwnym razie, jeśli podano directory, przeszukuje się całą grupę projektów; w przeciwnym razie przeszukuje się całą organizację (org). Gdy org jest podany razem z project lub directory, cel jest dodatkowo weryfikowany pod kątem przynależności do tej organizacji.
Co najmniej jeden z parametrów version, minver lub maxver jest wymagany. Jeśli podano version, parametry minver i maxver są ignorowane.
Request Example
curl "https://api.procurize.com/security/report/list?org=aspose&version=1.0"
Scoping to a project group or a project by 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"
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: Organizacja, do której należą raporty.reports[].id: Unikalny ID raportu. Przekaż tę wartość do endpointów pobierania.reports[].projectName: Nazwa wyświetlana produktu.reports[].projectVersion: Wersja produktu.reports[].reportType: Typ raportu (OWASP Top 10lubCWE Top 25).reports[].reportVersion: Wersja (rok) standardu raportu.reports[].date: Data wygenerowania raportu.reports[].uploadDate: Data przesłania raportu do Procurize.reports[].vulnerabilitiesCount: Liczba wykrytych podatności.reports[].securityRating: Ogólna ocena bezpieczeństwa (A–E, gdzieAjest najlepsza).
Pobieranie raportów po ID#
Pobiera archiwum ZIP zawierające wybrane raporty. Każdy raport jest dostępny zarówno w formacie HTML, jak i PDF.
Endpoint
GET /security/report/files
Query Parameters
org(wymagany): ID organizacji lub alias (np.asposelubgroupdocs).reports(wymagany): ID raportów do uwzględnienia. Powtórz parametr, aby dodać wiele raportów.
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 - The response body contains the binary ZIP file.
Clients should stream the response and save it to disk.
Praca z pojedynczym raportem#
Endpointy /security/report/html, /security/report/pdf i /security/report/zip zwracają jeden konkretny raport i stosują te same zasady wyboru.
Wybór raportu#
Typ raportu i wersja są zawsze wymagane:
rt(wymagany): Typ raportu. Obsługiwane wartości toOWASP Top 10iCWE Top 25.rv(wymagany): Wersja raportu — rok edycji standardu, np.2025dla OWASP Top 10 lub2024dla CWE Top 25.
Dokładny raport jest następnie wybierany na jeden z dwóch sposobów:
- Po ID raportu — podaj
id(ID raportu) razem zproject(ID projektu lub alias) luborg(ID organizacji lub alias). Nie podawajversionw tym trybie. - Po wersji projektu — podaj
project(ID projektu lub alias, np.aspose-imaging-netlubgroupdocs-annotation-java) orazversion(wersja projektu). Parametrorgnie jest używany w tym trybie.
Gdy podano zarówno project, jak i org, parametr org jest ignorowany.
Pobranie raportu jako HTML#
Renderuje pojedynczy raport jako stronę HTML lub zwraca go jako plik HTML do pobrania.
Endpoint
GET /security/report/html
Query Parameters
rt(wymagany): Typ raportu.rv(wymagany): Wersja raportu.- Parametry wyboru raportu: zobacz Wybór raportu.
download(opcjonalny): Ustaw natrue, aby zwrócić HTML jako plik do pobrania (Content-Disposition: attachment). Gdy pominięte lubfalse, raport jest zwracany inline.
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"
Aby pobrać plik HTML zamiast renderować go 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
Response
- Content-Type:
text/html
Pobranie raportu jako PDF#
Zwraca pojedynczy raport jako dokument PDF.
Endpoint
GET /security/report/pdf
Query Parameters
rt(wymagany): Typ raportu.rv(wymagany): Wersja raportu.- Parametry wyboru raportu: zobacz Wybór raportu.
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
Pobranie raportu jako ZIP#
Zwraca pojedynczy raport jako archiwum ZIP zawierające zarówno wersję HTML, jak i PDF.
Endpoint
GET /security/report/zip
Query Parameters
rt(wymagany): Typ raportu.rv(wymagany): Wersja raportu.- Parametry wyboru raportu: zobacz Wybór raportu.
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
Pobieranie wszystkich raportów projektu#
Pobiera archiwum ZIP zawierające wszystkie raporty określonego projektu, zarówno w formacie HTML, jak i PDF.
Endpoint
GET /security/report/project-files
Query Parameters
id(wymagany): ID projektu. Aliasów nie obsługuje się; podaj UUID projektu.rt(opcjonalny): Filtruj po typie raportu. Obsługiwane wartości toOWASP Top 10iCWE Top 25.rv(opcjonalny): Filtruj po wersji raportu (rok).version(opcjonalny): Filtruj po wersji projektu.
Jeśli nie podano filtrów, dołączone zostaną wszystkie raporty projektu. Parametry filtrów można łączyć i są stosowane niezależnie.
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
Pobieranie wszystkich raportów grupy projektów#
Pobiera archiwum ZIP zawierające raporty wszystkich projektów w określonym katalogu (grupie projektów), zarówno w formacie HTML, jak i PDF.
Endpoint
GET /security/report/directory-files
Query Parameters
id(wymagany): ID katalogu (grupy projektów). Aliasów nie obsługuje się; podaj UUID katalogu.rt(opcjonalny): Filtruj po typie raportu. Obsługiwane wartości toOWASP Top 10iCWE Top 25.rv(opcjonalny): Filtruj po wersji raportu (rok).version(opcjonalny): Filtruj po wersji projektu.
Jeśli nie podano filtrów, dołączone zostaną raporty wszystkich projektów w katalogu. Parametry filtrów można łączyć i są stosowane niezależnie.
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
Pobieranie raportów z SonarQube#
Przesyła najnowsze dane raportu bezpieczeństwa dla produktu z usługi SonarQube do Procurize. Usługa pobiera najnowsze dane o problemach z SonarQube, konwertuje je na reprezentacje JSON najnowszych wersji raportów OWASP Top 10 i CWE Top 25 i zwraca je w odpowiedzi.
Endpoint
POST /security/reports/fetch
Authentication
Ten endpoint wymaga tokenu API, przekazywanego w nagłówku X-API-Key. Szczegóły dotyczące generowania i używania tokenów znajdziesz w Tokenach API.
Query Parameters
Źródło SonarQube jest wybierane na jeden z dwóch sposobów:
- Po projekcie — podaj
project(ID projektu lub alias — zobacz Identyfikatory i aliasy). Nie podawajurlanikey. - Po usłudze SonarQube — podaj jednocześnie
url(URL usługi SonarQube) ikey(klucz projektu SonarQube). Nie podawajproject.
Request Example
Pobierz raport dla projektu po jego aliasie:
curl -X POST "https://api.procurize.com/security/reports/fetch?project=aspose-imaging-net" \
-H "X-API-Key: YOUR_API_TOKEN"
Pobierz raport bezpośrednio z usługi 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,
...
}
}
Odpowiedź jest przydatna w pipeline’ach budowania wersji, aby zdecydować, czy zatrzymać build, gdy wykryte zostaną podatności w publicznych formatach raportów bezpieczeństwa.
Notes
- Przesyłanie raportu wymaga osobistego zezwolenia na produkt, do którego raporty należą. Jeśli nie masz tego zezwolenia, wyślij żądanie mimo to: platforma zwróci
403 Forbiddeni automatycznie powiadomi administratorów platformy, którzy przeanalizują żądanie i poinformują Cię o decyzji. - Nie każda usługa SonarQube może być zarejestrowana na platformie Procurize. Aby zarejestrować nową usługę, skontaktuj się z administratorem platformy; wymagany jest token administratora dla tej usługi.
Obsługa błędów#
API używa standardowych kodów statusu HTTP.
200 OK: Żądanie zakończone sukcesem204 No Content: Raport nie istnieje400 Bad Request: Nieprawidłowe parametry lub niepoprawne żądanie401 Unauthorized: Brak lub nieprawidłowy token API403 Forbidden: Brak dostępu (np. brak uprawnień do produktu)500 Internal Server Error: Nieoczekiwany błąd serwera
Odpowiedzi błędów zawierają kod błędu czytelny dla maszyny oraz wiadomość czytelną dla człowieka.
Zobacz także:#
Powiązane artykuły#
Czym są raporty bezpieczeństwa?
