https://api.example.com. La instancia publica OpenAPI en /docs y /openapi.json. Las fechas de creación/edición deben llevar zona horaria; los valores se normalizan a UTC. Los IDs numéricos y UUID cumplen funciones distintas: administración y credenciales suelen usar id; enlaces públicos usan uuid.
Administración
POST /api/v1/tournaments recibe company_id, name, slug y campos opcionales ranking_metric, status, initial_balance, currency, mt5_group, leverage, competition_start_at, competition_end_at, max_participants, min_trading_days, porcentajes de drawdown/objetivo, rules_json, registration_start_at, registration_end_at, prizes. El ejemplo completo está en Configuración. Los premios incorporados usan rank_from, rank_to, prize_type, amount, currency, description y no requieren llamada separada. GET /api/v1/tournament-prizes?tournament_id={id} requiere bearer y permite consultarlos; el detalle público de torneo ya incluye prizes.
Usuario e inscripción
POST /api/v1/registrations responde 201 con la inscripción, o 400 si ventana/cupo no permiten alta, 404 si no existe torneo, 409 si ya está inscrito y 500 ante falla de conexión/creación MT5. El enlace privado comparte ventana/cupo y puede devolver 409 para usuario ya inscrito. No equivale al endpoint CRM de competencias.
Lecturas públicas
La API también expone variantes por ID de leaderboard y estadísticas bajo
/api/v1/tournaments/{id}/... que requieren bearer genérico. Para frontend público usa las rutas por UUID de esta tabla. Un panel propio debe proteger las rutas administrativas con sesión admin y separar los JWT de participantes. Confirma esquemas de la versión desplegada en OpenAPI antes de desarrollar un cliente generado.
Estadísticas por ID y sincronización manual
Estas rutas no reemplazan los workers programados. Evita llamarlas desde cada navegador o en cada refresco de página: algunas hacen lecturas MT5 costosas. Para un sitio público usa leaderboard y detalle por UUID, con histórico solicitado bajo demanda. Las rutas
/api/v1/mt5-accounts gestionan registros locales de cuentas y pueden incluir datos sensibles; tampoco son fuente para una tabla pública.
Formas de respuesta
El detalle público de torneo incluyeid, uuid, status, url, public_url, ranking_metric, fechas, registration_window, can_register, registered_users_count y prizes, además de la configuración enviada al crearlo. El leaderboard entrega:
null hasta sincronizar y el serializador de una versión concreta puede variar el formato UTC. live-stats devuelve active_positions, total_trades, last_trades, chart_data, account_growth_chart, performance_curve_chart, win_rate, profit_factor, roi y current_profit. Las curvas son listas de puntos {time, value}. Verifica la respuesta real de tu entorno en OpenAPI.
