Przejdź do treści
A11ySignal

Dokumentacja

API

Te same punkty końcowe, które wywołuje panel. Wciągnij wyniki do własnej sprawozdawczości, uruchom skanowanie z haka wdrożeniowego albo przerwij build, gdy wydanie coś zepsuje.

Dostępne od planu Agency wzwyż.

Uwierzytelnianie

Utwórz klucz w Ustawieniach. Pokazujemy go raz. Wysyłaj go w nagłówku X-Api-Key przy każdym żądaniu.

curl https://api.a11ysignal.com/v1/sites \
  -H "X-Api-Key: a11y_xxxxxxxxxxxxxxxxxxxxxxxx"

Klucz działa w obrębie jednej przestrzeni roboczej i ma w niej uprawnienia administratora. Unieważnienie działa natychmiast.

Punkty końcowe

GET/v1/sitesKażda witryna w przestrzeni roboczej, z najnowszym wynikiem i harmonogramem.lista
POST/v1/sitesDodaj witrynę. Treść żądania odpowiada formularzowi w panelu.utwórz
POST/v1/sites/:id/scanUstaw skanowanie w kolejce teraz. Zwraca identyfikator skanowania albo tego, które już trwa.uruchom
GET/v1/scansSkanowania w całej przestrzeni roboczej, od najnowszych. ?siteId= zawęża listę.historia
GET/v1/scans/:idWynik, rezultaty dla każdej strony, reguły, które zawiodły, i różnica wobec poprzedniego skanowania.szczegóły
GET/v1/scans/:id/issuesPojedyncze problemy z selektorami i kodem. ?impact=critical&ruleId=color-contraststronicowane
GET/v1/organization/usageJak wyglądasz na tle swojego planu.limity

Przerwanie builda przy regresji

Na dwa sposoby. Najprostszy nie wymaga w ogóle klucza API — uruchom skaner bezpośrednio w CI na wdrożeniu podglądowym:

npx @a11ysignal/scan https://preview.example.com \
  --max-pages 25 --fail-on serious

Drugi uruchamia skanowanie po naszej stronie po wdrożeniu i czeka na werdykt, dzięki czemu wynik trafia też do historii w twoim panelu:

SCAN=$(curl -sX POST https://api.a11ysignal.com/v1/sites/$SITE_ID/scan \
  -H "X-Api-Key: $A11YSIGNAL_KEY" | jq -r .id)

# Odpytuj, aż się zakończy, potem odczytaj werdykt.
until [ "$(curl -s https://api.a11ysignal.com/v1/scans/$SCAN \
  -H "X-Api-Key: $A11YSIGNAL_KEY" | jq -r .status)" != "running" ]; do sleep 5; done

curl -s https://api.a11ysignal.com/v1/scans/$SCAN -H "X-Api-Key: $A11YSIGNAL_KEY" \
  | jq -e '.counts.critical == 0 and .counts.serious == 0'

Co dostaniesz w odpowiedzi

Szczegóły skanowania, przycięte do pól, z których korzysta większość:

{
  "id": "cm...",
  "status": "completed",
  "startUrl": "https://example.com/",
  "score": 87.4,
  "counts": { "critical": 0, "serious": 9, "moderate": 2, "minor": 0 },
  "pagesScanned": 24,
  "pagesFailed": 0,
  "axeVersion": "4.13.0",
  "diff": {
    "newIssues":   [{ "url": "…/checkout", "ruleId": "label", "impact": "critical", "count": 2 }],
    "fixedIssues": [{ "url": "…/",         "ruleId": "image-alt", "impact": "critical", "count": 5 }],
    "scoreDelta": -3.5
  },
  "ruleSummary": [
    { "ruleId": "color-contrast", "impact": "serious", "elements": 9, "pages": 4 }
  ]
}

score jest null, gdy przechodzenie nie odczytało żadnej strony — adres startowy zwracający 404 albo robots.txt zabraniający wszystkiego. Traktuj to jak niepowodzenie, nie zaliczenie; samo skanowanie jest oznaczone jako failed wraz z powodem.

Limity i błędy

429limit żądańNa klucz. Skanowania na żądanie są dodatkowo ograniczone dziennie zależnie od planu.120/min
403planAPI wymaga planu Agency lub wyższego; treść odpowiedzi wskazuje brakującą funkcję.funkcja
400walidacjaBłędy walidacji treści wracają jako mapa pole → komunikaty.fieldErrors
409konfliktTen adres jest już monitorowany w tej przestrzeni roboczej.duplikat