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
Le service REST service REST des rapports téléchargeables vous permet de télécharger un résumé de vos résultats d'accessibilité de l'Axe Developer Hub au format JSON, pour un traitement ultérieur ou l'importation dans d'autres logiciels. Le service GET a deux paramètres obligatoires :
- Clé API - Trouvez une clé API personnelle correspondant à votre projet ou ajoutez une nouvelle clé API dans le Portail de compte Axe. Choisissez une clé API Axe Developer Hub 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 correspondant que vous souhaitez télécharger. Trouvez votre ID de projet dans le Axe Developer Hub.
Vous pouvez utiliser deux paramètres facultatifs 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 (obligatoires) :
X-API-Key:<DEQUE_API_KEY>Accept: application/json
- Paramètres de requête :
project_id(Obligatoire)- Description : Spécifie l'ID du projet pour le rapport du projet que vous souhaitez télécharger. Ce paramètre est obligatoire.
- Exemple d'utilisation :
GET https://axe.deque.com/api-pub/watcher/downloadable/report?project_id=<DEVHUB_PROJECT_ID>
branch_name(Facultatif)- Description : Retourne 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(Facultatif)- Description : Retourne le rapport téléchargeable pour le SHA du 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 relancer la requête. Voir Traitement d'une réponse de traitement 202 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 devez relancer votre requête. Voir Traitement d'une réponse de traitement 202 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 niveau supérieur
| 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 ex., « axe-devtools-html ») |
product_component_name |
Chaîne | Nom du composant au sein du produit (par ex., « axe-devtools-watcher ») |
product_version |
Chaîne | Version du composant utilisé pour les tests |
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 du début du test |
end_date |
Chaîne | Horodatage ISO 8601 de la fin du test |
Objet commit
Contient des informations sur le commit Git associé au test :
| Champ | Type | Description |
|---|---|---|
sha |
Chaîne | Hachage SHA 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 de commit |
branch_name |
Chaîne | Nom de la branche où le commit a été réalisé |
repository_url |
Chaîne | URL du dépôt Git |
tag |
Chaîne ou null |
Étiquette Git associée au commit, le cas échéant |
Objet devhub_summary
Contient des informations résumées 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 | Nombre de problèmes d'impact critique |
serious |
Nombre | Nombre de problèmes d'impact sérieux |
moderate |
Nombre | Nombre de problèmes d'impact modéré |
minor |
Nombre | Nombre de problèmes d'impact mineur |
Tableau issue_count_by_rule
Chaque objet dans ce tableau représente une règle avec la structure suivante :
| Champ | Type | Description |
|---|---|---|
severity |
Chaîne | Niveau de gravité de la règle ("critique", "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 détectés pour cette règle |
Réponses supplémentaires
202 Processing
Cette réponse indique que le rapport est toujours en cours de génération, et vous devez essayer de nouveau après avoir attendu.
Corps de la réponse
{
"message": "Report is still processing",
"state": "PROCESSING"
}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
L'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
L'un des messages d'erreur suivants accompagnera la réponse 404 Not Found.
La valeur SHA utilisée avec commit_sha n'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 que cette erreur est la même que celle retourné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_name n'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 de l'Axe Developer Hub).
Corps de la réponse
{
"error": "Session not found"
}La valeur fournie pour project_id n'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. Comme 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 relancera continuellement la demande pour voir si les résultats sont disponibles. Il relancera la requête jusqu'à 20 fois, avec un délai de cinq secondes entre chaque tentative.
L'exemple nécessite que la variable d'environnement API_KEY soit définie sur votre clé API et PROJECT_ID soit définie sur votre ID de projet.
Envisagez de supprimer les instructions 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