Campagnes
Base path: /api/campaigns
GET /campaigns
Lister toutes les campagnes.
Auth: Admin
Query parameters: page, limit
POST /campaigns
Créer une nouvelle campagne.
Auth: Admin
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
name | string | Oui | Nom interne |
subject | string | Oui | Objet de l'email |
blocks | array | Oui | Blocs du constructeur d'email |
segment_filters | object | Non | Critères de filtrage de l'audience |
GET /campaigns/:id / PUT /:id / DELETE /:id
Obtenir, mettre à jour ou supprimer une campagne.
POST /campaigns/:id/send
Envoyer la campagne à tous les destinataires correspondants.
Auth: Admin
Crée un job d'email par destinataire dans job_queue. Le worker rend les blocks via MJML avant l'envoi.
Segments
GET /campaigns/segments / POST / DELETE /:id
Gérer les segments d'audience sauvegardés.
| Champ | Type | Obligatoire |
|---|---|---|
name | string | Oui |
filters | object | Oui |
Modèles
GET /campaigns/templates / POST / DELETE /:id
Gérer les modèles d'email sauvegardés.
| Champ | Type | Obligatoire |
|---|---|---|
name | string | Oui |
blocks | array | Oui |
POST /campaigns/render-mjml
Rendre un email MJML en HTML pour la prévisualisation.
Auth: Admin
Request body: { "mjml": "<mjml>...</mjml>" }
Response: { "html": "<html>...</html>" }
Champs de filtre de segment
| Champ | Type | Description |
|---|---|---|
has_email | boolean | Clients avec email uniquement |
has_phone | boolean | Clients avec téléphone uniquement |
labels | tableau de strings | Clients ayant l'un des labels indiqués |
last_visit_days_ago | integer | Clients sans visite depuis plus de N jours |
min_total_spent | number | Dépenses minimales en POS |
max_total_spent | number | Dépenses maximales en POS |
birthday_months | tableau d'integers | Clients avec anniversaire dans les mois indiqués (1=jan, 12=déc) |
service_category_id | integer | Clients ayant réservé dans cette catégorie de service |
min_visits | integer | Nombre minimum de rendez-vous complétés |
max_visits | integer | Nombre maximum de rendez-vous complétés |
gender | string | Filtrer par genre du client (ex. male, female) |