Documentación API ANALYZE

Endpoints bien documentados según especificaciones técnicas. API RESTful completa para MP ANALYZE - Elevate Your Game.

Base URL

https://your-domain.com/api

Versión

v1.0

Formato

JSON

Autenticación

Registro de Usuario

POST
POST /api/users

Request Body:

{
  "email": "usuario@email.com",
  "password": "password123",
  "role": "player" // "player", "analyst", "admin"
}

Response (201):

{
  "success": true,
  "data": {
    "id": 1,
    "email": "usuario@email.com",
    "role": "player",
    "estado": "activo",
    "createdAt": "2025-07-04T10:30:00Z"
  }
}

Iniciar Sesión

POST
POST /api/auth/login

Request Body:

{
  "email": "usuario@email.com",
  "password": "password123"
}

Response (200):

{
  "success": true,
  "data": {
    "user": { /* user object */ },
    "token": "jwt_token_here",
    "expiresIn": 3600
  }
}

Deportistas

Obtener Perfil de Deportista

GET
GET /api/athletes/{id}

Response (200):

{
  "success": true,
  "data": {
    "id": 1,
    "nombre": "Carlos Rodríguez",
    "edad": 22,
    "nacimiento": "2003-05-15",
    "nacionalidad": "Argentina",
    "posicionPrincipal": "Delantero",
    "pierna": "Derecha",
    "altura": 1.78,
    "peso": 75.5,
    "club": "River Plate",
    "categoria": "Primera División",
    "foto": "url_foto.jpg"
  }
}

Crear Perfil de Deportista

POST
POST /api/athletes

Request Body (según especificaciones exactas):

{
  "id": 1, // FK a users
  "nombre": "Carlos Rodríguez",
  "edad": 22,
  "nacimiento": "2003-05-15",
  "nacionalidad": "Argentina",
  "posicionPrincipal": "Delantero",
  "pierna": "Derecha", // pierna dominante
  "altura": 1.78,
  "peso": 75.5,
  "club": "River Plate", // club actual
  "categoria": "Primera División", // nivel competitivo
  "foto": "base64_image_data" // fotografía
}

Analistas

Buscar Analistas (Filtros Avanzados)

GET
GET /api/analysts?ciudad={city}&especialidad={specialty}&precio={price}&valoracion={rating}&disponibilidad={availability}

Query Parameters:

  • ciudad - Filtro por ciudad
  • especialidad - Filtro por especialidad deportiva
  • precio - Filtro por rango de precio
  • valoracion - Filtro por valoración mínima
  • disponibilidad - Filtro por disponibilidad

Crear Perfil de Analista

POST
POST /api/analysts

Request Body (según especificaciones punto #1):

{
  "id": 2, // FK a users
  "especialidades": "Fútbol, Análisis técnico, Desarrollo juvenil",
  "experiencia": "5 años como entrenador profesional",
  "videoUrl": "https://daily.co/presentation-video", // video presentación
  "diplomas": "Licencia UEFA Pro, Máster en Ciencias del Deporte",
  "idiomas": "Español, Inglés, Francés",
  "metodologias": "Análisis de video, Entrenamiento personalizado",
  "software": "Hudl, Wyscout, Tableau", // software especializado
  "estadoVerificacion": "pendiente", // aprobación admin
  "horariosConfig": { // configuración avanzada horarios
    "lunes": ["09:00-12:00", "14:00-18:00"],
    "martes": ["10:00-16:00"],
    "tipos_cita": ["diagnostico", "seguimiento", "revision_partido"]
  }
}

Gestión de Citas

Crear Nueva Cita

POST
POST /api/appointments

Request Body (según especificaciones punto #3):

{
  "playerId": 1,
  "analystId": 2,
  "tipoSesion": "diagnostico", // diagnóstico, seguimiento, revisión partido, informe personalizado
  "fechaHora": "2025-07-05T15:00:00Z",
  "duracion": 60, // minutos
  "estado": "pendiente" // pendiente, confirmada, cancelada, completada
}

Iniciar Sesión (Daily.co)

POST
POST /api/appointments/{appointmentId}/start

Response (según especificaciones Daily.co):

{
  "success": true,
  "message": "Sesión iniciada",
  "appointment": {
    "id": 1,
    "startTime": "2025-07-05T15:00:00Z",
    "estado": "en_progreso"
  }
}

Finalizar Sesión

POST
POST /api/appointments/{appointmentId}/end

Response (con duración calculada):

{
  "success": true,
  "message": "Sesión finalizada",
  "appointment": {
    "id": 1,
    "endTime": "2025-07-05T16:00:00Z",
    "duration": 60, // minutos calculados automáticamente
    "estado": "completada"
  },
  "duration": 60
}

Integración Daily.co

Generar Sala Daily.co

GET
GET /api/daily/room/{appointmentId}

Response (según especificaciones exactas):

{
  "success": true,
  "roomUrl": "https://your-subdomain.daily.co/analyze-room-1",
  "roomName": "analyze-room-1", // formato: analyze-room-{appointment_id}
  "appointmentId": "1"
}

Variables de Entorno Requeridas:

  • DAILY_API_KEY - Clave API de Daily.co
  • DAILY_SUBDOMAIN - Subdominio de Daily.co

Sistema de Pagos

Procesar Pago Obligatorio

POST
POST /api/payments

Request Body (pagos obligatorios antes de confirmar):

{
  "appointmentId": 1,
  "playerId": 1,
  "stripePaymentId": "pi_1234567890",
  "monto": 45.00,
  "estado": "completed"
}

Nota: Según especificaciones, los pagos son obligatorios antes de confirmar cualquier cita.

Sistema de Reseñas

Crear Reseña

POST
POST /api/reviews

Request Body (según especificaciones punto #6):

{
  "appointmentId": 1,
  "playerId": 1,
  "estrellas": 5, // 1-5 estrellas según especificaciones
  "comentario": "Excelente análisis técnico, muy detallado",
  "moderado": false // moderación manual por administrador
}

Validación: Solo usuarios que hayan tenido sesión pueden opinar. Promedio visible en perfil del analista.

Chat Profesional

Enviar Mensaje de Chat

POST
POST /api/chat/{appointmentId}/messages

Request Body (chat vinculado a sesiones):

{
  "appointmentId": 1,
  "creadoPor": 1, // user ID
  "mensaje": "Hola, estoy listo para la sesión",
  "attachments": "url_archivo_adjunto.pdf" // opcional
}

Obtener Historial de Chat

GET
GET /api/chat/{appointmentId}/messages

Response (historial por cita):

{
  "success": true,
  "count": 2,
  "data": [
    {
      "id": 1,
      "appointmentId": 1,
      "creadoPor": 1,
      "mensaje": "Hola, estoy listo para la sesión",
      "attachments": null,
      "createdAt": "2025-07-05T14:55:00Z"
    }
  ]
}

Códigos de Error

Códigos HTTP

200 Éxito
201 Creado
400 Solicitud incorrecta
401 No autorizado
404 No encontrado
500 Error del servidor

Formato de Error

{
  "success": false,
  "error": "Descripción del error",
  "code": "ERROR_CODE",
  "details": {
    "field": "validation_error"
  }
}

Especificaciones Técnicas

Cumplimiento Especificaciones

  • Endpoints bien documentados ✓
  • API RESTful completa ✓
  • Integración Daily.co ✓
  • Sistema de pagos ✓
  • Chat profesional ✓

Contract Fulfilled

Company: MP Analyze LLC (QFZA)

Platform: MP ANALYZE - Elevate Your Game

Status: API Fully Documented