Skip to content

API — Poziomy, Ranking, Onboarding

Endpointy pomocnicze: definicje poziomów, tablica wyników i onboarding nowego użytkownika.

Wszystkie endpointy wymagają Authorization: Bearer <token>.

GET /app/levels

Definicje wszystkich poziomów z progami XP. Dane statyczne — nie wymagają paginacji.

Response 200:

json
{
  "data": [
    {
      "level": 1,
      "name": "Nowicjusz",
      "xp_required": 0,
      "xp_to_next": 100,
      "icon_url": "https://cdn.lumos-islands.pl/levels/1.png",
      "unlocked_items": []
    },
    {
      "level": 2,
      "name": "Uczeń",
      "xp_required": 100,
      "xp_to_next": 200,
      "icon_url": "https://cdn.lumos-islands.pl/levels/2.png",
      "unlocked_items": ["shirt_green_tee"]
    },
    {
      "level": 3,
      "name": "Podróżnik",
      "xp_required": 300,
      "xp_to_next": 200,
      "icon_url": "https://cdn.lumos-islands.pl/levels/3.png",
      "unlocked_items": ["hair_spiky"]
    },
    {
      "level": 4,
      "name": "Odkrywca",
      "xp_required": 500,
      "xp_to_next": 300,
      "icon_url": "https://cdn.lumos-islands.pl/levels/4.png",
      "unlocked_items": ["hat_explorer"]
    },
    {
      "level": 5,
      "name": "Mistrz",
      "xp_required": 800,
      "xp_to_next": null,
      "icon_url": "https://cdn.lumos-islands.pl/levels/5.png",
      "unlocked_items": ["accessory_cape"]
    }
  ]
}

GET /app/rankings

Tablica wyników (leaderboard). Paginacja kursorowa.

Query params:

ParamTypDomyślnieOpis
cursorstringKursor paginacji
limitint20Liczba wyników (1–100)
scopestringglobalZakres: global, planet
planet_idstringWymagane gdy scope=planet

Response 200:

json
{
  "data": [
    {
      "rank": 1,
      "profile_id": "prof_x1y2z3",
      "display_name": "Kosmonauta",
      "avatar_url": "https://cdn.lumos-islands.pl/avatars/prof_x1y2z3.png",
      "level": 5,
      "xp_total": 920,
      "is_me": false
    },
    {
      "rank": 2,
      "profile_id": "prof_a1b2c3",
      "display_name": "Odkrywca",
      "avatar_url": "https://cdn.lumos-islands.pl/avatars/prof_a1b2c3.png",
      "level": 3,
      "xp_total": 340,
      "is_me": true
    },
    {
      "rank": 3,
      "profile_id": "prof_m4n5o6",
      "display_name": "Artystka",
      "avatar_url": "https://cdn.lumos-islands.pl/avatars/prof_m4n5o6.png",
      "level": 3,
      "xp_total": 310,
      "is_me": false
    }
  ],
  "next_cursor": "eyJyYW5rIjozfQ",
  "has_more": true
}

Pole is_me wskazuje profil aktualnie zalogowanego użytkownika.

GET /app/onboarding/status

Sprawdza, które kroki onboardingu zostały ukończone.

Response 200:

json
{
  "data": {
    "completed": false,
    "steps": {
      "avatar_created": true,
      "first_world_visited": true,
      "first_task_completed": false,
      "todo_created": false
    },
    "current_step": "first_task_completed"
  }
}

POST /app/onboarding/complete

Oznacza onboarding jako zakończony. Wywoływane po przejściu wszystkich kroków lub po ich pominięciu.

Request: pusty body

Response 200:

json
{
  "data": {
    "completed": true,
    "completed_at": "2026-03-08T10:30:00Z",
    "reward": {
      "xp_earned": 50,
      "badge": {
        "id": "badge_welcome",
        "name": "Witaj na Wyspach!",
        "icon_url": "https://cdn.lumos-islands.pl/badges/welcome.png"
      }
    }
  }
}

Błędy:

HTTPcodeKiedy
409ALREADY_COMPLETEDOnboarding już ukończony

Lumos Islands v2 - Dokumentacja Projektowa