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