{"openapi":"3.1.0","info":{"title":"Tutiplay API","description":"Tutiplay es una plataforma para jugar la quiniela en grupo. Esta API permite consultar tus peñas y sus jornadas, y preparar y confirmar tus pronósticos.\n\n**Autenticación.** Toda llamada va con una API key en la cabecera `Authorization: Bearer tp_…`. Las keys se crean desde la web, en «Mi cuenta › API Keys», y se muestran una sola vez.\n\n**Permisos.** Una key tiene uno de tres niveles, acumulativos: `READ` consulta; `WRITE` además crea y edita tus plantillas; `PLAY` además guarda y confirma pronósticos, lo que consume saldo. Una llamada que requiere un nivel superior al de la key responde `403` con `{\"error\":\"SCOPE\"}`.\n\n**Límites.** Solo la API de datos de fútbol —todo lo que empieza por `/v1/football`: competiciones, temporadas, jornadas de competición y clasificaciones— cuenta para los límites: uno por minuto y otro por día, compartidos por todas las keys de la cuenta. La quiniela no se limita. Si se excede, la respuesta es `429` con `Retry-After` en segundos.\n\nGuía, conceptos y ejemplos en [/developers](/developers).","contact":{"name":"Tutiplay"},"license":{"name":"Uso sujeto a las condiciones de Tutiplay"},"version":"v1"},"security":[{"apiKey":[]}],"tags":[{"name":"Perfil","description":"Los datos de tu cuenta."},{"name":"Saldo","description":"Tu saldo y sus movimientos, cada uno con la peña y la jornada a las que corresponde."},{"name":"Plantillas","description":"Tus plantillas: reglas con nombre que proponen columnas o plenos. Hay tres tipos, cada uno con su ruta —`1x2`, `match15` y `quiniela`—; las de quiniela combinan las otras dos."},{"name":"Equipos","description":"Buscador de equipos, para nombrarlos en las reglas de una plantilla."},{"name":"Jornadas","description":"Las jornadas de la quiniela, iguales para todas las peñas: sus partidos con el signo de cada uno, el escrutinio y lo que se juega en toda España."},{"name":"Peñas","description":"Las peñas en las que juegas y la ficha de cada una. Una peña se identifica por su slug (`bar-manolo`), no por un id."},{"name":"Jornadas de una peña","description":"Las jornadas vistas desde una peña: si la juega, en qué fase está y con qué reglas. El listado está paginado."},{"name":"Pronósticos","description":"Tu pronóstico de una jornada en una peña: un pleno al 15 y sus columnas. Guardarlo, confirmarlo o deshacerlo requiere el permiso `PLAY`."},{"name":"Formalización","description":"Lo que la peña jugó en una jornada una vez cerrado el plazo: sus columnas y sus aciertos."},{"name":"Juego automático","description":"La plantilla de quiniela que juega por ti en una peña cada jornada. Requiere el permiso `PLAY`, porque confirma pronósticos y consume saldo."},{"name":"Tus jornadas","description":"Las jornadas vistas desde ti: si las juegas, en qué fase están y con qué reglas."},{"name":"Tus pronósticos","description":"Tus pronósticos de una jornada: guardarlos, confirmarlos o deshacerlos requiere el permiso `PLAY`."},{"name":"Lo que juegas","description":"Las columnas que juegas de verdad una vez cerrado el plazo, con sus aciertos."},{"name":"Tu juego automático","description":"La plantilla de quiniela que juega por ti cada jornada. Requiere el permiso `PLAY`, porque confirma pronósticos y consume saldo."},{"name":"Competiciones","description":"Las competiciones de las que hay datos: ligas, copas y torneos de selecciones."},{"name":"Temporadas de una competición","description":"Quién juega una competición en una temporada y de qué jornadas hay datos."},{"name":"Jornadas de una competición","description":"Una jornada de una competición, que no es una jornada de la quiniela, con sus partidos y la clasificación tras ella."}],"paths":{"/v1/templates/quiniela/{id}":{"get":{"tags":["Plantillas"],"summary":"Una plantilla de quiniela","description":"Una de tus plantillas de quiniela: sus pronósticos, cada uno con su plantilla de pleno y sus columnas.","operationId":"quiniela","parameters":[{"name":"id","in":"path","description":"El identificador de la plantilla.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/QuinielaTemplateResponse"}}}}}},"put":{"tags":["Plantillas"],"summary":"Sustituir una plantilla de quiniela","description":"Sustituye una plantilla de quiniela entera: nombre y pronósticos.","operationId":"updateQuiniela","parameters":[{"name":"id","in":"path","description":"El identificador de la plantilla.","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuinielaTemplateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/QuinielaTemplateResponse"}}}}}},"delete":{"tags":["Plantillas"],"summary":"Borrar una plantilla de quiniela","description":"Borra la plantilla. Responde `409` si alguna peña la tiene asignada al juego automático: hay que quitarla de allí primero.","operationId":"deleteQuiniela","parameters":[{"name":"id","in":"path","description":"El identificador de la plantilla.","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No Content"}}}},"/v1/templates/quiniela/{id}/visibility":{"put":{"tags":["Plantillas"],"summary":"Con quién se comparte una plantilla de quiniela","description":"Cambia solo el nivel: `COMMUNITY` (nadie), `FOLLOWERS` o `PUBLIC`. Quien la ve puede asignarla al juego automático de su peña, pero no editarla ni borrarla.","operationId":"shareQuiniela","parameters":[{"name":"id","in":"path","description":"El identificador de la plantilla.","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateVisibilityRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/QuinielaTemplateResponse"}}}}}}},"/v1/templates/match15/{id}":{"get":{"tags":["Plantillas"],"summary":"Una plantilla de pleno","description":"Una de tus plantillas de pleno al 15, con sus reglas y el reparto final.","operationId":"match15","parameters":[{"name":"id","in":"path","description":"El identificador de la plantilla.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Match15TemplateResponse"}}}}}},"put":{"tags":["Plantillas"],"summary":"Sustituir una plantilla de pleno","description":"Sustituye una plantilla de pleno entera: nombre, reglas y reparto final.","operationId":"updateMatch15","parameters":[{"name":"id","in":"path","description":"El identificador de la plantilla.","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Match15TemplateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Match15TemplateResponse"}}}}}},"delete":{"tags":["Plantillas"],"summary":"Borrar una plantilla de pleno","description":"Borra la plantilla. Las plantillas de quiniela que la usaban se quedan sin pleno y no se juegan hasta completarlas.","operationId":"deleteMatch15","parameters":[{"name":"id","in":"path","description":"El identificador de la plantilla.","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No Content"}}}},"/v1/templates/match15/{id}/visibility":{"put":{"tags":["Plantillas"],"summary":"Con quién se comparte una plantilla de pleno","description":"Cambia solo el nivel: `COMMUNITY` (nadie), `FOLLOWERS` o `PUBLIC`. Quien la ve puede usarla pero no editarla ni borrarla.","operationId":"shareMatch15","parameters":[{"name":"id","in":"path","description":"El identificador de la plantilla.","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateVisibilityRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Match15TemplateResponse"}}}}}}},"/v1/templates/1x2/{id}":{"get":{"tags":["Plantillas"],"summary":"Una plantilla de 1X2","description":"Una de tus plantillas de 1X2, con sus reglas en orden y el reparto final para los partidos que ninguna regla decide.","operationId":"sign","parameters":[{"name":"id","in":"path","description":"El identificador de la plantilla.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SignsTemplateResponse"}}}}}},"put":{"tags":["Plantillas"],"summary":"Sustituir una plantilla de 1X2","description":"Sustituye una plantilla de 1X2 entera: nombre, reglas y reparto final.","operationId":"updateSigns","parameters":[{"name":"id","in":"path","description":"El identificador de la plantilla.","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignsTemplateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SignsTemplateResponse"}}}}}},"delete":{"tags":["Plantillas"],"summary":"Borrar una plantilla de 1X2","description":"Borra la plantilla. Las plantillas de quiniela que la usaban se quedan con esa columna vacía y no se juegan hasta completarlas.","operationId":"deleteSigns","parameters":[{"name":"id","in":"path","description":"El identificador de la plantilla.","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No Content"}}}},"/v1/templates/1x2/{id}/visibility":{"put":{"tags":["Plantillas"],"summary":"Con quién se comparte una plantilla de 1X2","description":"Cambia solo el nivel: `COMMUNITY` (nadie), `FOLLOWERS` o `PUBLIC`. Quien la ve puede **usarla** —rellenar una columna, o dejar que juegue su peña— pero no editarla ni borrarla. Se puede bajar en cualquier momento: deja de salir al momento, y lo ya rellenado con ella no se deshace.","operationId":"shareSigns","parameters":[{"name":"id","in":"path","description":"El identificador de la plantilla.","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateVisibilityRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SignsTemplateResponse"}}}}}}},"/v1/solo/seasons/{season}/rounds/{round}/forecast/{number}":{"get":{"tags":["Tus pronósticos"],"summary":"Un pronóstico","description":"Uno de tus pronósticos de esta jornada, con sus columnas, su pleno al 15, su estado y, cuando los hay, sus aciertos. Responde `404` si todavía no existe.","operationId":"forecast","parameters":[{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"number","in":"path","description":"El número del pronóstico dentro de la jornada, desde 1. Donde la peña solo admite uno, es el 1.","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ForecastResponse"}}}}}},"put":{"tags":["Tus pronósticos"],"summary":"Guardar un pronóstico","description":"Guarda las columnas y el pleno al 15 de un pronóstico, creándolo si no existía. Con `confirm: true` además lo confirma y cobra sus columnas; si ya estaba confirmado, cobra o devuelve solo la diferencia. Por tu cuenta cada pronóstico lleva al menos dos columnas.","operationId":"save","parameters":[{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"number","in":"path","description":"El número del pronóstico dentro de la jornada, desde 1. Donde la peña solo admite uno, es el 1.","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForecastRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ForecastResponse"}}}}}},"delete":{"tags":["Tus pronósticos"],"summary":"Quitar un pronóstico","description":"Elimina uno de tus pronósticos de la jornada, siempre que quede al menos otro. Si estaba confirmado, devuelve su importe; los que quedan se renumeran desde 1.","operationId":"delete","parameters":[{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"number","in":"path","description":"El número del pronóstico dentro de la jornada, desde 1. Donde la peña solo admite uno, es el 1.","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"204":{"description":"No Content"}}}},"/v1/solo/auto-play":{"get":{"tags":["Tu juego automático"],"summary":"Plantilla asignada","description":"La plantilla de quiniela que juega por ti cada jornada. Responde `204` si no hay ninguna.","operationId":"autoPlay","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AutoPlayResponse"}}}}}},"put":{"tags":["Tu juego automático"],"summary":"Asignar una plantilla","description":"Asigna una plantilla de quiniela para que juegue por ti en cada jornada: rellena y confirma tu pronóstico, lo que consume saldo. Sustituye a la que hubiera.","operationId":"setAutoPlay","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoPlayRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AutoPlayResponse"}}}}}},"delete":{"tags":["Tu juego automático"],"summary":"Quitar la plantilla asignada","description":"Deja de jugar automáticamente. Los pronósticos ya confirmados no se tocan.","operationId":"clearAutoPlay","responses":{"204":{"description":"No Content"}}}},"/v1/communities/{slug}/seasons/{season}/rounds/{round}/forecast/{number}":{"get":{"tags":["Pronósticos"],"summary":"Un pronóstico","description":"Uno de tus pronósticos de esta jornada en la peña, con sus columnas, su pleno al 15, su estado y, cuando los hay, sus aciertos. Responde `404` si todavía no existe.","operationId":"get","parameters":[{"name":"slug","in":"path","description":"La peña, por su dirección: `bar-manolo`. Tu peña personal tiene la suya, en `/v1/communities/personal`.","required":true,"schema":{"type":"string"}},{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"number","in":"path","description":"El número del pronóstico dentro de la jornada, desde 1. Donde la peña solo admite uno, es el 1.","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ForecastResponse"}}}}}},"put":{"tags":["Pronósticos"],"summary":"Guardar un pronóstico","description":"Guarda las columnas y el pleno al 15 de un pronóstico, creándolo si no existía. Con `confirm: true` además lo confirma y cobra sus columnas; si ya estaba confirmado, cobra o devuelve solo la diferencia de columnas.","operationId":"save_1","parameters":[{"name":"slug","in":"path","description":"La peña, por su dirección: `bar-manolo`. Tu peña personal tiene la suya, en `/v1/communities/personal`.","required":true,"schema":{"type":"string"}},{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"number","in":"path","description":"El número del pronóstico dentro de la jornada, desde 1. Donde la peña solo admite uno, es el 1.","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForecastRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ForecastResponse"}}}}}},"delete":{"tags":["Pronósticos"],"summary":"Quitar un pronóstico","description":"Elimina uno de tus pronósticos de la jornada, siempre que quede al menos otro. Si estaba confirmado, devuelve su importe; los que quedan se renumeran desde 1.","operationId":"delete_1","parameters":[{"name":"slug","in":"path","description":"La peña, por su dirección: `bar-manolo`. Tu peña personal tiene la suya, en `/v1/communities/personal`.","required":true,"schema":{"type":"string"}},{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"number","in":"path","description":"El número del pronóstico dentro de la jornada, desde 1. Donde la peña solo admite uno, es el 1.","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"204":{"description":"No Content"}}}},"/v1/communities/{slug}/auto-play":{"get":{"tags":["Juego automático"],"summary":"Plantilla asignada","description":"La plantilla de quiniela que juega por ti en esta peña. Responde `204` si no hay ninguna asignada. Si la plantilla ya no encaja con las reglas de la peña, `problem` indica el motivo y no se juega hasta que se corrija.","operationId":"mine","parameters":[{"name":"slug","in":"path","description":"La peña, por su dirección: `bar-manolo`. Tu peña personal tiene la suya, en `/v1/communities/personal`.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AutoPlayResponse"}}}}}},"put":{"tags":["Juego automático"],"summary":"Asignar una plantilla","description":"Asigna una plantilla de quiniela para que juegue por ti en esta peña en cada jornada: rellena y confirma tu pronóstico, lo que consume saldo. Sustituye a la que hubiera. Responde `422` con `TEMPLATE_DOES_NOT_FIT` si no encaja con las reglas de la peña.","operationId":"set","parameters":[{"name":"slug","in":"path","description":"La peña, por su dirección: `bar-manolo`. Tu peña personal tiene la suya, en `/v1/communities/personal`.","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoPlayRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AutoPlayResponse"}}}}}},"delete":{"tags":["Juego automático"],"summary":"Quitar la plantilla asignada","description":"Deja de jugar automáticamente en esta peña. Los pronósticos ya confirmados no se tocan.","operationId":"clear","parameters":[{"name":"slug","in":"path","description":"La peña, por su dirección: `bar-manolo`. Tu peña personal tiene la suya, en `/v1/communities/personal`.","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No Content"}}}},"/v1/templates/quiniela":{"get":{"tags":["Plantillas"],"summary":"Plantillas de quiniela","description":"Tus plantillas de quiniela, que componen pronósticos completos a partir de plantillas de 1X2 y de pleno.","operationId":"quinielas","parameters":[{"name":"shared","in":"query","description":"Con `true`, en vez de tus plantillas salen **las que te comparte la gente a la que sigues**, que se pueden usar igual que las tuyas. Por defecto `false`.","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/QuinielaTemplateResponse"}}}}}}},"post":{"tags":["Plantillas"],"summary":"Crear una plantilla de quiniela","description":"Crea una plantilla de quiniela a partir de tus plantillas de 1X2 y de pleno. Es la que se asigna al juego automático de una peña.","operationId":"createQuiniela","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuinielaTemplateRequest"}}},"required":true},"responses":{"201":{"description":"Created","content":{"*/*":{"schema":{"$ref":"#/components/schemas/QuinielaTemplateResponse"}}}}}}},"/v1/templates/match15":{"get":{"tags":["Plantillas"],"summary":"Plantillas de pleno","description":"Tus plantillas de pleno al 15, que deciden la casilla de cada equipo, con sus reglas.","operationId":"match15s","parameters":[{"name":"shared","in":"query","description":"Con `true`, en vez de tus plantillas salen **las que te comparte la gente a la que sigues**, que se pueden usar igual que las tuyas. Por defecto `false`.","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Match15TemplateResponse"}}}}}}},"post":{"tags":["Plantillas"],"summary":"Crear una plantilla de pleno","description":"Crea una plantilla de pleno al 15 con sus reglas. Gana la primera regla que se cumple, y `otherwise` decide si ninguna lo hace.","operationId":"createMatch15","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Match15TemplateRequest"}}},"required":true},"responses":{"201":{"description":"Created","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Match15TemplateResponse"}}}}}}},"/v1/templates/1x2":{"get":{"tags":["Plantillas"],"summary":"Plantillas de 1X2","description":"Tus plantillas de 1X2, que deciden el signo de cada partido de una columna, con sus reglas.","operationId":"signs","parameters":[{"name":"shared","in":"query","description":"Con `true`, en vez de tus plantillas salen **las que te comparte la gente a la que sigues**, que se pueden usar igual que las tuyas. Por defecto `false`.","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SignsTemplateResponse"}}}}}}},"post":{"tags":["Plantillas"],"summary":"Crear una plantilla de 1X2","description":"Crea una plantilla de 1X2 con sus reglas. Gana la primera regla que se cumple, y `otherwise` decide los partidos restantes.","operationId":"createSigns","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignsTemplateRequest"}}},"required":true},"responses":{"201":{"description":"Created","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SignsTemplateResponse"}}}}}}},"/v1/solo/seasons/{season}/rounds/{round}/forecast/{number}/unconfirm":{"post":{"tags":["Tus pronósticos"],"summary":"Deshacer la confirmación","description":"Deja el pronóstico sin confirmar mientras el plazo siga abierto y devuelve el importe cobrado.","operationId":"unconfirm","parameters":[{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"number","in":"path","description":"El número del pronóstico dentro de la jornada, desde 1. Donde la peña solo admite uno, es el 1.","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ForecastResponse"}}}}}}},"/v1/solo/seasons/{season}/rounds/{round}/forecast/{number}/fill":{"post":{"tags":["Tus pronósticos"],"summary":"Proponer una columna","description":"Lo que una plantilla de 1X2 marcaría en una columna de este pronóstico. Es una propuesta: no guarda nada. Evita repetir tus demás columnas; si no queda ninguna nueva, `marks` es nulo.","operationId":"fill","parameters":[{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"number","in":"path","description":"El número del pronóstico dentro de la jornada, desde 1. Donde la peña solo admite uno, es el 1.","required":true,"schema":{"type":"integer","format":"int32","minimum":1}},{"name":"templateId","in":"query","description":"El identificador de la plantilla con la que rellenar. Tiene que ser del tipo de la ruta, y puede ser tuya o compartida contigo.","required":true,"schema":{"type":"string"}},{"name":"column","in":"query","description":"Qué columna del pronóstico se sustituye, desde 1. Esa columna no cuenta como repetida.","required":false,"schema":{"type":"integer","format":"int32","default":1,"minimum":1}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/FillResponse"}}}}}}},"/v1/solo/seasons/{season}/rounds/{round}/forecast/{number}/fill-quiniela":{"post":{"tags":["Tus pronósticos"],"summary":"Proponer el pronóstico completo","description":"Las columnas y el pleno que una plantilla de quiniela propondría para este pronóstico. Es una propuesta: no guarda nada.","operationId":"fillQuiniela","parameters":[{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"number","in":"path","description":"El número del pronóstico dentro de la jornada, desde 1. Donde la peña solo admite uno, es el 1.","required":true,"schema":{"type":"integer","format":"int32","minimum":1}},{"name":"templateId","in":"query","description":"El identificador de la plantilla con la que rellenar. Tiene que ser del tipo de la ruta, y puede ser tuya o compartida contigo.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/QuinielaFillResponse"}}}}}}},"/v1/solo/seasons/{season}/rounds/{round}/forecast/{number}/fill-match15":{"post":{"tags":["Tus pronósticos"],"summary":"Proponer el pleno al 15","description":"Lo que una plantilla de pleno marcaría en el pleno al 15 de este pronóstico. Es una propuesta: no guarda nada. Responde `204` si la jornada no tiene pleno.","operationId":"fillMatch15","parameters":[{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"number","in":"path","description":"El número del pronóstico dentro de la jornada, desde 1. Donde la peña solo admite uno, es el 1.","required":true,"schema":{"type":"integer","format":"int32","minimum":1}},{"name":"templateId","in":"query","description":"El identificador de la plantilla con la que rellenar. Tiene que ser del tipo de la ruta, y puede ser tuya o compartida contigo.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Match15FillResponse"}}}}}}},"/v1/solo/seasons/{season}/rounds/{round}/forecast/{number}/confirm":{"post":{"tags":["Tus pronósticos"],"summary":"Confirmar","description":"Confirma el pronóstico tal como está guardado, lo que cobra sus columnas del saldo.","operationId":"confirm","parameters":[{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"number","in":"path","description":"El número del pronóstico dentro de la jornada, desde 1. Donde la peña solo admite uno, es el 1.","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ForecastResponse"}}}}}}},"/v1/solo/auto-play/seasons/{season}/rounds/{round}/run":{"post":{"tags":["Tu juego automático"],"summary":"Ejecutar ahora","description":"Rellena y confirma tu pronóstico de esta jornada con la plantilla asignada en este momento, sin esperar a la ejecución programada. `filled` indica si se reescribió algo.","operationId":"runAutoPlay","parameters":[{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RunResponse"}}}}}}},"/v1/solo/auto-play/seasons/{season}/rounds/{round}/manual":{"post":{"tags":["Tu juego automático"],"summary":"Tomar el control de la jornada","description":"La plantilla deja de rellenar tu pronóstico de esta jornada: lo que hay se queda como está para que lo edites.","operationId":"takeOver","parameters":[{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"204":{"description":"No Content"}}}},"/v1/solo/auto-play/seasons/{season}/rounds/{round}/automatic":{"post":{"tags":["Tu juego automático"],"summary":"Devolver la jornada a la plantilla","description":"Deja que la plantilla asignada juegue esta jornada aunque la hayas editado a mano. Solo mientras tu pronóstico no esté confirmado.","operationId":"handOver","parameters":[{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RunResponse"}}}}}}},"/v1/communities":{"get":{"tags":["Peñas"],"summary":"Tus peñas","description":"Las peñas de las que eres socio, con tu papel en cada una. Lo que juegas por tu cuenta no es una peña: está en `/v1/solo`.","operationId":"myCommunities","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CommunityResponse"}}}}}}}},"/v1/communities/{slug}/seasons/{season}/rounds/{round}/forecast/{number}/unconfirm":{"post":{"tags":["Pronósticos"],"summary":"Deshacer la confirmación","description":"Deja el pronóstico sin confirmar mientras el plazo siga abierto y devuelve el importe cobrado. Se puede editar y volver a confirmar, lo que vuelve a cobrar.","operationId":"unconfirm_1","parameters":[{"name":"slug","in":"path","description":"La peña, por su dirección: `bar-manolo`. Tu peña personal tiene la suya, en `/v1/communities/personal`.","required":true,"schema":{"type":"string"}},{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"number","in":"path","description":"El número del pronóstico dentro de la jornada, desde 1. Donde la peña solo admite uno, es el 1.","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ForecastResponse"}}}}}}},"/v1/communities/{slug}/seasons/{season}/rounds/{round}/forecast/{number}/fill":{"post":{"tags":["Pronósticos"],"summary":"Proponer una columna","description":"Lo que una plantilla de 1X2 marcaría en una columna de este pronóstico. Es una propuesta: no guarda nada. Evita repetir las columnas confirmadas de la peña y las demás columnas guardadas de este pronóstico; si no queda ninguna columna nueva, `marks` es nulo.","operationId":"fill_1","parameters":[{"name":"slug","in":"path","description":"La peña, por su dirección: `bar-manolo`. Tu peña personal tiene la suya, en `/v1/communities/personal`.","required":true,"schema":{"type":"string"}},{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"number","in":"path","description":"El número del pronóstico dentro de la jornada, desde 1. Donde la peña solo admite uno, es el 1.","required":true,"schema":{"type":"integer","format":"int32","minimum":1}},{"name":"templateId","in":"query","description":"El identificador de la plantilla con la que rellenar. Tiene que ser del tipo de la ruta, y puede ser tuya o compartida contigo.","required":true,"schema":{"type":"string"}},{"name":"column","in":"query","description":"Qué columna del pronóstico se sustituye, desde 1. Esa columna no cuenta como repetida.","required":false,"schema":{"type":"integer","format":"int32","default":1,"minimum":1}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/FillResponse"}}}}}}},"/v1/communities/{slug}/seasons/{season}/rounds/{round}/forecast/{number}/fill-quiniela":{"post":{"tags":["Pronósticos"],"summary":"Proponer el pronóstico completo","description":"Las columnas y el pleno que una plantilla de quiniela propondría para este pronóstico. Es una propuesta: no guarda nada. Las columnas salen distintas entre sí y de las ya confirmadas en la peña.","operationId":"fillQuiniela_1","parameters":[{"name":"slug","in":"path","description":"La peña, por su dirección: `bar-manolo`. Tu peña personal tiene la suya, en `/v1/communities/personal`.","required":true,"schema":{"type":"string"}},{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"number","in":"path","description":"El número del pronóstico dentro de la jornada, desde 1. Donde la peña solo admite uno, es el 1.","required":true,"schema":{"type":"integer","format":"int32","minimum":1}},{"name":"templateId","in":"query","description":"El identificador de la plantilla con la que rellenar. Tiene que ser del tipo de la ruta, y puede ser tuya o compartida contigo.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/QuinielaFillResponse"}}}}}}},"/v1/communities/{slug}/seasons/{season}/rounds/{round}/forecast/{number}/fill-match15":{"post":{"tags":["Pronósticos"],"summary":"Proponer el pleno al 15","description":"Lo que una plantilla de pleno marcaría en el pleno al 15 de este pronóstico. Es una propuesta: no guarda nada. Responde `204` si la jornada no tiene pleno.","operationId":"fillMatch15_1","parameters":[{"name":"slug","in":"path","description":"La peña, por su dirección: `bar-manolo`. Tu peña personal tiene la suya, en `/v1/communities/personal`.","required":true,"schema":{"type":"string"}},{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"number","in":"path","description":"El número del pronóstico dentro de la jornada, desde 1. Donde la peña solo admite uno, es el 1.","required":true,"schema":{"type":"integer","format":"int32","minimum":1}},{"name":"templateId","in":"query","description":"El identificador de la plantilla con la que rellenar. Tiene que ser del tipo de la ruta, y puede ser tuya o compartida contigo.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Match15FillResponse"}}}}}}},"/v1/communities/{slug}/seasons/{season}/rounds/{round}/forecast/{number}/confirm":{"post":{"tags":["Pronósticos"],"summary":"Confirmar","description":"Confirma el pronóstico tal como está guardado, lo que cobra sus columnas del saldo. Equivale a guardarlo con `confirm: true` sin cambiar nada.","operationId":"confirm_1","parameters":[{"name":"slug","in":"path","description":"La peña, por su dirección: `bar-manolo`. Tu peña personal tiene la suya, en `/v1/communities/personal`.","required":true,"schema":{"type":"string"}},{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"number","in":"path","description":"El número del pronóstico dentro de la jornada, desde 1. Donde la peña solo admite uno, es el 1.","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ForecastResponse"}}}}}}},"/v1/communities/{slug}/auto-play/seasons/{season}/rounds/{round}/run":{"post":{"tags":["Juego automático"],"summary":"Ejecutar ahora","description":"Rellena y confirma tu pronóstico de esta jornada con la plantilla asignada en este momento, sin esperar a la ejecución programada. No hace nada si has tomado el control de la jornada o si el plazo ha cerrado; `filled` indica si se reescribió algo.","operationId":"runNow","parameters":[{"name":"slug","in":"path","description":"La peña, por su dirección: `bar-manolo`. Tu peña personal tiene la suya, en `/v1/communities/personal`.","required":true,"schema":{"type":"string"}},{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RunResponse"}}}}}}},"/v1/communities/{slug}/auto-play/seasons/{season}/rounds/{round}/manual":{"post":{"tags":["Juego automático"],"summary":"Tomar el control de la jornada","description":"La plantilla deja de rellenar tu pronóstico de esta jornada: lo que hay se queda como está para que lo edites. Guardar un pronóstico tiene el mismo efecto.","operationId":"takeOver_1","parameters":[{"name":"slug","in":"path","description":"La peña, por su dirección: `bar-manolo`. Tu peña personal tiene la suya, en `/v1/communities/personal`.","required":true,"schema":{"type":"string"}},{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"204":{"description":"No Content"}}}},"/v1/communities/{slug}/auto-play/seasons/{season}/rounds/{round}/automatic":{"post":{"tags":["Juego automático"],"summary":"Devolver la jornada a la plantilla","description":"Deja que la plantilla asignada juegue esta jornada aunque la hayas editado a mano. Solo es posible mientras tu pronóstico no esté confirmado.","operationId":"handOver_1","parameters":[{"name":"slug","in":"path","description":"La peña, por su dirección: `bar-manolo`. Tu peña personal tiene la suya, en `/v1/communities/personal`.","required":true,"schema":{"type":"string"}},{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RunResponse"}}}}}}},"/v1/me":{"get":{"tags":["Perfil"],"summary":"Quién soy","description":"La cuenta a la que pertenece la API key: identificador, usuario, nombre y correo. Sirve para comprobar que la key funciona.","operationId":"me","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}}}}},"/v1/communities/{slug}":{"get":{"tags":["Peñas"],"summary":"Una peña","description":"La ficha de una peña: nombre, descripción, reglas de juego y reparto, y tu papel en ella (`role`), que es `NOT_MEMBER` si no eres socio.","operationId":"get_1","parameters":[{"name":"slug","in":"path","description":"La peña, por su dirección: `bar-manolo`. Tu peña personal tiene la suya, en `/v1/communities/personal`.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CommunityResponse"}}}}}}},"/v1/templates":{"get":{"tags":["Plantillas"],"summary":"Tus plantillas","description":"Todas tus plantillas, de los tres tipos, con su tipo, su nombre y si están completas.","operationId":"mine_1","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TemplateSummaryResponse"}}}}}}}},"/v1/templates/shared":{"get":{"tags":["Plantillas"],"summary":"Plantillas que te comparten","description":"Las plantillas de la gente a la que sigues, de los tres tipos, que compartan contigo. Se pueden usar para rellenar una columna o un pleno y para el juego automático de una peña, igual que las tuyas, y sus reglas se leen en la ruta de su tipo. Editarlas y borrarlas sigue siendo cosa de su dueño.","operationId":"shared","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TemplateSummaryResponse"}}}}}}}},"/v1/templates/quiniela/{id}/usage":{"get":{"tags":["Plantillas"],"summary":"Dónde se usa una plantilla de quiniela","description":"En qué peñas está asignada al juego automático.","operationId":"quinielaUsage","parameters":[{"name":"id","in":"path","description":"El identificador de la plantilla.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TemplateUsageResponse"}}}}}}},"/v1/templates/match15/{id}/usage":{"get":{"tags":["Plantillas"],"summary":"Dónde se usa una plantilla de pleno","description":"Qué plantillas de quiniela la usan y en qué peñas se juegan.","operationId":"match15Usage","parameters":[{"name":"id","in":"path","description":"El identificador de la plantilla.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TemplateUsageResponse"}}}}}}},"/v1/templates/1x2/{id}/usage":{"get":{"tags":["Plantillas"],"summary":"Dónde se usa una plantilla de 1X2","description":"Qué plantillas de quiniela la usan y en qué peñas se juegan. Conviene consultarlo antes de borrarla: esas plantillas se quedarán con un hueco.","operationId":"signsUsage","parameters":[{"name":"id","in":"path","description":"El identificador de la plantilla.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TemplateUsageResponse"}}}}}}},"/v1/teams":{"get":{"tags":["Equipos"],"summary":"Buscar equipos","description":"Busca equipos por su nombre, sin distinguir mayúsculas ni acentos, con un mínimo de dos letras y hasta veinte resultados. Salen primero los que juegan alguna competición esta temporada. El `id` de cada equipo es el que usan las reglas de las plantillas.","operationId":"search","parameters":[{"name":"q","in":"query","description":"Lo que se busca: dos letras como mínimo. No distingue mayúsculas, acentos ni la marca «(F)».","required":true,"schema":{"type":"string","maxLength":60,"minLength":2}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Team"}}}}}}}},"/v1/solo/seasons":{"get":{"tags":["Tus jornadas"],"summary":"Tus temporadas","description":"Las temporadas en las que has jugado alguna jornada por tu cuenta, por el año en que empiezan.","operationId":"seasons","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SeasonResponse"}}}}}}}},"/v1/solo/seasons/{season}/rounds":{"get":{"tags":["Tus jornadas"],"summary":"Jornadas de una temporada","description":"Las jornadas de una temporada, igual que el listado general pero limitado a ella. Paginado.","operationId":"roundsOfSeason","parameters":[{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"played","in":"query","description":"Solo las jornadas que la peña juega (`true`, por defecto) o todas, incluidas las que no jugó (`false`).","required":false,"schema":{"type":"boolean","default":true}},{"name":"page","in":"query","description":"Qué página, **empezando en 0**.","schema":{"type":"integer","default":0,"minimum":0}},{"name":"size","in":"query","description":"Cuántos por página: 20 si no se dice, 100 como mucho.","schema":{"type":"integer","default":20,"maximum":100,"minimum":1}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PagedResponseRoundSummaryResponse"}}}}}}},"/v1/solo/seasons/{season}/rounds/{round}":{"get":{"tags":["Tus jornadas"],"summary":"Una jornada","description":"Lo que una jornada es para ti: si la juegas, en qué fase está, el mínimo de columnas de cada pronóstico y si todavía se puede pronosticar. Los partidos están en la jornada (`/v1/seasons/{season}/rounds/{round}`).","operationId":"round","parameters":[{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RoundSummaryResponse"}}}}}}},"/v1/solo/seasons/{season}/rounds/{round}/formalization":{"get":{"tags":["Lo que juegas"],"summary":"Lo que juegas","description":"Las columnas que juegas de verdad en esta jornada, una vez cerrado el plazo: cada una con sus catorce marcas, su pleno y, tras puntuar la jornada, sus aciertos.","operationId":"formalization","parameters":[{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/FormalizationResponse"}}}}}}},"/v1/solo/seasons/{season}/rounds/{round}/forecast/all":{"get":{"tags":["Tus pronósticos"],"summary":"Tus pronósticos","description":"Todos tus pronósticos de esta jornada, por número.","operationId":"forecasts","parameters":[{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ForecastResponse"}}}}}}}},"/v1/solo/rounds":{"get":{"tags":["Tus jornadas"],"summary":"Tus jornadas","description":"Las jornadas, de la más reciente a la más antigua: si la juegas, en qué fase está y si todavía se puede pronosticar. Por defecto solo las que has jugado. Paginado.","operationId":"rounds","parameters":[{"name":"played","in":"query","description":"Solo las jornadas que la peña juega (`true`, por defecto) o todas, incluidas las que no jugó (`false`).","required":false,"schema":{"type":"boolean","default":true}},{"name":"page","in":"query","description":"Qué página, **empezando en 0**.","schema":{"type":"integer","default":0,"minimum":0}},{"name":"size","in":"query","description":"Cuántos por página: 20 si no se dice, 100 como mucho.","schema":{"type":"integer","default":20,"maximum":100,"minimum":1}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PagedResponseRoundSummaryResponse"}}}}}}},"/v1/solo/auto-play/options":{"get":{"tags":["Tu juego automático"],"summary":"Plantillas que se pueden asignar","description":"Tus plantillas de quiniela y, para las que no se pueden usar, el motivo (`problem`).","operationId":"autoPlayOptions","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AutoPlayOptionResponse"}}}}}}}},"/v1/seasons/{season}/rounds/{round}":{"get":{"tags":["Jornadas"],"summary":"Una jornada","description":"Una jornada de la quiniela, igual para todas las peñas: sus fechas, su fase, los catorce partidos con el signo de cada uno, el pleno al 15 con sus casillas y, tras el escrutinio, lo que pagó cada categoría. No incluye el marcador de los partidos.","operationId":"get_2","parameters":[{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RoundResponse"}}}}}}},"/v1/seasons/{season}/rounds/{round}/distribution":{"get":{"tags":["Jornadas"],"summary":"Lo que se juega fuera de tu peña","description":"Qué parte de las quinielas va a cada signo en cada partido: en toda España (`country`) y en todo Tutiplay (`tutiplay`). Cada uno es nulo mientras no haya datos.","operationId":"distribution","parameters":[{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RoundDistributionResponse"}}}}}}},"/v1/football/competitions":{"get":{"tags":["Competiciones"],"summary":"Competiciones","description":"Todas las competiciones de las que hay datos: ligas, copas y torneos de selecciones. Cuenta para los límites de uso.","operationId":"competitions","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CompetitionResponse"}}}}}}}},"/v1/football/competitions/{competition}":{"get":{"tags":["Competiciones"],"summary":"Una competición","description":"Una competición y las temporadas en las que se ha jugado, por el año en que empiezan. Cuenta para los límites de uso.","operationId":"competition","parameters":[{"name":"competition","in":"path","description":"La competición, por su identificador: `laliga-ea-sports`.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CompetitionDetailResponse"}}}}}}},"/v1/football/competitions/{competition}/seasons/{season}":{"get":{"tags":["Temporadas de una competición"],"summary":"Una competición en una temporada","description":"Los equipos que juegan la competición esa temporada y sus jornadas de las que hay datos. Responde `404` si no se jugó esa temporada. Cuenta para los límites de uso.","operationId":"season","parameters":[{"name":"competition","in":"path","description":"La competición, por su identificador: `laliga-ea-sports`.","required":true,"schema":{"type":"string"}},{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CompetitionSeasonResponse"}}}}}}},"/v1/football/competitions/{competition}/seasons/{season}/rounds/{round}":{"get":{"tags":["Jornadas de una competición"],"summary":"Una jornada de una competición","description":"Una jornada de la competición, que no es una jornada de la quiniela: sus partidos con el marcador y la clasificación tal como quedó tras ella. Una jornada que no se ha jugado tiene sus partidos y la clasificación vacía. Cuenta para los límites de uso.","operationId":"round_1","parameters":[{"name":"competition","in":"path","description":"La competición, por su identificador: `laliga-ea-sports`.","required":true,"schema":{"type":"string"}},{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la competición, por su número: la suya, no la de la quiniela.","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CompetitionRoundResponse"}}}}}}},"/v1/communities/{slug}/seasons":{"get":{"tags":["Jornadas de una peña"],"summary":"Temporadas de la peña","description":"Las temporadas en las que la peña ha jugado alguna jornada, por el año en que empiezan. Son las que se pueden pedir en `/seasons/{season}/rounds`.","operationId":"seasons_1","parameters":[{"name":"slug","in":"path","description":"La peña, por su dirección: `bar-manolo`. Tu peña personal tiene la suya, en `/v1/communities/personal`.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SeasonResponse"}}}}}}}},"/v1/communities/{slug}/seasons/{season}/rounds":{"get":{"tags":["Jornadas de una peña"],"summary":"Jornadas de una temporada","description":"Las jornadas de una temporada vistas desde la peña, igual que el listado general pero limitado a esa temporada. Paginado.","operationId":"listOfSeason","parameters":[{"name":"slug","in":"path","description":"La peña, por su dirección: `bar-manolo`. Tu peña personal tiene la suya, en `/v1/communities/personal`.","required":true,"schema":{"type":"string"}},{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"played","in":"query","description":"Solo las jornadas que la peña juega (`true`, por defecto) o todas, incluidas las que no jugó (`false`).","required":false,"schema":{"type":"boolean","default":true}},{"name":"page","in":"query","description":"Qué página, **empezando en 0**.","schema":{"type":"integer","default":0,"minimum":0}},{"name":"size","in":"query","description":"Cuántos por página: 20 si no se dice, 100 como mucho.","schema":{"type":"integer","default":20,"maximum":100,"minimum":1}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PagedResponseRoundSummaryResponse"}}}}}}},"/v1/communities/{slug}/seasons/{season}/rounds/{round}":{"get":{"tags":["Jornadas de una peña"],"summary":"Una jornada en la peña","description":"Lo que una jornada es para la peña: si la juega, en qué fase está, sus reglas, el mínimo de columnas y cuántos pronósticos hay confirmados. Responde `404` si la peña no la juega. Los partidos están en la jornada (`/v1/seasons/{season}/rounds/{round}`).","operationId":"get_3","parameters":[{"name":"slug","in":"path","description":"La peña, por su dirección: `bar-manolo`. Tu peña personal tiene la suya, en `/v1/communities/personal`.","required":true,"schema":{"type":"string"}},{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RoundSummaryResponse"}}}}}}},"/v1/communities/{slug}/seasons/{season}/rounds/{round}/formalization":{"get":{"tags":["Formalización"],"summary":"Lo que juega la peña","description":"Las columnas que la peña juega de verdad en esta jornada, una vez cerrado el plazo: cada una con sus catorce marcas, el pleno con el que se juega y, tras puntuar la jornada, sus aciertos.","operationId":"get_4","parameters":[{"name":"slug","in":"path","description":"La peña, por su dirección: `bar-manolo`. Tu peña personal tiene la suya, en `/v1/communities/personal`.","required":true,"schema":{"type":"string"}},{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/FormalizationResponse"}}}}}}},"/v1/communities/{slug}/seasons/{season}/rounds/{round}/forecasts":{"get":{"tags":["Jornadas de una peña"],"summary":"Pronósticos de la peña","description":"Los pronósticos confirmados de todos los socios en esta jornada, con sus columnas y su pleno al 15. Los no confirmados no aparecen.","operationId":"forecasts_1","parameters":[{"name":"slug","in":"path","description":"La peña, por su dirección: `bar-manolo`. Tu peña personal tiene la suya, en `/v1/communities/personal`.","required":true,"schema":{"type":"string"}},{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MemberForecastResponse"}}}}}}}},"/v1/communities/{slug}/seasons/{season}/rounds/{round}/forecast/all":{"get":{"tags":["Pronósticos"],"summary":"Tus pronósticos","description":"Todos tus pronósticos de esta jornada en la peña, por número. Donde la peña solo admite uno, la lista tiene como mucho el 1.","operationId":"mine_2","parameters":[{"name":"slug","in":"path","description":"La peña, por su dirección: `bar-manolo`. Tu peña personal tiene la suya, en `/v1/communities/personal`.","required":true,"schema":{"type":"string"}},{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ForecastResponse"}}}}}}}},"/v1/communities/{slug}/seasons/{season}/rounds/{round}/distribution":{"get":{"tags":["Jornadas de una peña"],"summary":"Lo que juega la peña","description":"Qué parte de las columnas confirmadas de la peña va a cada signo en cada partido, y a cada casilla en el pleno al 15. Con `forecasts: 0` todavía no hay nada confirmado.","operationId":"distribution_1","parameters":[{"name":"slug","in":"path","description":"La peña, por su dirección: `bar-manolo`. Tu peña personal tiene la suya, en `/v1/communities/personal`.","required":true,"schema":{"type":"string"}},{"name":"season","in":"path","description":"La temporada, por el año en que empieza: `2026` es la 2026/2027.","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"round","in":"path","description":"La jornada de la quiniela, por su número dentro de la temporada.","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CommunityShares"}}}}}}},"/v1/communities/{slug}/rounds":{"get":{"tags":["Jornadas de una peña"],"summary":"Últimas jornadas de la peña","description":"Las jornadas vistas desde la peña, de la más reciente a la más antigua y de todas las temporadas: si la juega, en qué fase está, con qué reglas y si todavía se puede pronosticar. Por defecto solo las que la peña juega. Paginado.","operationId":"list","parameters":[{"name":"slug","in":"path","description":"La peña, por su dirección: `bar-manolo`. Tu peña personal tiene la suya, en `/v1/communities/personal`.","required":true,"schema":{"type":"string"}},{"name":"played","in":"query","description":"Solo las jornadas que la peña juega (`true`, por defecto) o todas, incluidas las que no jugó (`false`).","required":false,"schema":{"type":"boolean","default":true}},{"name":"page","in":"query","description":"Qué página, **empezando en 0**.","schema":{"type":"integer","default":0,"minimum":0}},{"name":"size","in":"query","description":"Cuántos por página: 20 si no se dice, 100 como mucho.","schema":{"type":"integer","default":20,"maximum":100,"minimum":1}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PagedResponseRoundSummaryResponse"}}}}}}},"/v1/communities/{slug}/auto-play/options":{"get":{"tags":["Juego automático"],"summary":"Plantillas que se pueden asignar","description":"Tus plantillas de quiniela vistas desde esta peña: cuáles se pueden usar en ella y, para las que no, el motivo (`problem`), por ejemplo que tienen menos columnas de las que exige la peña.","operationId":"options","parameters":[{"name":"slug","in":"path","description":"La peña, por su dirección: `bar-manolo`. Tu peña personal tiene la suya, en `/v1/communities/personal`.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AutoPlayOptionResponse"}}}}}}}},"/v1/balance":{"get":{"tags":["Saldo"],"summary":"Tu saldo","description":"El saldo disponible en tu cuenta, en euros. Conviene consultarlo antes de confirmar un pronóstico: si no alcanza, la confirmación responde `402` con `INSUFFICIENT_BALANCE`.","operationId":"balance","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/BalanceResponse"}}}}}}},"/v1/balance/transactions":{"get":{"tags":["Saldo"],"summary":"Movimientos de tu saldo","description":"Los movimientos de tu cuenta, del más reciente al más antiguo: ingresos, columnas cobradas, devoluciones y premios. Cada uno indica, cuando corresponde, la peña y la jornada a la que se refiere. Paginado.","operationId":"transactions","parameters":[{"name":"page","in":"query","description":"Qué página, **empezando en 0**.","schema":{"type":"integer","default":0,"minimum":0}},{"name":"size","in":"query","description":"Cuántos por página: 20 si no se dice, 100 como mucho.","schema":{"type":"integer","default":20,"maximum":100,"minimum":1}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PagedResponseTransactionResponse"}}}}}}}},"components":{"schemas":{"QuinielaForecastRequest":{"type":"object","description":"Un pronóstico.","properties":{"columns":{"type":"array","description":"Una plantilla de 1X2 por columna, en orden, por su id.","items":{"type":"string"},"maxItems":50,"minItems":1},"match15":{"type":"string","description":"La plantilla de pleno que decide su pleno, por su id."}},"required":["columns","match15"]},"QuinielaTemplateRequest":{"type":"object","description":"Una plantilla de quiniela: qué se juega entero, hecha con las otras dos.","properties":{"name":{"type":"string","example":"La buena","maxLength":60,"minLength":0},"forecasts":{"type":"array","description":"Sus pronósticos: cada uno es un pleno con sus columnas.","items":{"$ref":"#/components/schemas/QuinielaForecastRequest"},"maxItems":20,"minItems":1},"visibility":{"type":"string","description":"Con quién se comparte: `COMMUNITY` (nadie), `FOLLOWERS` (de salida) o `PUBLIC`. Ausente la deja como estaba.","example":"FOLLOWERS"}},"required":["forecasts","name"]},"QuinielaForecast":{"type":"object","description":"Un pronóstico: su pleno y sus columnas.","properties":{"number":{"type":"integer","format":"int32","description":"Su número, desde 1.","example":1},"columns":{"type":"array","description":"Una por columna, en orden. Nula es un hueco.","items":{"$ref":"#/components/schemas/TemplateRef"}},"match15":{"$ref":"#/components/schemas/TemplateRef","description":"La que decide su pleno. Nula es un hueco."}}},"QuinielaTemplateResponse":{"type":"object","description":"Una plantilla de quiniela.","properties":{"id":{"type":"string","example":"b21d…"},"name":{"type":"string","example":"La buena"},"forecasts":{"type":"array","description":"Sus pronósticos.","items":{"$ref":"#/components/schemas/QuinielaForecast"}},"columns":{"type":"integer","format":"int32","description":"Cuántas columnas juega en total, que es lo que cuenta el límite de una peña.","example":4},"complete":{"type":"boolean","description":"Si se puede jugar tal como está. Solo deja de estarlo por un borrado: queda un hueco a nulo donde iba la plantilla borrada.","example":true},"visibility":{"type":"string","description":"Con quién la compartes: `COMMUNITY` (nadie), `FOLLOWERS` o `PUBLIC`. **Solo en las tuyas**.","example":"FOLLOWERS"},"owner":{"type":"string","description":"De quién es. Siempre: en las tuyas eres tú.","example":"lauragm"},"ownerName":{"type":"string","description":"Y cómo se llama.","example":"Laura García"}}},"TemplateRef":{"type":"object","description":"Una plantilla nombrada desde otra.","properties":{"id":{"type":"string"},"name":{"type":"string","example":"La bética"}}},"TemplateVisibilityRequest":{"type":"object","description":"Con quién se comparte una plantilla.","properties":{"visibility":{"type":"string","description":"`COMMUNITY` (nadie), `FOLLOWERS` o `PUBLIC`.","example":"FOLLOWERS","minLength":1}},"required":["visibility"]},"Match15Chance":{"type":"object","description":"Cómo cae el azar en el pleno: cuatro cubos por lado, tirados por separado.","properties":{"local":{"$ref":"#/components/schemas/Match15ChanceBoxes","description":"El reparto de los goles del local."},"visitor":{"$ref":"#/components/schemas/Match15ChanceBoxes","description":"El del visitante."}}},"Match15ChanceBoxes":{"type":"object","description":"Los cuatro cubos de un lado, sobre 100.","properties":{"zero":{"type":"integer","format":"int32","description":"0 goles.","example":25},"one":{"type":"integer","format":"int32","description":"1 gol.","example":35},"two":{"type":"integer","format":"int32","description":"2 goles.","example":25},"many":{"type":"integer","format":"int32","description":"3 o más (la M del boleto).","example":15}}},"Match15Otherwise":{"type":"object","description":"El cajón final: el pleno cuando no casa ninguna regla.","properties":{"source":{"type":"string","description":"De dónde sale el pleno: `FIXED` (los dos cubos, dichos en `local` y `visitor`), `SUBJECT_WINS_BY`, `HOME_WINS_BY` o `AWAY_WINS_BY` (gana por `margin` goles), `DRAW_AT` (empatan a `margin`), `COMMUNITY_MAJORITY`, `TUTIPLAY_MAJORITY`, `COUNTRY_MAJORITY` o `RANDOM`.","example":"RANDOM"},"local":{"type":"string","description":"Con `FIXED`, el cubo: `ZERO`, `ONE`, `TWO` o `MANY` (3 o más)."},"visitor":{"type":"string","description":"Con `FIXED`, el cubo: `ZERO`, `ONE`, `TWO` o `MANY` (3 o más)."},"margin":{"type":"integer","format":"int32","description":"Los goles de `…_WINS_BY` y `DRAW_AT`."},"chance":{"$ref":"#/components/schemas/Match15Chance","description":"Con `RANDOM`, cómo caen los dados."}}},"Match15RuleRequest":{"type":"object","description":"Una regla: cuándo y entonces qué pleno.","properties":{"team":{"type":"string","description":"El equipo del que habla la regla, por su código (`betis`; lo da `GET /v1/teams?q=`). Nulo es «cualquier partido».","example":"betis"},"where":{"type":"string","description":"Dónde juega ese equipo: `ANYWHERE`, `HOME` o `AWAY`.","example":"ANYWHERE"},"standing":{"type":"string","description":"Cómo va su rival en la tabla: `ANY`, `OPPONENT_HIGHER` (va mejor) u `OPPONENT_LOWER`. Necesita un equipo del que ser rival.","example":"ANY"},"gap":{"type":"string","description":"La distancia en puntos entre los dos: `ANY`, `CLOSER` (menos de `points`) o `FURTHER` (más). No necesita equipo.","example":"ANY"},"points":{"type":"integer","format":"int32","description":"Los puntos contra los que se compara `gap`. Nulo sin esa cláusula; cero es ir empatados."},"source":{"type":"string","description":"De dónde sale el pleno: `FIXED` (los dos cubos, dichos en `local` y `visitor`), `SUBJECT_WINS_BY`, `HOME_WINS_BY` o `AWAY_WINS_BY` (gana por `margin` goles), `DRAW_AT` (empatan a `margin`), `COMMUNITY_MAJORITY`, `TUTIPLAY_MAJORITY`, `COUNTRY_MAJORITY` o `RANDOM`.","example":"FIXED"},"local":{"type":"string","description":"Con `FIXED`, el cubo: `ZERO`, `ONE`, `TWO` o `MANY` (3 o más).","example":"ONE"},"visitor":{"type":"string","description":"Con `FIXED`, el cubo: `ZERO`, `ONE`, `TWO` o `MANY` (3 o más).","example":"ZERO"},"margin":{"type":"integer","format":"int32","description":"Los goles de `…_WINS_BY` y `DRAW_AT`."},"chance":{"$ref":"#/components/schemas/Match15Chance","description":"Con `RANDOM`, cómo caen los dados."}}},"Match15TemplateRequest":{"type":"object","description":"Una plantilla de pleno al 15: qué marcador va en el quince.","properties":{"name":{"type":"string","example":"Poca cosa","maxLength":60,"minLength":0},"rules":{"type":"array","description":"Sus reglas, en orden: gana la primera que casa.","items":{"$ref":"#/components/schemas/Match15RuleRequest"},"maxItems":50,"minItems":0},"otherwise":{"$ref":"#/components/schemas/Match15Otherwise","description":"El pleno cuando no casa ninguna."},"visibility":{"type":"string","description":"Con quién se comparte: `COMMUNITY` (nadie), `FOLLOWERS` (de salida) o `PUBLIC`. Ausente la deja como estaba.","example":"FOLLOWERS"}},"required":["name","otherwise","rules"]},"Match15RuleResponse":{"type":"object","description":"Una regla guardada.","properties":{"position":{"type":"integer","format":"int32","description":"Su sitio en la lista, desde 1.","example":1},"team":{"$ref":"#/components/schemas/TeamRef","description":"El equipo del que habla la regla. Nulo es «cualquier partido»."},"where":{"type":"string","description":"Dónde juega ese equipo: `ANYWHERE`, `HOME` o `AWAY`.","example":"ANYWHERE"},"standing":{"type":"string","description":"Cómo va su rival en la tabla: `ANY`, `OPPONENT_HIGHER` (va mejor) u `OPPONENT_LOWER`. Necesita un equipo del que ser rival.","example":"ANY"},"gap":{"type":"string","description":"La distancia en puntos entre los dos: `ANY`, `CLOSER` (menos de `points`) o `FURTHER` (más). No necesita equipo.","example":"ANY"},"points":{"type":"integer","format":"int32","description":"Los puntos contra los que se compara `gap`. Nulo sin esa cláusula; cero es ir empatados."},"source":{"type":"string","description":"De dónde sale el pleno: `FIXED` (los dos cubos, dichos en `local` y `visitor`), `SUBJECT_WINS_BY`, `HOME_WINS_BY` o `AWAY_WINS_BY` (gana por `margin` goles), `DRAW_AT` (empatan a `margin`), `COMMUNITY_MAJORITY`, `TUTIPLAY_MAJORITY`, `COUNTRY_MAJORITY` o `RANDOM`.","example":"FIXED"},"local":{"type":"string","description":"Con `FIXED`, el cubo: `ZERO`, `ONE`, `TWO` o `MANY` (3 o más).","example":"ONE"},"visitor":{"type":"string","description":"Con `FIXED`, el cubo: `ZERO`, `ONE`, `TWO` o `MANY` (3 o más).","example":"ZERO"},"margin":{"type":"integer","format":"int32","description":"Los goles de `…_WINS_BY` y `DRAW_AT`."},"chance":{"$ref":"#/components/schemas/Match15Chance","description":"Con `RANDOM`, cómo caen los dados."}}},"Match15TemplateResponse":{"type":"object","description":"Una plantilla de pleno al 15.","properties":{"id":{"type":"string","example":"3a9e…"},"name":{"type":"string","example":"Poca cosa"},"rules":{"type":"array","description":"Sus reglas, en orden: gana la primera que casa.","items":{"$ref":"#/components/schemas/Match15RuleResponse"}},"otherwise":{"$ref":"#/components/schemas/Match15Otherwise","description":"El pleno cuando no casa ninguna."},"canVary":{"type":"boolean","description":"Si dos pronósticos suyos pueden salir con plenos distintos.","example":true},"visibility":{"type":"string","description":"Con quién la compartes: `COMMUNITY` (nadie), `FOLLOWERS` o `PUBLIC`. **Solo en las tuyas**: el nivel al que alguien comparte habla de sus ajustes y no de lo que estás mirando.","example":"FOLLOWERS"},"owner":{"type":"string","description":"De quién es. Siempre: una plantilla ajena sin saber de quién es no se puede elegir, y en las tuyas eres tú.","example":"lauragm"},"ownerName":{"type":"string","description":"Y cómo se llama.","example":"Laura García"}}},"TeamRef":{"type":"object","description":"Un equipo como se dibuja: nombre, nombre corto y escudo.","properties":{"id":{"type":"string","description":"Su identificador: un código estable, que no cambia aunque el equipo cambie de nombre. Es por lo que una regla de plantilla nombra a un equipo.","example":"betis"},"name":{"type":"string","description":"El nombre, sin el «(M)»/«(F)» con el que lo escribe la fuente: eso lo dice `female`.","example":"Real Betis"},"shortName":{"type":"string","description":"Cómo llamarlo cuando no cabe. Nulo es usar `name`.","example":"Betis"},"imageUrl":{"type":"string","description":"La dirección de su escudo, relativa al servidor. Nula es lo normal, y entonces se dibuja el nombre.","example":"/media/team/betis.png"},"female":{"type":"boolean","example":false}}},"Chance":{"type":"object","description":"Cómo cae el azar entre los tres signos, sobre 100. Tienen que sumar 100; nulo es un tercio a cada uno.","properties":{"one":{"type":"integer","format":"int32","description":"La parte del 1.","example":40},"x":{"type":"integer","format":"int32","description":"La parte de la X.","example":30},"two":{"type":"integer","format":"int32","description":"La parte del 2.","example":30}}},"SignRuleRequest":{"type":"object","description":"Una regla: cuándo y entonces qué.","properties":{"team":{"type":"string","description":"El equipo del que habla la regla, por su código (`betis`; lo da `GET /v1/teams?q=`). Nulo es «cualquier partido».","example":"betis"},"where":{"type":"string","description":"Dónde juega ese equipo: `ANYWHERE`, `HOME` o `AWAY`.","example":"HOME"},"standing":{"type":"string","description":"Cómo va su rival en la tabla: `ANY`, `OPPONENT_HIGHER` (va mejor) u `OPPONENT_LOWER`. Necesita un equipo del que ser rival.","example":"ANY"},"gap":{"type":"string","description":"La distancia en puntos entre los dos: `ANY`, `CLOSER` (menos de `points`) o `FURTHER` (más). No necesita equipo.","example":"ANY"},"points":{"type":"integer","format":"int32","description":"Los puntos contra los que se compara `gap`. Nulo sin esa cláusula; cero es ir empatados."},"outcome":{"type":"string","description":"Qué se marca: `SUBJECT_WINS` / `SUBJECT_LOSES` (gana o pierde el equipo de la regla), `HIGHER_WINS` / `HIGHER_LOSES` (gana o pierde el mejor clasificado), `COMMUNITY_MAJORITY`, `TUTIPLAY_MAJORITY` o `COUNTRY_MAJORITY` (lo más jugado en tu peña, en Tutiplay o en España) o `RANDOM`.","example":"SUBJECT_WINS"},"chance":{"$ref":"#/components/schemas/Chance","description":"Con `RANDOM`, cómo caen los dados. Nulo es un tercio a cada signo."}}},"SignsOtherwise":{"type":"object","description":"El cajón final: lo que se marca en los partidos en los que no casa ninguna regla.","properties":{"outcome":{"type":"string","description":"Qué se marca: `SUBJECT_WINS` / `SUBJECT_LOSES` (gana o pierde el equipo de la regla), `HIGHER_WINS` / `HIGHER_LOSES` (gana o pierde el mejor clasificado), `COMMUNITY_MAJORITY`, `TUTIPLAY_MAJORITY` o `COUNTRY_MAJORITY` (lo más jugado en tu peña, en Tutiplay o en España) o `RANDOM`.","example":"RANDOM"},"chance":{"$ref":"#/components/schemas/Chance","description":"Con `RANDOM`, cómo caen los dados. Nulo es un tercio a cada signo."}}},"SignsTemplateRequest":{"type":"object","description":"Una plantilla de 1X2: qué signo va en cada partido.","properties":{"name":{"type":"string","example":"La bética","maxLength":60,"minLength":0},"rules":{"type":"array","description":"Sus reglas, en orden: gana la primera que casa.","items":{"$ref":"#/components/schemas/SignRuleRequest"},"maxItems":50,"minItems":0},"otherwise":{"$ref":"#/components/schemas/SignsOtherwise","description":"Lo que se marca en los partidos en los que no casa ninguna."},"visibility":{"type":"string","description":"Con quién se comparte: `COMMUNITY` (nadie), `FOLLOWERS` (de salida) o `PUBLIC`. Ausente la deja como estaba.","example":"FOLLOWERS"}},"required":["name","otherwise","rules"]},"SignRuleResponse":{"type":"object","description":"Una regla guardada.","properties":{"position":{"type":"integer","format":"int32","description":"Su sitio en la lista, desde 1.","example":1},"team":{"$ref":"#/components/schemas/TeamRef","description":"El equipo del que habla la regla. Nulo es «cualquier partido»."},"where":{"type":"string","description":"Dónde juega ese equipo: `ANYWHERE`, `HOME` o `AWAY`.","example":"HOME"},"standing":{"type":"string","description":"Cómo va su rival en la tabla: `ANY`, `OPPONENT_HIGHER` (va mejor) u `OPPONENT_LOWER`. Necesita un equipo del que ser rival.","example":"ANY"},"gap":{"type":"string","description":"La distancia en puntos entre los dos: `ANY`, `CLOSER` (menos de `points`) o `FURTHER` (más). No necesita equipo.","example":"ANY"},"points":{"type":"integer","format":"int32","description":"Los puntos contra los que se compara `gap`. Nulo sin esa cláusula; cero es ir empatados."},"outcome":{"type":"string","description":"Qué se marca: `SUBJECT_WINS` / `SUBJECT_LOSES` (gana o pierde el equipo de la regla), `HIGHER_WINS` / `HIGHER_LOSES` (gana o pierde el mejor clasificado), `COMMUNITY_MAJORITY`, `TUTIPLAY_MAJORITY` o `COUNTRY_MAJORITY` (lo más jugado en tu peña, en Tutiplay o en España) o `RANDOM`.","example":"SUBJECT_WINS"},"chance":{"$ref":"#/components/schemas/Chance","description":"Con `RANDOM`, cómo caen los dados."}}},"SignsTemplateResponse":{"type":"object","description":"Una plantilla de 1X2.","properties":{"id":{"type":"string","example":"7c1f…"},"name":{"type":"string","example":"La bética"},"rules":{"type":"array","description":"Sus reglas, en orden: gana la primera que casa.","items":{"$ref":"#/components/schemas/SignRuleResponse"}},"otherwise":{"$ref":"#/components/schemas/SignsOtherwise","description":"Lo que se marca donde no casa ninguna."},"canVary":{"type":"boolean","description":"Si dos columnas suyas pueden salir distintas: sin nada al azar saldrían iguales, y repetirla en un pronóstico sería pagar dos veces lo mismo.","example":true},"visibility":{"type":"string","description":"Con quién la compartes: `COMMUNITY` (nadie), `FOLLOWERS` o `PUBLIC`. **Solo en las tuyas**: el nivel al que alguien comparte habla de sus ajustes y no de lo que estás mirando.","example":"FOLLOWERS"},"owner":{"type":"string","description":"De quién es. Siempre: una plantilla ajena sin saber de quién es no se puede elegir, y en las tuyas eres tú.","example":"lauragm"},"ownerName":{"type":"string","description":"Y cómo se llama.","example":"Laura García"}}},"ColumnRequest":{"type":"object","description":"Una columna: sus catorce marcas.","properties":{"number":{"type":"integer","format":"int32","description":"Su número en el pronóstico, desde 1.","example":1,"minimum":1},"picks":{"type":"array","description":"Una marca por partido.","items":{"$ref":"#/components/schemas/PickRequest"}}},"required":["picks"]},"ForecastRequest":{"type":"object","description":"Uno de tus pronósticos tal como lo mandas: sus columnas y el pleno al 15 que comparten. Sustituye entero al que hubiera guardado.","properties":{"columns":{"type":"array","description":"Sus columnas, numeradas desde el 1 y sin huecos.","items":{"$ref":"#/components/schemas/ColumnRequest"}},"match15":{"$ref":"#/components/schemas/Match15PickRequest","description":"Su pleno al 15. Puede faltar mientras se prepara; para confirmar, una casilla por lado."},"confirm":{"type":"boolean","description":"Si además de guardarla se confirma, lo que **cobra del saldo** las columnas que no estuvieran ya pagadas.","example":true}},"required":["columns"]},"Match15PickRequest":{"type":"object","description":"El pleno al 15: una casilla por lado entre 0, 1, 2 y M (tres o más). Lo que no mandes, sin marcar.","properties":{"localZero":{"type":"boolean","example":false},"localOne":{"type":"boolean","example":true},"localTwo":{"type":"boolean","example":false},"localM":{"type":"boolean","description":"El local, tres o más.","example":false},"visitorZero":{"type":"boolean","example":true},"visitorOne":{"type":"boolean","example":false},"visitorTwo":{"type":"boolean","example":false},"visitorM":{"type":"boolean","description":"El visitante, tres o más.","example":false}}},"PickRequest":{"type":"object","description":"Lo que marcas en un partido: uno de los tres signos. Dos a la vez es un múltiple y se rechaza.","properties":{"number":{"type":"integer","format":"int32","description":"El partido, por su número en el boleto: del 1 al 14.","example":3,"maximum":14,"minimum":1},"one":{"type":"boolean","example":true},"x":{"type":"boolean","example":false},"two":{"type":"boolean","example":false}}},"ForecastColumn":{"type":"object","description":"Una columna: sus catorce marcas.","properties":{"number":{"type":"integer","format":"int32","description":"Su número en el pronóstico, desde 1.","example":1},"complete":{"type":"boolean","description":"Si tiene marca en los catorce partidos.","example":true},"picks":{"type":"array","description":"Una marca por partido.","items":{"$ref":"#/components/schemas/ForecastPickResponse"}}}},"ForecastPickResponse":{"type":"object","description":"Lo que marcaste en un partido.","properties":{"number":{"type":"integer","format":"int32","description":"Su número en el boleto, del 1 al 14.","example":1},"one":{"type":"boolean","example":true},"x":{"type":"boolean","example":false},"two":{"type":"boolean","example":false},"hit":{"type":"boolean","description":"Si acertó. **Nulo mientras el partido no tenga signo**, y en un pronóstico sin confirmar.","example":true}}},"ForecastResponse":{"type":"object","description":"Uno de tus pronósticos en una jornada: su pleno al 15 y sus columnas.","properties":{"number":{"type":"integer","format":"int32","description":"Cuál de tus pronósticos de esta jornada es. El primero es el 1.","example":1},"status":{"type":"string","description":"`UNCONFIRMED` mientras se prepara; `CONFIRMED` cuando se juega y se ha cobrado.","example":"CONFIRMED"},"complete":{"type":"boolean","description":"Si se puede jugar: el pleno puesto y las columnas mínimas, todas enteras.","example":true},"confirmationDate":{"type":"string","format":"date-time","description":"Cuándo la confirmaste por primera vez. Nula sin confirmar.","example":"2026-09-18T20:14:00Z"},"auto":{"type":"boolean","description":"Si la lleva una plantilla. Es provisional y se rehace mientras el plazo esté abierto, hasta que la toques tú.","example":false},"autoPlayedBy":{"type":"string","description":"Qué plantilla la lleva, si la lleva una.","example":"La bética"},"columns":{"type":"array","description":"Sus columnas, en orden.","items":{"$ref":"#/components/schemas/ForecastColumn"}},"match15":{"$ref":"#/components/schemas/Match15PickResponse","description":"Su pleno al 15. Nulo si todavía no lo has puesto."},"score":{"type":"integer","format":"int32","description":"Los aciertos con los que puntuó: los de su mejor columna. **Nulo hasta que se puntúa**, al finalizar la jornada, y siempre en una sin confirmar, que no se juega.","example":11},"id":{"type":"string","description":"Su identificador. Es lo que lleva el enlace cuando se comparte.","example":"99af283f-9a91-47ec-9f94-0656e7704b27"},"visibility":{"type":"string","description":"Con quién la compartes. `COMMUNITY` es lo de siempre —la ven los socios de la peña y nadie más—; `FOLLOWERS` la enseña además a quien te siga, y `PUBLIC` a cualquiera. Se copia de tu ajuste al crearla y se puede cambiar en esta sola.","enum":["COMMUNITY","FOLLOWERS","PUBLIC"],"example":"FOLLOWERS"}}},"Match15PickResponse":{"type":"object","description":"Tu pleno al 15: las casillas 0, 1, 2 y M (tres o más) de cada lado.","properties":{"localZero":{"type":"boolean","example":false},"localOne":{"type":"boolean","example":true},"localTwo":{"type":"boolean","example":false},"localM":{"type":"boolean","description":"El local, tres o más.","example":false},"visitorZero":{"type":"boolean","example":true},"visitorOne":{"type":"boolean","example":false},"visitorTwo":{"type":"boolean","example":false},"visitorM":{"type":"boolean","description":"El visitante, tres o más.","example":false},"hit":{"type":"boolean","description":"Si acertó los dos lados. Nulo mientras falte el resultado de alguno, y en un pronóstico sin confirmar.","example":false}}},"AutoPlayRequest":{"type":"object","description":"Qué plantilla de quiniela juega esta peña por ti.","properties":{"templateId":{"type":"string","description":"Su identificador. Tiene que ser de quiniela.","minLength":1}},"required":["templateId"]},"AutoPlayResponse":{"type":"object","description":"La plantilla que juega esta peña por ti.","properties":{"template":{"$ref":"#/components/schemas/QuinielaTemplateResponse","description":"La plantilla, entera."},"problem":{"$ref":"#/components/schemas/TemplateMisfit","description":"Por qué ya no se puede jugar aquí, o nulo si se puede. Una elegida puede romperse después: basta con borrar una de las plantillas que usa."}}},"TemplateMisfit":{"type":"object","description":"Por qué una plantilla de quiniela no se puede jugar en esta peña.","properties":{"reason":{"type":"string","description":"`INCOMPLETE` (le falta una plantilla que se borró), `NO_FORECASTS`, `ONE_FORECAST_PER_MEMBER` (juega varios pronósticos y aquí se juega uno por socio), `TOO_FEW_COLUMNS` (un pronóstico no llega a `minimum`), `TOO_MANY_COLUMNS` (juega `columns` y aquí se permiten `limit`) o `NOT_QUINIELA`.","example":"TOO_MANY_COLUMNS"},"minimum":{"type":"integer","format":"int32","description":"Con `TOO_FEW_COLUMNS`, las columnas que necesita aquí un pronóstico."},"limit":{"type":"integer","format":"int32","description":"Con `TOO_MANY_COLUMNS`, las que permite la peña por socio.","example":2},"columns":{"type":"integer","format":"int32","description":"Con `TOO_MANY_COLUMNS`, las que juega la plantilla.","example":4}}},"FillMark":{"type":"object","description":"Una marca propuesta.","properties":{"number":{"type":"integer","format":"int32","description":"Su número en el boleto, del 1 al 14.","example":1},"sign":{"type":"string","description":"`ONE`, `X` o `TWO`.","example":"ONE"},"rule":{"type":"integer","format":"int32","description":"Qué regla lo puso: 1 es la primera, 0 el cajón final.","example":1}}},"FillResponse":{"type":"object","description":"Lo que una plantilla de 1X2 marcaría en una columna. Una propuesta: no se guarda nada.","properties":{"marks":{"type":"array","description":"Una marca por partido. Nulo si no queda ninguna columna nueva que dar: las que puede dar ya están en tu pronóstico o las juega la peña.","items":{"$ref":"#/components/schemas/FillMark"}},"repeated":{"type":"array","description":"Solo cuando `marks` es nulo: lo que habría marcado si se pudiera repetir. No es para jugar sin más: es la respuesta a «¿y si la quiero igual?».","items":{"$ref":"#/components/schemas/FillMark"}}}},"Match15FillResponse":{"type":"object","description":"Lo que una plantilla de pleno pondría en el quince.","properties":{"local":{"type":"string","description":"El cubo del local: `ZERO`, `ONE`, `TWO` o `MANY`.","example":"TWO"},"visitor":{"type":"string","description":"El del visitante.","example":"ONE"},"rule":{"type":"integer","format":"int32","description":"Qué regla lo puso: 1 es la primera, 0 el cajón final.","example":0}}},"QuinielaFillResponse":{"type":"object","description":"Lo que una plantilla de quiniela jugaría en un pronóstico: sus columnas y su pleno. Una propuesta: no se guarda nada.","properties":{"columns":{"type":"array","description":"Las columnas, en orden, una marca por partido en cada una.","items":{"type":"array","items":{"$ref":"#/components/schemas/FillMark"}}},"match15":{"$ref":"#/components/schemas/Match15FillResponse","description":"El pleno. Nulo si la jornada no tiene quince."},"asked":{"type":"integer","format":"int32","description":"Cuántas columnas tiene ese pronóstico de la plantilla.","example":4},"isShort":{"type":"boolean","description":"Si han salido menos de `asked`: alguna de sus plantillas de 1X2 no tenía ninguna columna nueva que dar, y se juega una menos antes que una repetida.","example":false}}},"RunResponse":{"type":"object","description":"Lo que hizo el juego automático al pedírselo.","properties":{"filled":{"type":"boolean","description":"Si reescribió algo. No lo hace sobre una jornada que ya llevas tú, ni fuera de plazo.","example":true}}},"CommunityResponse":{"type":"object","description":"Una peña: quién es, con qué reglas juega y qué eres tú en ella.","properties":{"slug":{"type":"string","description":"Su dirección: lo que va en la URL. Es como se nombra una peña.","example":"bar-manolo"},"name":{"type":"string","example":"Bar Manolo"},"description":{"type":"string"},"address":{"type":"string","example":"C/ Mayor 12, Sevilla"},"imageUrl":{"type":"string","description":"La dirección de su escudo, relativa al servidor. Nula si no tiene.","example":"/media/community/bar-manolo.png"},"role":{"type":"string","description":"Qué eres tú en ella: `ADMIN`, `MEMBER` o `NOT_MEMBER`.","example":"MEMBER"},"requestedAt":{"type":"string","format":"date-time","description":"Cuándo pediste entrar, si no eres socio y tienes una solicitud sin contestar. Nulo en cualquier otro caso.","example":"2026-09-20T10:00:00Z"},"visibility":{"type":"string","description":"Quién la ve: `PUBLIC` se mira por dentro sin ser socio (jornadas, pronósticos y clasificación, nunca pronosticar), `VISIBLE` sale en las búsquedas, `NO_VISIBLE` solo se encuentra por su nombre exacto o su enlace, `HIDDEN` solo existe para sus socios.","example":"VISIBLE"},"joinPolicy":{"type":"string","description":"Cómo se entra: `REQUEST` (se pide), `OPEN` (se entra sin más) o `INVITE_ONLY`.","example":"REQUEST"},"whoBets":{"type":"string","description":"Quién apuesta: `ANY_USER` o `MEMBERS`.","example":"MEMBERS"},"prizeSplit":{"type":"string","description":"Cómo se reparte el premio: `AMONG_BETTORS`, `AMONG_ALL_MEMBERS`, `WINNER_TAKES_ALL`, `WINNER_SHARE` o `PROPORTIONAL_TO_HITS`.","example":"AMONG_BETTORS"},"winnerShare":{"type":"integer","format":"int32","description":"Con reparto `WINNER_SHARE`, el porcentaje del premio para quien acertó; el resto se reparte entre quienes apostaron. Nulo con cualquier otro reparto.","example":70},"match15Rule":{"type":"string","description":"De quién es el pleno al 15: `VOTED` (lo vota la peña) u `OWN` (cada uno juega el suyo).","example":"VOTED"},"maxColumnsPerMember":{"type":"integer","format":"int32","description":"Cuántas columnas puede jugar cada socio por jornada; 0 es sin límite.","example":2},"multipleForecasts":{"type":"boolean","description":"Si un socio puede tener varios pronósticos en la misma jornada.","example":false},"membersCanInvite":{"type":"boolean","description":"Si cualquier socio puede repartir la invitación de la peña (su enlace y su QR). En una peña oculta invita solo quien la administra, diga lo que diga esto: lo guardado se conserva por si deja de ser oculta.","example":true},"creationDate":{"type":"string","format":"date-time","description":"Cuándo se creó. Solo en la ficha.","example":"2019-08-14T10:00:00Z"},"memberCount":{"type":"integer","format":"int64","description":"Cuántos socios tiene. Solo en la ficha.","example":14},"leaderScore":{"type":"integer","format":"int32","description":"Los puntos del socio que va primero en la temporada `seasonName`: la suma de sus aciertos en todas las jornadas puntuadas. Solo en la ficha, y nulo sin temporada abierta o si todavía no se ha puntuado ninguna.","example":118},"seasonName":{"type":"string","description":"La temporada de `leaderScore`. Nula cuando él lo es.","example":"2026/2027"}}},"UserResponse":{"type":"object","description":"Tu cuenta, vista por ti.","properties":{"username":{"type":"string","example":"ana"},"email":{"type":"string","example":"ana@example.com"},"firstName":{"type":"string","example":"Ana"},"lastName":{"type":"string","example":"García"},"photoUrl":{"type":"string","description":"La dirección de tu foto, relativa al servidor. Nula si no has subido ninguna.","example":"/media/profile/3f2b8c1e.png"},"description":{"type":"string","example":"Del Betis hasta la muerte"}}},"TemplateSummaryResponse":{"type":"object","description":"Una plantilla de cualquier tipo, para listarlas todas juntas.","properties":{"id":{"type":"string"},"kind":{"type":"string","description":"De qué tipo es: `SIGNS` (1X2), `MATCH15` (pleno) o `QUINIELA`.","example":"SIGNS"},"name":{"type":"string","example":"La bética"},"complete":{"type":"boolean","description":"Si se puede jugar tal como está.","example":true},"visibility":{"type":"string","description":"Con quién la compartes: `COMMUNITY` (nadie), `FOLLOWERS` o `PUBLIC`. Solo en las tuyas.","example":"FOLLOWERS"},"owner":{"type":"string","description":"De quién es, cuando no es tuya. Nulo en las tuyas.","example":"lauragm"},"ownerName":{"type":"string","description":"Y cómo se llama.","example":"Laura García"}}},"TemplateUsageCommunity":{"type":"object","description":"Una peña.","properties":{"slug":{"type":"string","description":"La peña.","example":"bar-manolo"},"name":{"type":"string","example":"Bar Manolo"}}},"TemplateUsageResponse":{"type":"object","description":"Qué se lleva por delante borrar una plantilla.","properties":{"quinielas":{"type":"array","description":"Las de quiniela que se quedarían con un hueco donde estaba ésta. Borrarla se puede: el hueco se ve y se tapa eligiendo otra.","items":{"$ref":"#/components/schemas/TemplateRef"}},"communities":{"type":"array","description":"Las peñas que la juegan en automático. Mientras haya alguna no se puede borrar: primero se quita en esas peñas.","items":{"$ref":"#/components/schemas/TemplateUsageCommunity"}},"others":{"type":"integer","format":"int64","description":"Y cuánta otra gente la juega en sus peñas, si la compartes. Eso **no impide** borrarla —no son tus peñas y no puedes apagarlo en ellas, así que un 409 no tendría salida—: sus asignaciones se van con ella y esas peñas dejan de jugar solas. Sin nombres: quién juega con una plantilla tuya no es asunto de nadie.","example":0}}},"Team":{"type":"object","description":"Un equipo, como lo ofrece el buscador del editor de reglas.","properties":{"id":{"type":"string","description":"Su identificador: un código estable, que no cambia aunque el equipo cambie de nombre. Es lo que lleva una regla de plantilla.","example":"betis"},"name":{"type":"string","description":"El nombre guardado, con el «(M)»/«(F)» de la fuente.","example":"Real Madrid (F)"},"displayName":{"type":"string","description":"El nombre para pintar, sin el «(M)»/«(F)»: eso lo dice `female`.","example":"Real Madrid"},"shortName":{"type":"string","description":"Cómo llamarlo cuando no cabe. Nulo es usar `displayName`.","example":"R. Madrid"},"imageUrl":{"type":"string","description":"Su escudo, relativo al servidor. Nulo si no tiene."},"female":{"type":"boolean","example":true},"competitions":{"type":"array","description":"Dónde juega esta temporada.","example":["Liga F"],"items":{"type":"string"}}}},"SeasonResponse":{"type":"object","description":"Una temporada de quiniela, de agosto a mayo.","properties":{"startYear":{"type":"integer","format":"int32","description":"El año en que empieza, que es como se nombra la temporada en las rutas: `/seasons/2026` es la 2026/2027.","example":2026},"endYear":{"type":"integer","format":"int32","example":2027},"displayName":{"type":"string","example":"2026/2027"},"open":{"type":"boolean","description":"Si es la que se está jugando. Solo hay una abierta a la vez.","example":true}}},"PagedResponseRoundSummaryResponse":{"type":"object","description":"Una página de una lista. Se pide con `?page=` (desde 0) y `?size=` (20 si no se dice, 100 como mucho).","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/RoundSummaryResponse"}},"page":{"type":"integer","format":"int32","description":"Qué página es, **empezando en 0**.","example":0},"size":{"type":"integer","format":"int32","description":"El tamaño de página pedido; no cuántos `items` han venido, que en la última pueden ser menos.","example":20},"total":{"type":"integer","format":"int64","example":57},"totalPages":{"type":"integer","format":"int32","example":3}}},"RoundSummaryResponse":{"type":"object","description":"Una jornada vista desde una peña: si la juega, en qué fase va y con qué reglas. Las reglas son las congeladas al entrar la peña, no las de hoy.","properties":{"season":{"type":"integer","format":"int32","description":"La temporada, por el año en que empieza: 2026 es la 2026/2027. Con `number`, es como se nombra la jornada en las rutas.","example":2026},"number":{"type":"integer","format":"int32","description":"Su número dentro de la temporada.","example":7},"seasonName":{"type":"string","example":"2026/2027"},"phase":{"type":"string","description":"Por dónde va para esta peña: `SCHEDULED`, `OPEN`, `FORMALIZING`, `FORMALIZED`, `IN_PLAY`, `SETTLING`, `FINALIZED`, o `NOT_PLAYED` si la peña no la juega.","example":"OPEN"},"openForForecast":{"type":"boolean","description":"Si ahora mismo se puede jugar en esta peña.","example":true},"opensAt":{"type":"string","format":"date-time","description":"Desde cuándo se puede jugar.","example":"2026-09-14T08:00:00Z"},"closesAt":{"type":"string","format":"date-time","description":"Hasta cuándo se puede jugar.","example":"2026-09-20T09:00:00Z"},"finalized":{"type":"boolean","description":"Si ya está puntuada.","example":false},"played":{"type":"boolean","description":"Si la peña la juega. Las que no, salen con `played=false` en el listado y sus reglas a nulo.","example":true},"closedByCommunity":{"type":"boolean","description":"Si la peña se ha salido de ella a propósito, que no es lo mismo que no haber existido todavía.","example":false},"confirmedForecasts":{"type":"integer","format":"int64","description":"Cuántos pronósticos hay ya confirmados en ella en esta peña.","example":12},"whoBets":{"type":"string","description":"Quién apuesta: `ANY_USER` o `MEMBERS`. Nulo si la peña no la juega.","example":"MEMBERS"},"prizeSplit":{"type":"string","description":"Cómo se reparte: `AMONG_BETTORS`, `AMONG_ALL_MEMBERS`, `WINNER_TAKES_ALL`, `WINNER_SHARE` o `PROPORTIONAL_TO_HITS`. Nulo si la peña no la juega.","example":"AMONG_BETTORS"},"winnerShare":{"type":"integer","format":"int32","description":"El porcentaje para el ganador. Solo con `WINNER_SHARE`; nulo con cualquier otro reparto.","example":50},"match15Rule":{"type":"string","description":"De quién es el pleno al 15: `VOTED` (el más votado de la peña) u `OWN` (cada uno el suyo). Nulo si la peña no la juega.","example":"VOTED"},"minimumColumns":{"type":"integer","format":"int32","description":"Las columnas mínimas de cada pronóstico: 2 con `OWN`, 1 con `VOTED`. Nulo si la peña no la juega.","example":1},"maxColumnsPerMember":{"type":"integer","format":"int32","description":"Cuántas columnas puede jugar cada socio en esta jornada; `0` es sin límite. Es el de la peña hoy, no el congelado.","example":4},"multipleForecasts":{"type":"boolean","description":"Si cada socio puede hacer más de un pronóstico, cada uno con su pleno.","example":false}}},"FormalizationResponse":{"type":"object","description":"Lo que ha jugado una peña en una jornada: sus columnas, con sus aciertos.","properties":{"status":{"type":"string","description":"En qué punto está lo jugado de esta jornada en esta peña.","enum":["UNFORMALIZED","FORMALIZED"],"example":"FORMALIZED"},"columns":{"type":"array","description":"Las columnas que esta peña jugó de verdad, con sus aciertos. Es el boleto de la peña.","items":{"$ref":"#/components/schemas/PlayedColumn"}}}},"PlayedColumn":{"type":"object","description":"Una columna jugada: sus catorce marcas, su pleno y sus aciertos.","properties":{"id":{"type":"string","description":"Id de la columna jugada. Estable: una vez jugada se puede citar.","example":"3f2b8c1e-5d4a-4e7b-9c61-0a8d2f4b7e19"},"name":{"type":"string","description":"Cómo se llama en el boleto.","example":"ana · 2"},"username":{"type":"string","example":"ana"},"picks":{"type":"array","description":"Las catorce marcas, una por partido.","items":{"$ref":"#/components/schemas/PlayedPickResponse"}},"match15":{"$ref":"#/components/schemas/PlayedMatch15Response","description":"El pleno al 15 con el que se jugó. Nulo en columnas de antes de que el pleno se guardara."},"hits":{"type":"integer","format":"int32","description":"Sus aciertos: los catorce, y uno más si además acertó el pleno (el «15»). **Nulo hasta que la jornada se puntúa.**","example":11}}},"PlayedMatch15Response":{"type":"object","description":"El pleno al 15: cuatro casillas por lado —0, 1, 2 y M (tres o más)— y se marca una de cada.","properties":{"localZero":{"type":"boolean"},"localOne":{"type":"boolean"},"localTwo":{"type":"boolean"},"localM":{"type":"boolean","description":"El local marca 3 o más."},"visitorZero":{"type":"boolean"},"visitorOne":{"type":"boolean"},"visitorTwo":{"type":"boolean"},"visitorM":{"type":"boolean","description":"El visitante marca 3 o más."},"hit":{"type":"boolean","description":"Si el pleno acertó: los dos lados. Nulo mientras falte el resultado de alguno.","example":false}}},"PlayedPickResponse":{"type":"object","description":"Lo que una columna marcó en un partido.","properties":{"number":{"type":"integer","format":"int32","description":"Su número del 1 al 14, que es como se lee un boleto.","example":4},"one":{"type":"boolean","example":true},"x":{"type":"boolean","example":false},"two":{"type":"boolean","example":false},"hit":{"type":"boolean","description":"Si acertó. **Nulo mientras el partido no tenga signo.**","example":true}}},"AutoPlayOptionResponse":{"type":"object","description":"Una plantilla de quiniela vista desde esta peña: tuya o compartida.","properties":{"id":{"type":"string"},"name":{"type":"string","example":"La buena"},"forecasts":{"type":"integer","format":"int32","description":"Cuántos pronósticos juega.","example":1},"columns":{"type":"integer","format":"int32","description":"Cuántas columnas en total.","example":4},"problem":{"$ref":"#/components/schemas/TemplateMisfit","description":"Por qué no se puede jugar aquí, o nulo si se puede."},"owner":{"type":"string","description":"De quién es, si no es tuya. Nulo en las tuyas: la lista las separa por eso, y hay que poder decir de quién se juega.","example":"lauragm"},"ownerName":{"type":"string","description":"Y cómo se llama.","example":"Laura García"}}},"Match15Response":{"type":"object","description":"El pleno al 15: quién juega, cuándo y la casilla de cada lado con la que cuenta para la quiniela.","properties":{"localTeam":{"$ref":"#/components/schemas/TeamRef"},"visitorTeam":{"$ref":"#/components/schemas/TeamRef"},"startsAt":{"type":"string","format":"date-time","description":"Cuándo empieza. Nulo si la fuente no lo dijo.","example":"2026-09-20T19:00:00Z"},"localResult":{"type":"string","description":"La casilla del local: `ZERO`, `ONE`, `TWO` o `MANY` (tres o más). Nula mientras no la haya.","example":"MANY"},"visitorResult":{"type":"string","description":"La casilla del visitante, con los mismos valores.","example":"ONE"},"status":{"type":"string","description":"`NOT_STARTED`, `IN_PLAY`, `FINISHED` o `POSTPONED`.","example":"FINISHED"},"competition":{"$ref":"#/components/schemas/MatchCompetitionRef","description":"De qué competición es, y de qué jornada suya cuando se sabe. Nulo si no se sabe de cuál."}}},"MatchCompetitionRef":{"type":"object","description":"De qué competición y jornada es un partido de la quiniela.","properties":{"id":{"type":"string","description":"La competición, por su identificador en la API de datos de fútbol.","example":"laliga-ea-sports"},"name":{"type":"string","example":"LaLiga EA Sports"},"shortName":{"type":"string","description":"Cómo llamarla donde no cabe el nombre. Nulo si no tiene.","example":"LaLiga"},"round":{"type":"integer","format":"int32","description":"La jornada de la competición, que no es la de la quiniela. Nula en una competición sin jornadas que leer, como una copa.","example":7}}},"MatchResponse":{"type":"object","description":"Uno de los catorce partidos de la jornada: quién juega, cuándo y el signo con el que cuenta para la quiniela.","properties":{"number":{"type":"integer","format":"int32","description":"Su número en el boleto, del 1 al 14.","example":1},"localTeam":{"$ref":"#/components/schemas/TeamRef"},"visitorTeam":{"$ref":"#/components/schemas/TeamRef"},"startsAt":{"type":"string","format":"date-time","description":"Cuándo empieza. Nulo si la fuente no lo dijo.","example":"2026-09-20T16:15:00Z"},"result":{"type":"string","description":"El signo con el que cuenta: `ONE`, `X` o `TWO`. Nulo mientras no lo haya. No siempre sale de un marcador: un partido aplazado lo tiene por sorteo.","example":"ONE"},"status":{"type":"string","description":"`NOT_STARTED`, `IN_PLAY`, `FINISHED` o `POSTPONED`.","example":"FINISHED"},"competition":{"$ref":"#/components/schemas/MatchCompetitionRef","description":"De qué competición es, y de qué jornada suya cuando se sabe. Nulo si no se sabe de cuál."}}},"PrizeCategory":{"type":"object","description":"Una categoría de premio.","properties":{"hits":{"type":"integer","format":"int32","description":"Los aciertos que la ganan: 15 es el pleno al 15.","example":14},"amount":{"type":"number","description":"Lo que cobra cada acertante, en euros.","example":18230.55},"winners":{"type":"integer","format":"int32","description":"Cuántos acertantes hubo en toda España.","example":4}}},"QuinielaPrizesResponse":{"type":"object","description":"Lo que pagó la quiniela en toda España esta jornada, por categoría.","properties":{"categories":{"type":"array","description":"Las seis categorías, de más a menos aciertos: 15 (el pleno), 14, 13, 12, 11 y 10.","items":{"$ref":"#/components/schemas/PrizeCategory"}},"bets":{"type":"integer","format":"int64","description":"Apuestas jugadas en toda España. Nulo hasta que el operador cierra la jornada: solo las cuenta entonces.","example":3263025},"revenue":{"type":"number","description":"Lo que recaudaron, en euros. Nulo con la misma regla.","example":2447268.75}}},"RoundResponse":{"type":"object","description":"Una jornada de la quiniela, igual para todas las peñas: sus fechas, sus partidos con el signo de cada uno y lo que pagó la quiniela.","properties":{"season":{"type":"integer","format":"int32","description":"La temporada, por el año en que empieza: 2026 es la 2026/2027. Con `number`, es como se nombra la jornada en las rutas.","example":2026},"number":{"type":"integer","format":"int32","description":"Su número dentro de la temporada.","example":7},"seasonName":{"type":"string","example":"2026/2027"},"phase":{"type":"string","description":"Por dónde va: `SCHEDULED`, `OPEN`, `FORMALIZING`, `FORMALIZED`, `IN_PLAY`, `SETTLING` o `FINALIZED`. Se calcula al pedirla.","example":"OPEN"},"opensAt":{"type":"string","format":"date-time","description":"Desde cuándo se puede jugar.","example":"2026-09-14T08:00:00Z"},"closesAt":{"type":"string","format":"date-time","description":"Hasta cuándo se puede jugar. Pasada esta hora no se confirma ni se retira nada.","example":"2026-09-20T09:00:00Z"},"finalized":{"type":"boolean","description":"Si ya está puntuada: aciertos contados y premios repartidos.","example":false},"matches":{"type":"array","description":"Los catorce partidos de las columnas, en el orden del boleto.","items":{"$ref":"#/components/schemas/MatchResponse"}},"match15":{"$ref":"#/components/schemas/Match15Response","description":"El pleno al 15. Nulo si la jornada no lo lleva."},"prizes":{"$ref":"#/components/schemas/QuinielaPrizesResponse","description":"El escrutinio: lo que pagó la quiniela. **Nulo hasta que se publica**, no a cero."}}},"CountryShares":{"type":"object","description":"Lo que se juega en toda España, según el operador: la última lectura.","properties":{"matches":{"type":"array","description":"Un reparto por partido, del 1 al 14.","items":{"$ref":"#/components/schemas/MatchShares"}},"match15":{"$ref":"#/components/schemas/Match15Shares","description":"El del pleno al 15. Nulo si el operador no lo da."},"takenAt":{"type":"string","format":"date-time","description":"Cuándo lo leímos. Es la única hora precisa: el operador solo fecha por días.","example":"2026-09-18T12:00:00Z"},"sourceDay":{"type":"string","format":"date","description":"El día en que el operador dice haberlo recalculado.","example":"2026-09-18"}}},"GoalShares":{"type":"object","description":"Cómo se reparte un lado del pleno entre sus cuatro casillas, en porcentajes enteros que suman cien.","properties":{"zero":{"type":"integer","format":"int32","description":"Porcentaje al 0.","example":20},"one":{"type":"integer","format":"int32","description":"Porcentaje al 1.","example":40},"two":{"type":"integer","format":"int32","description":"Porcentaje al 2.","example":25},"many":{"type":"integer","format":"int32","description":"Porcentaje a la M, tres o más.","example":15}}},"Match15Shares":{"type":"object","description":"Cómo se reparte el pleno al 15, cada lado por su cuenta.","properties":{"local":{"$ref":"#/components/schemas/GoalShares","description":"Los goles del local."},"visitor":{"$ref":"#/components/schemas/GoalShares","description":"Los goles del visitante."}}},"MatchShares":{"type":"object","description":"Cómo se reparte un partido entre los tres signos, en porcentajes enteros que suman cien.","properties":{"number":{"type":"integer","format":"int32","description":"Su número en el boleto, del 1 al 14.","example":1},"one":{"type":"integer","format":"int32","description":"Porcentaje al 1.","example":45},"x":{"type":"integer","format":"int32","description":"Porcentaje a la X.","example":30},"two":{"type":"integer","format":"int32","description":"Porcentaje al 2.","example":25}}},"PlatformShares":{"type":"object","description":"Lo que se juega en todo Tutiplay: solo los porcentajes.","properties":{"matches":{"type":"array","description":"Un reparto por partido, del 1 al 14.","items":{"$ref":"#/components/schemas/MatchShares"}},"match15":{"$ref":"#/components/schemas/Match15Shares","description":"El del pleno al 15. Nulo si no hay datos de él."}}},"RoundDistributionResponse":{"type":"object","description":"Lo que se juega en una jornada fuera de tu peña: en toda España y en todo Tutiplay.","properties":{"country":{"$ref":"#/components/schemas/CountryShares","description":"En toda España. Nulo sin datos todavía."},"tutiplay":{"$ref":"#/components/schemas/PlatformShares","description":"En todo Tutiplay. Nulo mientras nadie haya confirmado nada."}}},"CompetitionResponse":{"type":"object","description":"Una competición: una liga, una copa, un torneo de selecciones.","properties":{"id":{"type":"string","description":"Su identificador, que es también su dirección: estable aunque la competición cambie de nombre.","example":"laliga-ea-sports"},"name":{"type":"string","example":"LaLiga EA Sports"},"shortName":{"type":"string","example":"LaLiga"},"female":{"type":"boolean","example":false},"imageUrl":{"type":"string","description":"La dirección de su logo. Nula si no tiene.","example":"/media/competition/laliga.png"},"description":{"type":"string"}}},"CompetitionDetailResponse":{"type":"object","description":"Una competición y las temporadas de las que hay datos.","properties":{"competition":{"$ref":"#/components/schemas/CompetitionResponse"},"seasons":{"type":"array","description":"Las temporadas en las que se ha jugado, por el año en que empiezan, de la más reciente a la más antigua.","example":[2026,2025],"items":{"type":"integer","format":"int32"}}}},"CompetitionRoundRef":{"type":"object","description":"Una jornada de una competición.","properties":{"number":{"type":"integer","format":"int32","description":"Su número dentro de la competición.","example":7},"takenAt":{"type":"string","format":"date-time","description":"Cuándo se leyó su clasificación. Nulo si todavía no la hay: una jornada sin jugar tiene partidos y no tabla.","example":"2026-09-22T08:00:00Z"}}},"CompetitionSeasonResponse":{"type":"object","description":"Una competición en una temporada: quién la juega y sus jornadas.","properties":{"competition":{"type":"string","description":"La competición, por su identificador.","example":"laliga-ea-sports"},"season":{"type":"integer","format":"int32","description":"La temporada, por el año en que empieza.","example":2026},"teams":{"type":"array","description":"Los equipos que la juegan esa temporada, por nombre.","items":{"$ref":"#/components/schemas/TeamRef"}},"rounds":{"type":"array","description":"Sus jornadas de las que hay datos, de la más reciente a la más antigua. Son las de la competición, no las de la quiniela.","items":{"$ref":"#/components/schemas/CompetitionRoundRef"}}}},"CompetitionMatch":{"type":"object","description":"Un partido de una jornada de una competición.","properties":{"localTeam":{"$ref":"#/components/schemas/TeamRef","description":"El equipo que juega en casa. Si no es uno de los equipos de la competición, lleva solo el nombre con el que lo escribe la fuente."},"visitorTeam":{"$ref":"#/components/schemas/TeamRef"},"date":{"type":"string","format":"date","description":"El día en que se juega. Se sabe antes que la hora.","example":"2026-09-20"},"startsAt":{"type":"string","format":"date-time","description":"Cuándo empieza. Nulo mientras la competición no haya fijado la hora.","example":"2026-09-20T14:15:00Z"},"localGoals":{"type":"integer","format":"int32","description":"Goles del local. Nulo mientras no haya marcador, que no es 0-0.","example":2},"visitorGoals":{"type":"integer","format":"int32","example":1},"status":{"type":"string","description":"`NOT_STARTED`, `IN_PLAY`, `FINISHED` o `POSTPONED`.","example":"FINISHED"}}},"CompetitionRoundResponse":{"type":"object","description":"Una jornada de una competición: sus partidos y la clasificación tal como quedó tras ella.","properties":{"competition":{"type":"string","description":"La competición, por su identificador.","example":"laliga-ea-sports"},"season":{"type":"integer","format":"int32","description":"La temporada, por el año en que empieza.","example":2026},"number":{"type":"integer","format":"int32","description":"Su número dentro de la competición, que no es el de la quiniela.","example":7},"takenAt":{"type":"string","format":"date-time","description":"Cuándo se leyó su clasificación. Nulo si todavía no la hay.","example":"2026-09-22T08:00:00Z"},"matches":{"type":"array","description":"Sus partidos, en el orden en que se juegan.","items":{"$ref":"#/components/schemas/CompetitionMatch"}},"standings":{"type":"array","description":"La clasificación tras esta jornada: una línea por equipo, ordenadas por grupo y puesto. Vacía mientras la jornada no se haya jugado.","items":{"$ref":"#/components/schemas/StandingRow"}}}},"StandingRow":{"type":"object","description":"La línea de un equipo en la clasificación.","properties":{"group":{"type":"string","description":"Su grupo, como `A1`. Nulo si la competición es una sola tabla. El puesto cuenta dentro del grupo.","example":"A1"},"position":{"type":"integer","format":"int32","example":1},"team":{"$ref":"#/components/schemas/TeamRef"},"previousPosition":{"type":"integer","format":"int32","description":"Su puesto en la jornada anterior. Nulo si no se sabe.","example":2},"played":{"type":"integer","format":"int32","example":7},"won":{"type":"integer","format":"int32","example":5},"drawn":{"type":"integer","format":"int32","example":1},"lost":{"type":"integer","format":"int32","example":1},"goalsFor":{"type":"integer","format":"int32","example":14},"goalsAgainst":{"type":"integer","format":"int32","example":6},"goalDifference":{"type":"integer","format":"int32","example":8},"points":{"type":"integer","format":"int32","example":16}}},"MemberForecastResponse":{"type":"object","description":"El pronóstico confirmado de un socio de la peña.","properties":{"username":{"type":"string","description":"El usuario del socio: identifica la fila, no es lo que se enseña.","example":"ana"},"name":{"type":"string","description":"Cómo se llama; su usuario si no ha puesto nombre.","example":"Ana García"},"number":{"type":"integer","format":"int32","description":"Cuál de sus pronósticos es. El primero es el 1.","example":1},"confirmationDate":{"type":"string","format":"date-time","description":"Cuándo la confirmó.","example":"2026-09-18T20:14:00Z"},"columns":{"type":"array","description":"Sus columnas, en orden.","items":{"$ref":"#/components/schemas/ForecastColumn"}},"match15":{"$ref":"#/components/schemas/Match15PickResponse","description":"Su pleno al 15."},"score":{"type":"integer","format":"int32","description":"Los aciertos con los que puntuó. Nulo hasta que la jornada se puntúa.","example":11}}},"CommunityShares":{"type":"object","description":"Lo que se juega en tu peña —todo lo que hay puesto, confirmado o no— con los recuentos detrás. Viene siempre: `forecasts: 0` es que todavía no hay nada puesto.","properties":{"forecasts":{"type":"integer","format":"int32","description":"Cuántos pronósticos hay puestos. Es sobre lo que se cuenta el pleno: un pronóstico lleva un pleno, tenga las columnas que tenga.","example":7},"columns":{"type":"integer","format":"int32","description":"Cuántas columnas. Es sobre lo que se cuentan los catorce.","example":19},"matches":{"type":"array","description":"Un reparto por partido, del 1 al 14. Vacío mientras no haya nada puesto.","items":{"$ref":"#/components/schemas/MatchShares"}},"match15":{"$ref":"#/components/schemas/Match15Shares","description":"El del pleno al 15. Nulo mientras no haya nada puesto."}}},"BalanceResponse":{"type":"object","description":"Tu saldo y lo que cuesta una columna: lo que hace falta para saber si puedes confirmar antes de intentarlo.","properties":{"balance":{"type":"number","description":"Lo que tienes, en euros.","example":12.35},"columnPrice":{"type":"number","description":"Lo que se cobra por cada columna confirmada, en euros.","example":1}}},"PagedResponseTransactionResponse":{"type":"object","description":"Una página de una lista. Se pide con `?page=` (desde 0) y `?size=` (20 si no se dice, 100 como mucho).","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/TransactionResponse"}},"page":{"type":"integer","format":"int32","description":"Qué página es, **empezando en 0**.","example":0},"size":{"type":"integer","format":"int32","description":"El tamaño de página pedido; no cuántos `items` han venido, que en la última pueden ser menos.","example":20},"total":{"type":"integer","format":"int64","example":57},"totalPages":{"type":"integer","format":"int32","example":3}}},"TransactionResponse":{"type":"object","description":"Un movimiento de tu cuenta, con lo que hace falta para saber a qué vino.","properties":{"id":{"type":"string","example":"5b0c1f7e-2a4d-4c8e-9f1a-3d2e6b7c8a90"},"date":{"type":"string","format":"date-time","example":"2026-09-19T17:42:10Z"},"opType":{"type":"string","description":"Qué fue: `PAY_SINGLE_COLUMN` (columnas cobradas), `REPAY_SINGLE_COLUMN` (devueltas), `PRIZE_PAYMENT`, `MANUAL_DEPOSIT`… Puede haber tipos nuevos.","example":"PAY_SINGLE_COLUMN"},"amount":{"type":"number","description":"Cuánto, en euros: negativo lo que sale, positivo lo que entra.","example":-2},"balance":{"type":"number","description":"El saldo que quedó después.","example":10.35},"community":{"type":"string","description":"La peña a la que se refiere, con el nombre que tenía entonces. Nula si no va de ninguna, como un ingreso.","example":"Bar Manolo"},"communitySlug":{"type":"string","description":"Su dirección. Nula si no va de ninguna peña o si la peña ya no existe.","example":"bar-manolo"},"season":{"type":"integer","format":"int32","description":"La temporada de esa jornada, por el año en que empieza. Con `roundNumber`, es como se pide la jornada. Nula con la misma regla.","example":2026},"seasonName":{"type":"string","example":"2026/2027"},"roundNumber":{"type":"integer","format":"int32","description":"El número de la jornada. Nulo si no va de ninguna o si se borró.","example":7}}}},"securitySchemes":{"apiKey":{"type":"http","description":"La API key tal cual, con su marca `tp_` incluida. Va en `Authorization: Bearer tp_…`, la misma cabecera que usa la sesión del navegador — se distinguen por esa marca.","name":"Authorization","scheme":"bearer"}}},"x-tagGroups":[{"name":"Mi cuenta","description":"Tu perfil, tu saldo y tus plantillas, que valen igual en tus peñas que por tu cuenta, y el buscador de equipos con el que se escriben.","tags":["Perfil","Saldo","Plantillas","Equipos"]},{"name":"Quiniela","description":"Las jornadas de la quiniela, iguales para todo el mundo: sus partidos con el signo de cada uno, el escrutinio y lo que se juega en toda España.","tags":["Jornadas"]},{"name":"Peñas","description":"Jugar la quiniela en una peña: tus peñas, sus jornadas, tus pronósticos en ellas, lo que juega la peña y el juego automático.","tags":["Peñas","Jornadas de una peña","Pronósticos","Formalización","Juego automático"]},{"name":"Por tu cuenta","description":"Jugar la quiniela solo, sin peña, en `/v1/solo`: las mismas rutas que en una peña, sin `/communities/{slug}`. Cada pronóstico lleva su propio pleno, puede haber varios por jornada y no hay más límite de columnas que el saldo.","tags":["Tus jornadas","Tus pronósticos","Lo que juegas","Tu juego automático"]},{"name":"Datos de fútbol","description":"Las competiciones, sus temporadas, sus equipos, y los partidos y la clasificación de cada jornada. **Son las únicas llamadas que cuentan para los límites de uso.**","tags":["Competiciones","Temporadas de una competición","Jornadas de una competición"]}],"servers":[{"url":"https://api.tutiplay.com","description":"Tutiplay"}]}