API Laporan SonarQube#
Artikel ini menjelaskan cara mengakses laporan keamanan SonarQube yang disimpan di platform Procurize secara programatis. Artikel ini mencakup API REST untuk menampilkan daftar laporan dan mengunduhnya dalam format HTML, PDF, dan ZIP.
Gambaran Umum#
Submodul Laporan SonarQube memungkinkan organisasi menyimpan dan mengelola laporan keamanan serta kualitas kode yang dihasilkan oleh SonarQube secara terpusat. Platform Procurize mengekspos data ini melalui API REST publik yang memungkinkan Anda untuk:
- Menampilkan metadata laporan untuk sebuah organisasi, grup proyek, atau proyek
- Mengunduh satu laporan dalam format HTML, PDF, atau ZIP
- Mengunduh beberapa laporan yang dipilih sebagai arsip ZIP
- Mengunduh semua laporan dari sebuah proyek atau grup proyek sebagai arsip ZIP
- Mengambil laporan OWASP Top 10 dan CWE Top 25 terbaru langsung dari layanan SonarQube
Kemampuan ini memungkinkan integrasi dengan pipeline CI/CD, sistem GRC, dasbor internal, dan alat manajemen risiko pihak ketiga.
Endpoint#
| Endpoint | Metode | Tujuan |
|---|---|---|
/security/report/list | GET | Menampilkan metadata laporan untuk ruang lingkup dan versi yang dipilih. |
/security/report/files | GET | Mengunduh laporan yang dipilih sebagai arsip ZIP. |
/security/report/html | GET | Mendapatkan satu laporan dalam format HTML. |
/security/report/pdf | GET | Mendapatkan satu laporan dalam format PDF. |
/security/report/zip | GET | Mendapatkan satu laporan dalam arsip ZIP. |
/security/report/project-files | GET | Mengunduh semua laporan dari sebuah proyek sebagai arsip ZIP. |
/security/report/directory-files | GET | Mengunduh semua laporan dari sebuah grup proyek (direktori) sebagai arsip ZIP. |
/security/reports/fetch | POST | Mengambil laporan terbaru dari layanan SonarQube. |
Otentikasi dan Otorisasi#
Endpoint untuk menampilkan daftar dan mengunduh laporan yang dijelaskan dalam artikel ini tidak memerlukan otentikasi.
Endpoint POST /security/reports/fetch memerlukan otentikasi dengan token API — lihat Token API.
ID Organisasi#
Pengidentifikasi organisasi diperlukan untuk sebagian besar permintaan yang dijelaskan di sini. Anda dapat memberikan baik ID organisasi (UUID) maupun alias‑nya — lihat Pengidentifikasi dan Alias.
Anda dapat menemukannya di panel pengaturan Organisasi pada https://dashboard.procurize.ai.
Perlu dicatat bahwa akses ke panel pengaturan memerlukan otorisasi, dan akses ke panel pengaturan organisasi memerlukan peran pengguna setidaknya Administrator dalam organisasi tersebut.

Pengidentifikasi dan Alias#
Parameter ruang lingkup menerima baik ID entitas (UUID) maupun alias yang dapat dibaca manusia. Alias memudahkan pembacaan permintaan dan stabil di semua lingkungan.
| Parameter | Menerima | Contoh alias |
|---|---|---|
org | ID atau alias Organisasi | aspose, groupdocs |
directory | ID atau alias Direktori (grup proyek) | aspose-imaging, groupdocs-annotation |
project | ID atau alias Proyek | aspose-imaging-net, groupdocs-annotation-java |
Sebagai contoh, dua permintaan berikut setara:
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"
Catatan: Alias tidak didukung untuk parameter
idpada endpoint unduhan massal. Berikan UUID direktori atau proyek keGET /security/report/project-filesdanGET /security/report/directory-files.
URL Dasar#
Semua endpoint API REST disajikan di bawah URL dasar berikut:
https://api.procurize.com
API REST Laporan SonarQube#
Daftar Laporan#
Mengembalikan laporan keamanan yang tersedia untuk ruang lingkup dan versi yang dipilih, tanpa isi berkasnya. Gunakan endpoint ini untuk menemukan ID laporan yang dapat diberikan ke endpoint unduhan.
Endpoint
GET /security/report/list
Parameter Kueri
org(opsional): ID atau alias Organisasi (misalnya,asposeataugroupdocs). Ruang lingkup terluas.directory(opsional): ID atau alias Direktori (grup proyek) (misalnya,aspose-imagingataugroupdocs-annotation). Ruang lingkup lebih sempit.project(opsional): ID atau alias Proyek (misalnya,aspose-imaging-netataugroupdocs-annotation-java). Ruang lingkup paling sempit.version(opsional): Versi proyek yang tepat.minver(opsional): Versi proyek minimum.maxver(opsional): Versi proyek maksimum.
Setidaknya satu dari parameter ruang lingkup org, directory, atau project wajib diberikan. Prioritas ruang lingkup adalah: jika project diberikan, hanya proyek tersebut yang dicari; jika tidak, jika directory diberikan, seluruh grup proyek dicari; jika tidak, seluruh organisasi (org) yang dicari. Ketika org diberikan bersama project atau directory, target juga divalidasi berada dalam organisasi tersebut.
Setidaknya satu dari version, minver, atau maxver wajib diberikan. Jika version diberikan, minver dan maxver diabaikan.
Contoh Permintaan
curl "https://api.procurize.com/security/report/list?org=aspose&version=1.0"
Membatasi ke grup proyek atau proyek dengan 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"
Contoh Respons
{
"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"
}
]
}
Bidang Respons
organizationId: Organisasi tempat laporan berada.reports[].id: ID laporan unik. Berikan nilai ini ke endpoint unduhan.reports[].projectName: Nama tampilan produk.reports[].projectVersion: Versi produk.reports[].reportType: Jenis laporan (OWASP Top 10atauCWE Top 25).reports[].reportVersion: Versi (tahun) standar laporan.reports[].date: Tanggal laporan dibuat.reports[].uploadDate: Tanggal laporan diunggah ke Procurize.reports[].vulnerabilitiesCount: Jumlah kerentanan yang ditemukan.reports[].securityRating: Peringkat keamanan keseluruhan (A–E, dimanaAterbaik).
Unduh Laporan berdasarkan ID#
Mengunduh arsip ZIP yang berisi laporan‑laporan yang dipilih. Setiap laporan disertakan dalam format HTML dan PDF.
Endpoint
GET /security/report/files
Parameter Kueri
org(wajib): ID atau alias Organisasi (misalnya,asposeataugroupdocs).reports(wajib): ID laporan yang akan disertakan. Ulangi parameter untuk menyertakan banyak laporan.
Contoh Permintaan
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
Respons
- Content-Type:
application/zip - Badan respons berisi berkas ZIP biner.
Klien sebaiknya melakukan streaming respons dan menyimpannya ke disk.
Bekerja dengan Laporan Tunggal#
Endpoint /security/report/html, /security/report/pdf, dan /security/report/zip mengembalikan satu laporan spesifik dan menggunakan aturan pemilihan yang sama.
Pemilihan Laporan#
Jenis laporan dan versi selalu wajib:
rt(wajib): Jenis laporan. Nilai yang didukungOWASP Top 10danCWE Top 25.rv(wajib): Versi laporan — tahun edisi standar, misalnya2025untuk OWASP Top 10 atau2024untuk CWE Top 25.
Laporan yang tepat kemudian dipilih dengan salah satu cara berikut:
- Berdasarkan ID laporan — berikan
id(ID laporan) bersamaproject(ID atau alias proyek) atauorg(ID atau alias organisasi). Jangan berikanversiondalam mode ini. - Berdasarkan versi proyek — berikan
project(ID atau alias proyek, misalnyaaspose-imaging-netataugroupdocs-annotation-java) danversion(versi proyek). Parameterorgtidak dipakai dalam mode ini.
Jika project dan org keduanya diberikan, org diabaikan.
Dapatkan Laporan sebagai HTML#
Menampilkan satu laporan sebagai halaman HTML, atau mengembalikannya sebagai berkas HTML yang dapat diunduh.
Endpoint
GET /security/report/html
Parameter Kueri
rt(wajib): Jenis laporan.rv(wajib): Versi laporan.- Parameter pemilihan laporan: lihat Pemilihan Laporan.
download(opsional): Atur ketrueuntuk mengembalikan HTML sebagai unduhan berkas (Content-Disposition: attachment). Jika tidak diberikan ataufalse, laporan dikembalikan secara inline.
Contoh Permintaan
curl "https://api.procurize.com/security/report/html?rt=OWASP+Top+10&rv=2025&id=00000000-0000-0000-0000-000000000004&project=aspose-imaging-net"
Untuk mengunduh berkas HTML alih‑alih menampilkannya 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
Respons
- Content-Type:
text/html
Dapatkan Laporan sebagai PDF#
Mengembalikan satu laporan dalam dokumen PDF.
Endpoint
GET /security/report/pdf
Parameter Kueri
rt(wajib): Jenis laporan.rv(wajib): Versi laporan.- Parameter pemilihan laporan: lihat Pemilihan Laporan.
Contoh Permintaan
curl "https://api.procurize.com/security/report/pdf?rt=CWE+Top+25&rv=2024&project=aspose-imaging-net&version=1.0" -o report.pdf
Respons
- Content-Type:
application/pdf
Dapatkan Laporan sebagai ZIP#
Mengembalikan satu laporan dalam arsip ZIP yang berisi versi HTML dan PDF.
Endpoint
GET /security/report/zip
Parameter Kueri
rt(wajib): Jenis laporan.rv(wajib): Versi laporan.- Parameter pemilihan laporan: lihat Pemilihan Laporan.
Contoh Permintaan
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
Respons
- Content-Type:
application/zip
Unduh Semua Laporan dari Proyek#
Mengunduh arsip ZIP yang berisi semua laporan dari proyek yang ditentukan, dalam format HTML dan PDF.
Endpoint
GET /security/report/project-files
Parameter Kueri
id(wajib): ID Proyek. Alias tidak didukung; berikan UUID proyek.rt(opsional): Filter berdasarkan jenis laporan. Nilai yang didukungOWASP Top 10danCWE Top 25.rv(opsional): Filter berdasarkan versi laporan (tahun).version(opsional): Filter berdasarkan versi proyek.
Jika tidak ada filter yang diberikan, semua laporan proyek akan disertakan. Parameter filter dapat digabungkan dan diterapkan secara independen.
Contoh Permintaan
curl "https://api.procurize.com/security/report/project-files?id=00000000-0000-0000-0000-000000000005" -o project-reports.zip
Respons
- Content-Type:
application/zip
Unduh Semua Laporan dari Grup Proyek#
Mengunduh arsip ZIP yang berisi laporan dari semua proyek dalam direktori (grup proyek) yang ditentukan, dalam format HTML dan PDF.
Endpoint
GET /security/report/directory-files
Parameter Kueri
id(wajib): ID Direktori (grup proyek). Alias tidak didukung; berikan UUID direktori.rt(opsional): Filter berdasarkan jenis laporan. Nilai yang didukungOWASP Top 10danCWE Top 25.rv(opsional): Filter berdasarkan versi laporan (tahun).version(opsional): Filter berdasarkan versi proyek.
Jika tidak ada filter yang diberikan, semua laporan proyek dalam direktori akan disertakan. Parameter filter dapat digabungkan dan diterapkan secara independen.
Contoh Permintaan
curl "https://api.procurize.com/security/report/directory-files?id=00000000-0000-0000-0000-000000000006" -o directory-reports.zip
Respons
- Content-Type:
application/zip
Ambil Laporan dari SonarQube#
Mengunggah data laporan keamanan terbaru untuk sebuah produk dari layanan SonarQube ke Procurize. Layanan ini mengambil data isu terbaru dari SonarQube, mengonversinya menjadi representasi JSON dari versi terbaru OWASP Top 10 dan CWE Top 25, dan mengembalikannya dalam respons.
Endpoint
POST /security/reports/fetch
Otentikasi
Endpoint ini memerlukan token API, yang diberikan pada header X-API-Key. Untuk detail cara membuat dan menggunakan token, lihat Token API.
Parameter Kueri
Sumber SonarQube dipilih dengan salah satu cara berikut:
- Berdasarkan proyek — berikan
project(ID atau alias proyek — lihat Pengidentifikasi dan Alias). Jangan berikanurlataukey. - Berdasarkan layanan SonarQube — berikan
url(URL layanan SonarQube) dankey(kunci proyek SonarQube) secara bersamaan. Jangan berikanproject.
Contoh Permintaan
Ambil laporan untuk proyek berdasarkan aliasnya:
curl -X POST "https://api.procurize.com/security/reports/fetch?project=aspose-imaging-net" \
-H "X-API-Key: YOUR_API_TOKEN"
Ambil laporan langsung dari layanan 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"
Contoh Respons
{
"Owasp10_2025": {
"TOTAL_SECURITY_RATING": "A",
"TOTAL_COUNT": 0,
...
},
"Cwe25_2025": {
"TOTAL_SECURITY_RATING": "A",
"TOTAL_COUNT": 0,
...
}
}
Respons ini berguna dalam pipeline build rilis untuk memutuskan apakah menghentikan build ketika kerentanan terdeteksi dalam format laporan keamanan publik.
Catatan
- Mengunggah laporan memerlukan izin pribadi untuk produk tempat laporan berada. Jika Anda tidak memiliki izin tersebut, kirimkan permintaan saja: platform akan mengembalikan
403 Forbiddendan secara otomatis memberi tahu administrator platform, yang kemudian meninjau permintaan dan memberi tahu Anda tentang keputusan. - Tidak semua layanan SonarQube terdaftar di platform Procurize. Untuk mendaftarkan layanan baru, hubungi administrator platform Anda; token administrator untuk layanan tersebut diperlukan.
Penanganan Kesalahan#
API menggunakan kode status HTTP standar.
200 OK: Permintaan berhasil204 No Content: Laporan tidak ada400 Bad Request: Parameter tidak valid atau permintaan tidak terbentuk dengan benar401 Unauthorized: Token API hilang atau tidak valid403 Forbidden: Akses ditolak (misalnya, izin produk tidak ada)500 Internal Server Error: Kesalahan server yang tidak terduga
Respons kesalahan mencakup kode kesalahan yang dapat dibaca mesin dan pesan yang dapat dibaca manusia.
