Objet Journey
Les méthodes de cycle de vie, de création et de mise à jour retournent toutes un objet Journey avec la même structure de haut niveau :
{ "info": { ... }, // métadonnées en lecture seule (réponses uniquement) "params": { ... }, // configuration à l'échelle du Journey (création / mise à jour) "points": [ ... ], // nœuds du canevas et leurs connexions "comments": [ ... ] // commentaires du canevas}Lorsque vous créez ou mettez à jour un Journey, 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 Journey 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 du Journey. |
title | string | Nom du Journey. |
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 Journey a été démarré au moins une fois. |
params | JourneyParams | Configuration à l’échelle du Journey. |
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 Journey. |
stop_reason | string | Raison de l’arrêt du Journey, le cas échéant. |
last_edited_by | User | Utilisateur ayant modifié le Journey en dernier. |
dynamic_entry | bool | Indique si l’entrée dynamique est activée. |
JourneyParams
Anchor link toConfiguration à l’échelle du Journey. 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 Journey 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 Journey. |
conversion_window | ConversionWindow | Fenêtre pour l’attribution des conversions d’objectifs. |
user_id_track_change_policy | UserIDTrackChangePolicy | Comment gérer le changement d’ID d’un utilisateur en milieu de Journey. |
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 Journey 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 Journey.
| Champ | Type | Description |
|---|---|---|
is_enabled | bool | Indique si la limitation d’entrée est activée. |
period | uint64 | Nombre minimum de minutes entre les entrées d’un utilisateur. 0 signifie que l’utilisateur ne peut entrer qu’une seule fois dans sa vie. |
La limite est comptée à partir du moment où l’utilisateur est entré dans le Journey, et elle est suivie par ID utilisateur, de sorte que tous les appareils d’un même utilisateur partagent une seule entrée. Pendant que la période dure, le point d’entrée rejette les tentatives d’entrée ultérieures et les compte comme des erreurs au lieu de créer un voyageur.
Trois comportements à prendre en compte lorsque vous modifiez ces paramètres :
- Quitter le Journey prématurément ne lève pas la limite. L’utilisateur attend la fin de la période complète même après avoir atteint un point de sortie.
- Une
périodemodifiée s’applique aux entrées effectuées après la mise à jour. Les utilisateurs qui sont entrés plus tôt conservent la période qui était en vigueur au moment de leur entrée. - Régler
is_enabledsurfalselève immédiatement la limite pour chaque utilisateur.
ConversionWindow
Anchor link to| Champ | Type | Description |
|---|---|---|
seconds | uint64 | Combien de temps après être entré dans un Journey 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 Journey : un point d’entrée, un message, un délai, un séparateur, etc.
| Champ | Type | Description |
|---|---|---|
uuid | string | ID unique du point dans le Journey. 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 sur le 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 Journey 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 optionnelle. |
info.next_point_uuid | string | UUID du prochain point auquel cette branche se connecte. Optionnel — le laisser non défini met fin au Journey pour l’utilisateur, de la même manière qu’un point terminateur explicite. |
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 séparateur (SEND_PUSH, SEND_EMAIL, SEND_SMS, SEND_WHATSAPP, SEND_LINE, SEND_KAKAO, SEND_TELEGRAM, SEND_DATA) | default |
GOAL_EVENT, EXIT | aucune (pas de sorties) |
FILTER | default, output1 |
BOOLEAN_SPLITTER | default, puis output1 … outputN (une branche supplémentaire par condition. Une simple séparation oui/non est default + output1) |
WAIT (délai) | default. Un délai dynamique avec séparation de branche ajoute output1 |
WAIT_EVENT | default est la branche é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 séparateur | default, output1 (et output2 lorsque les séparateurs de message et de livraison sont tous deux activés) |
SEND_EMAIL / SEND_SMS / SEND_LINE / SEND_WHATSAPP avec un séparateur | 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 Démarrer par 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 | Séparer les utilisateurs selon une condition (segment, tags ou événement). |
POINT_TYPE_AB_SPLITTER | ab_splitter | Séparer les utilisateurs en groupes A/B. |
POINT_TYPE_FILTER | filter | Permettre uniquement aux utilisateurs correspondant à un filtre de 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 Journey. |
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 sur le 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 sur un événement.AudienceBased: les utilisateurs entrent depuis un segment.APIBased: les utilisateurs entrent via l’appel Démarrer par 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 Journey lorsque son ID utilisateur change :
DEFAULT: comportement par défaut.TRACK: continuer à suivre l’utilisateur sous le nouvel ID.DROP: retirer l’utilisateur du Journey lorsque son ID change.