# AnchorOS API Testing Guide ## 📋 **Rutas a Probar - Testing Endpoints** ### **🔐 Autenticación** - `POST /api/auth/login` - Login de usuario - Body: `{ email, password }` - Buscar: Token JWT en respuesta - `POST /api/auth/register` - Registro de cliente - Body: `{ first_name, last_name, email, phone, password }` - Buscar: Usuario creado con ID ### **👥 Gestión de Clientes** - `GET /api/customers` - Listar clientes - Headers: Authorization Bearer token - Buscar: Array de clientes con datos completos - `POST /api/customers` - Crear cliente - Headers: Authorization Bearer token - Body: `{ first_name, last_name, email, phone }` - Buscar: Cliente creado - `GET /api/customers/[id]` - Detalles de cliente - Buscar: Datos completos del cliente + bookings ### **💺 Reservas (Bookings)** - `GET /api/bookings` - Listar reservas - Query params: `?status=confirmed&date=2024-01-01` - Buscar: Array de bookings con relaciones (customer, service, staff) - `POST /api/bookings` - Crear reserva - Body: `{ customer_id, service_id, staff_id, location_id, date, notes }` - Buscar: Booking creado + email enviado automáticamente - `PUT /api/bookings/[id]` - Actualizar reserva - Body: `{ status: 'confirmed' }` - Buscar: Status actualizado - `DELETE /api/bookings/[id]` - Cancelar reserva - Buscar: Status cambiado a 'cancelled' ### **🏢 Ubicaciones** - `GET /api/locations` - Listar ubicaciones - Buscar: Array de locations con servicios disponibles ### **👨‍💼 Staff** - `GET /api/staff` - Listar personal - Buscar: Array de staff con especialidades ### **💅 Servicios** - `GET /api/services` - Listar servicios - Buscar: 22 servicios de Anchor 23 con precios ### **📅 Disponibilidad** - `GET /api/availability?service_id=1&date=2024-01-01&location_id=1` - Buscar: Slots disponibles por staff - `POST /api/availability/blocks` - Bloquear horario - Body: `{ staff_id, start_time, end_time, reason }` - Buscar: Bloqueo creado ### **🏪 Kiosk (Auto-servicio)** - `GET /api/kiosk/locations` - Ubicaciones disponibles - Buscar: Locations con servicios activos - `POST /api/kiosk/bookings` - Reserva desde kiosk - Body: `{ service_id, customer_data, date }` - Buscar: Booking creado + email enviado - `POST /api/kiosk/walkin` - Reserva inmediata - Body: `{ service_id, customer_data }` - Buscar: Booking inmediato confirmado ### **📊 Aperture (Dashboard Admin)** - `GET /api/aperture/stats` - Estadísticas generales - Buscar: Métricas de negocio (revenue, bookings, etc.) - `GET /api/aperture/reports` - Reportes detallados - Buscar: Datos para gráficos y análisis - `GET /api/aperture/pos` - Sistema POS - Buscar: Servicios disponibles para venta ### **🧾 Recibos** - `GET /api/receipts/[bookingId]` - Descargar PDF - Buscar: PDF generado con datos de reserva - `POST /api/receipts/[bookingId]/email` - Enviar por email - Buscar: Email enviado con PDF adjunto ### **⚙️ Sistema** - `GET /api/health` - Health check - Buscar: `{ status: 'ok' }` - `POST /api/cron/reset-invitations` - Reset diario - Buscar: Invitaciones expiradas reseteadas ## 🔍 **Qué Buscar en Cada Respuesta** ### **✅ Éxito** - Status codes: 200, 201 - Estructura de datos correcta - Relaciones cargadas (joins) - Emails enviados (para bookings) ### **❌ Errores** - Status codes: 400, 401, 403, 404, 500 - Mensajes de error descriptivos - Validación de datos - Autenticación requerida ### **🔄 Estados** - Bookings: `pending` → `confirmed` → `completed` - Pagos: `pending` → `paid` - Recursos: `available` → `booked` ## 🧪 **Casos de Edge** - **Autenticación**: Token expirado, permisos insuficientes - **Reservas**: Doble booking, horarios conflictivos - **Pagos**: Montos inválidos, métodos no soportados - **Kiosk**: Datos faltantes, servicios no disponibles ## 📈 **Performance** - Response time < 500ms para GET - Response time < 2s para POST complejos - Conexiones concurrentes soportadas