SonarQube レポート API と Webhook
このドキュメントでは、Procurize プラットフォームに保存されている SonarQube のセキュリティレポートへプログラムからアクセスする方法を説明します。レポートの一覧取得および取得、レポートアーカイブのダウンロード、そして新しいレポートが取り込まれた際の webhook 通知の購読についてカバーします。
概要
SonarQube レポートサブモジュールは、組織が SonarQube によって生成されたセキュリティおよびコード品質レポートを集中管理できるようにします。Procurize プラットフォームは以下を通じてこのデータを提供します。
- 取得したレポートのメタデータを取得するための REST API
- レポートアーティファクトを ZIP アーカイブとしてダウンロードするエンドポイント
- 新しいレポートが利用可能になったときにリアルタイムに通知する webhook
これらの機能により、CI/CD パイプライン、GRC システム、社内ダッシュボード、サードパーティのリスク管理ツールとの統合が可能になります。
認証と認可
本記事で説明するすべての API リクエストは認証を必要としません。
組織 ID
すべてのリクエストには組織 ID が必要です。
組織 ID は https://dashboard.procurize.ai の組織 設定パネル にあります。
設定パネルへのアクセスには認可が必要で、組織の設定パネルにアクセスできるユーザーは少なくとも 管理者 ロールを持っている必要があります。

ベース URL
すべての REST API エンドポイントは以下のベース URL の下で提供されます。
https://api.procurize.com
SonarQube レポート REST API
レポート一覧取得
プラットフォームに保存されている SonarQube セキュリティレポートのページングされた一覧を取得します。
エンドポイント
GET /security/report/list
クエリパラメータ
org(必須): 組織 IDversion(任意): セマンティックバージョニング形式の製品の正確なバージョンminver(任意): セマンティックバージョニング形式の製品の最小バージョンmaxver(任意): セマンティックバージョニング形式の製品の最大バージョン
リクエストには version、minver、maxver のいずれか 1 つ以上が必須であることに注意してください。
リクエスト例
curl "https://api.procurize.com/security/report/list?org=00000000-0000-0000-0000-000000000001&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"
}
]
}
レポートアーカイブのダウンロード
完全な SonarQube レポートアーティファクトを含む ZIP アーカイブをダウンロードします。アーカイブには HTML と PDF のレポートが含まれます。
エンドポイント
GET /security/report/files
org(必須): 組織 IDreports(必須): レポート ID の配列
リクエスト例
curl "https://api.procurize.com/security/report/files?org=00000000-0000-0000-0000-000000000001&reports=00000000-0000-0000-0000-000000000002&reports=00000000-0000-0000-0000-000000000003"
レスポンス
- Content-Type:
application/zip - レスポンスボディにバイナリ ZIP ファイルが含まれます
クライアントはレスポンスをストリームし、ディスクに保存してください。
エラーハンドリング
API は標準的な HTTP ステータスコードを使用します。
200 OK: リクエスト成功204 No Content: レポートが存在しません400 Bad Request: パラメータが無効またはリクエストが不正な形式500 Internal Server Error: 予期しないサーバーエラー
エラーレスポンスには機械可読なエラーコードと人間可読なメッセージが含まれます。
Webhook
Procurize の webhook により、外部システムは新しい SonarQube レポートが取り込まれた、または更新されたときに通知を受け取れます。
Webhook の設定
Webhook は組織の 設定パネル の セキュリティレポート セクションで追加または編集できます ( https://dashboard.procurize.ai )。
設定パネルへのアクセスには認可が必要で、組織の設定パネルにアクセスできるユーザーは少なくとも 管理者 ロールを持っている必要があります。

Webhook をテストする場合は、 https://webhook-test.com などのオンラインサービスを利用できます。
Webhook ペイロード
Webhook イベントは JSON ペイロードを含む HTTP POST リクエストとして配信されます。
ペイロード例
{
"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"
}
]
}
Webhook のセキュリティ
真正性を確保するため、Webhook リクエストには共有シークレットで生成された署名ヘッダーが含まれます。
- 署名は HMAC-SHA256 で計算されます
- クライアントはペイロードを処理する前に署名を検証すべきです
これにより、未承認または偽装された webhook 配信を防止できます。
配信とリトライ
- Webhook は
2xx応答が返された場合に正常に配信されたとみなされます - 配信失敗時は自動的に 1 時間ごとにリトライされます
- イベントは複数回配信される可能性があるため、コンシューマ側は冪等な処理を実装してください
主な利用シナリオ
- SonarQube の検出結果を社内のセキュリティダッシュボードに自動的に取り込む
- 品質ゲートが失敗したときにコンプライアンスワークフローをトリガーする
- 監査やベンダーリスクレビューのためにセキュリティレポートをアーカイブする
- サードパーティシステムを最新のコードセキュリティ姿勢と同期させる
