Configuración
Base path: /api/settings
GET /settings
Obtener toda la configuración.
Auth: Admin
Response: Objeto settings único (id=1). Los campos sensibles se enmascaran como "********".
PUT /settings
Actualizar configuración. Solo se actualizan los campos presentes en el body.
Auth: Admin
Al poner purchase_orders_enabled en 0, internal_consumption_enabled también se pone en 0 automáticamente. Poner internal_consumption_enabled en 1 mientras purchase_orders_enabled es 0 devuelve un error 400.
POST /settings/upload-logo
Subir logo del salón.
Auth: Admin
Content-Type: multipart/form-data — campo logo, máx 5MB.
POST /settings/test-email
Enviar email de prueba para verificar configuración SMTP.
Auth: Admin
Request body: { "to": "test@example.com" }
Ubicaciones
Las ubicaciones se gestionan a través de una ruta separada en /api/locations (no bajo /api/settings).
GET/POST/PUT/DELETE bajo /api/locations y /api/locations/:id — requieren auth() o auth('admin').
Festivos / IVA
Endpoints CRUD estándar bajo /api/settings:
- Festivos:
GET/POST /settings/holidays,DELETE /settings/holidays/:id - Tipos de IVA:
GET/POST /settings/vat-rates,PUT/DELETE /settings/vat-rates/:id
Horarios de apertura
Los horarios se configuran durante la instalación inicial (POST /api/auth/setup) y se almacenan en la tabla opening_hours. No existe un endpoint REST separado para modificarlos después de la instalación.
Funciones activables
General
| Configuración | Por defecto | Descripción |
|---|---|---|
swipe_actions_enabled | 1 | Gestos de deslizamiento (móvil) |
haptic_feedback_enabled | 1 | Retroalimentación háptica (móvil) |
longpress_contact_enabled | 1 | Mantener pulsado para llamar/escribir (móvil) |
offline_mode_enabled | 1 | Caché offline para la app móvil |
staff_personal_agenda_enabled | 1 | El empleado ve solo su propia agenda |
Inventario y compras
| Configuración | Por defecto | Descripción |
|---|---|---|
purchase_orders_enabled | 1 | Pedidos de compra y proveedores. Si false, quantity_on_hand es editable directamente |
internal_consumption_enabled | 1 | Pestaña de consumo interno. Requiere purchase_orders_enabled = true |
Dashboard y análisis
| Configuración | Por defecto | Descripción |
|---|---|---|
daily_revenue_goal_enabled | 0 | Objetivo de ingresos diarios en el dashboard |
daily_revenue_goal | 0 | Importe objetivo diario |
revenue_forecast_enabled | 0 | Widget de previsión de ingresos |
visit_frequency_alerts_enabled | 0 | Alerta cuando los clientes llevan mucho tiempo sin venir |
visit_frequency_days | 42 | Umbral de días para alertas de frecuencia |
CRM y marketing
| Configuración | Por defecto | Descripción |
|---|---|---|
followup_sequences_enabled | 0 | Secuencias de seguimiento automático tras citas |
product_recommendations_enabled | 0 | Recomendaciones de productos |
giftcard_qr_enabled | 0 | Códigos QR en emails de tarjetas regalo |
seasonal_promotions_enabled | 0 | Promociones estacionales automáticas |
bulk_campaigns_enabled | 0 | Campañas de email masivo |
waitlist_position_enabled | 0 | Mostrar posición en lista de espera |
Notificaciones
| Configuración | Por defecto | Descripción |
|---|---|---|
notify_salon_waitlist_join | 1 | Notificar al salón cuando alguien se une a la lista |
notify_salon_slot_available | 1 | Notificar cuando hay un hueco disponible |
noshow_email_enabled | 1 | Email al cobrar tarifa de no presentación |
low_stock_email_enabled | 1 | Email de stock bajo |
booking_request_notify_email | 1 | Email al admin para nueva solicitud de reserva (provisional) |
booking_request_notify_push | 1 | Notificación push al admin para nueva solicitud de reserva (provisional) |
Tarifas de no presentación
| Configuración | Por defecto | Descripción |
|---|---|---|
noshow_enabled | 0 | Cobro automático vía Stripe |
noshow_fee_type | percentage | percentage o fixed |
noshow_fee_value | 50 | Porcentaje (0-100) o importe fijo |
noshow_min_amount | 0 | Importe mínimo de tarifa |
Configuración de fidelidad
El programa de fidelidad se gestiona mediante una ruta separada en /api/loyalty. El flag loyalty_enabled está en la tabla loyalty_settings, no en la tabla principal settings.
GET /loyalty/settings — Obtener configuración de fidelidad.
PUT /loyalty/settings — Actualizar configuración de fidelidad. Auth: Admin