API Laporan SonarQube#
Artikel ini menerangkan cara mengakses laporan keselamatan SonarQube yang disimpan dalam platform Procurize secara programatik. Ia merangkumi API REST untuk menyenaraikan laporan dan memuat turunnya dalam format HTML, PDF, dan ZIP.
Gambaran Keseluruhan#
Submodul Laporan SonarQube membolehkan organisasi menyimpan dan mengurus laporan keselamatan serta kualiti kod yang dijana oleh SonarQube secara berpusat. Platform Procurize mengekspos data ini melalui API REST awam yang membolehkan anda:
- Menyenaraikan metadata laporan untuk sebuah organisasi, kumpulan projek, atau projek
- Memuat turun satu laporan dalam format HTML, PDF, atau ZIP
- Memuat turun laporan terpilih sebagai arkib ZIP
- Memuat turun semua laporan bagi satu projek atau kumpulan projek sebagai arkib ZIP
- Mendapatkan laporan OWASP Top 10 dan CWE Top 25 terkini secara langsung daripada perkhidmatan SonarQube
Keupayaan ini membolehkan integrasi dengan pipeline CI/CD, sistem GRC, papan pemuka dalaman, dan alat pengurusan risiko pihak ketiga.
Titik Akhir#
| Endpoint | Kaedah | Tujuan |
|---|---|---|
/security/report/list | GET | Menyenaraikan metadata laporan untuk skop dan versi terpilih. |
/security/report/files | GET | Memuat turun laporan terpilih sebagai arkib 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 sebagai arkib ZIP. |
/security/report/project-files | GET | Memuat turun semua laporan projek sebagai arkib ZIP. |
/security/report/directory-files | GET | Memuat turun semua laporan kumpulan projek (direktori) sebagai arkib ZIP. |
/security/reports/fetch | POST | Mengambil laporan terkini daripada perkhidmatan SonarQube. |
Pengesahan dan Kebenaran#
Titik akhir penyenaraian dan muat turun laporan yang diterangkan dalam artikel ini tidak memerlukan pengesahan.
Titik akhir POST /security/reports/fetch memerlukan pengesahan dengan token API — lihat Token API.
ID Organisasi#
Pengenal organisasi diperlukan untuk kebanyakan permintaan yang diterangkan di sini. Anda boleh menghantar sama ada ID organisasi (UUID) atau aliasnya — lihat Pengenal dan Alias. Anda boleh menemuinya dalam panel tetapan Organisasi di https://dashboard.procurize.ai. Sila ambil perhatian bahawa akses ke panel tetapan memerlukan kebenaran, dan akses ke panel tetapan organisasi memerlukan peranan pengguna sekurang‑kurangnya Pentadbir dalam organisasi tersebut.

Pengenal dan Alias#
Parameter skop menerima sama ada ID entiti (UUID) atau alias yang boleh dibaca manusia. Alias memudahkan permintaan dibaca dan stabil merentasi persekitaran.
| Parameter | Menerima | Contoh alias |
|---|---|---|
org | ID atau alias Organisasi | aspose, groupdocs |
directory | ID atau alias Direktori (kumpulan projek) | aspose-imaging, groupdocs-annotation |
project | ID atau alias Projek | aspose-imaging-net, groupdocs-annotation-java |
Sebagai contoh, dua permintaan berikut adalah 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"
Nota: Alias tidak disokong untuk parameter
idpada titik akhir muat turun pukal. Hantar UUID direktori atau projek kepadaGET /security/report/project-filesdanGET /security/report/directory-files.
URL Asas#
Semua titik akhir API REST disajikan di bawah URL asas berikut:
https://api.procurize.com
API REST Laporan SonarQube#
Senaraikan Laporan#
Mengembalikan laporan keselamatan yang tersedia untuk skop dan versi terpilih, tanpa kandungan failnya. Gunakan titik akhir ini untuk mencari ID laporan yang boleh dihantar kepada titik akhir muat turun.
Titik Akhir
GET /security/report/list
Parameter Kuiri
org(pilihan): ID atau alias Organisasi (contoh:asposeataugroupdocs). Skop terluas.directory(pilihan): ID atau alias Direktori (kumpulan projek) (contoh:aspose-imagingataugroupdocs-annotation). Skop lebih sempit.project(pilihan): ID atau alias Projek (contoh:aspose-imaging-netataugroupdocs-annotation-java). Skop paling sempit.version(pilihan): Versi projek yang tepat.minver(pilihan): Versi projek minimum.maxver(pilihan): Versi projek maksimum.
Sekurang‑kurangnya satu daripada parameter skop org, directory, atau project diperlukan. Skop diprioritaskan seperti berikut: jika project ditetapkan, hanya projek itu yang dicari; jika tidak, jika directory ditetapkan, seluruh kumpulan projek dicari; jika tidak, seluruh organisasi (org) dicari. Apabila org ditetapkan bersama project atau directory, sasaran juga disahkan milik organisasi tersebut.
Sekurang‑kurangnya satu daripada version, minver, atau maxver diperlukan. Jika version ditetapkan, minver dan maxver diabaikan.
Contoh Permintaan
curl "https://api.procurize.com/security/report/list?org=aspose&version=1.0"
Menentukan skop kepada kumpulan projek atau projek mengikut 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"
}
]
}
Medan Respons
organizationId: Organisasi yang memiliki laporan.reports[].id: ID laporan unik. Hantar nilai ini kepada titik akhir muat turun.reports[].projectName: Nama paparan produk.reports[].projectVersion: Versi produk.reports[].reportType: Jenis laporan (OWASP Top 10atauCWE Top 25).reports[].reportVersion: Versi (tahun) piawaian laporan.reports[].date: Tarikh laporan dijana.reports[].uploadDate: Tarikh laporan dimuat naik ke Procurize.reports[].vulnerabilitiesCount: Bilangan kerentanan yang ditemui.reports[].securityRating: Penarafan keseluruhan keselamatan (A–E, di manaAadalah yang terbaik).
Muat Turun Laporan Mengikut ID#
Muat turun arkib ZIP yang mengandungi laporan terpilih. Setiap laporan disertakan dalam format HTML dan PDF.
Titik Akhir
GET /security/report/files
Parameter Kuiri
org(wajib): ID atau alias Organisasi (contoh:asposeataugroupdocs).reports(wajib): ID laporan yang hendak dimasukkan. Ulang parameter untuk memasukkan 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 mengandungi fail ZIP binari.
Klien harus menstrim respons dan menyimpannya ke cakera.
Bekerja dengan Satu Laporan#
Titik akhir /security/report/html, /security/report/pdf, dan /security/report/zip mengembalikan satu laporan tertentu dan menggunakan peraturan pemilihan yang sama.
Pemilihan Laporan#
Jenis laporan dan versi sentiasa diperlukan:
rt(wajib): Jenis laporan. Nilai yang disokong ialahOWASP Top 10danCWE Top 25.rv(wajib): Versi laporan — tahun edisi piawaian, contohnya2025untuk OWASP Top 10 atau2024untuk CWE Top 25.
Laporan tepat kemudian dipilih dengan salah satu cara berikut:
- Mengikut ID laporan — hantar
id(ID laporan) bersama samaproject(ID atau alias projek) atauorg(ID atau alias organisasi). Jangan hantarversiondalam mod ini. - Mengikut versi projek — hantar
project(ID atau alias projek, contohaspose-imaging-netataugroupdocs-annotation-java) danversion(versi projek). Parameterorgtidak digunakan dalam mod ini.
Apabila project dan org kedua‑duanya ditetapkan, org diabaikan.
Dapatkan Laporan sebagai HTML#
Menjana satu laporan sebagai halaman HTML, atau mengembalikannya sebagai fail HTML yang boleh dimuat turun.
Titik Akhir
GET /security/report/html
Parameter Kuiri
rt(wajib): Jenis laporan.rv(wajib): Versi laporan.- Parameter pemilihan laporan: lihat Pemilihan Laporan.
download(pilihan): Tetapkan kepadatrueuntuk mengembalikan HTML sebagai muat turun fail (Content-Disposition: attachment). Jika tidak ditetapkan 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 memuat turun fail HTML bukannya memaparkannya secara 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 sebagai dokumen PDF.
Titik Akhir
GET /security/report/pdf
Parameter Kuiri
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 sebagai arkib ZIP yang mengandungi kedua‑dua versi HTML dan PDF.
Titik Akhir
GET /security/report/zip
Parameter Kuiri
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
Muat Turun Semua Laporan Projek#
Muat turun arkib ZIP yang mengandungi semua laporan projek yang ditentukan, dalam kedua‑dua format HTML dan PDF.
Titik Akhir
GET /security/report/project-files
Parameter Kuiri
id(wajib): ID Projek. Alias tidak disokong; hantar UUID projek.rt(pilihan): Tapis mengikut jenis laporan. Nilai yang disokong ialahOWASP Top 10danCWE Top 25.rv(pilihan): Tapis mengikut versi laporan (tahun).version(pilihan): Tapis mengikut versi projek.
Jika tiada penapis ditetapkan, semua laporan projek akan dimasukkan. Parameter penapis boleh digabungkan dan diterapkan secara bebas.
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
Muat Turun Semua Laporan Kumpulan Projek#
Muat turun arkib ZIP yang mengandungi laporan semua projek dalam direktori (kumpulan projek) yang ditentukan, dalam kedua‑dua format HTML dan PDF.
Titik Akhir
GET /security/report/directory-files
Parameter Kuiri
id(wajib): ID Direktori (kumpulan projek). Alias tidak disokong; hantar UUID direktori.rt(pilihan): Tapis mengikut jenis laporan. Nilai yang disokong ialahOWASP Top 10danCWE Top 25.rv(pilihan): Tapis mengikut versi laporan (tahun).version(pilihan): Tapis mengikut versi projek.
Jika tiada penapis ditetapkan, laporan semua projek dalam direktori akan dimasukkan. Parameter penapis boleh digabungkan dan diterapkan secara bebas.
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
Dapatkan Laporan daripada SonarQube#
Muat naik data laporan keselamatan terkini untuk produk daripada perkhidmatan SonarQube ke Procurize. Perkhidmatan ini mengambil data isu terkini daripada SonarQube, menukarkannya kepada representasi JSON bagi versi terkini laporan OWASP Top 10 dan CWE Top 25, dan mengembalikannya dalam respons.
Titik Akhir
POST /security/reports/fetch
Pengesahan
Titik akhir ini memerlukan token API, dihantar dalam tajuk X-API-Key. Untuk butiran mengenai penjanaan dan penggunaan token, lihat Token API.
Parameter Kuiri
Sumber SonarQube dipilih dengan salah satu cara berikut:
- Mengikut projek — hantar
project(ID atau alias projek — lihat Pengenal dan Alias). Jangan hantarurlataukey. - Mengikut perkhidmatan SonarQube — hantar
url(URL perkhidmatan SonarQube) dankey(kunci projek SonarQube) bersama‑sama. Jangan hantarproject.
Contoh Permintaan
Ambil laporan untuk projek mengikut aliasnya:
curl -X POST "https://api.procurize.com/security/reports/fetch?project=aspose-imaging-net" \
-H "X-API-Key: YOUR_API_TOKEN"
Ambil laporan secara langsung daripada perkhidmatan 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 pembinaan pelepasan untuk menentukan sama ada menghentikan pembinaan apabila kerentanan dikesan dalam format laporan keselamatan awam.
Catatan
- Memuat naik laporan memerlukan kebenaran peribadi untuk produk yang memiliki laporan. Jika anda tidak mempunyai kebenaran ini, hantar permintaan sahaja: platform akan mengembalikan
403 Forbiddendan secara automatik memberitahu pentadbir platform, yang akan menilai permintaan dan memaklumkan keputusan kepada anda. - Tidak semua perkhidmatan SonarQube mungkin berdaftar pada platform Procurize. Untuk mendaftarkan perkhidmatan baru, hubungi pentadbir platform anda; token pentadbir untuk perkhidmatan tersebut diperlukan.
Pengendalian Ralat#
API menggunakan kod status HTTP standard.
200 OK: Permintaan berjaya204 No Content: Laporan tidak wujud400 Bad Request: Parameter tidak sah atau permintaan rosak401 Unauthorized: Token API tiada atau tidak sah403 Forbidden: Akses dinafikan (contoh: tiada kebenaran untuk produk)500 Internal Server Error: Ralat pelayan yang tidak dijangka
Respons ralat mengandungi kod ralat yang boleh dibaca mesin dan mesej yang boleh dibaca manusia.
