Registro de cambios
Historial de versiones de la API externa de SETTO — qué salió, qué cambió y qué cuenta como un cambio rompedor.
Cada cambio de la API externa queda registrado aquí, del más reciente al más
antiguo. La API se versiona en su ruta (/v1/): los cambios aditivos salen
dentro de v1, y cualquier cosa que rompiera una integración existente saldría
con un nuevo prefijo de ruta.
Qué cuenta como un cambio
| Cambio | ¿Rompe? |
|---|---|
Un endpoint, campo o ruta de populate nuevo | No — es aditivo |
Un miembro nuevo en un enum existente (un status, sport o type nuevo) | No — trata los enums como abiertos |
Un code de error nuevo para un estado que ya manejas | No |
Eliminar o renombrar un campo, endpoint o ruta de populate | Sí |
| Cambiar el tipo de un campo, o el orden por defecto de una lista | Sí |
| Endurecer la validación de un parámetro que antes se aceptaba | Sí |
Construye para los casos aditivos: ignora los campos que no reconozcas y deja
pasar los valores de enum que no hayas visto. Así una versión del tipo "las
ligas individuales de pickleball ahora exponen un type de torneo nuevo" nunca
llega a tu guardia.
2026-09-17 — Host canónico api.setto.io
La API externa ahora responde en https://api.setto.io, que es la URL base que
usan todos los ejemplos de esta documentación, el documento OpenAPI y el Agent
Skill (1.0.1). El host generado por Railway al que reemplazó
(https://api-production-ea80.up.railway.app) sigue respondiendo para las
integraciones existentes, pero las nuevas deben usar api.setto.io. Las rutas,
la autenticación y las respuestas no cambian — no es un cambio rompedor.
1.0.0 — 2026-09
Primera versión pública.
- Seis endpoints de solo lectura, todos bajo
/v1/external/:getMe,listTournaments,getTournament,listDivisions,listTeams,getRound. - Tokens de API de organización. Se crean desde
app.setto.io→ Organización → la pestaña API, por el creador de la organización o un miembroADMIN. Se muestran una vez, son de solo lectura, revocables, con expiración opcional de 30/90/365 días y un máximo de 10 tokens activos por organización. - Autenticación bearer con los prefijos
setto_live_(producción) ysetto_test_(no productivo), y los códigos de errorMISSING_API_TOKEN,INVALID_API_TOKEN,EXPIRED_API_TOKENeINSUFFICIENT_SCOPE. - Alcance por organización. Un token lee únicamente los torneos que su
organización posee; todo lo demás — incluidos los datos de otra organización y
los torneos personales — responde
404, nunca403, para que los ids no se puedan sondear. populate, una lista de relaciones separada por comas y con lista blanca por endpoint, con expansión implícita de los padres y valores por defecto por endpoint. Los valores desconocidos son un400.- Paginación por offset en
listTournaments:limitde1..100(por defecto25),offset, y un sobremetaconlimit,offsetytotal. Las filas se ordenan porstartDatedescendente. - Límite de uso de 120 peticiones por 60 segundos por token, con
X-RateLimit-Limit,X-RateLimit-RemainingyX-RateLimit-Reseten cada respuesta yRetry-Afteren un429. - Peticiones condicionales.
ETagfuerte másIf-None-Matchdevuelve304 Not Modified, así que sondear una ronda cuesta casi nada. - Una proyección segura para la privacidad. Sin correos, teléfonos ni redes
sociales; sin datos de pago ni facturación. Los objetos de jugador llevan solo
idx,firstName,lastNameyavatar. - El material oculto y en borrador se devuelve marcado, no filtrado —
isVisible: falseen categorías y rondas, y torneosDRAFT/ARCHIVEDenlistTournaments. - Este sitio de documentación, con una referencia generada y un playground
Try it, un
/openapi.jsonpublicado, una versión Markdown de cada página,/llms.txty/llms-full.txt, un servidor MCP remoto y un Agent Skill.