Dokumentacja API
Uwagi
Uwagi o stronie placówki i potrzeby wobec API trafiają prosto do zespołu platformy — jako zgłoszenia, z których powstaje plan rozwoju. Placówka zgłasza je też z panelu (Zgłoś uwagę).
POST /api/v1/feedback
Jeden request z nagłówkiem Bearer. Wymagana jest tylko treść (do 4000 znaków); resztę pól wypełniaj, kiedy je znasz — przyspieszają naprawę.
curl -X POST "https://app.pozyskajpacjenta.pl/api/v1/feedback" \
-H "Authorization: Bearer pp_live_TWOJ_KLUCZ" \
-H "Content-Type: application/json" \
-d '{
"source": "fabryka",
"kind": "potrzeba_api",
"category": "backend",
"message": "GET /site: brak sposobu na zapisanie wspólnej przerwy obiadowej w godzinach otwarcia.",
"pageUrl": "https://klinika.example/kontakt",
"viewport": "1440x900",
"meta": { "job": "fj_…", "agent": "frontend", "task": "T-12" }
}'{ "id": "fb_3kq9x0v2m1c8r7tz", "status": "new" }400— nic nie zapisano;invalid_json(treść nie jest JSON-em) alboinvalid_body(pole ma zły format — nazwa pola jest werror),401— brak lub zły klucz,429— limit 120 zapytań/min (Autoryzacja) albo 20 uwag na godzinę dla placówki, osobno dla każdego źródła (feedback_rate_limited, czas do ponowienia w nagłówkuRetry-After).
Rodzaj, kategoria i źródło
| kind | Kiedy |
|---|---|
uwaga | Uwaga — treść albo wygląd strony (literówka, zdjęcie, układ na telefonie) |
potrzeba_api | Potrzeba API — czego frontend albo agent potrzebuje od API (brakujące pole, filtr, endpoint) |
blad | Błąd — coś nie działa (błąd odpowiedzi, formularz się nie wysyła) |
category: tresc (Treść), wyglad (Wygląd), funkcja (Funkcja), backend (Zaplecze), inne (Inne). Domyślnie uwaga i inne.
source: site — zaplecze frontendu placówki (domyślnie), fabryka — agent budujący frontend (w meta podaj job, agent i task), client_error — raport błędu z przeglądarki przekazany przez Twoje zaplecze.
Bez danych pacjentów
Uwaga dotyczy strony albo platformy — nigdy pacjenta. Zanim cokolwiek zapiszemy, z treści, selektora, adresu strony i wartości meta usuwamy adresy e-mail, numery telefonów (także zapisane w grupach, np. 600 10 02 00) i numery w kształcie PESEL (11 cyfr z poprawną sumą kontrolną). Z adresów znika część po ? i #, a tokeny w ścieżce (np. link pacjenta /wizyta/…) zastępujemy znacznikiem [token]. W miejscu usuniętego fragmentu zostaje znacznik, np. [telefon usunięty], a odpowiedź mówi, co usunięto:
{ "id": "fb_3kq9x0v2m1c8r7tz", "status": "new", "redacted": ["email", "phone"] }Z adresu strony zostaje tylko domena i ścieżka — parametry zapytania i #fragment odrzucamy, bo to w nich zwykle podróżują dane z formularzy. Pole reporter (kto zgłasza) zostaje u nas i nie trafia do zgłoszenia dla zespołu.
Pola
| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
| message | string | tak | Treść uwagi. |
| kind | "uwaga" | "potrzeba_api" | "blad" | — | uwaga — treść lub wygląd; potrzeba_api — czego frontend lub agent potrzebuje od API; blad — coś nie działa. |
| category | "tresc" | "wyglad" | "funkcja" | "backend" | "inne" | — | |
| source | "site" | "fabryka" | "client_error" | — | site — frontend placówki; fabryka — agent fabryki H2M; client_error — raport błędu z przeglądarki. |
| pageUrl | string | — | Strona, której dotyczy uwaga (adres bezwzględny albo ścieżka od /). |
| viewport | string | — | |
| selector | string | — | Selektor CSS elementu, którego dotyczy uwaga. |
| reporter | string | — | Kto zgłasza (np. imię osoby z personelu) — nie trafia do zgłoszenia dla zespołu. |
| meta | object | — | Płaski obiekt (do 30 kluczy, do 4000 znaków JSON): wartości tekst (do 500 znaków), liczba, true/false albo null. Np. userAgent, appVersion, a od fabryki job, agent, task. |
Z SDK
sendFeedback w SDK wysyła ten sam request i zwraca { id, status, redacted? }:
await client.sendFeedback({
source: "site",
kind: "uwaga",
category: "wyglad",
message: "Na telefonie przycisk rezerwacji zasłania stopkę.",
pageUrl: "/zabiegi/implanty",
viewport: "390x844",
selector: "[data-cta=sticky-booking]",
});Co dzieje się dalej
Co kwadrans nowe uwagi trafiają do zespołu platformy jako zgłoszenia z oznaczeniem placówki, źródła i rodzaju. Ta sama uwaga o tej samej stronie tej samej placówki nie tworzy drugiego zgłoszenia — dopisujemy do istniejącego, że pojawiła się ponownie.
Czytaj dalej: Webhooki →