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.
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."
}'{
"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.
curl https://<adres-aplikacji>/api/public/cases/CWK-2026-00025 \ -H "x-api-key: <klucz>"
{
"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.