Evenxa API

Backend corriendo correctamente. Esta pantalla resume las rutas activas por grupo, explica para que sirve cada endpoint y muestra JSON de ejemplo para probar mas rapido.

v1.0.0
9 grupos
36 rutas

Grupo

Sistema

2 rutas

Rutas simples para saber si el backend y la base de datos estan vivos.

GET /health Publica

Healthcheck basico

Confirma que la API responde correctamente.

Response

{
  "status": "ok"
}
GET /health/db Publica

Healthcheck de base de datos

Valida conexion con Postgres. Si falla, responde 503.

Response

{
  "status": "ok",
  "database": {
    "connected": true
  }
}

Grupo

Autenticacion

8 rutas

Registro, login, tokens y recuperacion de cuenta.

POST /auth/register Publica

Registrar usuario

Crea una cuenta nueva. La password debe tener 8 a 32 caracteres, mayuscula, numero y caracter especial.

Request

{
  "email": "ana@evenxa.com",
  "password": "Password1!",
  "nombre": "Ana",
  "apellido_paterno": "Lopez",
  "apellido_materno": "Garcia",
  "telefono": "5512345678",
  "curp": "LOGA990101MDFPRN01",
  "fecha_nacimiento": "1999-01-01"
}

Response

{
  "data": {
    "user": {
      "id": "00000000-0000-4000-8000-000000000000",
      "email": "ana@evenxa.com",
      "nombre": "Ana"
    },
    "access_token": "jwt_access_token",
    "refresh_token": "jwt_refresh_token"
  }
}
POST /auth/login Publica

Iniciar sesion

Valida credenciales y regresa tokens para consumir rutas protegidas.

Request

{
  "email": "ana@evenxa.com",
  "password": "Password1!"
}

Response

{
  "data": {
    "user": {
      "id": "00000000-0000-4000-8000-000000000000",
      "email": "ana@evenxa.com",
      "nombre": "Ana"
    },
    "access_token": "jwt_access_token",
    "refresh_token": "jwt_refresh_token"
  }
}
POST /auth/refresh Publica

Renovar access token

Recibe un refresh token valido y entrega un access token nuevo.

Request

{
  "refresh_token": "jwt_refresh_token"
}

Response

{
  "data": {
    "access_token": "new_jwt_access_token"
  }
}
POST /auth/logout Bearer token

Cerrar sesion

Invalida la sesion del usuario autenticado.

Response

{
  "message": "Sesion cerrada correctamente"
}
POST /auth/verificar-email Publica

Verificar email

Confirma el correo usando el codigo de 6 digitos enviado al usuario.

Request

{
  "codigo": "123456"
}

Response

{
  "message": "Email verificado correctamente"
}
POST /auth/recuperar-password Publica

Solicitar recuperacion

Envia un codigo para iniciar el flujo de recuperacion de password.

Request

{
  "email": "ana@evenxa.com"
}

Response

{
  "message": "Codigo enviado correctamente"
}
POST /auth/reset-password Publica

Cambiar password

Actualiza la password despues de validar el codigo de recuperacion.

Request

{
  "email": "ana@evenxa.com",
  "codigo": "123456",
  "password": "NuevaPass1!"
}

Response

{
  "message": "Password actualizada correctamente"
}
GET /auth/google Publica

Login con Google

Redirige al flujo OAuth de Google.

Response

{
  "redirect": "https://accounts.google.com/..."
}

Grupo

Usuarios

3 rutas

Perfil y acciones de la cuenta autenticada.

GET /usuarios/perfil Bearer token

Obtener perfil

Regresa los datos del usuario autenticado.

Response

{
  "data": {
    "id": "00000000-0000-4000-8000-000000000000",
    "email": "ana@evenxa.com",
    "nombre": "Ana",
    "telefono": "5512345678"
  }
}
PUT /usuarios/actualizar-perfil Bearer token

Actualizar perfil

Permite cambiar datos personales de la cuenta.

Request

{
  "nombre": "Ana Maria",
  "telefono": "5598765432"
}

Response

{
  "data": {
    "id": "00000000-0000-4000-8000-000000000000",
    "nombre": "Ana Maria",
    "telefono": "5598765432"
  }
}
DELETE /usuarios/eliminar-cuenta Bearer token

Eliminar cuenta

Elimina o desactiva la cuenta del usuario autenticado.

Response

{
  "message": "Cuenta eliminada correctamente"
}

Grupo

Eventos

7 rutas

Consulta publica de eventos y gestion para organizadores.

GET /eventos?page=1&limit=20&busqueda=rock Publica

Listar eventos publicados

Regresa eventos visibles para usuarios. Acepta filtros por categoria_id, busqueda, page y limit.

Response

{
  "data": {
    "eventos": [
      {
        "id": "00000000-0000-4000-8000-000000000000",
        "titulo": "Noche Indie",
        "status": "publicado",
        "ciudad_venue": "CDMX"
      }
    ],
    "total": 1,
    "page": 1,
    "limit": 20,
    "pages": 1
  }
}
GET /eventos/:id Publica

Detalle de evento

Obtiene informacion completa del evento, incluyendo funciones y tipos de boleto.

Response

{
  "data": {
    "id": "00000000-0000-4000-8000-000000000000",
    "titulo": "Noche Indie",
    "categoria": "Conciertos",
    "funciones": [
      {
        "id": "00000000-0000-4000-8000-000000000000",
        "fecha_inicio": "2026-07-20T21:00:00.000Z",
        "tipos_boleto": []
      }
    ]
  }
}
POST /eventos Bearer token

Crear evento

Crea un evento en borrador. Requiere rol event_manager o admin.

Request

{
  "titulo": "Noche Indie",
  "descripcion": "Concierto en vivo",
  "descripcion_corta": "Una noche de bandas emergentes",
  "categoria_id": "00000000-0000-4000-8000-000000000000",
  "nombre_venue": "Foro Centro",
  "ciudad_venue": "CDMX",
  "tags": [
    "indie",
    "musica"
  ],
  "edad_minima": 18
}

Response

{
  "data": {
    "id": "00000000-0000-4000-8000-000000000000",
    "titulo": "Noche Indie",
    "status": "borrador"
  }
}
POST /eventos/:id/funciones Bearer token

Agregar funcion

Agrega una fecha u horario a un evento administrado por el usuario.

Request

{
  "nombre": "Funcion principal",
  "fecha_inicio": "2026-07-20T21:00:00.000Z",
  "fecha_fin": "2026-07-20T23:30:00.000Z",
  "fecha_apertura_puertas": "2026-07-20T20:00:00.000Z"
}

Response

{
  "data": {
    "id": "00000000-0000-4000-8000-000000000000",
    "nombre": "Funcion principal",
    "fecha_inicio": "2026-07-20T21:00:00.000Z"
  }
}
POST /eventos/funciones/:funcionId/tipos-boleto Bearer token

Crear tipo de boleto

Crea precio, inventario y reglas de compra para una funcion.

Request

{
  "nombre": "General",
  "precio": 450,
  "cargo_servicio": 45,
  "cantidad_total": 200,
  "max_por_orden": 6,
  "min_por_orden": 1,
  "zona": "General",
  "color": "#2563eb"
}

Response

{
  "data": {
    "id": "00000000-0000-4000-8000-000000000000",
    "nombre": "General",
    "precio": 450,
    "cantidad_disponible": 200
  }
}
PUT /eventos/:id/publicar Bearer token

Publicar evento

Publica un evento en borrador. Debe tener al menos una funcion activa.

Response

{
  "message": "Evento publicado correctamente"
}
PUT /eventos/:id/cancelar Bearer token

Cancelar evento

Cancela un evento publicado. Si esta en borrador, se elimina.

Request

{
  "motivo": "Cambio de fecha"
}

Response

{
  "message": "Evento cancelado correctamente"
}

Grupo

Categorias

1 rutas

Catalogo publico para clasificar eventos.

GET /categorias Publica

Listar categorias

Regresa categorias activas para filtros y formularios.

Response

{
  "data": [
    {
      "id": "00000000-0000-4000-8000-000000000000",
      "nombre": "Conciertos",
      "slug": "conciertos"
    }
  ]
}

Grupo

Organizadores

5 rutas

Solicitudes para convertirse en organizador y revision por administradores.

POST /organizadores/solicitar Bearer token

Solicitar organizador

Recibe multipart/form-data con los datos de empresa y el RFC en PDF. El campo sitio_web es opcional.

Request

{
  "formData": {
    "nombre_empresa": "Kustika Producciones",
    "rfc": "constancia-rfc.pdf",
    "descripcion": "Productora de eventos",
    "telefono_empresa": "5512345678",
    "email_contacto": "contacto@kustika.com",
    "sitio_web": "(opcional) https://kustika.com"
  }
}

Response

{
  "data": {
    "id": "00000000-0000-4000-8000-000000000000",
    "status": "pendiente",
    "nombre_empresa": "Kustika Producciones",
    "rfc_documento_url": "URL del PDF"
  }
}
GET /organizadores/mi-solicitud Bearer token

Ver mi solicitud

Muestra el estado de la solicitud del usuario autenticado.

Response

{
  "data": {
    "id": "00000000-0000-4000-8000-000000000000",
    "status": "pendiente",
    "nombre_empresa": "Evenxa Producciones"
  }
}
GET /organizadores/solicitudes?status=pendiente Admin

Listar solicitudes

Permite al admin revisar solicitudes, opcionalmente filtradas por status.

Response

{
  "data": [
    {
      "id": "00000000-0000-4000-8000-000000000000",
      "status": "pendiente",
      "nombre_empresa": "Evenxa Producciones"
    }
  ]
}
PUT /organizadores/solicitudes/:id/aprobar Admin

Aprobar solicitud

Convierte la solicitud en organizador aprobado.

Response

{
  "message": "Solicitud aprobada correctamente"
}
PUT /organizadores/solicitudes/:id/rechazar Admin

Rechazar solicitud

Marca una solicitud como rechazada y guarda el motivo.

Request

{
  "motivo": "Falta documentacion fiscal"
}

Response

{
  "message": "Solicitud rechazada correctamente"
}

Grupo

Uploads

2 rutas

Carga y lectura de archivos usados por la plataforma.

POST /uploads/imagen Bearer token

Subir imagen

Recibe multipart/form-data con el archivo en el campo file. Maximo 10MB.

Request

{
  "formData": {
    "file": "imagen.jpg"
  }
}

Response

{
  "data": {
    "url": "http://127.0.0.1:3000/uploads/local/eventos/imagen.jpg"
  }
}
GET /uploads/local/* Publica

Ver archivo local

Sirve un archivo guardado localmente por la API.

Response

"Contenido binario del archivo"

Grupo

Sorteos

2 rutas

Landing y administracion simple de sorteos.

GET /sorteos Publica

Listar sorteos publicos

Regresa sorteos visibles para la landing.

Response

{
  "data": [
    {
      "id": "00000000-0000-4000-8000-000000000000",
      "title": "Viaje a festival",
      "ticketPrice": 99,
      "featured": true
    }
  ]
}
GET /sorteos/:id Publica

Detalle de sorteo

Obtiene la informacion completa de un sorteo.

Response

{
  "data": {
    "id": "00000000-0000-4000-8000-000000000000",
    "title": "Viaje a festival",
    "status": "hot",
    "entries": "1200"
  }
}

Grupo

Admin

6 rutas

Acciones protegidas para usuarios administradores.

GET /admin/usuarios Admin

Listar usuarios

Lista usuarios registrados para administracion.

Response

{
  "data": [
    {
      "id": "00000000-0000-4000-8000-000000000000",
      "email": "ana@evenxa.com",
      "roles": [
        "user"
      ]
    }
  ]
}
PUT /admin/usuarios/:id/rol Admin

Cambiar rol

Actualiza el rol de un usuario.

Request

{
  "role": "event_manager"
}

Response

{
  "message": "Rol actualizado correctamente"
}
GET /admin/sorteos Admin

Listar sorteos admin

Lista todos los sorteos para administracion.

Response

{
  "data": [
    {
      "id": "00000000-0000-4000-8000-000000000000",
      "title": "Viaje a festival",
      "featured": true
    }
  ]
}
POST /admin/sorteos Admin

Crear sorteo

Crea un sorteo para mostrar en la landing.

Request

{
  "title": "Viaje a festival",
  "subtitle": "Todo incluido",
  "description": "Participa por una experiencia completa.",
  "ticketPrice": 99,
  "entries": "1200",
  "endsIn": "5 dias",
  "status": "hot",
  "image": "https://example.com/sorteo.jpg",
  "featured": true
}

Response

{
  "data": {
    "id": "00000000-0000-4000-8000-000000000000",
    "title": "Viaje a festival",
    "featured": true
  }
}
PUT /admin/sorteos/:id Admin

Editar sorteo

Actualiza uno o mas campos de un sorteo.

Request

{
  "featured": false,
  "status": "limited"
}

Response

{
  "data": {
    "id": "00000000-0000-4000-8000-000000000000",
    "status": "limited",
    "featured": false
  }
}
DELETE /admin/sorteos/:id Admin

Eliminar sorteo

Elimina un sorteo existente.

Response

{
  "message": "Sorteo eliminado correctamente"
}