SETTO API

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 nuevoNo — 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 manejasNo
Eliminar o renombrar un campo, endpoint o ruta de populate
Cambiar el tipo de un campo, o el orden por defecto de una lista
Endurecer la validación de un parámetro que antes se aceptaba

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.ioOrganización → la pestaña API, por el creador de la organización o un miembro ADMIN. 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) y setto_test_ (no productivo), y los códigos de error MISSING_API_TOKEN, INVALID_API_TOKEN, EXPIRED_API_TOKEN e INSUFFICIENT_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, nunca 403, 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 un 400.
  • Paginación por offset en listTournaments: limit de 1..100 (por defecto 25), offset, y un sobre meta con limit, offset y total. Las filas se ordenan por startDate descendente.
  • Límite de uso de 120 peticiones por 60 segundos por token, con X-RateLimit-Limit, X-RateLimit-Remaining y X-RateLimit-Reset en cada respuesta y Retry-After en un 429.
  • Peticiones condicionales. ETag fuerte más If-None-Match devuelve 304 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, lastName y avatar.
  • El material oculto y en borrador se devuelve marcado, no filtradoisVisible: false en categorías y rondas, y torneos DRAFT/ARCHIVED en listTournaments.
  • Este sitio de documentación, con una referencia generada y un playground Try it, un /openapi.json publicado, una versión Markdown de cada página, /llms.txt y /llms-full.txt, un servidor MCP remoto y un Agent Skill.

En esta página