Skip to content

API — Użytkownicy i Awatar

Endpointy profilu użytkownika, statystyk, odznak oraz personalizacji awatara.

Wszystkie endpointy wymagają Authorization: Bearer <token>.

GET /app/users/me

Zwraca profil aktualnie zalogowanego użytkownika.

Response 200:

json
{
  "data": {
    "id": "prof_a1b2c3",
    "display_name": "Odkrywca",
    "birth_year": 2018,
    "language": "pl",
    "role": "child",
    "avatar_url": "https://cdn.lumos-islands.pl/avatars/prof_a1b2c3.png",
    "avatar": {
      "skin": "light",
      "hair": "brown_short",
      "hat": null,
      "shirt": "blue_tee",
      "accessory": null
    },
    "linked_parent_email": "anna@example.com",
    "created_at": "2026-01-10T08:00:00Z"
  }
}

PATCH /app/users/me

Aktualizuje dane profilu.

Request:

json
{
  "display_name": "Super Odkrywca",
  "language": "en"
}

Response 200:

json
{
  "data": {
    "id": "prof_a1b2c3",
    "display_name": "Super Odkrywca",
    "birth_year": 2018,
    "language": "en",
    "role": "child",
    "avatar_url": "https://cdn.lumos-islands.pl/avatars/prof_a1b2c3.png",
    "avatar": {
      "skin": "light",
      "hair": "brown_short",
      "hat": null,
      "shirt": "blue_tee",
      "accessory": null
    },
    "linked_parent_email": "anna@example.com",
    "created_at": "2026-01-10T08:00:00Z"
  }
}

GET /app/users/me/stats

Statystyki użytkownika — XP, poziom, ukończone zadania itp.

Response 200:

json
{
  "data": {
    "xp_total": 340,
    "level": 3,
    "level_name": "Podróżnik",
    "xp_to_next_level": 160,
    "xp_in_current_level": 40,
    "tasks_completed": 18,
    "tasks_in_progress": 1,
    "worlds_completed": 0,
    "locations_completed": 3,
    "badges_count": 5,
    "current_streak_days": 4,
    "longest_streak_days": 7,
    "total_time_minutes": 245
  }
}

GET /app/users/me/badges

Lista wszystkich zdobytych odznak.

Query params:

ParamTypDomyślnieOpis
cursorstringKursor paginacji
limitint20Liczba wyników (1–100)

Response 200:

json
{
  "data": [
    {
      "id": "badge_first_task",
      "name": "Pierwszy Krok",
      "description": "Ukończ swoje pierwsze zadanie.",
      "icon_url": "https://cdn.lumos-islands.pl/badges/first_task.png",
      "rarity": "common",
      "earned_at": "2026-01-10T09:15:00Z"
    },
    {
      "id": "badge_streak_7",
      "name": "Tygodniowa Seria",
      "description": "Ucz się 7 dni z rzędu.",
      "icon_url": "https://cdn.lumos-islands.pl/badges/streak_7.png",
      "rarity": "rare",
      "earned_at": "2026-02-20T18:00:00Z"
    }
  ],
  "next_cursor": null,
  "has_more": false
}

Pole rarity: common, rare, epic, legendary.

GET /app/avatar/items

Katalog przedmiotów do personalizacji awatara. Zawiera informację, które elementy są odblokowane.

Query params:

ParamTypDomyślnieOpis
categorystringFiltruj po kategorii: hat, hair, shirt, accessory, skin

Response 200:

json
{
  "data": [
    {
      "id": "hat_explorer",
      "category": "hat",
      "name": "Kapelusz Odkrywcy",
      "preview_url": "https://cdn.lumos-islands.pl/avatar/items/hat_explorer.png",
      "unlocked": true,
      "unlock_condition": "Osiągnij poziom 4",
      "required_level": 4
    },
    {
      "id": "hat_wizard",
      "category": "hat",
      "name": "Czapka Czarodzieja",
      "preview_url": "https://cdn.lumos-islands.pl/avatar/items/hat_wizard.png",
      "unlocked": false,
      "unlock_condition": "Ukończ Świat Liczb",
      "required_level": null
    },
    {
      "id": "shirt_red_tee",
      "category": "shirt",
      "name": "Czerwona Koszulka",
      "preview_url": "https://cdn.lumos-islands.pl/avatar/items/shirt_red_tee.png",
      "unlocked": true,
      "unlock_condition": null,
      "required_level": null
    }
  ]
}

PATCH /app/avatar

Zmienia wygląd awatara. Wysyłaj tylko pola do zmiany.

Request:

json
{
  "hat": "hat_explorer",
  "shirt": "shirt_red_tee"
}

Response 200:

json
{
  "data": {
    "avatar_url": "https://cdn.lumos-islands.pl/avatars/prof_a1b2c3.png?v=1709892000",
    "avatar": {
      "skin": "light",
      "hair": "brown_short",
      "hat": "hat_explorer",
      "shirt": "shirt_red_tee",
      "accessory": null
    }
  }
}

Błędy:

HTTPcodeKiedy
403ITEM_LOCKEDPrzedmiot nie jest odblokowany
404ITEM_NOT_FOUNDPrzedmiot nie istnieje

Lumos Islands v2 - Dokumentacja Projektowa