Żabka

Dokumentacja API

Oba endpointy są w pełni działające i operują na tej samej bazie co pulpit. Uwierzytelnianie odbywa się nagłówkiemx-api-key, porównywanym stałoczasowo. Klucz jest przechowywany wyłącznie po stronie serwera i nigdy nie jest prezentowany w interfejsie. Limit: 30 żądań na minutę (po przekroczeniu kod 429).

POST/api/public/cases

Przyjmuje zgłoszenie, rozpoznaje sklep, przypisuje Partnera ds. Sprzedaży i zapisuje zdarzenia w logu. Zwraca 201 przy rozpoznanym sklepie, 409 gdy opis jest niejednoznaczny lub nierozpoznany, 400 przy błędzie walidacji, 401 bez poprawnego klucza, 429 po przekroczeniu limitu.

Żądanie
curl -X POST https://<adres-aplikacji>/api/public/cases \
  -H "content-type: application/json" \
  -H "x-api-key: <klucz>" \
  -d '{
    "kanal": "telefon",
    "opis_sklepu": "Żabka w Przeźmierowie koło ronda, chyba Rynkowa",
    "klient_imie": "Anna Kowalska",
    "klient_kontakt": "anna.kowalska@x-one.pl",
    "kategoria": "obsługa klienta",
    "klient_relacja": "Sprzedawca był nieuprzejmy przy kasie."
  }'
Odpowiedź 201
{
  "ref": "CWK-2026-00025",
  "status": "Nowa",
  "sklep": { "code": "Z1195", "city": "Przeźmierowo", "street": "Rynkowa", "house_number": "114" },
  "pds": { "partner_id": "P-014" },
  "rozpoznanie": {
    "status": "rozpoznany",
    "pewnosc_rozpoznania": 57,
    "trafienia": ["miejscowość Przeźmierowo", "ulica Rynkowa", "punkt orientacyjny: rondo"],
    "kandydaci": [ ... ]
  }
}

GET/api/public/cases/{ref}

Zwraca bieżący status sprawy wraz z pełnym, chronologicznym logiem zdarzeń. Odpowiedź nie zawiera danych kontaktowych klienta, tokenu formularza PdS ani adresów URL sklepów. Kody: 200, 401, 404, 429.

Żądanie
curl https://<adres-aplikacji>/api/public/cases/CWK-2026-00025 \
  -H "x-api-key: <klucz>"
Odpowiedź 200
{
  "ref": "CWK-2026-00025",
  "status": "Ponaglenie 1",
  "sciezka": "B",
  "sklep": { "code": "Z1195", "city": "Przeźmierowo", "street": "Rynkowa", "house_number": "114" },
  "pds": { "partner_id": "P-014", "name": "..." },
  "sla_deadline": "2026-09-03T12:34:56.000Z",
  "liczba_ponaglen": 1,
  "pewnosc": null,
  "log": [ { "at": "...", "aktor": "system", "typ": "ponaglenie", "tresc": "..." } ]
}

Bezpieczeństwo

  • Klucz API przechowywany jest jako sekret backendu; interfejs go nie wyświetla ani nie zwraca.
  • Porównanie klucza jest stałoczasowe, aby uniemożliwić atak czasowy.
  • Wszystkie dane wejściowe są walidowane schematem; przekroczenie limitu długości kończy się kodem 400.
  • Wiadomości e-mail są wyłącznie podglądami — aplikacja nie wysyła żadnej korespondencji.