API-referentie voor sessies en resultaten

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

Haal sessielijsten en volledige toegankelijkheidsresultaten programmeerbaar op met behulp van de REST API

Not for use with personal data

De API voor sessies en resultaten geeft je programmatische toegang tot je Axe Developer Hub-sessies en hun toegankelijkheidsresultaten. Gebruik het sessie-eindpunt om sessies voor een project te ontdekken en gebruik vervolgens het resultaat-eindpunt om de gedetailleerde resultaten voor een specifieke sessie op te halen.

Beide eindpunten vereisen een project-ID. Vind het in Axe Developer Hub, of zoek het op op projectnaam met de Projects API.

Authenticatie

Alle verzoeken vereisen een API-sleutel. Geef het op met behulp van de X-API-Key-header:

X-API-Key: <DEQUE_API_KEY>

Vind je API-sleutel in de Axe Account Portal. Kies een Axe Developer Hub API-sleutel voor web- of CI/CD-projecten, of een Axe DevTools Mobile API-sleutel voor mobiele projecten.

Toegangscontrole

De volgende toegangsregels zijn van toepassing op beide eindpunten:

  • Projectleden kunnen toegang krijgen tot sessies en resultaten voor elk project waar ze lid van zijn.
  • Org Admins met een actieve Axe Developer Hub- of Axe DevTools Mobile-abonnement kunnen toegang krijgen tot sessies en resultaten voor elk project in hun organisatie, ongeacht projectlidmaatschap. Toegang is beperkt tot het product van de API-sleutel: een Axe Developer Hub API-sleutel retourneert alleen Axe Developer Hub-gegevens en een Axe DevTools Mobile API-sleutel retourneert alleen Axe DevTools Mobile-gegevens. Een Org Admin kan geen Axe DevTools Mobile API-key gebruiken om Axe Developer Hub gegevens op te halen, of een Axe Developer Hub API-key om Axe DevTools Mobile gegevens op te halen.
  • Niet-leden, niet-admin gebruikers ontvangen een toegang-geweigerd-reactie.
  • Een inactief abonnement retourneert 401 Unauthorized.

Sessies Eindpunt

Retourneert een gepagineerde, filterbare lijst van sessies voor een gegeven project.

Verzoek

  • Eindpunt: GET https://axe.deque.com/api-pub/v1/results/projects/{project_id}/sessions
  • Headers (vereist):
    • X-API-Key: <DEQUE_API_KEY>
    • Accept: application/json

Vervang {project_id} door het ID van het project waarvan je de sessies wilt ophalen. Vind je project-ID in Axe Developer Hub.

Query Parameters

Alle queryparameters zijn optioneel.

Parameter Beschrijving
page_size Aantal sessies om per pagina te retourneren. Standaard: 30. Maximum: 100. Waarden boven het maximum worden beperkt tot 100.
after Cursorwaarde van de vorige respons, gebruikt om de volgende pagina op te halen. Zie Cursor Paginering.
created_after Retourneert alleen sessies die na deze timestamp zijn gecreëerd (ISO 8601 UTC, half-open; sluit de exacte grens uit). Voorbeeld: 2025-01-01T00:00:00Z
created_before Retourneert alleen sessies die vóór deze timestamp zijn gecreëerd (ISO 8601 UTC, half-open; sluit de exacte grens uit). Voorbeeld: 2026-01-01T00:00:00Z
is_canonical_source Wanneer true, retourneert alleen sessies die als canonieke bron zijn gemarkeerd. Moet true of false zijn.
git_branch Retourneert alleen sessies geassocieerd met de gegeven Git-branchnaam. Sessies zonder Git zullen niet overeenkomen.
commit_sha Retourneert alleen sessies geassocieerd met de gegeven Git-commit SHA. Sessies zonder Git zullen niet overeenkomen.
git_url Retourneert alleen sessies geassocieerd met de gegeven Git-repository-URL. Sessies zonder Git zullen niet overeenkomen.
created_by_user_email Retourneert alleen sessies die zijn aangemaakt door de gebruiker met dit e-mailadres. Zie Beperkingen E-mailfilter.

Antwoordbody

Een succesvolle reactie retourneert een JSON-object met een sessions-array. Elk sessie-object bevat de volgende velden:

Veld Type Beschrijving
session_id String Unieke identificatiecode voor de sessie.
name String Menselijk leesbare naam voor de sessie, indien ingesteld. Wordt weggelaten als deze niet is ingesteld; er wordt geen synthetische fallback geboden.
created_at String ISO 8601 UTC-tijdstempel voor wanneer de sessie is aangemaakt.
is_canonical_source Booleaan Of deze sessie is gemarkeerd als een canonieke bron.
git_branch String Git-branch geassocieerd met de sessie. null voor sessies zonder git.
git_url String Git-repository-URL geassocieerd met de sessie. null voor sessies zonder git.
commit_sha String Git commit SHA geassocieerd met de sessie. null voor sessies zonder git.
created_by_user_name String Weergavenaam van de gebruiker die de sessie heeft gemaakt. Weggelaten als de API-sleutel van de gebruiker is verwijderd.
created_by_user_email String E-mailadres van de gebruiker die de sessie heeft gemaakt. Weggelaten als de API-sleutel van de gebruiker is verwijderd.
created_by_user_api_key_name String Naam van de API-sleutel die is gebruikt om de sessie te maken. Geeft "Unknown Member" terug als de API-sleutel is verwijderd.

Voorbeeld responsbody

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

Cursor Paginering

De Sessions-endpoint gebruikt cursor-gebaseerde paginering. Wanneer er meer resultaten zijn dan de huidige pagina, wordt er een ondoorzichtige cursorwaarde geretourneerd in de x-pagination-cursor-responskop. Gebruik deze waarde als de after-queryparameter in uw volgende verzoek om de volgende pagina op te halen.

Wanneer de x-pagination-cursor-kop afwezig is in de respons, heeft u de laatste pagina bereikt.

Beperkingen E-mailfilter

important

De created_by_user_email-filter komt alleen overeen met sessies die zijn aangemaakt na een specifieke datum waarop server-side persistentie van maker-e-mails is geïntroduceerd. Sessies die vóór die datum zijn aangemaakt hebben geen opgeslagen maker-e-mail en zullen niet verschijnen in e-mailgefilterde resultaten. Naarmate er meer nieuwe sessies worden toegevoegd, wordt de filter geleidelijk completer.

Sessie-eindpunt foutresponsen

Status Oorzaak
400 Bad Request Een queryparameterwaarde is ongeldig (bijvoorbeeld een onjuiste ISO 8601-tijdstempel of een page_size boven het maximum).
401 Unauthorized De API-sleutel is ongeldig, ontbreekt of het bijbehorende abonnement is inactief.
403 Forbidden De API-sleutel heeft geen toegang tot het opgegeven project.
404 Not Found De opgegeven project-ID bestaat niet.

Resultaten Eindpunt

Retourneert de toegankelijkheidsresultaten voor een specifieke sessie. De resultaten worden asynchroon geretourneerd: als de resultaten nog niet klaar zijn, retourneert het eindpunt 204 No Content en blijft u polsen totdat ze klaar zijn.

Verzoek

  • Eindpunt: GET https://axe.deque.com/api-pub/v1/results/sessions/{session_id}/results
  • Headers (vereist):
    • X-API-Key: <DEQUE_API_KEY>
    • Accept: application/json

Vervang {session_id} door de session_id-waarde die door het Sessions-endpoint wordt geretourneerd. Het moet een geldige UUID zijn.

Query Parameters

Parameter Vereist Beschrijving
format Nee Responsformaat. summary (standaard) retourneert dezelfde JSON-vorm als de legacy downloadbaar-rapport eindpunt. full retourneert de complete Universele JSON (Algemeen Exportformaat).

Sessiestatus en het Polling-patroon

Wanneer de resultaten van een sessie nog niet zijn verwerkt, triggert het Resultaten eindpunt automatisch verwerking en reageert met 204 No Content (geen responsbody). Uw client moet hetzelfde eindpunt blijven pollsen totdat het een 200 OK-antwoord ontvangt.

Toestand HTTP-respons Wat te doen
done 200 OK met de responspayload Resultaten zijn klaar. Gebruik de responsbody.
processing 204 No Content Resultaten worden nog steeds gegenereerd. Wacht even en probeer opnieuw.
error 204 No Content Verwerking stuitte op een fout. U kunt het verzoek opnieuw proberen.

Omgaan met 429 Too Many Requests

Tijdens perioden van zware belasting kan het Resultaten eindpunt reageren met 429 Too Many Requests in plaats van direct verwerking te triggeren. Dit betekent niet dat uw verzoek is verloren: de onderliggende taak blijft in de wachtrij staan en opnieuw proberen creëert geen dubbele verwerking voor dezelfde sessie.

Een 429-respons bevat een Retry-After-kop, in seconden. Wacht minimaal zo lang voordat u het opnieuw probeert — het onderstaande voorbeeld behandelt dit naast het normale 204-pollinggeval.

Responsbody

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

Voorbeeld: Pollsen voor Resultaten

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

Responsformaten

format=summary (standaard)

Retourneert dezelfde JSON-vorm als de legacy downloadbaar-rapport eindpunt. Gebruik dit formaat als u reeds bestaande tooling heeft die is ontworpen voor het downloadbare-rapport eindpunt en u een directe vervanging wilt.

format=full

Retourneert de volledige resultaatniveaudetails in Universele JSON (Algemeen Exportformaat). Dit formaat omvat elk toegankelijkheidsprobleem dat tijdens de sessie is gevonden, inclusief detail op paginaniveau en regelniveau.

De respons wordt geleverd met Content-Encoding onderhandeld vanuit de Accept-Encoding-kop van de client.

Resultaten Eindpunt Foutresponsen

Status Oorzaak
400 Bad Request De format-parameterwaarde is niet summary of full, of de session_id is geen geldige UUID.
401 Unauthorized De API-sleutel is ongeldig, ontbreekt of het bijbehorende abonnement is inactief.
403 Forbidden De API-sleutel heeft geen toegang tot het project dat eigenaar is van deze sessie.
404 Not Found De opgegeven sessie-ID bestaat niet.
429 Too Many Requests Het systeem is zwaar belast. Zie Omgaan met 429 Te Veel Verzoeken.

Veelvoorkomende Workflows

Alle Sessies voor een Project Ophalen en Volledige Resultaten Downloaden

Dit voorbeeld gebruikt curl en jq om door alle sessies van een project te bladeren en de volledige Universele JSON-resultaten voor elk te downloaden.

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