{"endpoints":{"auth":{"POST /v1/auth/google":"Iniciar sesión con Google (OAuth 2.0)","POST /v1/auth/login":"Iniciar sesión (local)","POST /v1/auth/register":"Registrar nuevo usuario"},"checkin":{"GET /v1/checkin/:match_id":"Get check-ins for a match","POST /v1/checkin":"Perform geofenced check-in"},"equipos":{"GET /v1/equipos/:id":"Detalle de equipo","GET /v1/equipos/:id/roster":"Roster del equipo","POST /v1/equipos/:id/roster":"Agregar jugador al roster","POST /v1/ligas/:liga_id/equipos":"Crear equipo (capitan)"},"karma":{"GET /v1/karma/:user_id":"Get karma summary for a player","POST /v1/karma/rate":"Rate a teammate (post-match)"},"ligas":{"GET /v1/ligas/:id":"Detalle de liga","GET /v1/ligas/mis-ligas":"Ligas del admin autenticado","POST /v1/ligas":"Crear liga (tenant)"},"nearby_fields":{"GET /v1/nearby-fields?lat=\u0026lng=\u0026radius=":"Obtener canchas cercanas a una geolocalización (requiere autenticación)"},"onboarding":{"POST /v1/onboarding/liga":"Self-service: registrar league_admin + crear liga (público)"},"pagos":{"POST /v1/pagos/checkout":"Crear sesión de pago (Stripe o MercadoPago via 'provider')","POST /v1/webhooks/mercadopago":"Webhook de Mercado Pago","POST /v1/webhooks/stripe":"Webhook de Stripe"},"partidos":{"GET /v1/partidos/:id":"Detalle de partido + eventos","POST /v1/partidos":"Crear partido oficial","POST /v1/partidos/:id/eventos":"Emitir evento (arbitro) + broadcast WS"},"pickup_games":{"DELETE /v1/pickup-games/:id":"Eliminar un juego (requiere autenticación)","GET /v1/pickup-games":"Obtener todos los juegos","GET /v1/pickup-games/:id":"Obtener un juego por ID","POST /v1/pickup-games":"Crear un nuevo juego (requiere autenticación)","PUT /v1/pickup-games/:id":"Actualizar un juego (requiere autenticación)"},"profile":{"GET /v1/profile/:user_id":"Get player profile","PUT /v1/profile/:user_id":"Update/complete player profile"},"qr_credential":{"POST /v1/qr/generar":"Generar credencial QR (JWT 5min)","POST /v1/qr/validar":"Validar credencial QR (arbitro)"},"torneos":{"GET /v1/ligas/:liga_id/torneos":"Torneos de una liga","GET /v1/torneos/:id":"Detalle de torneo","POST /v1/ligas/:liga_id/torneos":"Crear torneo en liga","POST /v1/torneos/:id/inscribir":"Inscribir equipo"},"user_availability":{"DELETE /v1/user-availability/blocked-hours/:id":"Eliminar horario ocupado (requiere autenticación)","GET /v1/user-availability/blocked-hours":"Obtener horarios ocupados del usuario (requiere autenticación)","GET /v1/user-availability/check?fecha=\u0026hora=":"Verificar disponibilidad en fecha y hora (requiere autenticación)","POST /v1/user-availability/blocked-hours":"Crear horario ocupado (requiere autenticación)"},"websocket":{"WS /ws/matches":"Live matches WebSocket (connect, create, join, send_message, select_team, finalize)","WS /ws/matches/chat":"Dedicated chat WebSocket endpoint"}},"message":"Bienvenido a la API de VolFootball","status":"online","version":"1.0.0"}