Objet de parcours
Les méthodes de cycle de vie et de création et mise à jour retournent toutes un objet de parcours avec la même structure de haut niveau :
{ "info": { ... }, // métadonnées en lecture seule (réponses uniquement) "params": { ... }, // configuration globale du parcours (création / mise à jour) "points": [ ... ], // nœuds du canevas et leurs connexions "comments": [ ... ] // commentaires du canevas}Lorsque vous créez ou mettez à jour un parcours, vous envoyez title, params, points et comments. Les réponses retournent info (qui contient params) ainsi que points et comments.
Info
Anchor link toMétadonnées du parcours en lecture seule. Retournées par chaque méthode v3. Ne fait pas partie du corps de la requête.
| Champ | Type | Description |
|---|---|---|
uuid | string | ID de parcours. |
title | string | Nom du parcours. |
status | JourneyStatus | État actuel. |
created_at | string | Horodatage de création (ISO 8601). |
updated_at | string | Horodatage de la dernière mise à jour (ISO 8601). |
is_first_activated | bool | Indique si le parcours a été démarré au moins une fois. |
params | JourneyParams | Configuration globale du parcours. |
category_uuid | string | UUID de la catégorie, ou vide si non catégorisé. |
pointCounts | map<string, uint32> | Nombre de points par type. |
campaign_type | CampaignType | Comment les utilisateurs entrent dans le parcours. |
stop_reason | string | Raison de l’arrêt du parcours, le cas échéant. |
last_edited_by | User | Utilisateur ayant modifié le parcours en dernier. |
dynamic_entry | bool | Indique si l’entrée dynamique est activée. |
JourneyParams
Anchor link toConfiguration globale du parcours. Envoyée lors de la création/mise à jour et retournée dans info.params.
| Champ | Type | Description |
|---|---|---|
application_code | string | Code d’application auquel le parcours appartient. Requis à la création. |
silent_hours | SilentHours | Heures pendant lesquelles les messages sont supprimés, par canal. |
capping | EntryCapping | Limites sur la fréquence à laquelle un utilisateur peut réintégrer le parcours. |
conversion_window | ConversionWindow | Fenêtre d’attribution des conversions d’objectifs. |
user_id_track_change_policy | UserIDTrackChangePolicy | Comment gérer le changement d’ID d’un utilisateur en milieu de parcours. |
SilentHours
Anchor link toSupprime l’envoi pendant les heures creuses. Configuré par canal : chaque canal prend ses propres SilentHoursParams :
| Champ | Type | Description |
|---|---|---|
push_params | SilentHoursParams | Heures de silence pour les notifications push. |
inapp_params | SilentHoursParams | Heures de silence pour les messages in-app. |
email_params | SilentHoursParams | Heures de silence pour les e-mails. |
sms_params | SilentHoursParams | Heures de silence pour les SMS. |
whatsapp_params | SilentHoursParams | Heures de silence pour WhatsApp. |
line_params | SilentHoursParams | Heures de silence pour LINE. |
Chaque SilentHoursParams est :
| Champ | Type | Description |
|---|---|---|
enabled | bool | Indique si les heures de silence s’appliquent à ce canal. |
from_time | Time | Début de la fenêtre de silence : { "hour": 0–23, "minute": 0–59 }. |
to_time | Time | Fin de la fenêtre de silence. |
week_days | bool[] | Sept booléens pour les jours où la fenêtre s’applique (lundi = index 0). |
behavior | enum | Que faire lorsqu’un message tombe pendant les heures de silence : WaitAndSend (attendre, puis envoyer à la fin de la fenêtre), DropAndGo (ignorer le message, continuer le parcours immédiatement), ou WaitAndDrop (attendre la fin de la fenêtre, puis continuer sans envoyer). |
EntryCapping
Anchor link toLimite la fréquence à laquelle le même utilisateur peut entrer dans le parcours.
| Champ | Type | Description |
|---|---|---|
is_enabled | bool | Indique si le plafonnement des entrées est activé. |
period | uint64 | Nombre minimum de secondes entre les entrées d’un utilisateur. |
ConversionWindow
Anchor link to| Champ | Type | Description |
|---|---|---|
seconds | uint64 | Combien de temps après être entré dans un parcours, l’accomplissement d’un objectif par un utilisateur compte encore comme une conversion. |
Point
Anchor link toUn point est un nœud sur le canevas du parcours : un point d’entrée, un message, un délai, un diviseur, etc.
| Champ | Type | Description |
|---|---|---|
uuid | string | ID unique du point dans le parcours. Doit être un UUID canonique RFC 4122 : 32 chiffres hexadécimaux en groupes 8-4-4-4-12. |
title | string | Nom d’affichage du point. |
point_type | PointType | Le type de nœud. |
outputs | array of PointOutput | Connexions aux points en aval. |
position | Position | Coordonnées du canevas. |
point_data | object | Exactement une clé imbriquée, correspondant à point_type (voir le tableau des types de points). |
PointOutput
Anchor link toLes sorties d’un point sont ses branches sortantes. Leurs clés ne sont pas libres. Le validateur attend un ensemble exact de clés pour chaque type de point, et rejette un parcours dont un point a un nombre incorrect de sorties ou une clé qu’il ne reconnaît pas.
| Champ | Type | Description |
|---|---|---|
identity.key | string | Clé de la branche. Doit suivre les règles des clés de sortie ci-dessous. |
identity.order | int | Ordre d’affichage de la branche. |
info.title | string | Étiquette de branche facultative. |
info.next_point_uuid | string | UUID du prochain point auquel cette branche se connecte. |
Clés de sortie
Anchor link toLa branche par défaut (la première) est toujours nommée "default". Les branches supplémentaires sont nommées "output1", "output2", … (le préfixe output suivi d’un index basé sur 1). Deux types de points dérogent à cette règle, comme indiqué ci-dessous.
| Type de point | Clés de sortie attendues |
|---|---|
Points d’entrée (START_BY_SEGMENT, START_BY_API, EVENT), INAPP, SET_TAGS, WEBHOOK, AUDIENCE_SYNC, et points de message sans diviseur (SEND_PUSH, SEND_EMAIL, SEND_SMS, SEND_WHATSAPP, SEND_LINE, SEND_KAKAO, SEND_TELEGRAM, SEND_DATA) | default |
GOAL_EVENT, EXIT | aucun (pas de sorties) |
FILTER | default, output1 |
BOOLEAN_SPLITTER | default, puis output1 … outputN (une branche supplémentaire par condition. Une simple division oui/non est default + output1) |
WAIT (délai) | default. Un délai dynamique avec division de branche ajoute output1 |
WAIT_EVENT | default est la branche de l’événement non déclenché. output1 (ou, avec un script de conditions, une branche par condition) est le chemin déclenché |
SEND_PUSH avec un diviseur | default, output1 (et output2 lorsque les diviseurs de message et de livraison sont tous deux activés) |
SEND_EMAIL / SEND_SMS / SEND_LINE / SEND_WHATSAPP avec un diviseur | default, output1 |
SEND_WHATSAPP avec un préréglage de réponse rapide | default, plus une branche par réponse rapide. La clé est la valeur de la réponse rapide elle-même |
AB_SPLITTER | output0, output1, output2, … (un par variante. Il n’y a pas de branche default) |
Position
Anchor link to| Champ | Type | Description |
|---|---|---|
x | float | Coordonnée horizontale sur le canevas. |
y | float | Coordonnée verticale sur le canevas. |
Types de points et point_data
Anchor link topoint_data est un one-of : il contient exactement un objet imbriqué dont la clé est déterminée par le point_type du point.
point_type | Clé point_data | Objectif |
|---|---|---|
POINT_TYPE_START_BY_SEGMENT | start_by_segment | Entrée : utilisateurs correspondant à un segment. |
POINT_TYPE_EVENT | message_bus | Entrée : utilisateurs déclenchant un événement. |
POINT_TYPE_START_BY_API | start_by_api | Entrée : utilisateurs injectés via l’appel Start by API. |
POINT_TYPE_WAIT | delay | Attendre un intervalle fixe ou dynamique. |
POINT_TYPE_WAIT_EVENT | wait_event | Attendre qu’un événement se produise. |
POINT_TYPE_SEND_PUSH | send_push | Envoyer une notification push. |
POINT_TYPE_SEND_EMAIL | send_email | Envoyer un e-mail. |
POINT_TYPE_SEND_SMS | send_sms | Envoyer un SMS. |
POINT_TYPE_SEND_WHATSAPP | send_whatsapp | Envoyer un message WhatsApp. |
POINT_TYPE_SEND_TELEGRAM | send_telegram | Envoyer un message Telegram. |
POINT_TYPE_SEND_KAKAO | send_kakao | Envoyer un message Kakao. |
POINT_TYPE_SEND_LINE | send_line | Envoyer un message LINE. |
POINT_TYPE_SEND_DATA | send_data | Envoyer un message de données silencieux. |
POINT_TYPE_INAPP | inapp | Afficher un message in-app. |
POINT_TYPE_BOOLEAN_SPLITTER | boolean_splitter | Diviser les utilisateurs selon une condition (segment, tags ou événement). |
POINT_TYPE_AB_SPLITTER | ab_splitter | Diviser les utilisateurs en groupes A/B. |
POINT_TYPE_FILTER | filter | Autoriser uniquement les utilisateurs correspondant à un filtre à continuer. |
POINT_TYPE_SET_TAGS | set_tags | Mettre à jour les tags utilisateur. |
POINT_TYPE_WEBHOOK | web_hook | Envoyer une requête HTTP sortante. |
POINT_TYPE_GOAL_EVENT | goal_event | Suivre un objectif de conversion. |
POINT_TYPE_AUDIENCE_SYNC | audience_sync | Synchroniser les utilisateurs avec une audience externe. |
POINT_TYPE_EXIT | terminator | Quitter le parcours. |
Exemple de point
Anchor link toUn point “définir des tags” avec une seule connexion en aval :
{ "uuid": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "title": "Tag as engaged", "point_type": "POINT_TYPE_SET_TAGS", "position": { "x": 480, "y": 120 }, "outputs": [ { "identity": { "key": "default", "order": 0 }, "info": { "title": "", "next_point_uuid": "ffffffff-1111-2222-3333-444444444444" } } ], "point_data": { "set_tags": { "application_code": "XXXXX-XXXXX", "tags": [ { "name": "engaged", "value": "true" } ] } }}JourneyComment
Anchor link to| Champ | Type | Description |
|---|---|---|
id | string | UUID du commentaire. |
message | string | Texte du commentaire. |
position | Position | Coordonnées du canevas. |
index | int | Ordre d’affichage. |
created_at | string | Horodatage de création (ISO 8601). |
deleted | bool | Indique si le commentaire est supprimé. |
Énumérations
Anchor link toÉnumération JourneyStatus
Anchor link toSTATUS_DRAFT, STATUS_RUNNING, STATUS_FINISHED, STATUS_ARCHIVED, STATUS_PAUSED, STATUS_UNKNOWN.
Énumération CampaignType
Anchor link toTriggerBased: les utilisateurs entrent lors d’un événement.AudienceBased: les utilisateurs entrent à partir d’un segment.APIBased: les utilisateurs entrent via l’appel Start by API.Mixed: plus d’un type d’entrée.Unknown: type d’entrée non déterminé.
Énumération PointType
Anchor link toVoir le tableau des types de points ci-dessus pour la liste complète et la clé point_data à laquelle chacun correspond.
Énumération UserIDTrackChangePolicy
Anchor link toContrôle ce qui arrive à un utilisateur qui est en milieu de parcours lorsque son ID utilisateur change :
DEFAULT: comportement par défaut.TRACK: continuer à suivre l’utilisateur sous le nouvel ID.DROP: supprimer l’utilisateur du parcours lorsque son ID change.