La API pública dona als administradors de l'organització accés HTTP directe a les dades en temps real de la teva organització — porta-les a qualsevol lloc web, app, bot o automatització que pugui fer una sol·licitud HTTP. És una funció del Pla Business.

La pàgina de l'API pública: genera una clau d'API de l'organització i activa Inicia la sessió amb Ludoya

La clau està restringida a la teva organització — tots els endpoints operen sobre aquest grup automàticament. URL base: https://api.ludoya.com/public/v1. Capçalera d'autenticació: X-Api-Key: YOUR_KEY. Límit de freqüència: 100 sol·licituds per minut, passat aquest límit, rebràs un 429.

Les claus comencen amb ldy_ i tenen 36 caràcters de longitud, de manera que són fàcils de detectar en un fitxer de configuració — i fàcils d'escanejar si alguna acaba on no hauria. Tracta-la com una contrasenya: només al servidor, i revoca-la des de la mateixa pàgina si es filtra.

A què pots accedir

  • Ubicacions — les ubicacions disponibles del teu grup i els seus llocs; s'utilitzen com a entrada en crear esdeveniments
  • Esdeveniments (lectura) — esdeveniments propers i passats amb títol, descripció, data/hora, zona horària, capacitat, recompte de participants i estat
  • Esdeveniments (escriptura) — crea i actualitza esdeveniments mitjançant POST i PUT, amb control total sobre la ubicació, la capacitat, els permisos, la visibilitat i la imatge
  • Subesdeveniments — llista els esdeveniments imbricats dins d'un esdeveniment pare
  • Participants — afegeix algú a un esdeveniment, canvia la seva assistència o elimina'l
  • Membres — llista de membres amb perfils d'usuari i rols (Propietari, Administrador, Membre), paginada
  • Invitacions — convida algú al teu grup
  • Cerca — cerca usuaris de Ludoya i el catàleg de jocs de taula, per poder resoldre noms a ID abans d'escriure
  • Col·lecció — col·lecció de jocs amb filtratge per propietat, nom, nombre de jugadors i llista; ordenable i paginada; cada joc inclou metadades de BGG
  • Estadístiques — estadístiques de partides per a qualsevol període: totals, mitjanes, millors jugadors amb victòries i puntuacions, desglossaments per nombre de jugadors, per ubicació i per joc
  • Campanyes (lectura) — llista les campanyes del grup amb recomptes de membres i sessions; recupera el detall complet de la campanya, incloent-hi els membres, les sessions passades i els esdeveniments programats
  • Campanyes (escriptura) — crea campanyes per al grup i n'actualitza el nom, la descripció, l'estat i la visibilitat
  • Membres de la campanya — afegeix, actualitza i elimina les persones d'una campanya

Punts de connexió

GET /locations

Retorna les ubicacions disponibles del grup. Cada ubicació té un id, name, address opcional, capacity, un indicador isDefault i una llista spots (cada lloc té el seu propi id, name i capacity). Utilitza els ID d'ubicació i de lloc en crear esdeveniments.

Inicia la sessió amb Ludoya

La mateixa pàgina que conté la teva clau d'API també converteix la teva organització en un proveïdor d'inici de sessió. Permet que la gent iniciï la sessió al teu propi lloc web, fòrum o plataforma comunitària amb el seu compte de Ludoya — sense una contrasenya a part que puguin oblidar, i sense una base de dades d'usuaris que hagis de gestionar.

Per què val la pena

Quan algú aprova l'inici de sessió, queda vinculat a la teva organització: segons la política d'admissió del teu grup, o bé es converteix en membre de seguida (oberta), envia una sol·licitud per unir-se perquè un administrador l'aprovi (sol·licitud per unir-se), o simplement inicia la sessió sense unir-se (només amb invitació). En qualsevol cas, apareix a l'endpoint /members com qualsevol altra persona — així, l'inici de sessió del teu lloc web i la teva llista de membres de Ludoya es mantenen sincronitzats automàticament.

Com configurar-ho

És OpenID Connect estàndard, així que la majoria de plataformes només necessiten una URL de l'emissor més un ID de client i el seu secret. Registra la teva aplicació des de la pàgina de Public API per obtenir aquestes credencials, i enumera les URI de redirecció que farà servir el teu lloc — en pots registrar diverses, i cadascuna ha de coincidir amb el redirect_uri que envia el teu lloc caràcter per caràcter, inclosa la barra final. Un desajust mínim és la raó més habitual per la qual falla un primer intent d'inici de sessió.

  • Discourse — instal·la el connector d'OpenID Connect, enganxa la URL de descobriment i afegeix les credencials
  • WordPress — qualsevol connector genèric d'OpenID Connect, fent servir la seva opció "auto discover"
  • Qualsevol altra cosa — si és compatible amb OIDC, indica-li la URL de l'emissor i es configurarà automàticament

Cada inici de sessió retorna l'identificador permanent de la persona, el seu nom d'usuari, nom per mostrar i avatar, i el seu correu electrònic. Les instruccions completes de configuració, inclòs el flux manual, són a la guia per a desenvolupadors dins de l'aplicació a Desenvolupadors → Inicia la sessió amb Ludoya.

Per a les persones que inicien la sessió

Qualsevol persona que hagi utilitzat Ludoya per iniciar la sessió en algun lloc pot revisar aquestes connexions a Configuració → Aplicacions connectades, veure quan es va connectar cadascuna i quan es va utilitzar per última vegada, i desconnectar-ne qualsevol en qualsevol moment. En desconnectar, es talla immediatament l'accés del lloc, però no els elimina del teu grup.

GET /events

Retorna esdeveniments futurs i passats en llistes paginades separades.

Paràmetre Tipus Per defecte Descripció
onlyFuture booleà true Estableix false per retornar també esdeveniments passats

Cada esdeveniment inclou: type (MEETUP o PLANNED_PLAY), title, description, startsAt, endsAt, timeZone, imageUrl, capacity, participantCount, canceled, teacher (objecte d'usuari o null), master (objecte d'usuari o null). Els objectes d'usuari contenen id, username, name, avatarUrl.

POST /events

Crea un esdeveniment al grup. Camps obligatoris: type i title. Si s'omet locationId, s'utilitza la ubicació predeterminada del grup; si no n'hi ha, retorna 400.

Els camps opcionals inclouen: description, locationId, spotId, gameId, parentEventId (per a subesdeveniments), startsAt, endsAt, restrictedAttendance, capacity, minParticipants, estimatedDurationMinutes, maxReservationsPerUser, takeGamesPermission, organizePlaysPermission, teacherUserId, masterUserId, visibility, image.

El camp image accepta {"base64": "data:image/jpeg;base64,..."} or {"url": "https://..."}. Màxim 5 MB.

Retorna {"id": "string"} amb l'estat 201.

PUT /events/{eventId}

Actualitza un esdeveniment existent. Mateix format de cos que POST — inclou només els camps que vols canviar. El sol·licitant ha de ser l'organitzador de l'esdeveniment (el compte del grup). Retorna 202 amb el cos buit.

GET /events/{eventId}

Obté un únic esdeveniment per ID, amb la mateixa estructura que els elements de GET /events.

GET /events/{eventId}/children

Llista els subesdeveniments niuats dins d'un esdeveniment principal — les línies temàtiques o sessions individuals d'una trobada de més envergadura. Cada subesdeveniment té la mateixa estructura que un esdeveniment normal.

Gestió de participants

Tres endpoints et permeten gestionar la llista d'assistents d'un esdeveniment des de fora de Ludoya — útil si les inscripcions es fan al teu propi lloc web, o si estàs important una llista existent.

Mètode Ruta Què fa
POST `/events/

GET /members

Retorna una llista de membres paginada.

Paràmetre Tipus Per defecte
pagination.size int 50
pagination.offset int 0

Cada membre inclou: id, username, name, avatarUrl, role (OWNER, ADMIN o MEMBER).

POST /members/invite

Convida algú al teu grup. Aquest accepta un username directament — no cal cercar l’ID —, de manera que pots incorporar membres directament des del teu propi lloc web o eina d’administració.

GET /collection

Retorna la teva col·lecció de jocs amb filtratge, ordenació i paginació.

Paràmetre Tipus Predeterminat Descripció
filter string Parelles key=value separades per punt i coma. Claus: ownership (OWNED, PREVIOUSLY_OWNED, PREORDERED, WISHLISTED), played (boolean), listId, nameFilter, playerCountFilterType (OFFICIAL, GOOD, BEST), playerCountFilter (number)
groupExpansions boolean true Agrupa les expansions sota el seu joc base
sort string Format: property,direction — p. ex., name,asc
pagination string Format: size,pageIndex — p. ex., 20,0

Resposta: totalGames, totalExpansions, games[] — cadascun amb: id, slug, name, imageUrl, isExpansion, yearPublished, minPlayerCount, maxPlayerCount.

GET /stats

Retorna estadístiques de partides per a una finestra de temps configurable.

Paràmetre Tipus Per defecte Descripció
period cadena ALL_TIME Format: PERIOD,date,index. Valors: ALL_TIME, ONE_YEAR, ONE_MONTH, THIRTY_DAYS, SEVEN_DAYS, ONE_DAY, CUSTOM. L'index desplaça la finestra cap enrere (0 = actual, 1 = anterior). Personalitzat: CUSTOM,startDate,0,endDate

La resposta inclou:

  • Resum — total de partides, temps de joc total/mitjà, recompte de jocs únics, jugadors únics i ubicacions úniques
  • Per jugador — partides per persona, victòries, puntuació mitjana i millor puntuació
  • Per nombre de jugadors — desglossament de jocs de 2 jugadors, 3 jugadors, 4 jugadors, etc.
  • Per ubicació — nombre de partides i jocs únics per lloc
  • Per joc — nombre de partides, temps de joc total/mitjà i jugadors únics per títol

GET /campaigns

Retorna una llista paginada de campanyes que pertanyen al grup.

Paràmetre Tipus Valor per defecte Descripció
status string Filtra per estat: ACTIVE, COMPLETED o ARCHIVED
pagination.size int 50 Elements per pàgina
pagination.offset int 0 Desplaçament

Cada campanya inclou: id, game (id, name, imageUrl), name, image, status, visibility, createdAt, updatedAt, memberCount, sessionCount.

GET /campaigns/{campaignId}

Retorna el detall complet d'una campanya que pertany al grup.

La resposta inclou: Tots els camps de la llista, a més de template, description, globalNotes, globalState, members[] (cadascun amb user, role, characterNotes, characterState), sessions[] i events[].

POST /campaigns

Crea una campanya per al grup. Camps obligatoris: gameId i name. La visibilitat per defecte és només per als membres del grup (ONLY_GROUP) si s'omet.

Camps opcionals: templateId, description, visibility (PUBLIC, ONLY_GROUP, ONLY_FRIENDS o PRIVATE).

Retorna {"id": "string"} amb l'estat 201.

PUT /campaigns/{campaignId}

Actualitza una campanya existent. Tots els camps són opcionals — inclou només el que vulguis canviar.

Camps opcionals: name, description, status (ACTIVE, COMPLETED, ARCHIVED), visibility.

Retorna 202 amb el cos buit.

Membres de la campanya

Gestiona qui forma part d'una campanya, de la mateixa manera que gestiones els participants d'un esdeveniment.

Mètode Ruta Què fa
POST `/campaigns/

Codis d'error

Estat Quan
400 Error de validació (falta un camp obligatori, no s'ha trobat cap ubicació, imatge no vàlida)
401 Falta la clau d'API o no és vàlida
403 Acció no permesa o el grup no està en el pla Business
404 Recurs no trobat
429 S'ha superat el límit de sol·licituds

Primers passos

1. Generar una clau d'API

Una clau d'API acabada de generar, mostrada una sola vegada amb un botó de copiar i una acció de Revocar

  1. Ves a la pàgina de perfil de la teva organització
  2. Toca el menú () → API pública
  3. Toca Generar clau
  4. Copia la teva clau immediatament — es mostra només una vegada i no es pot tornar a recuperar

La clau està vinculada a la teva organització. Mantén-la en secret: qualsevol amb la clau pot llegir i escriure totes les dades anteriors.

2. Revocar o tornar a generar

Per revocar una clau existent, torna a la pàgina de l'API pública i toca Revocar. Confirma el diàleg. Qualsevol sistema que utilitzi la clau antiga començarà immediatament a rebre errors 401. Per emetre una clau nova, toca Generar clau de nou.

Relacionat:

  • Organitzacions — comptes d'organització i funcions premium
  • Premium — preus del pla Business
  • Integracions — altres maneres de connectar Ludoya amb eines externes