SonarQube レポート API#
この記事では、Procurize プラットフォームに保存されている SonarQube のセキュリティレポートにプログラムからアクセスする方法を説明します。レポートの一覧取得と、HTML、PDF、ZIP 形式でのダウンロードに対応した REST API をカバーしています。
概要#
SonarQube Reports サブモジュールは、組織が SonarQube によって生成されたセキュリティおよびコード品質レポートを集中管理できるようにします。Procurize プラットフォームは、以下の操作を可能にするパブリック REST API を提供します。
- 組織、プロジェクトグループ、またはプロジェクト単位でレポートメタデータを一覧取得
- 単一レポートを HTML、PDF、または ZIP 形式でダウンロード
- 複数レポートを ZIP アーカイブとしてダウンロード
- プロジェクトまたはプロジェクトグループ内のすべてのレポートを ZIP アーカイブとしてダウンロード
- SonarQube サービスから最新の OWASP Top 10 と CWE Top 25 レポートを直接取得
これらの機能により、CI/CD パイプライン、GRC システム、社内ダッシュボード、サードパーティのリスク管理ツールとの統合が容易になります。
エンドポイント#
| エンドポイント | メソッド | 目的 |
|---|---|---|
/security/report/list | GET | 選択したスコープとバージョンのレポートメタデータを一覧取得 |
/security/report/files | GET | 選択したレポートを ZIP アーカイブとしてダウンロード |
/security/report/html | GET | 単一レポートを HTML 形式で取得 |
/security/report/pdf | GET | 単一レポートを PDF 形式で取得 |
/security/report/zip | GET | 単一レポートを ZIP アーカイブとして取得 |
/security/report/project-files | GET | プロジェクト内のすべてのレポートを ZIP アーカイブとしてダウンロード |
/security/report/directory-files | GET | プロジェクトグループ(ディレクトリ)内のすべてのレポートを ZIP アーカイブとしてダウンロード |
/security/reports/fetch | POST | SonarQube サービスから最新レポートを取得 |
認証と認可#
この記事で説明するレポート一覧取得およびダウンロードエンドポイントは認証を必要としません。
POST /security/reports/fetch エンドポイントは API トークンによる認証が必要です — 詳細は API Tokens を参照してください。
組織 ID#
ほとんどのリクエストで組織識別子が必要です。組織 ID(UUID)またはエイリアスのいずれかを指定できます — 詳細は 識別子とエイリアス を参照してください。
組織の 設定パネル は https://dashboard.procurize.ai で確認できます。
※ 設定パネルへのアクセスには認可が必要で、組織の設定パネルにアクセスできるユーザーは少なくとも管理者ロールを持っている必要があります。

識別子とエイリアス#
スコープパラメータはエンティティ ID(UUID)または人間が読みやすいエイリアスのいずれかを受け付けます。エイリアスを使用するとリクエストが読みやすくなり、環境間で安定します。
| パラメータ | 受け入れ値 | 例エイリアス |
|---|---|---|
org | 組織 ID またはエイリアス | aspose, groupdocs |
directory | ディレクトリ(プロジェクトグループ) ID またはエイリアス | aspose-imaging, groupdocs-annotation |
project | プロジェクト ID またはエイリアス | aspose-imaging-net, groupdocs-annotation-java |
たとえば、次の 2 つのリクエストは同等です。
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"
注意: バルクダウンロードエンドポイントの
idパラメータではエイリアスはサポートされていません。GET /security/report/project-filesおよびGET /security/report/directory-filesにはディレクトリまたはプロジェクトの UUID を渡してください。
ベース URL#
すべての REST API エンドポイントは以下のベース URL の下で提供されます。
https://api.procurize.com
SonarQube レポート REST API#
レポート一覧取得#
選択したスコープとバージョンで利用可能なセキュリティレポートのメタデータを返します(ファイル内容は含まれません)。このエンドポイントは、ダウンロードエンドポイントに渡すことができるレポート ID を発見するために使用します。
エンドポイント
GET /security/report/list
クエリパラメータ
org(任意): 組織 ID またはエイリアス(例:aspose、groupdocs)。最広範囲のスコープ。directory(任意): ディレクトリ(プロジェクトグループ) ID またはエイリアス(例:aspose-imaging、groupdocs-annotation)。中間スコープ。project(任意): プロジェクト ID またはエイリアス(例:aspose-imaging-net、groupdocs-annotation-java)。最狭いスコープ。version(任意): 正確なプロジェクトバージョン。minver(任意): 最小プロジェクトバージョン。maxver(任意): 最大プロジェクトバージョン。
org、directory、project のいずれかは必須です。スコープは次の優先順位で評価されます: project が指定されていればそのプロジェクトのみを検索、次に directory が指定されていればそのプロジェクトグループ全体、最後に org が指定されていれば組織全体を検索します。org と project/directory を同時に指定した場合、対象がその組織に属しているか追加で検証されます。
version、minver、maxver のいずれかは必須です。version が指定された場合、minver と maxver は無視されます。
リクエスト例
curl "https://api.procurize.com/security/report/list?org=aspose&version=1.0"
エイリアスでプロジェクトグループまたはプロジェクトを指定する例:
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"
レスポンス例
{
"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"
}
]
}
レスポンスフィールド
organizationId: レポートが属する組織。reports[].id: ユニークなレポート ID。ダウンロードエンドポイントに渡します。reports[].projectName: 製品の表示名。reports[].projectVersion: 製品のバージョン。reports[].reportType: レポート種別(OWASP Top 10またはCWE Top 25)。reports[].reportVersion: レポート標準のバージョン(年)。reports[].date: レポートが生成された日時。reports[].uploadDate: レポートが Procurize にアップロードされた日時。reports[].vulnerabilitiesCount: 発見された脆弱性の数。reports[].securityRating: 全体的なセキュリティ評価(A–E、Aが最高)。
ID でレポートをダウンロード#
選択したレポートを含む ZIP アーカイブをダウンロードします。各レポートは HTML と PDF の両方が含まれます。
エンドポイント
GET /security/report/files
クエリパラメータ
org(必須): 組織 ID またはエイリアス(例:aspose、groupdocs)。reports(必須): 含めるレポート ID。複数のレポートを含める場合はパラメータを繰り返し指定します。
リクエスト例
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
レスポンス
- Content-Type:
application/zip - ボディにはバイナリの ZIP ファイルが含まれます。
クライアントはレスポンスをストリームし、ディスクに保存してください。
単一レポートの操作#
/security/report/html、/security/report/pdf、/security/report/zip エンドポイントは単一レポートを返し、選択ルールは共通です。
レポート選択#
レポート種別とバージョンは必ず指定します。
rt(必須): レポート種別。OWASP Top 10またはCWE Top 25がサポートされています。rv(必須): レポートバージョン(標準版の年)。例:2025(OWASP Top 10)や2024(CWE Top 25)。
レポートの特定は次のいずれかの方法で行います。
- レポート ID で指定 —
id(レポート ID)とproject(プロジェクト ID またはエイリアス)またはorg(組織 ID またはエイリアス)のいずれかを組み合わせます。このモードではversionパラメータは使用しません。 - プロジェクトバージョンで指定 —
project(プロジェクト ID またはエイリアス)とversion(プロジェクトバージョン)を組み合わせます。このモードではorgパラメータは使用しません。
project と org の両方が指定された場合、org は無視されます。
HTML 形式でレポート取得#
単一レポートを HTML ページとしてレンダリングするか、ダウンロード可能な HTML ファイルとして返します。
エンドポイント
GET /security/report/html
クエリパラメータ
rt(必須): レポート種別。rv(必須): レポートバージョン。- レポート選択パラメータ: 上記「レポート選択」を参照。
download(任意):trueに設定すると HTML をファイルダウンロードとして返します(Content-Disposition: attachment)。省略またはfalseの場合はインラインで返します。
リクエスト例
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 をファイルとしてダウンロードしたい場合:
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
レスポンス
- Content-Type:
text/html
PDF 形式でレポート取得#
単一レポートを PDF ドキュメントとして返します。
エンドポイント
GET /security/report/pdf
クエリパラメータ
rt(必須): レポート種別。rv(必須): レポートバージョン。- レポート選択パラメータ: 上記「レポート選択」を参照。
リクエスト例
curl "https://api.procurize.com/security/report/pdf?rt=CWE+Top+25&rv=2024&project=aspose-imaging-net&version=1.0" -o report.pdf
レスポンス
- Content-Type:
application/pdf
ZIP 形式でレポート取得#
単一レポートを ZIP アーカイブとして返します。アーカイブには HTML と PDF の両方が含まれます。
エンドポイント
GET /security/report/zip
クエリパラメータ
rt(必須): レポート種別。rv(必須): レポートバージョン。- レポート選択パラメータ: 上記「レポート選択」を参照。
リクエスト例
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
レスポンス
- Content-Type:
application/zip
プロジェクトの全レポートをダウンロード#
指定したプロジェクトのすべてのレポート(HTML と PDF の両方)を含む ZIP アーカイブをダウンロードします。
エンドポイント
GET /security/report/project-files
クエリパラメータ
id(必須): プロジェクト ID。エイリアスはサポートされていないため、プロジェクト UUID を渡してください。rt(任意): レポート種別でフィルタ。OWASP Top 10またはCWE Top 25が使用可能。rv(任意): レポートバージョン(年)でフィルタ。version(任意): プロジェクトバージョンでフィルタ。
フィルタを指定しなければ、プロジェクト内のすべてのレポートが含まれます。フィルタは組み合わせて使用でき、独立して適用されます。
リクエスト例
curl "https://api.procurize.com/security/report/project-files?id=00000000-0000-0000-0000-000000000005" -o project-reports.zip
レスポンス
- Content-Type:
application/zip
プロジェクトグループの全レポートをダウンロード#
指定したディレクトリ(プロジェクトグループ)内のすべてのプロジェクトのレポート(HTML と PDF の両方)を含む ZIP アーカイブをダウンロードします。
エンドポイント
GET /security/report/directory-files
クエリパラメータ
id(必須): ディレクトリ(プロジェクトグループ) ID。エイリアスはサポートされていないため、ディレクトリ UUID を渡してください。rt(任意): レポート種別でフィルタ。OWASP Top 10またはCWE Top 25が使用可能。rv(任意): レポートバージョン(年)でフィルタ。version(任意): プロジェクトバージョンでフィルタ。
フィルタを指定しなければ、ディレクトリ内のすべてのプロジェクトのレポートが含まれます。フィルタは組み合わせて使用でき、独立して適用されます。
リクエスト例
curl "https://api.procurize.com/security/report/directory-files?id=00000000-0000-0000-0000-000000000006" -o directory-reports.zip
レスポンス
- Content-Type:
application/zip
SonarQube からレポートを取得#
SonarQube サービスから製品の最新セキュリティレポートデータを Procurize にアップロードします。サービスは SonarQube から最新の課題データを取得し、OWASP Top 10 と CWE Top 25 の最新バージョンの JSON 表現に変換してレスポンスで返します。
エンドポイント
POST /security/reports/fetch
認証
このエンドポイントは X-API-Key ヘッダーに API トークンを渡すことで認証が必要です。トークンの生成と使用方法は API Tokens を参照してください。
クエリパラメータ
SonarQube ソースは次のいずれかで指定します。
- プロジェクトで指定 —
project(プロジェクト ID またはエイリアス)を渡します。urlやkeyは使用しません。 - SonarQube サービスで指定 —
url(SonarQube サービスの URL)とkey(SonarQube プロジェクトキー)を同時に渡します。projectは使用しません。
リクエスト例
エイリアスでプロジェクトのレポートを取得する場合:
curl -X POST "https://api.procurize.com/security/reports/fetch?project=aspose-imaging-net" \
-H "X-API-Key: YOUR_API_TOKEN"
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"
レスポンス例
{
"Owasp10_2025": {
"TOTAL_SECURITY_RATING": "A",
"TOTAL_COUNT": 0,
...
},
"Cwe25_2025": {
"TOTAL_SECURITY_RATING": "A",
"TOTAL_COUNT": 0,
...
}
}
このレスポンスは、リリースビルドパイプラインで脆弱性が検出された場合にビルドを停止すべきか判断するために利用できます。
注意点
- レポートのアップロードには、対象製品に対する個人権限が必要です。権限がない場合でもリクエストを送信すると、プラットフォームは
403 Forbiddenを返し、管理者に自動通知します。管理者はリクエストをレビューし、結果を通知します。 - すべての SonarQube サービスが Procurize プラットフォームに登録されているわけではありません。新しいサービスを登録するにはプラットフォーム管理者に連絡してください。その際、対象サービス用の管理者トークンが必要です。
エラー処理#
API は標準的な HTTP ステータスコードを使用します。
200 OK: リクエスト成功204 No Content: レポートが存在しない400 Bad Request: パラメータが無効またはリクエストが不正401 Unauthorized: API トークンが欠如または無効403 Forbidden: アクセス拒否(例: 製品に対する権限がない)500 Internal Server Error: 予期しないサーバーエラー
エラーレスポンスには機械可読なエラーコードと人間可読なメッセージが含まれます。
