Skip to content

Struktury Danych — Światy

Świat (World)

Kraj na globusie

json
{
  "id": "world_poland",
  "type": "country",
  "name": "Polska",
  "name_local": "Polska",
  "description": "Odkryj historię, kulturę i przyrodę Polski",
  "thumbnail": "worlds/poland.png",
  "flag_icon": "flags/pl.png",
  "language": "pl",
  "locations": ["loc_camp_01", "loc_library_01", "loc_factory_01", "loc_office_01", "loc_field_01", "loc_cinema_01"],
  "age_groups": null,
  "visibility": "public",
  "created_by": "system",
  "assigned_users": null,
  "stats": {
    "total_tasks": 120,
    "total_locations": 6
  }
}
json
{
  "id": "world_spain",
  "type": "country",
  "name": "Hiszpania",
  "name_local": "España",
  "description": "Descubre la historia y cultura de España",
  "thumbnail": "worlds/spain.png",
  "flag_icon": "flags/es.png",
  "language": "es",
  "locations": ["loc_camp_es_01", "loc_library_es_01", "loc_cinema_es_01", "loc_music_es_01"],
  "age_groups": null,
  "visibility": "public",
  "created_by": "system",
  "assigned_users": null,
  "stats": {
    "total_tasks": 85,
    "total_locations": 4
  }
}
json
{
  "id": "world_germany",
  "type": "country",
  "name": "Niemcy",
  "name_local": "Deutschland",
  "description": "Entdecke die Geschichte und Kultur Deutschlands",
  "thumbnail": "worlds/germany.png",
  "flag_icon": "flags/de.png",
  "language": "de",
  "locations": ["loc_camp_de_01", "loc_factory_de_01", "loc_observatory_de_01"],
  "age_groups": null,
  "visibility": "public",
  "created_by": "system",
  "assigned_users": null,
  "stats": {
    "total_tasks": 65,
    "total_locations": 3
  }
}

Planeta otwarta (open to join)

json
{
  "id": "world_open_english",
  "type": "planet",
  "name": "Kurs angielskiego — Beginners",
  "name_local": "English for Beginners",
  "description": "Angielski dla początkujących — od A1 do A2",
  "thumbnail": "planets/english.png",
  "flag_icon": null,
  "language": null,
  "locations": ["loc_library_en_01", "loc_cinema_en_01", "loc_music_en_01"],
  "age_groups": ["4-8"],
  "visibility": "open",
  "created_by": "org_001",
  "assigned_users": null,
  "stats": {
    "total_tasks": 45,
    "total_locations": 3,
    "members_count": 234
  }
}
json
{
  "id": "world_open_python",
  "type": "planet",
  "name": "Programowanie Python — Podstawy",
  "name_local": null,
  "description": "Kurs programowania Python dla studentów i dorosłych",
  "thumbnail": "planets/python.png",
  "flag_icon": null,
  "language": null,
  "locations": ["loc_observatory_py_01", "loc_factory_py_01"],
  "age_groups": ["14+"],
  "visibility": "open",
  "created_by": "org_university_001",
  "assigned_users": null,
  "stats": {
    "total_tasks": 30,
    "total_locations": 2,
    "members_count": 89
  }
}

Planeta zamknięta (assigned)

json
{
  "id": "world_custom_001",
  "type": "planet",
  "name": "Klasa 3A — Matematyka",
  "name_local": null,
  "description": "Zadania matematyczne dla klasy 3A SP7 Kraków",
  "thumbnail": "planets/math_3a.png",
  "flag_icon": null,
  "language": null,
  "locations": ["loc_factory_3a_01", "loc_observatory_3a_01"],
  "age_groups": ["8-13"],
  "visibility": "closed",
  "created_by": "school_001",
  "assigned_users": ["child_001", "child_002", "child_003", "child_005", "child_006"],
  "stats": {
    "total_tasks": 20,
    "total_locations": 2,
    "members_count": 5
  }
}

Planeta rodzica

json
{
  "id": "world_custom_parent_001",
  "type": "planet",
  "name": "Nauka Ani",
  "name_local": null,
  "description": "Zadania dodatkowe od mamy",
  "thumbnail": "planets/ania_learning.png",
  "flag_icon": null,
  "language": null,
  "locations": ["loc_library_ania_01"],
  "age_groups": ["4-8"],
  "visibility": "closed",
  "created_by": "parent_001",
  "assigned_users": ["child_001"],
  "stats": {
    "total_tasks": 8,
    "total_locations": 1,
    "members_count": 1
  }
}

Pola

PoleTypOpis
idstringUnikalny identyfikator
typestring"country" (globus) lub "planet" (kosmos)
namestringNazwa wyświetlana
name_localstring?Nazwa w lokalnym języku (kraje)
descriptionstringKrótki opis
thumbnailstringŚcieżka do obrazka
flag_iconstring?Ikona flagi (tylko kraje)
languagestring?Język główny świata (kraje: "pl", "es", "de"...; planety: null)
locationsstring[]Lista ID lokacji
age_groupsstring[]?Ograniczenia wiekowe — tablica, np. ["4-8", "8-13"]. Dostępne wartości: "2-4", "4-8", "8-13", "14+" lub null (bez ograniczeń). null = dostępny dla wszystkich grup wiekowych (brak ograniczenia). Tablica = ograniczony do podanych grup. Dla publicznych krajów zazwyczaj null, dla planet może być ograniczony.
visibilitystring"public" (kraje), "open" (planety otwarte), "closed" (planety zamknięte)
created_bystring"system" (kraje), "parent_XXX", "school_XXX", "org_XXX" (planety)
assigned_usersstring[]?Lista ID użytkowników z dostępem. Wymagane (tablica, nie null) gdy visibility: "closed" — jeśli pusta [], nikt poza twórcą nie ma dostępu. Dla public i open wartość to null.
statsobjectStatystyki świata

Widoczność (visibility)

WartośćTyp świataOpis
publiccountryKraj na globusie — widoczny dla wszystkich, zawsze dostępny
openplanetPlaneta otwarta — widoczna w kosmosie, każdy może dołączyć
closedplanetPlaneta zamknięta — NIE jest widoczna dla nikogo, chyba że użytkownik jest jawnie dodany do assigned_users

Zasady widoczności closed

  • Planeta zamknięta NIE pojawia się w wynikach GET /app/planets/open
  • Planeta zamknięta pojawia się w GET /app/planets/mine tylko jeśli użytkownik znajduje się w tablicy assigned_users
  • Jeśli assigned_users jest pusta ([]), nikt nie może zobaczyć ani dołączyć do planety (poza twórcą)
  • Tylko twórca planety i jawnie przypisani użytkownicy (assigned_users) mają dostęp
  • Pole assigned_users jest wymagane (nie może być null) gdy visibility to "closed" — musi być tablicą (może być pusta [])

Lumos Islands v2 - Dokumentacja Projektowa