Saltar al contenido principal

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

CampoTipoObligatorioDescripción
namestringNombre interno
subjectstringAsunto del email
blocksarrayBloques del constructor de email
segment_filtersobjectNoCriterios 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.

CampoTipoObligatorio
namestring
filtersobject

Plantillas

GET /campaigns/templates / POST / DELETE /:id

Gestionar plantillas de email guardadas.

CampoTipoObligatorio
namestring
blocksarray

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

CampoTipoDescripción
has_emailbooleanSolo clientes con email
has_phonebooleanSolo clientes con teléfono
labelsarray de stringsClientes con alguna de las etiquetas indicadas
last_visit_days_agointegerClientes sin visita en los últimos N días
min_total_spentnumberGasto mínimo en POS
max_total_spentnumberGasto máximo en POS
birthday_monthsarray de integersClientes con cumpleaños en los meses indicados (1=ene, 12=dic)
service_category_idintegerClientes que reservaron en esta categoría de servicio
min_visitsintegerMínimo de citas completadas
max_visitsintegerMáximo de citas completadas
genderstringFiltrar por género del cliente (ej. male, female)