Campañas
Base path: /api/campaigns
GET /campaigns
Listar todas las campañas.
Auth: Admin
Query parameters: page, limit
POST /campaigns
Crear nueva campaña.
Auth: Admin
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
name | string | Sí | Nombre interno |
subject | string | Sí | Asunto del email |
blocks | array | Sí | Bloques del constructor de email |
segment_filters | object | No | Criterios de filtro de audiencia |
GET /campaigns/:id / PUT /:id / DELETE /:id
Obtener, actualizar o eliminar una campaña.
POST /campaigns/:id/send
Enviar la campaña a todos los destinatarios que coincidan.
Auth: Admin
Crea un trabajo de email por destinatario en job_queue. El worker renderiza los blocks via MJML antes del envío.
Segmentos
GET /campaigns/segments / POST / DELETE /:id
Gestionar segmentos de audiencia guardados.
| Campo | Tipo | Obligatorio |
|---|---|---|
name | string | Sí |
filters | object | Sí |
Plantillas
GET /campaigns/templates / POST / DELETE /:id
Gestionar plantillas de email guardadas.
| Campo | Tipo | Obligatorio |
|---|---|---|
name | string | Sí |
blocks | array | Sí |
POST /campaigns/render-mjml
Renderizar MJML a HTML para previsualización.
Auth: Admin
Request body: { "mjml": "<mjml>...</mjml>" }
Response: { "html": "<html>...</html>" }
Campos de filtro de segmento
| Campo | Tipo | Descripción |
|---|---|---|
has_email | boolean | Solo clientes con email |
has_phone | boolean | Solo clientes con teléfono |
labels | array de strings | Clientes con alguna de las etiquetas indicadas |
last_visit_days_ago | integer | Clientes sin visita en los últimos N días |
min_total_spent | number | Gasto mínimo en POS |
max_total_spent | number | Gasto máximo en POS |
birthday_months | array de integers | Clientes con cumpleaños en los meses indicados (1=ene, 12=dic) |
service_category_id | integer | Clientes que reservaron en esta categoría de servicio |
min_visits | integer | Mínimo de citas completadas |
max_visits | integer | Máximo de citas completadas |
gender | string | Filtrar por género del cliente (ej. male, female) |