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#

EndpointKaedahTujuan
/security/report/listGETMenyenaraikan metadata laporan untuk skop dan versi terpilih.
/security/report/filesGETMemuat turun laporan terpilih sebagai arkib ZIP.
/security/report/htmlGETMendapatkan satu laporan dalam format HTML.
/security/report/pdfGETMendapatkan satu laporan dalam format PDF.
/security/report/zipGETMendapatkan satu laporan sebagai arkib ZIP.
/security/report/project-filesGETMemuat turun semua laporan projek sebagai arkib ZIP.
/security/report/directory-filesGETMemuat turun semua laporan kumpulan projek (direktori) sebagai arkib ZIP.
/security/reports/fetchPOSTMengambil 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.

Butang Salin ID

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.

ParameterMenerimaContoh alias
orgID atau alias Organisasiaspose, groupdocs
directoryID atau alias Direktori (kumpulan projek)aspose-imaging, groupdocs-annotation
projectID atau alias Projekaspose-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 id pada titik akhir muat turun pukal. Hantar UUID direktori atau projek kepada GET /security/report/project-files dan GET /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: aspose atau groupdocs). Skop terluas.
  • directory (pilihan): ID atau alias Direktori (kumpulan projek) (contoh: aspose-imaging atau groupdocs-annotation). Skop lebih sempit.
  • project (pilihan): ID atau alias Projek (contoh: aspose-imaging-net atau groupdocs-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 10 atau CWE 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 mana A adalah 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: aspose atau groupdocs).
  • 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 ialah OWASP Top 10 dan CWE Top 25.
  • rv (wajib): Versi laporan — tahun edisi piawaian, contohnya 2025 untuk OWASP Top 10 atau 2024 untuk CWE Top 25.

Laporan tepat kemudian dipilih dengan salah satu cara berikut:

  • Mengikut ID laporan — hantar id (ID laporan) bersama sama project (ID atau alias projek) atau org (ID atau alias organisasi). Jangan hantar version dalam mod ini.
  • Mengikut versi projek — hantar project (ID atau alias projek, contoh aspose-imaging-net atau groupdocs-annotation-java) dan version (versi projek). Parameter org tidak 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 kepada true untuk mengembalikan HTML sebagai muat turun fail (Content-Disposition: attachment). Jika tidak ditetapkan 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 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 ialah OWASP Top 10 dan CWE 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 ialah OWASP Top 10 dan CWE 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 hantar url atau key.
  • Mengikut perkhidmatan SonarQube — hantar url (URL perkhidmatan SonarQube) dan key (kunci projek SonarQube) bersama‑sama. Jangan hantar project.

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 Forbidden dan 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 berjaya
  • 204 No Content: Laporan tidak wujud
  • 400 Bad Request: Parameter tidak sah atau permintaan rosak
  • 401 Unauthorized: Token API tiada atau tidak sah
  • 403 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.

Lihat juga:#

Artikel Berkaitan#

Apakah Laporan Keselamatan?

Repositori laporan keselamatan

Bagaimana Menyediakan Laporan Keselamatan

ke atas
Pilih bahasa