Publiczne API daje administratorom organizacji bezpośredni dostęp HTTP do bieżących danych twojej organizacji — pobieraj je do dowolnej strony internetowej, aplikacji, bota lub automatyzacji, która potrafi wykonać żądanie HTTP. To funkcja planu Business.

Strona Publicznego API: wygeneruj klucz API organizacji i włącz logowanie przez Ludoya

Klucz jest przypisany do twojej organizacji — wszystkie endpointy działają na tej grupie automatycznie. Bazowy URL: https://api.ludoya.com/public/v1. Nagłówek autoryzacji: X-Api-Key: YOUR_KEY. Limit: 100 żądań na minutę, po którego przekroczeniu otrzymasz 429.

Klucz zaczyna się od ldy_ i ma długość 36 znaków, więc łatwo go zauważyć w pliku konfiguracyjnym — i łatwo go wyszukać, jeśli kiedykolwiek trafi tam, gdzie nie powinien. Traktuj go jak hasło: używaj wyłącznie po stronie serwera i unieważnij go na tej samej stronie, jeśli wycieknie.

Do czego masz dostęp

  • Lokalizacje — dostępne dla twojej grupy lokale oraz ich miejsca; używane jako dane wejściowe przy tworzeniu wydarzeń
  • Wydarzenia (odczyt) — nadchodzące i minione wydarzenia z tytułem, opisem, datą/godziną, strefą czasową, limitem miejsc, liczbą uczestników i statusem
  • Wydarzenia (zapis) — twórz i aktualizuj wydarzenia za pomocą POST i PUT, z pełną kontrolą nad lokalizacją, limitem miejsc, uprawnieniami, widocznością i obrazem
  • Podwydarzenia — lista wydarzeń zagnieżdżonych w wydarzeniu nadrzędnym
  • Uczestnicy — dodaj kogoś do wydarzenia, zmień jego status obecności lub usuń go
  • Członkowie — lista członków z profilami użytkowników i rolami (Właściciel, Administrator, Członek), stronicowana
  • Zaproszenia — zaproś kogoś do twojej grupy
  • Wyszukiwanie — wyszukuj użytkowników Ludoya oraz katalog gier planszowych, aby przed zapisem móc przypisać nazwy do ID
  • Kolekcja — kolekcja gier z filtrowaniem według posiadania, nazwy, liczby graczy i listy; sortowalna i stronicowana; każda gra zawiera metadane z BGG
  • Statystyki — statystyki rozgrywek dla dowolnego okresu: sumy, średnie, najlepsi gracze z wygranymi i wynikami, podziały według liczby graczy, według lokalizacji i według gier
  • Kampanie (odczyt) — lista kampanii grupy z liczbą członków i sesji; pobieraj pełne szczegóły kampanii, w tym członków, przeszłe sesje i zaplanowane wydarzenia
  • Kampanie (zapis) — twórz kampanie dla grupy i aktualizuj ich nazwę, opis, status i widoczność
  • Członkowie kampanii — dodawaj, aktualizuj i usuwaj osoby w kampanii

Endpointy

GET /locations

Zwraca dostępne lokalizacje grupy. Każda lokalizacja ma id, name, opcjonalny address, capacity, flagę isDefault oraz tablicę spots (każde miejsce ma własne id, name i capacity). Używaj ID lokalizacji i miejsc podczas tworzenia wydarzeń.

Zaloguj się za pomocą Ludoya

Ta sama strona, na której znajduje się Twój klucz API, zamienia też Twoją organizację w dostawcę logowania. Pozwól ludziom logować się do Twojej własnej witryny, forum lub platformy społecznościowej przy użyciu konta Ludoya — bez osobnego hasła, o którym mogliby zapomnieć, i bez bazy użytkowników, którą musisz prowadzić.

Dlaczego warto

Gdy ktoś zatwierdzi logowanie, zostaje powiązany z Twoją organizacją: w zależności od polityki dołączania do grupy albo od razu staje się członkiem (otwarta), składa prośbę o dołączenie do zatwierdzenia przez administratora (prośba o dołączenie), albo po prostu loguje się bez dołączania (tylko na zaproszenie). W każdym przypadku pojawi się w endpointzie /members jak każdy inny — dzięki temu logowanie na Twojej stronie i lista członków Ludoya pozostają zsynchronizowane automatycznie.

Jak to skonfigurować

To standardowy OpenID Connect, więc większość platform potrzebuje tylko adresu URL wystawcy oraz identyfikatora klienta i tajnego klucza. Zarejestruj swoją aplikację na stronie Public API, aby uzyskać te dane, i podaj URI przekierowania, z których będzie korzystać Twoja strona — możesz zarejestrować kilka, a każde musi odpowiadać redirect_uri wysyłanemu przez Twoją stronę znak w znak, z uwzględnieniem końcowego ukośnika. Drobna niezgodność to najczęstsza przyczyna niepowodzenia pierwszej próby logowania.

  • Discourse — zainstaluj wtyczkę OpenID Connect, wklej URL odkrywania, dodaj poświadczenia
  • WordPress — dowolna ogólna wtyczka OpenID Connect, używająca opcji "auto discover"
  • Inne — jeśli obsługuje OIDC, wskaż URL wystawcy, a skonfiguruje się samo

Każde logowanie zwraca trwały identyfikator osoby, jej nazwę użytkownika, nazwę wyświetlaną i awatar oraz adres e-mail. Pełne instrukcje konfiguracji, w tym ręczny przebieg, znajdziesz w przewodniku dla deweloperów w aplikacji: Deweloperzy → Logowanie za pomocą Ludoya.

Dla osób logujących się

Każdy, kto użył Ludoya do zalogowania się gdzieś, może przejrzeć te połączenia w Ustawienia → Połączone aplikacje, zobaczyć, kiedy każde zostało połączone i kiedy ostatnio użyte, oraz w dowolnym momencie je odłączyć. Odłączenie natychmiast odcina dostęp witryny, ale nie usuwa ich z Twojej grupy.

GET /events

Zwraca przyszłe i przeszłe wydarzenia w oddzielnych paginowanych listach.

Parametr Typ Domyślnie Opis
onlyFuture boolean true Ustaw false, aby zwrócić także przeszłe wydarzenia

Każde wydarzenie zawiera: type (MEETUP lub PLANNED_PLAY), title, description, startsAt, endsAt, timeZone, imageUrl, capacity, participantCount, canceled, teacher (obiekt użytkownika lub null), master (obiekt użytkownika lub null). Obiekty użytkownika zawierają id, username, name, avatarUrl.

POST /events

Tworzy wydarzenie w grupie. Pola wymagane: type i title. Jeśli locationId zostanie pominięty, użyta zostanie domyślna lokalizacja grupy; jeśli żadna nie istnieje, zwraca 400.

Pola opcjonalne obejmują: description, locationId, spotId, gameId, parentEventId (dla podwydarzeń), startsAt, endsAt, restrictedAttendance, capacity, minParticipants, estimatedDurationMinutes, maxReservationsPerUser, takeGamesPermission, organizePlaysPermission, teacherUserId, masterUserId, visibility, image.

Pole image akceptuje {"base64": "data:image/jpeg;base64,..."} or {"url": "https://..."}. Maks. 5 MB.

Zwraca {"id": "string"} ze statusem 201.

PUT /events/{eventId}

Aktualizuje istniejące wydarzenie. Taka sama struktura body jak w POST — uwzględnij tylko pola, które chcesz zmienić. Wywołujący musi być organizatorem wydarzenia (konto grupy). Zwraca 202 z pustym body.

GET /events/{eventId}

Pobiera pojedyncze wydarzenie po ID, o tej samej strukturze co elementy w GET /events.

GET /events/{eventId}/children

Zwraca podwydarzenia zagnieżdżone w wydarzeniu nadrzędnym — poszczególne ścieżki tematyczne lub sesje większego spotkania. Każde podwydarzenie ma taką samą strukturę jak zwykłe wydarzenie.

Zarządzanie uczestnikami

Trzy endpointy pozwalają obsługiwać listę uczestników wydarzenia spoza Ludoya — przydatne, jeśli zapisy odbywają się na twojej własnej stronie internetowej, albo importujesz istniejącą listę.

Metoda Ścieżka Co robi
POST `/events/

GET /members

Zwraca stronicowaną listę członków.

Parametr Typ Wartość domyślna
pagination.size int 50
pagination.offset int 0

Każdy członek zawiera: id, username, name, avatarUrl, role (OWNER, ADMIN lub MEMBER).

POST /members/invite

Zaprasza kogoś do twojej grupy. Ten endpoint przyjmuje bezpośrednio username — nie trzeba wyszukiwać ID — dzięki czemu możesz dodawać członków bezpośrednio ze swojej strony lub narzędzia administracyjnego.

GET /collection

Zwraca twoją kolekcję gier z filtrowaniem, sortowaniem i stronicowaniem.

Parametr Typ Wartość domyślna Opis
filter string Pary key=value oddzielone średnikami. Klucze: ownership (OWNED, PREVIOUSLY_OWNED, PREORDERED, WISHLISTED), played (boolean), listId, nameFilter, playerCountFilterType (OFFICIAL, GOOD, BEST), playerCountFilter (number)
groupExpansions boolean true Grupuj dodatki pod ich grą podstawową
sort string Format: property,direction — np. name,asc
pagination string Format: size,pageIndex — np. 20,0

Odpowiedź: totalGames, totalExpansions, games[] — każdy zawiera: id, slug, name, imageUrl, isExpansion, yearPublished, minPlayerCount, maxPlayerCount.

GET /stats

Zwraca statystyki rozgrywek dla konfigurowalnego okna czasowego.

Parametr Typ Domyślnie Opis
period string ALL_TIME Format: PERIOD,date,index. Wartości: ALL_TIME, ONE_YEAR, ONE_MONTH, THIRTY_DAYS, SEVEN_DAYS, ONE_DAY, CUSTOM. Parametr index przesuwa okno wstecz (0 = bieżące, 1 = poprzednie). Niestandardowe: CUSTOM,startDate,0,endDate

Odpowiedź zawiera:

  • Podsumowanie — łączna liczba rozgrywek, łączny/średni czas rozgrywki, liczba unikalnych gier, graczy i lokalizacji
  • Według gracza — liczba rozgrywek na osobę, zwycięstwa, średni i najlepszy wynik
  • Według liczby graczy — podział na gry dla 2, 3, 4 graczy itd.
  • Według lokalizacji — liczba rozgrywek i liczba unikalnych gier na lokalizację
  • Według gry — liczba rozgrywek, łączny/średni czas rozgrywki oraz liczba unikalnych graczy na tytuł

GET /campaigns

Zwraca stronicowaną listę kampanii należących do grupy.

Parametr Typ Wartość domyślna Opis
status string Filtruj według statusu: ACTIVE, COMPLETED lub ARCHIVED
pagination.size int 50 Elementów na stronę
pagination.offset int 0 Przesunięcie

Każda kampania zawiera: id, game (id, name, imageUrl), name, image, status, visibility, createdAt, updatedAt, memberCount, sessionCount.

GET /campaigns/{campaignId}

Zwraca pełne szczegóły kampanii należącej do grupy.

Odpowiedź zawiera: Wszystkie pola listy oraz template, description, globalNotes, globalState, members[] (każdy z następującymi polami: user, role, characterNotes, characterState), sessions[] oraz events[].

POST /campaigns

Tworzy kampanię dla grupy. Wymagane pola: gameId i name. Domyślna widoczność to tylko dla członków grupy (ONLY_GROUP), jeśli nie podano.

Pola opcjonalne: templateId, description, visibility (PUBLIC, ONLY_GROUP, ONLY_FRIENDS lub PRIVATE).

Zwraca {"id": "string"} ze statusem 201.

PUT /campaigns/{campaignId}

Aktualizuje istniejącą kampanię. Wszystkie pola są opcjonalne — uwzględnij tylko to, co chcesz zmienić.

Pola opcjonalne: name, description, status (ACTIVE, COMPLETED, ARCHIVED), visibility.

Zwraca 202 z pustą treścią.

Członkowie kampanii

Zarządzaj tym, kto jest w kampanii, w taki sam sposób, w jaki zarządzasz uczestnikami wydarzenia.

Metoda Ścieżka Co robi
POST `/campaigns/

Kody błędów

Status Kiedy
400 Błąd walidacji (brak wymaganego pola, nie znaleziono lokalizacji, nieprawidłowy obraz)
401 Brak lub nieprawidłowy klucz API
403 Działanie niedozwolone lub grupa nie jest w planie Business
404 Nie znaleziono zasobu
429 Przekroczono limit żądań

Pierwsze kroki

1. Wygeneruj klucz API

Świeżo wygenerowany klucz API, wyświetlany jednorazowo z przyciskiem kopiowania i opcją Unieważnij

  1. Przejdź do strony profilu twojej organizacji
  2. Stuknij menu () → API publiczne
  3. Stuknij Wygeneruj klucz
  4. Skopiuj swój klucz od razu — jest wyświetlany tylko raz i nie można go później odzyskać

Klucz jest powiązany z twoją organizacją. Zachowaj go w tajemnicy: każdy, kto ma ten klucz, może odczytywać i zapisywać wszystkie powyższe dane.

2. Unieważnij lub wygeneruj ponownie

Aby unieważnić istniejący klucz, wróć na stronę API publiczne i stuknij Unieważnij. Potwierdź okno dialogowe. Każdy system używający starego klucza natychmiast zacznie otrzymywać błędy 401. Aby wygenerować nowy klucz, stuknij ponownie Wygeneruj klucz.

Zobacz także:

  • Organizacje — konta organizacji i funkcje premium
  • Premium — ceny planu Business
  • Integracje — inne sposoby łączenia Ludoya z zewnętrznymi narzędziami