Obtenez des résultats par programmation

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

Utilisez le service REST pour télécharger un rapport de synthèse de vos résultats d'accessibilité à l'aide d'une simple interface GET

Not for use with personal data
important

Ce point de terminaison est obsolète. Utilisez plutôt le nouveau API des Sessions et Résultats. Les réponses de ce point de terminaison incluent désormais un Deprecation en-tête de réponse.

Migration vers l'API des Sessions et Résultats

Le nouveau API des Sessions et Résultats remplace ce point de terminaison avec deux points de terminaison distincts : un pour lister les sessions d'un projet et un pour récupérer les résultats d'une session spécifique. Ce modèle en deux étapes vous donne accès à toutes les sessions à travers les branches et les commits, pas seulement à la plus récente.

Requête équivalente utilisant format=summary

Le mode format=summary du point de terminaison des Résultats renvoie la même structure JSON que ce point de terminaison. Pour reproduire une requête existante, trouvez d'abord la session qui correspond à votre branche ou commit, puis demandez ses résultats :

  1. Lister les sessions pour trouver la session_id de la branche ou du commit qui vous intéresse, en utilisant les filtres git_branch ou commit_sha :

    curl -H "Accept: application/json" -H "X-API-Key: $API_KEY" \
      "https://axe.deque.com/api-pub/v1/results/projects/$PROJECT_ID/sessions?git_branch=$GIT_BRANCH"
  2. Demander les résultats pour cette session par session_id, utilisant format=summary pour la même structure JSON que ce point de terminaison :

    curl -H "Accept: application/json" -H "X-API-Key: $API_KEY" \
      "https://axe.deque.com/api-pub/v1/results/sessions/$SESSION_ID/results?format=summary"
    important

    Le nouveau point de terminaison renvoie 204 No Content pendant que les résultats sont générés, pas 202 Processing comme le fait ce point de terminaison. Si votre code existant vérifie pour une réponse 202, mettez-le à jour pour gérer plutôt 204. Voir État de la session et le modèle d'interrogation pour un exemple complet d'interrogation.

Aller plus loin avec format=full

Si vous souhaitez le détail complet au niveau des problèmes au-delà de ce que fournit le résumé, utilisez format=full pour récupérer les résultats en JSON Universel (Format d'Export Commun). Ce format inclut chaque problème d'accessibilité trouvé pendant la session : violations individuelles, vérifications incomplètes, réussites et règles inapplicables organisées par page.

curl -H "Accept: application/json" -H "X-API-Key: $API_KEY" \
  "https://axe.deque.com/api-pub/v1/results/sessions/$SESSION_ID/results?format=full"

Référence du Point de Terminaison Hérité

Le service REST rapports téléchargeables vous permet de télécharger un résumé de vos résultats d'accessibilité du hub développeur Axe sous forme de données JSON, pour un traitement ultérieur ou une importation dans d'autres logiciels. Le service GET a deux paramètres requis :

  • Clé API - Trouvez une clé API personnelle correspondant à votre projet ou ajoutez une nouvelle clé API dans le Portail de Comptes Axe. Choisissez une clé API du hub développeur Axe si votre projet utilise les API web, CLI ou Watcher. Utilisez une clé API Axe DevTools Mobile pour les projets mobiles.
  • ID de Projet - Fournissez l'ID du projet pour les données du projet que vous souhaitez télécharger. Trouvez votre ID de projet dans Hub Développeur Axe.

Vous pouvez utiliser deux paramètres optionnels pour limiter votre requête à une branche Git spécifique ou un SHA de commit Git spécifique.

Résumé de la Requête

  • Point de Terminaison : https://axe.deque.com/api-pub/watcher/downloadable/report
  • Requête : GET
  • En-têtes (Requis) :
    • X-API-Key: <DEQUE_API_KEY>
    • Accept: application/json
  • Paramètres de requête :
    • project_id (Requis)
      • Description : Spécifie l'ID du projet pour le rapport du projet que vous souhaitez télécharger. Ce paramètre est requis.
      • Exemple d'utilisation : GET https://axe.deque.com/api-pub/watcher/downloadable/report?project_id=<DEVHUB_PROJECT_ID>
    • branch_name (Optionnel)
      • Description : Renvoie le rapport téléchargeable pour le nom de branche Git spécifié.
      • Exemple d'utilisation : GET https://axe.deque.com/api-pub/watcher/downloadable/report?project_id=<DEVHUB_PROJECT_ID>&branch_name=<GIT_BRANCH>
    • commit_sha (Optionnel)
      • Description : Renvoie le rapport téléchargeable pour le SHA de commit Git spécifié.
      • Exemple d'utilisation : GET https://axe.deque.com/api-pub/watcher/downloadable/report?project_id=<DEVHUB_PROJECT_ID>&commit_sha=<GIT_COMMIT_SHA>
important

Lors de la première exécution, vous recevrez probablement une réponse 202 Processing, car le rapport téléchargeable est en cours de génération. Votre code devra gérer cette réponse et retenter la requête. Voir Gestion d'une réponse 202 Processing ci-dessous pour un exemple complet.

Exemple de requête 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

Si vous recevez une réponse 202 Processing, vous devriez réessayer votre demande. Voir Gestion d'une réponse 202 Processing pour un exemple de script pour gérer une réponse 202.

Exemple de corps de réponse

{
  "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
      }
    ]
  }
}

Objet de réponse

Les sections suivantes décrivent les objets JSON dans le corps de la réponse.

Structure de haut niveau

Champ Type Description
report_id Chaîne Identifiant unique pour le rapport (format UUID)
source Objet Informations sur la source du rapport
test_details Objet Détails sur l'exécution du test
commit Objet Informations sur le commit Git associé au test
devhub_summary Objet Résumé des problèmes d'accessibilité trouvés

Objet source

Contient des informations sur le produit qui a généré le rapport :

Champ Type Description
product_name Chaîne Nom du produit (par exemple, "axe-devtools-html")
product_component_name Chaîne Nom du composant au sein du produit (par exemple, "axe-devtools-watcher")
product_version Chaîne Version du composant utilisé pour le test

Objet test_details

Contient des informations sur l'exécution du test :

Champ Type Description
test_id Chaîne Identifiant unique pour le test (format UUID)
start_date Chaîne Horodatage ISO 8601 indiquant le début du test
end_date Chaîne Horodatage ISO 8601 indiquant la fin du test

Objet commit

Contient des informations sur le commit Git associé au test :

Champ Type Description
sha Chaîne SHA hash complet du commit Git
author Chaîne Nom d'utilisateur de l'auteur du commit
author_email Chaîne Adresse e-mail de l'auteur du commit
message Chaîne Message du commit
branch_name Chaîne Nom de la branche où le commit a été effectué
repository_url Chaîne URL du dépôt Git
tag Chaîne ou null Tag Git associé au commit, le cas échéant

Objet devhub_summary

Contient un résumé des informations sur les problèmes d'accessibilité trouvés :

Champ Type Description
issue_count_total Nombre Nombre total de problèmes d'accessibilité trouvés
issue_count_by_impact Objet Répartition des problèmes par niveau d'impact
issue_count_by_rule Tableau Liste des problèmes organisés par règle
Objet issue_count_by_impact

Décompose les problèmes par niveau d'impact :

Champ Type Description
critical Nombre Comptage des problèmes d'impact critique
serious Nombre Comptage des problèmes d'impact sérieux
moderate Nombre Comptage des problèmes d'impact modéré
minor Nombre Comptage des problèmes d'impact mineur
Tableau issue_count_by_rule

Chaque objet de ce tableau représente une règle avec la structure suivante :

Champ Type Description
severity Chaîne niveau de sévérité de la règle ("critiques", "sérieux", "modéré" ou "mineur")
rule_id Chaîne Identifiant de la règle
rule_help Chaîne Brève description de la règle
rule_help_url Chaîne Lien vers la documentation Deque University pour la règle
count Nombre Nombre de problèmes trouvés pour cette règle

Réponses supplémentaires

202 Processing

Cette réponse indique que le rapport est encore en cours de génération, et vous devez réessayer votre demande après avoir attendu.

Corps de la réponse

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

429 Too Many Requests

Pendant les périodes de forte charge, ce point de terminaison peut répondre par 429 Too Many Requests au lieu de déclencher un traitement immédiatement. Le travail sous-jacent reste en file d’attente, donc réessayer ne crée pas de traitement en double. La réponse inclut un en-tête Retry-After, en secondes — attendez au moins aussi longtemps avant de réessayer.

Corps de la réponse

{
  "error": "Too many requests. Retry after the Retry-After interval."
}

400 Bad Request

La valeur fournie pour commit_sha n'est pas une valeur SHA-1.

Corps de la réponse

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

401 Unauthorized

Un des messages d'erreur suivants accompagnera la réponse 401 Unauthorized.

La clé API spécifiée n'est pas valide

Corps de la réponse

{
  "error": "Invalid API key"
}

Il n'y a pas d'en-tête requis avec une clé API :

Corps de la réponse

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

404 Not Found

Un des messages d'erreur suivants accompagnera la réponse 404 Not Found.

La valeur SHA utilisée avec commit_shan'a pas pu être localisée

Cette erreur indique qu'il n'y a pas de données pour ce SHA dans les données du Axe Developer Hub, ce qui signifie généralement que la suite de tests n'a pas été exécutée contre ce commit Git. Notez qu'il s'agit de la même erreur que celle renvoyée avec un nom de branche qui n'existe pas. (Voir l'erreur suivante.)

Corps de la réponse

{
  "error": "Session not found"
}

La valeur fournie pour branch_namen'existe pas

Cette réponse d'erreur est la même que l'erreur précédente (si le SHA fourni avec le paramètre de requête commit_sha n'existe pas dans les données du Axe Developer Hub).

Corps de la réponse

{
  "error": "Session not found"
}

La valeur fournie pour project_idn'existe pas

Cette réponse d'erreur est la même que les erreurs 404 précédentes.

Corps de la réponse

{
  "error": "Session not found"
}

Gestion d'une réponse 202 Processing

Ce script shell de démonstration montre comment utiliser curl pour redemander votre rapport si vous recevez une réponse 202 Processing. Étant donné que les suites de tests peuvent trouver de nombreuses violations d'accessibilité, notre système peut nécessiter un temps supplémentaire pour traiter tous les résultats avant que le rapport ne soit prêt à être téléchargé. Nous recommandons d'utiliser l'exemple ci-dessous pour créer un script qui réessaiera continuellement et vérifiera si les résultats sont disponibles. Il réessaiera la demande jusqu'à 20 fois, avec un délai de cinq secondes entre les tentatives.

L'exemple nécessite que la variable d'environnement API_KEY soit définie avec votre clé API et PROJECT_ID avec votre ID de projet.

tip

Envisagez de supprimer les déclarations echo si vous souhaitez rediriger stdout et capturer votre rapport téléchargeable.

#!/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