プログラムで結果を取得する

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

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

Not for use with personal data

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

  • APIキー - プロジェクトに対応する個人用APIキーを見つけるか、 Axeアカウントポータルで新しいAPIキーを追加してください。プロジェクトがWeb 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 Responseの処理 を以下をご覧ください。

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 処理中の応答の処理 、202 応答を処理するためのスクリプトの例です。

応答ボディの例

{
  "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 ハッシュ
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