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#

EndpointMetodaCel
/security/report/listGETWyświetla metadane raportów dla wybranego zakresu i wersji.
/security/report/filesGETPobiera wybrane raporty jako archiwum ZIP.
/security/report/htmlGETPobiera pojedynczy raport w formacie HTML.
/security/report/pdfGETPobiera pojedynczy raport w formacie PDF.
/security/report/zipGETPobiera pojedynczy raport jako archiwum ZIP.
/security/report/project-filesGETPobiera wszystkie raporty projektu jako archiwum ZIP.
/security/report/directory-filesGETPobiera wszystkie raporty grupy projektów (katalogu) jako archiwum ZIP.
/security/reports/fetchPOSTPobiera 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.

Przycisk kopiowania ID

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.

ParametrAkceptujePrzykładowe aliasy
orgID organizacji lub aliasaspose, groupdocs
directoryID katalogu (grupy projektów) lub aliasaspose-imaging, groupdocs-annotation
projectID projektu lub aliasaspose-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. aspose lub groupdocs). Najszerszy zakres.
  • directory (opcjonalny): ID katalogu (grupy projektów) lub alias (np. aspose-imaging lub groupdocs-annotation). Węższy zakres.
  • project (opcjonalny): ID projektu lub alias (np. aspose-imaging-net lub groupdocs-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 10 lub CWE 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, gdzie A jest 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. aspose lub groupdocs).
  • 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 to OWASP Top 10 i CWE Top 25.
  • rv (wymagany): Wersja raportu — rok edycji standardu, np. 2025 dla OWASP Top 10 lub 2024 dla 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 z project (ID projektu lub alias) lub org (ID organizacji lub alias). Nie podawaj version w tym trybie.
  • Po wersji projektu — podaj project (ID projektu lub alias, np. aspose-imaging-net lub groupdocs-annotation-java) oraz version (wersja projektu). Parametr org nie 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 na true, aby zwrócić HTML jako plik do pobrania (Content-Disposition: attachment). Gdy pominięte lub false, 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 to OWASP Top 10 i CWE 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 to OWASP Top 10 i CWE 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 podawaj url ani key.
  • Po usłudze SonarQube — podaj jednocześnie url (URL usługi SonarQube) i key (klucz projektu SonarQube). Nie podawaj project.

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 Forbidden i 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 sukcesem
  • 204 No Content: Raport nie istnieje
  • 400 Bad Request: Nieprawidłowe parametry lub niepoprawne żądanie
  • 401 Unauthorized: Brak lub nieprawidłowy token API
  • 403 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?

Repozytorium raportów bezpieczeństwa

Jak skonfigurować raporty bezpieczeństwa

do góry
Wybierz język