Przejdź do głównej zawartości

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 — rejestracja
  • POST /api/auth/sign-in/email — logowanie
  • POST /api/auth/sign-in/social — OAuth
  • POST /api/auth/forget-password — reset hasła
  • POST /api/auth/reset-password — ustawienie nowego hasła
  • GET /api/auth/get-session — pobranie sesji

POST /api/onboarding

Ukończenie procesu onboardingu (tworzenie profilu klienta + uczniów).

Autoryzacja: Zalogowany użytkownik.

PoleTypWymaganeOpis
accountType"self_student" | "parent"TakTyp konta
dateOfBirthstring (YYYY-MM-DD)NieDla self_student
levelstringNiePoziom nauki ucznia
childrenarrayNieDla parent — tablica dzieci
children[].firstNamestringTakImię dziecka
children[].lastNamestringTakNazwisko dziecka
children[].dateOfBirthstringNieData urodzenia
children[].levelstringNiePoziom nauki
invitationTokenstringNieToken zaproszenia

Odpowiedzi: 200, 400, 401, 404, 500


POST /api/invitations

Tworzy zaproszenie i wysyła e-mail.

Autoryzacja: employee / admin.

PoleTypWymaganeOpis
emailstringTakE-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, opcjonalne
  • customHourlyRate — integer ≥ 0 lub null, opcjonalne
  • paymentMethod"cash" | "online" | "both", opcjonalne
  • notes — string lub null, 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 znak
  • lastName — wymagane, min. 1 znak
  • dateOfBirth — opcjonalne, format YYYY-MM-DD
  • level — 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 znak
  • lastName — opcjonalne, min. 1 znak
  • dateOfBirth — opcjonalne, format YYYY-MM-DD lub null
  • level — opcjonalne: "podstawowa" | "srednia_podstawa" | "srednia_rozszerzenie"

Odpowiedzi: 200, 400, 401, 403, 404


Kody błędów

KodOpis
200Sukces
201Zasób utworzony
400Nieprawidłowe dane wejściowe
401Niezalogowany
403Brak uprawnień
404Zasób nie znaleziony
409Konflikt (duplikat)
500Błąd serwera