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#

EndpointMetodeTujuan
/security/report/listGETMenampilkan metadata laporan untuk ruang lingkup dan versi yang dipilih.
/security/report/filesGETMengunduh laporan yang dipilih sebagai arsip ZIP.
/security/report/htmlGETMendapatkan satu laporan dalam format HTML.
/security/report/pdfGETMendapatkan satu laporan dalam format PDF.
/security/report/zipGETMendapatkan satu laporan dalam arsip ZIP.
/security/report/project-filesGETMengunduh semua laporan dari sebuah proyek sebagai arsip ZIP.
/security/report/directory-filesGETMengunduh semua laporan dari sebuah grup proyek (direktori) sebagai arsip ZIP.
/security/reports/fetchPOSTMengambil 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.

Tombol Salin ID

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.

ParameterMenerimaContoh alias
orgID atau alias Organisasiaspose, groupdocs
directoryID atau alias Direktori (grup proyek)aspose-imaging, groupdocs-annotation
projectID atau alias Proyekaspose-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 id pada endpoint unduhan massal. Berikan UUID direktori atau proyek ke GET /security/report/project-files dan GET /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, aspose atau groupdocs). Ruang lingkup terluas.
  • directory (opsional): ID atau alias Direktori (grup proyek) (misalnya, aspose-imaging atau groupdocs-annotation). Ruang lingkup lebih sempit.
  • project (opsional): ID atau alias Proyek (misalnya, aspose-imaging-net atau groupdocs-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 10 atau CWE 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, dimana A terbaik).

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, aspose atau groupdocs).
  • 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 didukung OWASP Top 10 dan CWE Top 25.
  • rv (wajib): Versi laporan — tahun edisi standar, misalnya 2025 untuk OWASP Top 10 atau 2024 untuk CWE Top 25.

Laporan yang tepat kemudian dipilih dengan salah satu cara berikut:

  • Berdasarkan ID laporan — berikan id (ID laporan) bersama project (ID atau alias proyek) atau org (ID atau alias organisasi). Jangan berikan version dalam mode ini.
  • Berdasarkan versi proyek — berikan project (ID atau alias proyek, misalnya aspose-imaging-net atau groupdocs-annotation-java) dan version (versi proyek). Parameter org tidak 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 ke true untuk mengembalikan HTML sebagai unduhan berkas (Content-Disposition: attachment). Jika tidak diberikan atau false, 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 didukung OWASP Top 10 dan CWE 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 didukung OWASP Top 10 dan CWE 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 berikan url atau key.
  • Berdasarkan layanan SonarQube — berikan url (URL layanan SonarQube) dan key (kunci proyek SonarQube) secara bersamaan. Jangan berikan project.

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 Forbidden dan 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 berhasil
  • 204 No Content: Laporan tidak ada
  • 400 Bad Request: Parameter tidak valid atau permintaan tidak terbentuk dengan benar
  • 401 Unauthorized: Token API hilang atau tidak valid
  • 403 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.

Lihat juga:#

Artikel terkait#

Apa itu Laporan Keamanan?

Repositori laporan keamanan

Cara Mengonfigurasi Laporan Keamanan

ke atas
Pilih bahasa