/health
Publica
Healthcheck basico
Confirma que la API responde correctamente.
Response
{
"status": "ok"
}
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.
Grupo
Rutas simples para saber si el backend y la base de datos estan vivos.
/health
Publica
Confirma que la API responde correctamente.
Response
{
"status": "ok"
}
/health/db
Publica
Valida conexion con Postgres. Si falla, responde 503.
Response
{
"status": "ok",
"database": {
"connected": true
}
}
Grupo
Registro, login, tokens y recuperacion de cuenta.
/auth/register
Publica
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"
}
}
/auth/login
Publica
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"
}
}
/auth/refresh
Publica
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"
}
}
/auth/logout
Bearer token
Invalida la sesion del usuario autenticado.
Response
{
"message": "Sesion cerrada correctamente"
}
/auth/verificar-email
Publica
Confirma el correo usando el codigo de 6 digitos enviado al usuario.
Request
{
"codigo": "123456"
}
Response
{
"message": "Email verificado correctamente"
}
/auth/recuperar-password
Publica
Envia un codigo para iniciar el flujo de recuperacion de password.
Request
{
"email": "ana@evenxa.com"
}
Response
{
"message": "Codigo enviado correctamente"
}
/auth/reset-password
Publica
Actualiza la password despues de validar el codigo de recuperacion.
Request
{
"email": "ana@evenxa.com",
"codigo": "123456",
"password": "NuevaPass1!"
}
Response
{
"message": "Password actualizada correctamente"
}
/auth/google
Publica
Redirige al flujo OAuth de Google.
Response
{
"redirect": "https://accounts.google.com/..."
}
Grupo
Perfil y acciones de la cuenta autenticada.
/usuarios/perfil
Bearer token
Regresa los datos del usuario autenticado.
Response
{
"data": {
"id": "00000000-0000-4000-8000-000000000000",
"email": "ana@evenxa.com",
"nombre": "Ana",
"telefono": "5512345678"
}
}
/usuarios/actualizar-perfil
Bearer token
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"
}
}
/usuarios/eliminar-cuenta
Bearer token
Elimina o desactiva la cuenta del usuario autenticado.
Response
{
"message": "Cuenta eliminada correctamente"
}
Grupo
Consulta publica de eventos y gestion para organizadores.
/eventos?page=1&limit=20&busqueda=rock
Publica
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
}
}
/eventos/:id
Publica
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": []
}
]
}
}
/eventos
Bearer token
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"
}
}
/eventos/:id/funciones
Bearer token
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"
}
}
/eventos/funciones/:funcionId/tipos-boleto
Bearer token
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
}
}
/eventos/:id/publicar
Bearer token
Publica un evento en borrador. Debe tener al menos una funcion activa.
Response
{
"message": "Evento publicado correctamente"
}
/eventos/:id/cancelar
Bearer token
Cancela un evento publicado. Si esta en borrador, se elimina.
Request
{
"motivo": "Cambio de fecha"
}
Response
{
"message": "Evento cancelado correctamente"
}
Grupo
Catalogo publico para clasificar eventos.
/categorias
Publica
Regresa categorias activas para filtros y formularios.
Response
{
"data": [
{
"id": "00000000-0000-4000-8000-000000000000",
"nombre": "Conciertos",
"slug": "conciertos"
}
]
}
Grupo
Solicitudes para convertirse en organizador y revision por administradores.
/organizadores/solicitar
Bearer token
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"
}
}
/organizadores/mi-solicitud
Bearer token
Muestra el estado de la solicitud del usuario autenticado.
Response
{
"data": {
"id": "00000000-0000-4000-8000-000000000000",
"status": "pendiente",
"nombre_empresa": "Evenxa Producciones"
}
}
/organizadores/solicitudes?status=pendiente
Admin
Permite al admin revisar solicitudes, opcionalmente filtradas por status.
Response
{
"data": [
{
"id": "00000000-0000-4000-8000-000000000000",
"status": "pendiente",
"nombre_empresa": "Evenxa Producciones"
}
]
}
/organizadores/solicitudes/:id/aprobar
Admin
Convierte la solicitud en organizador aprobado.
Response
{
"message": "Solicitud aprobada correctamente"
}
/organizadores/solicitudes/:id/rechazar
Admin
Marca una solicitud como rechazada y guarda el motivo.
Request
{
"motivo": "Falta documentacion fiscal"
}
Response
{
"message": "Solicitud rechazada correctamente"
}
Grupo
Carga y lectura de archivos usados por la plataforma.
/uploads/imagen
Bearer token
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"
}
}
/uploads/local/*
Publica
Sirve un archivo guardado localmente por la API.
Response
"Contenido binario del archivo"
Grupo
Landing y administracion simple de sorteos.
/sorteos
Publica
Regresa sorteos visibles para la landing.
Response
{
"data": [
{
"id": "00000000-0000-4000-8000-000000000000",
"title": "Viaje a festival",
"ticketPrice": 99,
"featured": true
}
]
}
/sorteos/:id
Publica
Obtiene la informacion completa de un sorteo.
Response
{
"data": {
"id": "00000000-0000-4000-8000-000000000000",
"title": "Viaje a festival",
"status": "hot",
"entries": "1200"
}
}
Grupo
Acciones protegidas para usuarios administradores.
/admin/usuarios
Admin
Lista usuarios registrados para administracion.
Response
{
"data": [
{
"id": "00000000-0000-4000-8000-000000000000",
"email": "ana@evenxa.com",
"roles": [
"user"
]
}
]
}
/admin/usuarios/:id/rol
Admin
Actualiza el rol de un usuario.
Request
{
"role": "event_manager"
}
Response
{
"message": "Rol actualizado correctamente"
}
/admin/sorteos
Admin
Lista todos los sorteos para administracion.
Response
{
"data": [
{
"id": "00000000-0000-4000-8000-000000000000",
"title": "Viaje a festival",
"featured": true
}
]
}
/admin/sorteos
Admin
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
}
}
/admin/sorteos/:id
Admin
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
}
}
/admin/sorteos/:id
Admin
Elimina un sorteo existente.
Response
{
"message": "Sorteo eliminado correctamente"
}