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/listGET選択したスコープとバージョンのレポートメタデータを一覧取得
/security/report/filesGET選択したレポートを ZIP アーカイブとしてダウンロード
/security/report/htmlGET単一レポートを HTML 形式で取得
/security/report/pdfGET単一レポートを PDF 形式で取得
/security/report/zipGET単一レポートを ZIP アーカイブとして取得
/security/report/project-filesGETプロジェクト内のすべてのレポートを ZIP アーカイブとしてダウンロード
/security/report/directory-filesGETプロジェクトグループ(ディレクトリ)内のすべてのレポートを ZIP アーカイブとしてダウンロード
/security/reports/fetchPOSTSonarQube サービスから最新レポートを取得

認証と認可#

この記事で説明するレポート一覧取得およびダウンロードエンドポイントは認証を必要としません。

POST /security/reports/fetch エンドポイントは API トークンによる認証が必要です — 詳細は API Tokens を参照してください。

組織 ID#

ほとんどのリクエストで組織識別子が必要です。組織 ID(UUID)またはエイリアスのいずれかを指定できます — 詳細は 識別子とエイリアス を参照してください。
組織の 設定パネル は https://dashboard.procurize.ai で確認できます。
※ 設定パネルへのアクセスには認可が必要で、組織の設定パネルにアクセスできるユーザーは少なくとも管理者ロールを持っている必要があります。

Copy ID button

識別子とエイリアス#

スコープパラメータはエンティティ 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: 予期しないサーバーエラー

エラーレスポンスには機械可読なエラーコードと人間可読なメッセージが含まれます。

参照#

関連記事#

What are Security Reports?

Security reports repository

How to Configure Security Reports

トップへ
言語を選択