Référence de l'API Sessions et Résultats

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

Récupérez les listes de sessions et les résultats d'accessibilité complets de manière programmatique en utilisant l'API REST

Not for use with personal data

L'API Sessions et Résultats vous donne un accès programmatique à vos sessions du Axe Developer Hub et à leurs résultats d'accessibilité. Utilisez le point de terminaison des sessions pour découvrir des sessions pour un projet, puis utilisez le point de terminaison des résultats pour récupérer les résultats détaillés pour toute session spécifique.

Les deux points de terminaison nécessitent un ID de projet. Trouvez-le dans Axe Developer Hub, ou recherchez-le par nom de projet avec l'API Projets.

Authentification

Toutes les requêtes nécessitent une clé API. Fournissez-la en utilisant l'en-tête X-API-Key :

X-API-Key: <DEQUE_API_KEY>

Trouvez votre clé API dans le Portail de compte Axe. Choisissez une clé API Axe Developer Hub pour les projets web ou CI/CD, ou une clé API Axe DevTools Mobile pour les projets mobiles.

Contrôle d'accès

Les règles d'accès suivantes s'appliquent aux deux points de terminaison :

  • Les Membres du projet peuvent accéder aux sessions et aux résultats de tout projet auquel ils appartiennent.
  • Les Administrateurs de l'organisation avec un abonnement actif à Axe Developer Hub ou Axe DevTools Mobile peuvent accéder aux sessions et aux résultats de tout projet de leur organisation, indépendamment de leur appartenance au projet. L'accès est limité au produit de la clé API : une clé API Axe Developer Hub renvoie uniquement des données d'Axe Developer Hub, et une clé API Axe DevTools Mobile ne renvoie que des données de Axe DevTools Mobile. Un administrateur d'organisation ne peut pas utiliser une clé API Axe DevTools Mobile pour récupérer des données Axe Developer Hub, ni une clé API Axe Developer Hub pour récupérer des données Axe DevTools Mobile.
  • Les Utilisateurs non-membres, non-administrateurs recevront une réponse d'accès refusé.
  • Un abonnement inactif renvoie 401 Unauthorized.

Point de terminaison des sessions

Renvoie une liste paginée et filtrable de sessions pour un projet donné.

Requête

  • Point de terminaison : GET https://axe.deque.com/api-pub/v1/results/projects/{project_id}/sessions
  • En-têtes (obligatoires) :
    • X-API-Key: <DEQUE_API_KEY>
    • Accept: application/json

Remplacez {project_id} par l'ID du projet dont vous souhaitez récupérer les sessions. Trouvez votre ID de projet dans Axe Developer Hub.

Paramètres de requête

Tous les paramètres de requête sont facultatifs.

Paramètre Description
page_size Nombre de sessions à renvoyer par page. Valeur par défaut : 30. Maximum : 100. Les valeurs supérieures au maximum sont limitées à 100.
after Valeur du curseur de la réponse précédente, utilisée pour récupérer la page suivante. Voir Pagination par curseur.
created_after Renvoie uniquement les sessions créées après ce timestamp (ISO 8601 UTC, semi-ouvert ; exclut la limite exacte). Exemple : 2025-01-01T00:00:00Z
created_before Renvoie uniquement les sessions créées avant ce timestamp (ISO 8601 UTC, semi-ouvert ; exclut la limite exacte). Exemple : 2026-01-01T00:00:00Z
is_canonical_source Lorsque true, renvoie uniquement les sessions marquées comme source canonique. Doit être true ou false.
git_branch Renvoie uniquement les sessions associées au nom de branche Git donné. Les sessions sans Git ne correspondront pas.
commit_sha Renvoie uniquement les sessions associées au commit SHA du Git donné. Les sessions sans Git ne correspondront pas.
git_url Renvoie uniquement les sessions associées à l'URL du dépôt Git donné. Les sessions sans Git ne correspondront pas.
created_by_user_email Renvoie uniquement les sessions créées par l'utilisateur avec cette adresse e-mail. Voir Limitation du filtre par e-mail.

Corps de la réponse

Une réponse réussie renvoie un objet JSON avec un tableau sessions. Chaque objet session contient les champs suivants :

Champ Type Description
session_id Chaîne de caractères Identifiant unique pour la session.
name Chaîne de caractères Nom lisible pour la session, s'il a été défini. Omission si non défini ; aucun substitut synthétique n'est fourni.
created_at Chaîne de caractères Horodatage UTC ISO 8601 de la création de la session.
is_canonical_source Booléen Indique si cette session est marquée comme source canonique.
git_branch Chaîne de caractères Branche Git associée à la session. null pour les sessions sans git.
git_url Chaîne de caractères URL du dépôt Git associé à la session. null pour les sessions sans git.
commit_sha Chaîne de caractères SHA du commit Git associé à la session. null pour les sessions sans git.
created_by_user_name Chaîne de caractères Nom d'affichage de l'utilisateur ayant créé la session. Omis si la clé API de l'utilisateur a été supprimée.
created_by_user_email Chaîne de caractères Adresse e-mail de l'utilisateur ayant créé la session. Omis si la clé API de l'utilisateur a été supprimée.
created_by_user_api_key_name Chaîne de caractères Nom de la clé API utilisée pour créer la session. Renvoie "Unknown Member" si la clé API a été supprimée.

Exemple de corps de réponse

{
  "sessions": [
    {
      "session_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "name": "Main CI run for PR 451",
      "created_at": "2026-06-01T14:23:00.000Z",
      "is_canonical_source": true,
      "git_branch": "feature/new-nav",
      "git_url": "https://github.com/example/webapp",
      "commit_sha": "9eabf5b536662000f79978c4d1b6e4eff5c8d785",
      "created_by_user_name": "Jane Smith",
      "created_by_user_email": "jane.smith@example.com",
      "created_by_user_api_key_name": "CI Pipeline Key"
    },
    {
      "session_id": "f0e1d2c3-b4a5-6789-0123-456789abcdef",
      "created_at": "2026-05-30T09:00:00.000Z",
      "is_canonical_source": false,
      "git_branch": null,
      "git_url": null,
      "commit_sha": null,
      "created_by_user_api_key_name": "Unknown Member"
    }
  ]
}

Pagination par curseur

Le point de terminaison Sessions utilise une pagination basée sur le curseur. Lorsqu'il y a plus de résultats au-delà de la page actuelle, une valeur de curseur opaque est renvoyée dans l'en-tête de réponse x-pagination-cursor. Passez cette valeur en tant que paramètre de requête after dans votre prochaine requête pour récupérer la page suivante.

Lorsque l'en-tête x-pagination-cursor est absent de la réponse, vous avez atteint la dernière page.

Limitation du filtre par e-mail

important

Le filtre created_by_user_email ne correspond qu'aux sessions créées après une date spécifique où la persistance côté serveur des e-mails des créateurs a été introduite. Les sessions créées avant cette date n'ont pas d'e-mail de créateur stocké et n'apparaîtront pas dans les résultats filtrés par e-mail. Au fur et à mesure que de nouvelles sessions s'accumulent, le filtre devient progressivement plus complet.

Réponses d'erreur du point de terminaison Sessions

Statut Cause
400 Bad Request La valeur d'un paramètre de requête est invalide (par exemple, un horodatage ISO 8601 mal formé ou un page_size supérieur au maximum).
401 Unauthorized La clé API est invalide, manquante ou l'abonnement associé est inactif.
403 Forbidden La clé API n'a pas accès au projet spécifié.
404 Not Found L'ID de projet spécifié n'existe pas.

Point de terminaison des résultats

Renvoie les résultats d'accessibilité pour une session spécifique. Les résultats sont renvoyés de manière asynchrone : si les résultats ne sont pas prêts, le point de terminaison renvoie 204 No Content et vous devez interroger jusqu'à ce qu'ils le soient.

Requête

  • Point de terminaison : GET https://axe.deque.com/api-pub/v1/results/sessions/{session_id}/results
  • En-têtes (obligatoires) :
    • X-API-Key: <DEQUE_API_KEY>
    • Accept: application/json

Remplacez {session_id} par la valeur session_id renvoyée par le point de terminaison Sessions. Elle doit être un UUID valide.

Paramètres de requête

Paramètre Requis Description
format Non Format de réponse. summary (par défaut) renvoie la même forme JSON que le point de terminaison legacy downloadable-report. full renvoie le JSON universel (Format d'exportation commun) complet.

État de la session et le schéma d'interrogation

Lorsque les résultats d'une session n'ont pas encore été traités, le point de terminaison des résultats déclenche automatiquement le traitement et répond avec 204 No Content (aucun corps de réponse). Votre client doit interroger le même point de terminaison jusqu'à ce qu'il reçoive une réponse 200 OK.

État Réponse HTTP Que faire
done 200 OK avec les résultats du contenu Les résultats sont prêts. Consommez le corps de la réponse.
processing 204 No Content Les résultats sont encore en cours de génération. Attendez un peu et réessayez.
error 204 No Content Le traitement a rencontré une erreur. Vous pouvez réessayer la requête.

Gestion de 429 Too Many Requests

Pendant les périodes de forte demande, le point de terminaison des résultats peut répondre avec 429 Too Many Requests au lieu de déclencher immédiatement le traitement. Cela ne signifie pas que votre requête a été perdue : le travail sous-jacent reste en file d'attente, et réessayer ne crée pas de traitement en double pour la même session.

Une réponse 429 inclut un en-tête Retry-After, en secondes. Attendez au moins aussi longtemps avant de réessayer — l'exemple ci-dessous gère cela parallèlement au cas normal de 204 d'interrogation.

Corps de réponse

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

Exemple : Interrogation des résultats

#!/bin/bash

SESSION_ID="a1b2c3d4-e5f6-7890-abcd-ef1234567890"
URL="https://axe.deque.com/api-pub/v1/results/sessions/$SESSION_ID/results"
MAX_ATTEMPTS=20
DELAY=5
TEMP_FILE=$(mktemp)

for ((i=1; i<=MAX_ATTEMPTS; i++)); do
    echo "Attempt $i..."

    HEADERS_FILE=$(mktemp)
    STATUS=$(curl -s -w '%{http_code}' -L \
      -H "Accept: application/json" \
      -H "X-API-Key: $API_KEY" \
      -D "$HEADERS_FILE" \
      -o "$TEMP_FILE" \
      "$URL?format=full")

    case $STATUS in
        200)
            echo "Results ready!"
            cat "$TEMP_FILE"
            rm "$TEMP_FILE" "$HEADERS_FILE"
            exit 0
            ;;
        204)
            echo "Still processing, waiting ${DELAY}s..."
            sleep $DELAY
            ;;
        429)
            RETRY_AFTER=$(grep -i '^retry-after:' "$HEADERS_FILE" | tr -d '\r' | awk '{print $2}')
            RETRY_AFTER=${RETRY_AFTER:-$DELAY}
            echo "Too many requests, waiting ${RETRY_AFTER}s per Retry-After..."
            sleep "$RETRY_AFTER"
            ;;
        *)
            echo "Error: HTTP $STATUS"
            cat "$TEMP_FILE"
            rm "$TEMP_FILE" "$HEADERS_FILE"
            exit 1
            ;;
    esac
    rm -f "$HEADERS_FILE"
done

echo "Timeout after $MAX_ATTEMPTS attempts"
rm "$TEMP_FILE"
exit 1

Formats de réponse

format=summary (par défaut)

Renvoie la même forme JSON que le point de terminaison legacy downloadable-report. Utilisez ce format si vous avez des outils existants basés sur le point de terminaison downloadable-report et que vous souhaitez un remplacement direct.

format=full

Renvoie les résultats complets au niveau des incidents en JSON universel (Format d'exportation commun). Ce format inclut chaque problème d'accessibilité trouvé lors de la session, y compris les détails au niveau de la page et de la règle.

La réponse est livrée avec Content-Encoding négociée à partir de l'en-tête Accept-Encoding du client.

Réponses d'erreur du point de terminaison des résultats

Statut Cause
400 Bad Request La valeur du paramètre format n'est pas summary ou full, ou le session_id n'est pas un UUID valide.
401 Unauthorized La clé API est invalide, manquante ou l'abonnement associé est inactif.
403 Forbidden La clé API n'a pas accès au projet propriétaire de cette session.
404 Not Found L'ID de session spécifié n'existe pas.
429 Too Many Requests Le système est fortement sollicité. Voir Gestion des 429 Trop de demandes.

Flux de travail courants

Récupérer toutes les sessions pour un projet et télécharger les résultats complets

Cet exemple utilise curl et jq pour naviguer dans toutes les sessions d'un projet et télécharger les résultats JSON universels complets pour chacune.

#!/bin/bash

# Set these environment variables before running:
# API_KEY: your Axe Developer Hub API key
# PROJECT_ID: your project ID

BASE_URL="https://axe.deque.com/api-pub/v1/results"
CURSOR=""

while true; do
    QUERY="page_size=100"
    if [ -n "$CURSOR" ]; then
        QUERY="$QUERY&after=$CURSOR"
    fi

    RESPONSE=$(curl -s -D - -H "Accept: application/json" -H "X-API-Key: $API_KEY" \
      "$BASE_URL/projects/$PROJECT_ID/sessions?$QUERY")

    NEXT_CURSOR=$(echo "$RESPONSE" | grep -i "x-pagination-cursor:" | tr -d '\r' | awk '{print $2}')
    BODY=$(echo "$RESPONSE" | sed -n '/^\r\{0,1\}$/,$p' | tail -n +2)

    SESSION_IDS=$(echo "$BODY" | jq -r '.sessions[].session_id')

    for SESSION_ID in $SESSION_IDS; do
        echo "Fetching results for session $SESSION_ID..."

        while true; do
            STATUS=$(curl -s -w '%{http_code}' -L \
              -H "Accept: application/json" \
              -H "X-API-Key: $API_KEY" \
              -o "${SESSION_ID}.json" \
              "$BASE_URL/sessions/$SESSION_ID/results?format=full")

            if [ "$STATUS" = "200" ]; then
                echo "Saved ${SESSION_ID}.json"
                break
            elif [ "$STATUS" = "204" ]; then
                echo "  Still processing, waiting..."
                sleep 5
            else
                echo "  Error: HTTP $STATUS"
                break
            fi
        done
    done

    if [ -z "$NEXT_CURSOR" ]; then
        break
    fi
    CURSOR="$NEXT_CURSOR"
done