JuguemosRol
JuguemosRol
Publicar
Una partida Un evento Un espacio en el mapa Una comunidad Un emprendimiento
Postularme como Master
Creá tu cuenta para empezar a publicar. Cómo funciona

API pública de JuguemosRol

Para sitios que quieran mostrar partidas, eventos y espacios, e inscribir jugadores.

Documentación técnica · Actualizada al 4 de agosto de 2026

Este documento es para quien programa. Si lo que querés es entender qué se puede hacer en JuguemosRol y cómo, la que necesitás es la guía de uso, no esta.

1. Para qué sirve

JuguemosRol expone una API REST pública para que otros sitios de rol puedan mostrar su contenido y operar contra él. No es de solo lectura: un portal externo puede inscribir jugadores y crear cuentas.

Hoy la consume Territorio de Rol, que lista las partidas de su comunidad y permite inscribirse sin salir de su propio sitio. El jugador queda registrado en JuguemosRol.

Querés…Usá
Mostrar en tu sitio las partidas de tu comunidadGET /partidas?comunidad_id=
Publicar un calendario de eventos rolerosGET /eventos
Armar un mapa de lugares donde se juegaGET /espacios
Que la gente se inscriba desde tu webPOST /inscripciones/externa

2. Pedir las credenciales

Las claves se generan del lado de JuguemosRol y se entregan por pedido. Escribí desde /contacto contando qué sitio sos y qué querés hacer. Vas a recibir:

CredencialPara qué
API key de lecturaConsultar partidas, eventos, comunidades, espacios y catálogos
Community tokenAcceder a los datos de tu propia comunidad
API key de escrituraInscribir jugadores y crear cuentas. Se entrega solo si la necesitás

Cada clave de escritura está atada a una comunidad. La comunidad no viaja en el cuerpo del pedido: sale de la clave, así que no podés operar sobre una comunidad que no es tuya.

3. Autenticación

Base: https://juguemosrol.com/api/v1

Todo va por headers. No hay claves en la URL.

X-Api-Key:         tu-clave              (todos los endpoints)
X-Community-Token: tu-token-comunidad    (solo endpoints de comunidad)
Content-Type:      application/json      (en POST)

4. Formato de respuesta

Todas las respuestas tienen la misma forma, así que alcanza con un solo manejador:

{"ok": true,  "data": [...]}
{"ok": false, "error": "mensaje explicando qué pasó"}

5. Endpoints de lectura

MétodoEndpointQué devuelve
GET/partidasPartidas publicadas. Filtros: comunidad_id, pais_id
GET/partidas/{hash}Detalle de una partida por su código
GET/eventosEventos. Filtros: tipo, comunidad, fechas, pais_id
GET/comunidadesComunidades verificadas
GET/comunidades/{id}Detalle. Requiere community token
GET/espaciosEspacios del mapa, con coordenadas
GET/tipo-espaciosCatálogo de tipos de espacio
GET/proyectosEmprendimientos publicados
GET/catalogosTodos los catálogos de referencia. Ver sección 7
GET/cuentas/mis-inscripciones?email=Inscripciones de un usuario en tu comunidad

Filtro geográfico con cascada. Cuando filtrás por pais_id, el país se resuelve buscando en orden: el del propio registro, el de su espacio físico, el de su comunidad, y el del creador de la comunidad. Así una partida sin país propio igual aparece en el filtro del país de su comunidad.

6. Endpoints de escritura

Requieren la API key de escritura.

MétodoEndpointQué hace
POST/inscripciones/externaInscribe a un jugador. Si no tiene cuenta, la crea
POST/cuentasCrea una cuenta sin inscribirla a nada

6.1 Inscribir un jugador

POST /api/v1/inscripciones/externa

{
  "email":         "jugador@ejemplo.com",   // requerido
  "partida_hash":  "a599954d64358e73",      // requerido
  "nota_jugador":  "Texto libre para el master",
  "nombre":        "Nombre del jugador",    // requerido si hay que crear la cuenta
  "pais_codigo":   "ES",                    // requerido si hay que crear la cuenta (ISO-2)
  "language_code": "es",                    // requerido si hay que crear la cuenta
  "es_suscriptor": false,
  "extra_params":  {}
}

Lo más importante de este endpoint. El comportamiento cambia según si el email ya existe en JuguemosRol:

  • Si la cuenta ya existe, se reutiliza y no se toca ninguno de sus datos. nombre, pais_codigo y language_code se ignoran: el dueño del dato es el usuario, no tu sitio. Esto importa cuando la misma persona participa en varias comunidades.
  • Si hay que crear la cuenta, esos tres campos son obligatorios. Si falta alguno, la respuesta es 422 y nombra cuáles. La cuenta que se crea tiene que poder usar la plataforma; la API no inventa datos para completarla.

6.2 Crear una cuenta

POST /api/v1/cuentas

{
  "email":         "jugador@ejemplo.com",   // todos requeridos
  "password":      "mínimo 8 caracteres",
  "nickname":      "identificador-unico",
  "nombre":        "Nombre del jugador",
  "pais_codigo":   "ES",
  "language_code": "es"
}

La cuenta queda pendiente hasta que la persona verifique su email, igual que en el registro web.

7. Catálogos

GET /catalogos devuelve de una sola vez todos los valores válidos que esperan los endpoints de escritura. Consultalo en vez de hardcodear listas:

{
  "ok": true,
  "data": {
    "juegos":              [ { "id": 1, "titulo": "..." } ],
    "tipos_participacion": [ ... ],
    "tipos_partida":       [ ... ],
    "tipos_experiencia":   [ ... ],
    "herramientas":        [ ... ],
    "advertencias":        [ ... ],
    "plataformas":         [ ... ],
    "paises":              [ { "id": 59, "nombre": "España", "codigo": "ES" } ],
    "languages":           [ { "id": 112, "language_code": "es", "language_name": "Spanish - español" } ]
  }
}

De ahí salen los valores de pais_codigo (el campo codigo, ISO-2) y de language_code.

8. Errores

CódigoQué significaQué hacer
401Falta la API key o no es válidaRevisar el header X-Api-Key
403La clave no tiene permiso de escritura, o el community token no correspondePedir la clave adecuada
404No existe lo que pedisteVerificar el código de partida o el id
409Conflicto: partida cerrada, sin cupo, fecha pasada, o ya inscriptoEl mensaje aclara cuál de todos
422Faltan campos o traen valores inválidosLeer error: nombra los campos faltantes

Los mensajes de 422 están escritos para ser accionables:

{
  "ok": false,
  "error": "Para crear una cuenta nueva faltan estos campos obligatorios: nombre,
            pais_codigo, language_code. Consultá GET /api/v1/catalogos para los
            valores válidos de pais_codigo y language_code."
}

9. Ejemplo completo

Listar las partidas de tu comunidad e inscribir a alguien:

# 1. Traer las partidas de la comunidad
curl -H "X-Api-Key: TU_CLAVE_LECTURA" \
     "https://juguemosrol.com/api/v1/partidas?comunidad_id=4"

# 2. Averiguar los codigos de pais e idioma validos
curl -H "X-Api-Key: TU_CLAVE_LECTURA" \
     "https://juguemosrol.com/api/v1/catalogos"

# 3. Inscribir a un jugador
curl -X POST "https://juguemosrol.com/api/v1/inscripciones/externa" \
     -H "X-Api-Key: TU_CLAVE_ESCRITURA" \
     -H "Content-Type: application/json" \
     -d @inscripcion.json

Con inscripcion.json:

{
  "email":         "jugador@ejemplo.com",
  "partida_hash":  "a599954d64358e73",
  "nota_jugador":  "Juego desde 2015, disponible fines de semana",
  "nombre":        "Ana García",
  "pais_codigo":   "ES",
  "language_code": "es"
}

Recomendación para consumidores. Guardá el país y el idioma de tus propios usuarios, o pedilos en tu formulario de registro. Si no los tenés, la primera inscripción de un usuario nuevo va a devolver 422 — y es mejor descubrirlo al integrar que en producción, con un jugador esperando.