API — Dokumentacja
Uwierzytelnianie
Wszystkie endpointy (oprócz /api/auth/*) wymagają sesji cookie Better Auth.
Nagłówek sesji jest automatycznie przesyłany przez przeglądarkę.
Endpointy
POST /api/auth/[...all] & GET /api/auth/[...all]
Delegacja do Better Auth. Obsługuje:
POST /api/auth/sign-up/email— rejestracjaPOST /api/auth/sign-in/email— logowaniePOST /api/auth/sign-in/social— OAuthPOST /api/auth/forget-password— reset hasłaPOST /api/auth/reset-password— ustawienie nowego hasłaGET /api/auth/get-session— pobranie sesji
POST /api/onboarding
Ukończenie procesu onboardingu (tworzenie profilu klienta + uczniów).
Autoryzacja: Zalogowany użytkownik.
| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
accountType | "self_student" | "parent" | Tak | Typ konta |
dateOfBirth | string (YYYY-MM-DD) | Nie | Dla self_student |
level | string | Nie | Poziom nauki ucznia |
children | array | Nie | Dla parent — tablica dzieci |
children[].firstName | string | Tak | Imię dziecka |
children[].lastName | string | Tak | Nazwisko dziecka |
children[].dateOfBirth | string | Nie | Data urodzenia |
children[].level | string | Nie | Poziom nauki |
invitationToken | string | Nie | Token zaproszenia |
Odpowiedzi: 200, 400, 401, 404, 500
POST /api/invitations
Tworzy zaproszenie i wysyła e-mail.
Autoryzacja: employee / admin.
| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
email | string | Tak | E-mail zapraszanego |
Odpowiedzi: 200, 400, 403, 409, 500
GET /api/invitations
Pobiera listę zaproszeń posortowaną malejąco po dacie.
Autoryzacja: employee / admin.
Odpowiedź: Tablica obiektów { id, email, status, expiresAt, createdAt }
GET /api/clients/[id]
Pobiera szczegóły klienta wraz z listą uczniów.
Autoryzacja: employee / admin lub właściciel konta.
Odpowiedź: Obiekt klienta z zagnieżdżoną tablicą students.
PATCH /api/clients/[id]
Aktualizuje dane klienta.
Autoryzacja:
employee/admin→ edycja:phone,customHourlyRate,paymentMethod,notes- Właściciel → edycja:
phone
Walidacja (Zod):
phone— string, opcjonalnecustomHourlyRate— integer ≥ 0 lubnull, opcjonalnepaymentMethod—"cash"|"online"|"both", opcjonalnenotes— string lubnull, opcjonalne
Odpowiedzi: 200, 400, 401, 403, 404
POST /api/clients/[id]/students
Tworzy nowego ucznia dla klienta.
Autoryzacja: employee / admin lub właściciel konta.
Walidacja (Zod):
firstName— wymagane, min. 1 znaklastName— wymagane, min. 1 znakdateOfBirth— opcjonalne, formatYYYY-MM-DDlevel— wymagane:"podstawowa"|"srednia_podstawa"|"srednia_rozszerzenie"
Odpowiedzi: 201 (z obiektem ucznia), 400, 401, 403, 404
PATCH /api/clients/students/[id]
Aktualizuje dane ucznia.
Autoryzacja: employee / admin lub właściciel konta klienta powiązanego z uczniem.
Walidacja (Zod):
firstName— opcjonalne, min. 1 znaklastName— opcjonalne, min. 1 znakdateOfBirth— opcjonalne, formatYYYY-MM-DDlubnulllevel— opcjonalne:"podstawowa"|"srednia_podstawa"|"srednia_rozszerzenie"
Odpowiedzi: 200, 400, 401, 403, 404
Kody błędów
| Kod | Opis |
|---|---|
| 200 | Sukces |
| 201 | Zasób utworzony |
| 400 | Nieprawidłowe dane wejściowe |
| 401 | Niezalogowany |
| 403 | Brak uprawnień |
| 404 | Zasób nie znaleziony |
| 409 | Konflikt (duplikat) |
| 500 | Błąd serwera |