SonarQube レポート API と Webhook

このドキュメントでは、Procurize プラットフォームに保存されている SonarQube のセキュリティレポートへプログラムからアクセスする方法を説明します。レポートの一覧取得および取得、レポートアーカイブのダウンロード、そして新しいレポートが取り込まれた際の webhook 通知の購読についてカバーします。

概要

SonarQube レポートサブモジュールは、組織が SonarQube によって生成されたセキュリティおよびコード品質レポートを集中管理できるようにします。Procurize プラットフォームは以下を通じてこのデータを提供します。

  • 取得したレポートのメタデータを取得するための REST API
  • レポートアーティファクトを ZIP アーカイブとしてダウンロードするエンドポイント
  • 新しいレポートが利用可能になったときにリアルタイムに通知する webhook

これらの機能により、CI/CD パイプライン、GRC システム、社内ダッシュボード、サードパーティのリスク管理ツールとの統合が可能になります。

認証と認可

本記事で説明するすべての API リクエストは認証を必要としません。

組織 ID

すべてのリクエストには組織 ID が必要です。
組織 ID は https://dashboard.procurize.ai の組織 設定パネル にあります。
設定パネルへのアクセスには認可が必要で、組織の設定パネルにアクセスできるユーザーは少なくとも 管理者 ロールを持っている必要があります。

ID コピー ボタン

ベース URL

すべての REST API エンドポイントは以下のベース URL の下で提供されます。

https://api.procurize.com

SonarQube レポート REST API

レポート一覧取得

プラットフォームに保存されている SonarQube セキュリティレポートのページングされた一覧を取得します。

エンドポイント

GET /security/report/list

クエリパラメータ

  • org (必須): 組織 ID
  • version (任意): セマンティックバージョニング形式の製品の正確なバージョン
  • minver (任意): セマンティックバージョニング形式の製品の最小バージョン
  • maxver (任意): セマンティックバージョニング形式の製品の最大バージョン

リクエストには versionminvermaxver のいずれか 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 (必須): 組織 ID
  • reports (必須): レポート 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 エディタ

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 の検出結果を社内のセキュリティダッシュボードに自動的に取り込む
  • 品質ゲートが失敗したときにコンプライアンスワークフローをトリガーする
  • 監査やベンダーリスクレビューのためにセキュリティレポートをアーカイブする
  • サードパーティシステムを最新のコードセキュリティ姿勢と同期させる
トップへ
言語を選択