結果をプログラムで取得

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard

シンプルなGETインターフェースを使用して、RESTサービスでアクセシビリティ結果のサマリーレポートをダウンロード

Not for use with personal data

この ダウンロード可能なレポート RESTサービスでは、Axe Developer Hubのアクセシビリティ結果の概要をJSONデータとしてダウンロードでき、さらなる処理や他のソフトウェアへのインポートが可能です。GETサービスには2つの必須パラメータがあります:

  • APIキー - プロジェクトに対応する個別のAPIキーを取得するか、新しいAPIキーを Axeアカウントポータルで追加します。プロジェクトがウェブAPI、CLI、またはWatcherを使用している場合は、Axe Developer HubのAPIキーを選択してください。モバイルプロジェクトにはAxe DevTools MobileのAPIキーを使用します。
  • プロジェクトID - ダウンロードしたい対応するプロジェクトデータのプロジェクトIDを提供します。 Axe Developer HubでプロジェクトIDを見つけてください。

2つのオプションパラメータを使用して、特定のGitブランチまたは特定の GitコミットSHAにクエリを絞り込むことができます。

リクエスト概要

  • エンドポイントhttps://axe.deque.com/api-pub/watcher/downloadable/report
  • リクエストGET
  • ヘッダー(必須)
    • X-API-Key: <DEQUE_API_KEY>
    • Accept: application/json
  • クエリパラメータ
    • project_id必須
      • 説明:ダウンロードしたいプロジェクトのレポート用のプロジェクトIDを指定します。 このパラメータは必須です。
      • 使用例GET https://axe.deque.com/api-pub/watcher/downloadable/report?project_id=<DEVHUB_PROJECT_ID>
    • branch_name (オプション)
      • 説明:指定されたGitブランチ名のダウンロード可能なレポートを返します。
      • 使用例GET https://axe.deque.com/api-pub/watcher/downloadable/report?project_id=<DEVHUB_PROJECT_ID>&branch_name=<GIT_BRANCH>
    • commit_sha (オプション)
      • 説明:指定されたGitコミットSHAのダウンロード可能なレポートを返します。
      • 使用例GET https://axe.deque.com/api-pub/watcher/downloadable/report?project_id=<DEVHUB_PROJECT_ID>&commit_sha=<GIT_COMMIT_SHA>
important

初回実行時には、 202 Processing レスポンスを受け取る可能性があります。これはダウンロード可能なレポートが生成されているためです。このレスポンスに対処し、リクエストを再試行するコードが必要です。 「202 Processingレスポンスの処理」 を参照して完全な例を確認してください。

curl リクエスト

curl -L -H 'Accept: application/json' -H 'X-API-Key: <DEQUE_API_KEY>' 'https://axe.deque.com/api-pub/watcher/downloadable/report?project_id=<DEVHUB_PROJECT_ID>'
note

が返された場合、リクエストを再試行してください。 202 Processing を参照して、202レスポンスを処理するためのスクリプトの例を確認してください。 Handling a 202 Processing Response レスポンス本文の例

レスポンスオブジェクト

{
  "report_id": "a4990926-3014-4799-aa39-7aca31fce412",
  "source": {
    "product_name": "axe-devtools-html",
    "product_component_name": "axe-devtools-watcher",
    "product_version": "3.20.2"
  },
  "test_details": {
    "test_id": "da0c79a5-6f1e-4692-a255-5757629208fa",
    "start_date": "2025-05-05T20:02:31.883Z",
    "end_date": "2025-05-05T20:02:42.789Z"
  },
  "commit": {
    "sha": "f73ea5a02386b359ffa79a76473f7a5ad41759d5",
    "author": "John Doe",
    "author_email": "john.doe@example.com",
    "message": "Merge pull request #233 from deque/221-add-examples-for-using-global-config-fields-2",
    "branch_name": "main",
    "repository_url": "https://github.com/dequelabs/watcher-examples.git",
    "tag": null
  },
  "devhub_summary": {
    "issue_count_total": 17,
    "issue_count_by_impact": {
      "critical": 0,
      "serious": 2,
      "moderate": 15,
      "minor": 0
    },
    "issue_count_by_rule": [
      {
        "severity": "serious",
        "rule_id": "color-contrast",
        "rule_help": "Elements must meet minimum color contrast ratio thresholds",
        "rule_help_url": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
        "count": 2
      },
      {
        "severity": "moderate",
        "rule_id": "heading-order",
        "rule_help": "Heading levels should only increase by one",
        "rule_help_url": "https://dequeuniversity.com/rules/axe/4.10/heading-order?application=axeAPI",
        "count": 2
      },
      {
        "severity": "moderate",
        "rule_id": "landmark-one-main",
        "rule_help": "Document should have one main landmark",
        "rule_help_url": "https://dequeuniversity.com/rules/axe/4.10/landmark-one-main?application=axeAPI",
        "count": 2
      },
      {
        "severity": "moderate",
        "rule_id": "page-has-heading-one",
        "rule_help": "Page should contain a level-one heading",
        "rule_help_url": "https://dequeuniversity.com/rules/axe/4.10/page-has-heading-one?application=axeAPI",
        "count": 2
      },
      {
        "severity": "moderate",
        "rule_id": "region",
        "rule_help": "All page content should be contained by landmarks",
        "rule_help_url": "https://dequeuniversity.com/rules/axe/4.10/region?application=axeAPI",
        "count": 9
      }
    ]
  }
}

以下のセクションでは、レスポンスボディ内のJSONオブジェクトについて説明します。

トップレベルの構造

フィールド

説明 文字列
report_id レポートの一意の識別子(UUID形式) オブジェクト
source レポートのソースに関する情報 オブジェクト
test_details テスト実行の詳細 オブジェクト
commit テストに関連するGitコミット情報 オブジェクト
devhub_summary 検出されたアクセシビリティ問題の概要 オブジェクト

source レポートを生成した製品に関する情報を含む:

フィールド

説明 文字列
product_name 製品名(例:「axe-devtools-html」) 文字列
product_component_name 製品内のコンポーネント名(例:「axe-devtools-watcher」) 文字列
product_version テストに使用されたコンポーネントのバージョン オブジェクト

test_details テスト実行に関する情報を含む:

フィールド

説明 文字列
test_id テストの一意の識別子(UUID形式) 文字列
start_date テスト開始時のISO 8601タイムスタンプ 文字列
end_date テスト完了時のISO 8601タイムスタンプ オブジェクト

commit テストに関連するGitコミットに関する情報を含む:

フィールド

説明 文字列
sha Gitコミットの完全SHAハッシュ Full SHA hash of the Git commit
author 文字列 コミット作成者のユーザー名
author_email 文字列 コミット作成者のメールアドレス
message 文字列 コミットメッセージ
branch_name 文字列 コミットが行われたブランチの名前
repository_url 文字列 GitリポジトリのURL
tag 文字列 または null コミットに関連付けられたGitタグ(ある場合)

devhub_summary オブジェクト

発見されたアクセシビリティ問題に関する概要情報を含みます:

フィールド タイプ 説明
issue_count_total 数値 発見されたアクセシビリティ問題の総数
issue_count_by_impact オブジェクト 影響レベルごとの問題の内訳
issue_count_by_rule 配列 ルールごとに整理された問題のリスト
issue_count_by_impact オブジェクト

問題を 影響レベルで分類します:

フィールド タイプ 説明
critical 数値 重大な影響を持つ問題の数
serious 数値 深刻な影響を持つ問題の数
moderate 数値 中程度の影響を持つ問題の数
minor 数値 軽微な影響を持つ問題の数
issue_count_by_rule 配列

この配列の各オブジェクトは、以下の構造を持つルールを表します:

フィールド タイプ 説明
severity 文字列 ルールの重大度 (「重大」、「深刻」、「中程度」、「軽微」)
rule_id 文字列 ルールの識別子
rule_help 文字列 ルールの簡潔な説明
rule_help_url 文字列 ルールのDeque Universityドキュメントへのリンク
count 数値 このルールで見つかった問題の数

追加の応答

202 Processing

この応答は、レポートがまだ生成中であることを示しており、待ってから再度リクエストを試す必要があることを示します。

応答本文

{
  "message": "Report is still processing",
  "state": "PROCESSING"
}

400 Bad Request

提供された値は commit_sha がSHA-1値ではありません。

応答本文

{
  "error": "commit_sha must be a valid SHA-1 hash"
}

401 Unauthorized

以下のエラーメッセージのいずれかが 401 Unauthorized 応答に付随します。

指定されたAPIキーが無効です

応答本文

{
  "error": "Invalid API key"
}

APIキーを含む必要なヘッダーがありません:

応答本文

{
  "error": "X-API-Key or Authorization header required"
}

404 Not Found

以下のエラーメッセージのいずれかが 404 Not Found 応答に付随します。

使用されたSHA値が commit_sha 見つかりませんでした

このエラーは、このSHAに対応するデータがaxe Developer Hubデータにないことを示しています。通常、これはこのGitコミットに対してテストスイートが実行されていないことを意味します。存在しないブランチ名が指定された場合と同じエラーです。(次のエラーを参照してください。)

応答本文

{
  "error": "Session not found"
}

提供された値が branch_name 存在しません

このエラー応答は前のエラーと同じです( commit_sha クエリパラメータに指定されたSHAがaxe Developer Hubデータに存在しない場合)。

応答本文

{
  "error": "Session not found"
}

提供された値が project_id 存在しません

このエラー応答は前のエラーと同じです。 404 エラー。

応答本文

{
  "error": "Session not found"
}

応答の取り扱い 202 Processing 応答

このデモンストレーション用シェルスクリプトは curl を使用して、レポートを再リクエストする方法を示しています。 202 Processing 応答を受け取った場合、テストスイートは多数のアクセシビリティ違反を見つける可能性があるため、システムがすべての結果を処理してレポートがダウンロード可能になるまでに追加の時間が必要になることがあります。以下の例を使用して、結果が使用可能かどうかを継続的に再試行するスクリプトを作成することをお勧めします。このスクリプトは、リクエストを最大20回まで再試行し、試行間に5秒の遅延を設けます。

このサンプルでは、 API_KEY 環境変数を、APIキーに設定し、 PROJECT_ID をプロジェクトIDに設定する必要があります。

tip

echo ステートメントを削除して stdout ダウンロード可能なレポートをリダイレクトしてキャプチャすることを検討してください。

#!/bin/bash

URL="https://axe.deque.com/api-pub/watcher/downloadable/report"
MAX_ATTEMPTS=20
DELAY=5
TEMP_FILE=$(mktemp)

for ((i=1; i<=MAX_ATTEMPTS; i++)); do
    echo "Attempt $i..."
    
    # Get both status and response
    STATUS=$(curl -s -w '%{http_code}' -L -H "Accept: application/json" -H "X-API-Key: $API_KEY" -o "$TEMP_FILE" "$URL?project_id=$PROJECT_ID")
    
    case $STATUS in
        200)
            echo "Success!"
            cat "$TEMP_FILE"
            rm "$TEMP_FILE"
            exit 0
            ;;
        202)
            echo "Still processing, waiting ${DELAY}s..."
            sleep $DELAY
            ;;
        *)
            echo "Error: HTTP $STATUS"
            cat "$TEMP_FILE"
            rm "$TEMP_FILE"
            exit 1
            ;;
    esac
done

echo "Timeout after $MAX_ATTEMPTS attempts"
rm "$TEMP_FILE"
exit 1