Obtenez des résultats par programmation
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
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 :
-
Lister les sessions pour trouver la
session_idde la branche ou du commit qui vous intéresse, en utilisant les filtresgit_branchoucommit_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" -
Demander les résultats pour cette session par
session_id, utilisantformat=summarypour 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"importantLe nouveau point de terminaison renvoie
204 No Contentpendant que les résultats sont générés, pas202 Processingcomme le fait ce point de terminaison. Si votre code existant vérifie pour une réponse202, mettez-le à jour pour gérer plutôt204. 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>
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>'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.
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