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 des rapports téléchargeables vous permet de télécharger un résumé de vos résultats d'accessibilité Axe Developer Hub sous forme de données JSON, pour un traitement ultérieur ou une importation dans un autre logiciel. 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 que vous souhaitez télécharger. Trouvez votre ID de projet dans Axe Developer Hub.
Vous pouvez utiliser deux paramètres optionnels pour limiter votre requête à une branche Git spécifique ou à un SHA de commit Gitspé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(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 202 Processing réponse, car le rapport téléchargeable est en cours de génération. Votre code devra gérer cette réponse et réessayer la requête. Voir Gestion d'une réponse 202 en traitement ci-dessous pour un exemple complet.
Exemple de curl requête
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 202 Processing réponse, vous devriez réessayer votre demande. 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 |
source Objet
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 |
test_details Objet
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 |
commit Objet
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 |
devhub_summary Objet
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 |
issue_count_by_impact Objet
Répartit 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 |
issue_count_by_rule Tableau
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 401 Unauthorized réponse.
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 404 Not Found réponse.
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 commit_sha paramètre de requête 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_id n'existe pas
Cette réponse d'erreur est identique aux 404 erreurs précédentes.
Corps de la réponse
{
"error": "Session not found"
}Gérer une 202 Processing réponse
Ce script shell de démonstration montre comment utiliser curl pour redemander votre rapport si vous recevez une 202 Processing réponse. É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 soit prêt à être téléchargé. Nous recommandons d'utiliser l'exemple ci-dessous pour créer un script qui réessayera continuellement et vérifiera si les résultats sont disponibles. Il réessaiera la requête 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 sur votre clé API et PROJECT_ID soit définie sur 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