SonarQube Raporları API’si#
Bu makale, Procurize platformunda depolanan SonarQube güvenlik raporlarına programatik olarak nasıl erişileceğini açıklar. Raporları listeleme ve HTML, PDF ve ZIP formatlarında indirme için REST API’sini kapsar.
Genel Bakış#
SonarQube Raporları alt modülü, kuruluşların SonarQube tarafından oluşturulan güvenlik ve kod kalitesi raporlarını merkezi olarak depolamasına ve yönetmesine olanak tanır. Procurize platformu, aşağıdaki işlemleri yapmanızı sağlayan bir genel REST API’si sunar:
- Bir organizasyon, proje grubu veya proje için rapor meta verilerini listeleme
- Tek bir raporu HTML, PDF veya ZIP formatında indirme
- Seçili raporları ZIP arşivi olarak indirme
- Bir proje veya proje grubunun tüm raporlarını ZIP arşivi olarak indirme
- En yeni OWASP Top 10 ve CWE Top 25 raporlarını doğrudan bir SonarQube hizmetinden getirme
Bu yetenekler, CI/CD boru hatları, GRC sistemleri, dahili panolar ve üçüncü taraf risk yönetim araçlarıyla entegrasyonları mümkün kılar.
Uç Noktalar#
| Uç Nokta | Yöntem | Amaç |
|---|---|---|
/security/report/list | GET | Seçilen kapsam ve sürüm için rapor meta verilerini listeler. |
/security/report/files | GET | Seçili raporları ZIP arşivi olarak indirir. |
/security/report/html | GET | Tek bir raporu HTML olarak alır. |
/security/report/pdf | GET | Tek bir raporu PDF olarak alır. |
/security/report/zip | GET | Tek bir raporu ZIP arşivi olarak alır. |
/security/report/project-files | GET | Bir projenin tüm raporlarını ZIP arşivi olarak indirir. |
/security/report/directory-files | GET | Bir proje grubunun (dizin) tüm raporlarını ZIP arşivi olarak indirir. |
/security/reports/fetch | POST | Bir SonarQube hizmetinden en yeni raporları getirir. |
Kimlik Doğrulama ve Yetkilendirme#
Bu makalede açıklanan rapor listeleme ve indirme uç noktaları kimlik doğrulama gerektirmez.
POST /security/reports/fetch uç noktası bir API belirteci ile kimlik doğrulama gerektirir — bkz. API Tokens.
Organizasyon Kimliği#
Burada açıklanan çoğu istek için bir organizasyon tanımlayıcısı gereklidir. Organizasyon kimliğini (UUID) ya da takma adını geçirebilirsiniz — bkz. Identifiers and Aliases.
Bu kimliği, https://dashboard.procurize.ai adresindeki Organizasyonun ayarlar paneli içinde bulabilirsiniz.
Lütfen ayarlar paneline erişimin yetkilendirme gerektirdiğini ve organizasyon ayarları paneline erişimin, o organizasyonda en azı Yönetici rolüne sahip bir kullanıcı gerektirdiğini unutmayın.

Tanımlayıcılar ve Takma Adlar#
Kapsam parametreleri, varlık kimliğini (UUID) ya da insan tarafından okunabilir bir takma adı kabul eder. Takma adlar istekleri daha okunabilir kılar ve ortamlar arasında sabittir.
| Parametre | Kabul eder | Örnek takma adlar |
|---|---|---|
org | Organizasyon ID’si veya takma adı | aspose, groupdocs |
directory | Dizin (proje grubu) ID’si veya takma adı | aspose-imaging, groupdocs-annotation |
project | Proje ID’si veya takma adı | aspose-imaging-net, groupdocs-annotation-java |
Örneğin, aşağıdaki iki istek eşdeğerdir:
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"
Not: Takma adlar toplu indirme uç noktalarının
idparametresi için desteklenmez.GET /security/report/project-filesveGET /security/report/directory-filesuç noktalarına dizin ya da proje UUID’si gönderin.
Temel URL#
Tüm REST API uç noktaları aşağıdaki temel URL altında sunulur:
https://api.procurize.com
SonarQube Raporları REST API’si#
Raporları Listele#
Seçilen kapsam ve sürüm için mevcut güvenlik raporlarını, dosya içeriklerine dahil etmeden döndürür. Bu uç nokta, indirme uç noktalarına geçirilebilecek rapor ID’lerini keşfetmek için kullanılır.
Endpoint
GET /security/report/list
Query Parameters
org(optional): Organizasyon ID’si veya takma adı (örnek:asposeveyagroupdocs). En geniş kapsam.directory(optional): Dizin (proje grubu) ID’si veya takma adı (örnek:aspose-imagingveyagroupdocs-annotation). Daha dar kapsam.project(optional): Proje ID’si veya takma adı (örnek:aspose-imaging-netveyagroupdocs-annotation-java). En dar kapsam.version(optional): Tam proje sürümü.minver(optional): Minimum proje sürümü.maxver(optional): Maksimum proje sürümü.
org, directory veya project kapsam parametrelerinden en az biri gereklidir. Kapsamlar şu öncelik sırasına göre değerlendirilir: project belirtilmişse yalnız o proje aranır; aksi takdirde directory belirtilmişse bütün proje grubu aranır; aksi takdirde bütün organizasyon (org) aranır. org parametresi project veya directory ile birlikte verildiğinde, hedefin o organizasyona ait olduğu ayrıca doğrulanır.
version, minver veya maxver parametrelerinden en az biri gereklidir. version belirtilmişse minver ve maxver yok sayılır.
Request Example
curl "https://api.procurize.com/security/report/list?org=aspose&version=1.0"
Bir proje grubu ya da proje takma adıyla kapsam belirleme:
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: Raporların ait olduğu organizasyon.reports[].id: Benzersiz rapor kimliği. Bu değeri indirme uç noktalarına gönderin.reports[].projectName: Ürünün gösterim adı.reports[].projectVersion: Ürün sürümü.reports[].reportType: Rapor türü (OWASP Top 10veyaCWE Top 25).reports[].reportVersion: Rapor standardının yılı.reports[].date: Raporun oluşturulma tarihi.reports[].uploadDate: Raporun Procurize’a yüklenme tarihi.reports[].vulnerabilitiesCount: Bulunan güvenlik açığı sayısı.reports[].securityRating: Genel güvenlik derecesi (A–E,Aen iyisi).
Kimlik ile Raporları İndir#
Seçilen raporları içeren bir ZIP arşivi indirir. Her rapor hem HTML hem de PDF formatında bulunur.
Endpoint
GET /security/report/files
Query Parameters
org(required): Organizasyon ID’si veya takma adı (örnek:asposeveyagroupdocs).reports(required): Dahil edilecek rapor ID’leri. Birden fazla rapor eklemek için parametreyi tekrarlayın.
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 - Yanıt gövdesi ikili ZIP dosyasını içerir.
İstemciler yanıtı akış olarak almalı ve diske kaydetmelidir.
Tek Bir Raporla Çalışma#
/security/report/html, /security/report/pdf ve /security/report/zip uç noktaları tek bir raporu döndürür ve aynı seçim kurallarını paylaşır.
Rapor Seçimi#
Rapor türü ve sürümü her zaman gereklidir:
rt(required): Rapor türü. Desteklenen değerlerOWASP Top 10veCWE Top 25.rv(required): Rapor sürümü — standart sürümünün yılı, örnek2025(OWASP Top 10) veya2024(CWE Top 25).
Rapor daha sonra iki yoldan biriyle seçilir:
- Rapor ID’siyle —
id(rapor ID) parametresiniproject(proje ID veya takma adı) ya daorg(organizasyon ID veya takma adı) ile birlikte gönderin. Bu moddaversiongönderilmez. - Proje sürümüyle —
project(proje ID veya takma adı, örnekaspose-imaging-netveyagroupdocs-annotation-java) veversion(proje sürümü) gönderin. Bu moddaorgparametresi kullanılmaz.
project ve org aynı anda verilirse org yok sayılır.
Raporu HTML Olarak Al#
Tek bir raporu HTML sayfası olarak render eder veya indirilebilir bir HTML dosyası olarak döndürür.
Endpoint
GET /security/report/html
Query Parameters
rt(required): Rapor türü.rv(required): Rapor sürümü.- Rapor seçim parametreleri: bkz. Rapor Seçimi.
download(optional):trueolarak ayarlanırsa HTML bir dosya indirme olarak döner (Content-Disposition: attachment). Atlanırsa ya dafalseise rapor satır içi (inline) döner.
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"
HTML dosyasını satır içi render etmek yerine indirmek için:
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
Raporu PDF Olarak Al#
Tek bir raporu PDF belgesi olarak döndürür.
Endpoint
GET /security/report/pdf
Query Parameters
rt(required): Rapor türü.rv(required): Rapor sürümü.- Rapor seçim parametreleri: bkz. Rapor Seçimi.
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
Raporu ZIP Olarak Al#
Tek bir raporu, HTML ve PDF sürümlerini içeren bir ZIP arşivi olarak döndürür.
Endpoint
GET /security/report/zip
Query Parameters
rt(required): Rapor türü.rv(required): Rapor sürümü.- Rapor seçim parametreleri: bkz. Rapor Seçimi.
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
Bir Projenin Tüm Raporlarını İndir#
Belirtilen projenin tüm raporlarını (HTML ve PDF formatlarında) içeren bir ZIP arşivi indirir.
Endpoint
GET /security/report/project-files
Query Parameters
id(required): Proje ID’si. Takma adlar desteklenmez; proje UUID’si gönderin.rt(optional): Rapor türüne göre filtrele. Desteklenen değerlerOWASP Top 10veCWE Top 25.rv(optional): Rapor sürümüne (yıla) göre filtrele.version(optional): Proje sürümüne göre filtrele.
Filtre belirtilmezse projenin tüm raporları dahil edilir. Filtre parametreleri birleştirilebilir ve bağımsız olarak uygulanır.
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
Bir Proje Grubunun Tüm Raporlarını İndir#
Belirtilen dizindeki (proje grubu) tüm projelerin raporlarını (HTML ve PDF formatlarında) içeren bir ZIP arşivi indirir.
Endpoint
GET /security/report/directory-files
Query Parameters
id(required): Dizin (proje grubu) ID’si. Takma adlar desteklenmez; dizin UUID’si gönderin.rt(optional): Rapor türüne göre filtrele. Desteklenen değerlerOWASP Top 10veCWE Top 25.rv(optional): Rapor sürümüne (yıla) göre filtrele.version(optional): Proje sürümüne göre filtrele.
Filtre belirtilmezse dizindeki tüm projelerin raporları dahil edilir. Filtre parametreleri birleştirilebilir ve bağımsız olarak uygulanır.
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
SonarQube’tan Raporları Getir#
Bir SonarQube hizmetinden bir ürün için en yeni güvenlik raporu verilerini Procurize’a yükler. Hizmet, en yeni sorun verilerini SonarQube’tan alır, OWASP Top 10 ve CWE Top 25 raporlarının en yeni sürümlerinin JSON temsillerine dönüştürür ve yanıt içinde döndürür.
Endpoint
POST /security/reports/fetch
Authentication
Bu uç nokta, X-API-Key başlığında gönderilen bir API belirteci gerektirir. Belirteç oluşturma ve kullanma hakkında detaylar için API Tokens bölümüne bakın.
Query Parameters
SonarQube kaynağı iki yoldan biriyle seçilir:
- Proje ile —
project(proje ID veya takma adı — bkz. Identifiers and Aliases).urlveyakeygönderilmez. - SonarQube hizmeti ile —
url(SonarQube hizmet URL’si) vekey(SonarQube proje anahtarı) birlikte gönderilir.projectgönderilmez.
Request Example
Bir projenin takma adıyla raporu getirme:
curl -X POST "https://api.procurize.com/security/reports/fetch?project=aspose-imaging-net" \
-H "X-API-Key: YOUR_API_TOKEN"
Bir SonarQube hizmetinden doğrudan raporu getirme:
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,
...
}
}
Yanıt, güvenlik raporu formatlarında tespit edilen güvenlik açıkları nedeniyle bir derleme sürecini durdurup durdurmayacağını karar vermek için sürüm boru hatlarında faydalıdır.
Notlar
- Bir raporu yüklemek, raporların ait olduğu ürün için kişisel izin gerektirir. Bu izniniz yoksa yine de isteği gönderin: platform
403 Forbiddendöner ve otomatik olarak platform yöneticilerini bilgilendirir; yöneticiler isteği inceler ve kararını size bildirir. - Her SonarQube hizmeti Procurize platformunda kayıtlı olmayabilir. Yeni bir hizmet kaydetmek için platform yöneticinizle iletişime geçin; bu hizmet için bir yönetici belirteci gereklidir.
Hata İşleme#
API, standart HTTP durum kodlarını kullanır.
200 OK: İstek başarılı204 No Content: Rapor mevcut değil400 Bad Request: Geçersiz parametreler veya hatalı istek401 Unauthorized: Eksik veya geçersiz API belirteci403 Forbidden: Erişim reddedildi (örneğin, ürün için izin eksik)500 Internal Server Error: Beklenmeyen sunucu hatası
Hata yanıtları, makine tarafından okunabilir bir hata kodu ve insan tarafından okunabilir bir mesaj içerir.
