Skip to content

API — Manager (Web)

Endpointy /api/* obsługujące panel Manager-Content. Wykorzystywane przez frontend HTMX/Alpine.js do autentykacji i integracji.

POST /api/auth/verify-code

Weryfikuje jednorazowy kod logowania wygenerowany w aplikacji mobilnej (przez POST /app/auth/manager-code). Rodzic wpisuje ten kod na stronie /login panelu.

Request:

json
{
  "code": "8A3F2KN5"
}

Response 200:

Serwer ustawia cookie sesji (Set-Cookie: session=...) i zwraca dane użytkownika.

json
{
  "data": {
    "session_id": "sess_abc123",
    "user": {
      "id": "prof_d4e5f6",
      "email": "anna@example.com",
      "role": "parent",
      "children": [
        {
          "profile_id": "prof_a1b2c3",
          "display_name": "Odkrywca",
          "avatar_url": "https://cdn.lumos-islands.pl/avatars/prof_a1b2c3.png"
        }
      ]
    },
    "redirect_url": "/dashboard"
  }
}

Błędy:

HTTPcodeKiedy
400INVALID_CODENieprawidłowy lub wygasły kod
429RATE_LIMITEDZa dużo prób (maks. 5 na minutę)

POST /api/auth/send-email-code

Wysyła kod weryfikacyjny na e-mail rodzica. Alternatywna metoda logowania do panelu, gdy rodzic nie ma dostępu do aplikacji mobilnej.

Request:

json
{
  "email": "anna@example.com"
}

Response 200:

json
{
  "data": {
    "message": "Kod weryfikacyjny został wysłany.",
    "expires_in_seconds": 600
  }
}

Po otrzymaniu kodu rodzic wywołuje POST /api/auth/verify-email-code (obsługiwane przez formularz HTMX na stronie /login):

Request (weryfikacja):

json
{
  "email": "anna@example.com",
  "code": "K4M9T2X7"
}

Response 200:

json
{
  "data": {
    "session_id": "sess_def456",
    "user": {
      "id": "prof_d4e5f6",
      "email": "anna@example.com",
      "role": "parent",
      "children": [
        {
          "profile_id": "prof_a1b2c3",
          "display_name": "Odkrywca",
          "avatar_url": "https://cdn.lumos-islands.pl/avatars/prof_a1b2c3.png"
        }
      ]
    },
    "redirect_url": "/dashboard"
  }
}

Błędy:

HTTPcodeKiedy
400INVALID_EMAILNieprawidłowy format e-mail
404NOT_FOUNDE-mail nie jest zarejestrowany
429RATE_LIMITEDZa dużo prób wysyłki (maks. 3 na 10 minut)

Uwagi dotyczące sesji

Panel Manager-Content korzysta z sesji cookie (HttpOnly, SameSite=Strict, Secure). Wszystkie kolejne żądania do stron i fragmentów HTMX są autoryzowane na podstawie cookie sesji — nie wymagają nagłówka Authorization.

Sesja wygasa po 24 godzinach nieaktywności.

Lumos Islands v2 - Dokumentacja Projektowa