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ç NoktaYöntemAmaç
/security/report/listGETSeçilen kapsam ve sürüm için rapor meta verilerini listeler.
/security/report/filesGETSeçili raporları ZIP arşivi olarak indirir.
/security/report/htmlGETTek bir raporu HTML olarak alır.
/security/report/pdfGETTek bir raporu PDF olarak alır.
/security/report/zipGETTek bir raporu ZIP arşivi olarak alır.
/security/report/project-filesGETBir projenin tüm raporlarını ZIP arşivi olarak indirir.
/security/report/directory-filesGETBir proje grubunun (dizin) tüm raporlarını ZIP arşivi olarak indirir.
/security/reports/fetchPOSTBir 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.

Kimliği Kopyala düğmesi

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.

ParametreKabul ederÖrnek takma adlar
orgOrganizasyon ID’si veya takma adıaspose, groupdocs
directoryDizin (proje grubu) ID’si veya takma adıaspose-imaging, groupdocs-annotation
projectProje 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 id parametresi için desteklenmez. GET /security/report/project-files ve GET /security/report/directory-files uç 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: aspose veya groupdocs). En geniş kapsam.
  • directory (optional): Dizin (proje grubu) ID’si veya takma adı (örnek: aspose-imaging veya groupdocs-annotation). Daha dar kapsam.
  • project (optional): Proje ID’si veya takma adı (örnek: aspose-imaging-net veya groupdocs-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 10 veya CWE 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, A en 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: aspose veya groupdocs).
  • 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ğerler OWASP Top 10 ve CWE Top 25.
  • rv (required): Rapor sürümü — standart sürümünün yılı, örnek 2025 (OWASP Top 10) veya 2024 (CWE Top 25).

Rapor daha sonra iki yoldan biriyle seçilir:

  • Rapor ID’siyle — id (rapor ID) parametresini project (proje ID veya takma adı) ya da org (organizasyon ID veya takma adı) ile birlikte gönderin. Bu modda version gönderilmez.
  • Proje sürümüyle — project (proje ID veya takma adı, örnek aspose-imaging-net veya groupdocs-annotation-java) ve version (proje sürümü) gönderin. Bu modda org parametresi 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): true olarak ayarlanırsa HTML bir dosya indirme olarak döner (Content-Disposition: attachment). Atlanırsa ya da false ise 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ğerler OWASP Top 10 ve CWE 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ğerler OWASP Top 10 ve CWE 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). url veya key gönderilmez.
  • SonarQube hizmeti ile — url (SonarQube hizmet URL’si) ve key (SonarQube proje anahtarı) birlikte gönderilir. project gö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 Forbidden dö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ğil
  • 400 Bad Request: Geçersiz parametreler veya hatalı istek
  • 401 Unauthorized: Eksik veya geçersiz API belirteci
  • 403 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.

Ayrıca Bakınız:#

İlgili Makaleler#

Güvenlik Raporları Nedir?

Güvenlik raporları deposu

Güvenlik Raporlarını Nasıl Yapılandırılır

En Üste
Dil seç