# Référence des points

Chaque [point](/fr/developer/api-reference/customer-journey-api/journey-object/#point) contient un objet `point_data` avec une seule clé imbriquée, correspondant au `point_type` du point (voir le [mappage type de point → clé](/fr/developer/api-reference/customer-journey-api/journey-object/#point-types-and-point_data)). Cette page documente la structure sous chaque clé.

<Aside type="note">
Les points d'entrée, de temporisation, de division, d'action et de conversion sont documentés en détail ci-dessous.

Pour les points de messagerie (`send_*`, `inapp`), cette page ne couvre que les champs structurels : quel préréglage ou contenu référencer et quels paramètres de canal transmettre.
Le contenu du message lui-même est défini dans le préréglage et documenté dans l'[API Préréglages](/fr/developer/api-reference/presets-api/) et la documentation de chaque canal.
Certains champs font référence à des objets imbriqués qui reflètent les contrôles dans le constructeur de Customer Journey.
</Aside>
## Points d'entrée

Un parcours a besoin d'au moins un point d'entrée. Tous les points d'entrée ont une seule sortie `default`.

### start_by_segment

Fait entrer les utilisateurs qui correspondent à un segment. `POINT_TYPE_START_BY_SEGMENT`.

| Champ | Type | Description |
|---|---|---|
| `application_code` | string | [Code d'application](/fr/developer/api-reference/api-identifiers/#application-code). |
| `filter_code` | string | [Code de segment/filtre](/fr/developer/api-reference/api-identifiers/#segment--filter-code) qui définit l'audience. |
| `repeat` | `SegmentRepeat` | Calendrier d'entrée récurrente optionnel (voir [SegmentRepeat](#segmentrepeat)). |
| `start_at` | timestamp | Ne pas traiter avant cette heure (ISO 8601). |
| `is_deactivated` | bool | Indique si ce point d'entrée est désactivé. |

### message_bus (entrée d'événement)

Fait entrer les utilisateurs lorsqu'ils déclenchent un événement. `POINT_TYPE_EVENT`.

| Champ | Type | Description |
|---|---|---|
| `event_name` | string | [Nom de l'événement](/fr/developer/api-reference/api-identifiers/#event-name) à écouter. |
| `application_code` | string | [Code d'application](/fr/developer/api-reference/api-identifiers/#application-code). |
| `event_conditions` | `PointEventCondition[]` | Conditions comparées aux attributs de l'événement. |
| `active_period` | `Period` | Fenêtre de temps pendant laquelle le déclencheur est actif. |
| `multi_entry` | `MultiEntry` | Comment un utilisateur peut entrer plus d'une fois (voir [MultiEntry](#multientry)). |
| `attribute_entry` | `AttributeEntry` | Inscrire les ID utilisateur contenus dans un attribut d'événement au lieu de l'utilisateur qui a déclenché l'événement (voir [AttributeEntry](#attributeentry)). |
| `allow_reenter` | bool | Indique si les utilisateurs peuvent réintégrer le parcours. |

##### AttributeEntry

Inscrit les [ID utilisateur](/fr/developer/api-reference/api-identifiers/#user-id) contenus dans un attribut d'événement, au lieu de l'utilisateur qui a déclenché l'événement. Reflète [Utilisateurs d'un attribut d'événement](/fr/product/customer-journey/journey-elements/entry-elements/trigger-based-entry/#users-from-an-event-attribute) dans le constructeur de Customer Journey.

| Champ | Type | Description |
|---|---|---|
| `enabled` | bool | Indique s'il faut inscrire les utilisateurs nommés dans un attribut d'événement plutôt que l'utilisateur qui a déclenché l'événement. |
| `attribute_name` | string | Nom de l'attribut d'événement qui contient l'ID utilisateur (ou la liste d'ID utilisateur) à inscrire. |

### start_by_api

Point d'entrée alimenté par l'appel [Démarrer par API](/fr/developer/api-reference/customer-journey-api/start-by-api/). `POINT_TYPE_START_BY_API`.

| Champ | Type | Description |
|---|---|---|
| `application_code` | string | [Code d'application](/fr/developer/api-reference/api-identifiers/#application-code). |
| `attributes` | string[] | Noms des attributs personnalisés qui peuvent être passés dans les `attribute_values` d'une requête [Démarrer par API](/fr/developer/api-reference/customer-journey-api/start-by-api/#request-body). |
| `is_deactivated` | bool | Indique si ce point d'entrée est désactivé. |

## Points de temporisation

### delay (attente)

Met en pause chaque utilisateur pour un intervalle fixe ou calculé. `POINT_TYPE_WAIT`. L'objet `point_data.delay` définit exactement l'une des clés d'intervalle suivantes :

| Clé d'intervalle | Type | Description |
|---|---|---|
| `sec` | uint64 | Attendre un nombre fixe de secondes. |
| `exact_time` | [`ExactTime`](#time-objects) | Attendre jusqu'à une heure de la journée (`hour`, `minute`). |
| `exact_date_time` | [`ExactDateTime`](#time-objects) | Attendre jusqu'à une date et une heure absolues. |
| `exact_week_days_time` | `ExactWeekDaysTime` | Attendre jusqu'à des heures spécifiques sur des jours de la semaine spécifiques (mappage du jour `0`=Lundi … `6`=Dimanche → `ExactTime`). |
| `dynamic_time` | [`DynamicTime`](#dynamictime) | Attendre par rapport à une valeur d'un tag ou d'un événement. |

Un `dynamic_time` avec `split_branches: true` ajoute une branche `output1` (voir [clés de sortie](/fr/developer/api-reference/customer-journey-api/journey-object/#output-keys)).

#### DynamicTime

| Champ | Type | Description |
|---|---|---|
| `from` | enum `DynamicTimeFrom` | Indique si l'heure de base provient d'un tag ou d'un événement. |
| `direction` | enum `DynamicTimeDirection` | Décalage avant ou après l'heure de base. |
| `duration` | uint64 | Taille du décalage. |
| `unit` | enum `DynamicTimeUnit` | Unité de `duration` (minutes, heures, jours, …). |
| `split_branches` | bool | Divise les utilisateurs en branches séparées lorsque leurs heures calculées diffèrent. |
| `tag_name` | string | Tag contenant l'heure de base (lorsque `from` est un tag). |
| `event_name` / `event_attribute` / `point_id` | string | Source de l'événement pour l'heure de base (lorsque `from` est un événement). |

### wait_event

Attend que les utilisateurs déclenchent un événement (ou un délai d'attente). `POINT_TYPE_WAIT_EVENT`. La sortie `default` est le chemin **non déclenché**. Le chemin déclenché est `output1` ou, avec un script, une branche par condition.

| Champ | Type | Description |
|---|---|---|
| `events` | `PointWaitEventInfo[]` | Événements à attendre. |
| `conditions_script` | string | Script optionnel pour une logique multi-événements complexe. Ses noms de conditions analysés deviennent les clés de sortie. |
| `multi_entry` | `MultiEntry` | Comportement de ré-entrée. |

## Points de division et de filtrage

### boolean_splitter

Achemine les utilisateurs vers des branches en fonction d'une condition. `POINT_TYPE_BOOLEAN_SPLITTER`.

| Champ | Type | Description |
|---|---|---|
| `application_code` | string | [Code d'application](/fr/developer/api-reference/api-identifiers/#application-code). |
| `split_strategy` | enum | `SPLIT_FILTER` (par segment), `SPLIT_TAGS` (par conditions de tag), ou `SPLIT_EVENTS` (par conditions d'événement). |
| `load_policy` | enum | `ALL` (n'importe lequel des appareils de l'utilisateur peut correspondre) ou `FILTER` (uniquement l'appareil actuel). |
| `filter_code` | string | Code de segment, lorsque `split_strategy` est `SPLIT_FILTER`. |
| `filter_expressions` | `FilterExpression[]` | Conditions de tag, lorsque `split_strategy` est `SPLIT_TAGS` : une branche `output` supplémentaire par expression. |
| `event` | `BooleanSplitterEventInfo` | Conditions d'événement, lorsque `split_strategy` est `SPLIT_EVENTS` : une branche `output` supplémentaire par condition. |

### ab_splitter

Divise aléatoirement les utilisateurs en variantes pondérées. `POINT_TYPE_AB_SPLITTER`. Les clés de sortie sont `output0`, `output1`, … (une par entrée dans `split`, indexée à partir de 0. Il n'y a pas de `default`).

| Champ | Type | Description |
|---|---|---|
| `split` | uint32[] | Pourcentage pour chaque branche. La somme doit être de 100. L'index `i` correspond à la clé de sortie `output{i}`. |
| `auto_select_winner` | bool | Indique s'il faut choisir automatiquement une branche gagnante. |
| `winner_strategy` | enum | `ANY_GOAL` ou `SPECIFIC_GOAL`. |
| `goal_uuid` | string | Objectif utilisé pour déterminer le gagnant (avec `SPECIFIC_GOAL`). |
| `winner_split` | uint32 | Numéro de la branche gagnante (base 1, `0` = pas encore de gagnant). |

### filter

Laisse uniquement les utilisateurs correspondants continuer (`default`), acheminant les autres vers `output1`. `POINT_TYPE_FILTER`.

| Champ | Type | Description |
|---|---|---|
| `filter` | enum `Filter` | Une vérification prédéfinie : `EMAIL_EXISTS`, `PUSH_TOKEN_EXISTS`, `SMS_TOKEN_EXISTS`, `WHATSAPP_TOKEN_EXISTS`, `LINE_TOKEN_EXISTS`, ou `CUSTOM`. |
| `filter_raw` | string | Expression de filtre personnalisée, lorsque `filter` est `CUSTOM`. |

## Points d'action

### set_tags

Met à jour les tags de l'utilisateur. `POINT_TYPE_SET_TAGS`.

| Champ | Type | Description |
|---|---|---|
| `application_code` | string | [Code d'application](/fr/developer/api-reference/api-identifiers/#application-code). |
| `tags` | [`Tag`](#tag)[] | Tags à écrire. |

#### Tag

| Champ | Type | Description |
|---|---|---|
| `name` | string | Nom du tag. |
| `type` | enum `TagType` | Type de données et opération : `TYPE_STRING`, `TYPE_INTEGER`, `TYPE_DATE`, `TYPE_BOOLEAN`, `TYPE_LIST`, `TYPE_LIST_APPEND`, `TYPE_LIST_REMOVE`, `TYPE_DYNAMIC`, … |
| _value_ | oneof | Exactement une clé de valeur correspondant à `type` : `str`, `int`, `bool`, `date`, `price`, `version`, `timezone`, `list`, ou `dynamic`. |

### web_hook

Envoie une requête HTTP sortante. `POINT_TYPE_WEBHOOK`. Sortie unique `default`.

| Champ | Type | Description |
|---|---|---|
| `method` | string | Méthode HTTP (`GET`, `POST`, `PUT`, …). |
| `url` | string | URL cible. |
| `request_template` | string | Modèle de corps de requête. Prend en charge les modèles [Liquid](/fr/developer/api-reference/messaging-api-v2/payload-reference/). |
| `headers` | map&lt;string, string&gt; | En-têtes HTTP. |
| `disabled` | bool | Lecture seule. `true` lorsque Pushwoosh a désactivé automatiquement le webhook après des erreurs répétées. |
| `reactivate` | bool | Écriture seule. Mettre à `true` pour réactiver un webhook désactivé. |

## Points de conversion

### goal_event

Suit un objectif de conversion. `POINT_TYPE_GOAL_EVENT`. N'a pas de sorties.

| Champ | Type | Description |
|---|---|---|
| `event_name` | string | Nom de l'événement objectif. |
| `application_code` | string | [Code d'application](/fr/developer/api-reference/api-identifiers/#application-code). |
| `event_conditions` | `PointEventCondition[]` | Conditions comparées aux attributs de l'événement objectif. |
| `is_throw_out` | bool | Indique s'il faut retirer l'utilisateur du parcours une fois l'objectif atteint. |
| `is_cancel_event` | bool | Indique s'il s'agit d'un objectif négatif (annulation). |

## Points de sortie

### terminator

Termine le parcours pour l'utilisateur. `POINT_TYPE_EXIT`. Objet vide (`{}`) et pas de sorties.

```json
{ "point_type": "POINT_TYPE_EXIT", "point_data": { "terminator": {} }, "outputs": [] }
```

## Points de messagerie

Tous les points de messagerie envoient via un canal et partagent une enveloppe commune. Chacun a une seule sortie `default` à moins qu'un diviseur soit activé (voir [clés de sortie](/fr/developer/api-reference/customer-journey-api/journey-object/#output-keys)).

Champs communs :

| Champ | Type | Description |
|---|---|---|
| `application_code` | string | [Code d'application](/fr/developer/api-reference/api-identifiers/#application-code). |
| `preset_code` | string | [Préréglage](/fr/developer/api-reference/presets-api/) (modèle) à envoyer. `inapp` utilise `richmedia_code` à la place. |
| `content` / `title` | string | Contenu du message en ligne, lorsqu'on n'utilise pas de préréglage (dépendant du canal). |
| `campaign_code` | string | [Code de campagne](/fr/developer/api-reference/api-identifiers/#campaign-code) pour le suivi. Créé automatiquement s'il est omis. |
| `split_params` | [`BehaviorSplitter`](#behaviorsplitter) | Optionnel : attendre une interaction et créer une branche en fonction de celle-ci. |
| `message_type` | enum | Type de message [Marketing vs transactionnel](/fr/product/messaging-channels/marketing-vs-transactional/) (contrôle la gestion du groupe de contrôle). |

Types de points et leurs champs supplémentaires notables :

| Type de point | Clé `point_data` | Remarques |
|---|---|---|
| `POINT_TYPE_SEND_PUSH` | `send_push` | `split_params` (comportement) plus un diviseur de livraison peuvent produire jusqu'à trois sorties. `send_by_user_id`, `wait_optimal_time`. |
| `POINT_TYPE_SEND_EMAIL` | `send_email` | `liquid_template_params`, `personalise`. Voir l'[API E-mail](/fr/developer/api-reference/email-api/). |
| `POINT_TYPE_SEND_SMS` | `send_sms` | Voir [SMS](/fr/developer/api-reference/sms/). |
| `POINT_TYPE_SEND_WHATSAPP` | `send_whatsapp` | Un préréglage de réponse rapide ajoute une sortie par réponse (clé = valeur de la réponse). Voir [WhatsApp](/fr/developer/api-reference/whatsapp/). |
| `POINT_TYPE_SEND_TELEGRAM` | `send_telegram` | Canal Telegram. |
| `POINT_TYPE_SEND_KAKAO` | `send_kakao` | Voir [Kakao](/fr/developer/api-reference/kakao/). |
| `POINT_TYPE_SEND_LINE` | `send_line` | Voir [API LINE](/fr/developer/api-reference/line-api/). |
| `POINT_TYPE_SEND_DATA` | `send_data` | Message de données silencieux (pas d'interface utilisateur). |
| `POINT_TYPE_INAPP` | `inapp` | Utilise `richmedia_code`, `expire_in_days`, `capping`. |

## Types partagés

### SegmentRepeat

| Champ | Type | Description |
|---|---|---|
| `enabled` | bool | Indique si l'entrée récurrente est activée. |
| `frequency` | string | `daily`, `weekly`, `monthly`, ou `dates`. |
| `every` | uint32 | Répéter toutes les N périodes. |
| `dates` | string[] | Dates spécifiques, lorsque `frequency` est `dates`. |
| `time` | `SegmentRepeatTime` | Configuration de l'heure de la journée. |

### Objets Time

- `ExactTime` : `{ "hour": 0–23, "minute": 0–59 }`.
- `ExactDateTime` : `{ "year", "month": 1–12, "day": 1–31, "hour": 0–23, "minute": 0–59 }`.

### BehaviorSplitter

| Champ | Type | Description |
|---|---|---|
| `enabled` | bool | Indique s'il faut attendre une interaction et créer une branche en fonction de celle-ci. |
| `interval` | uint64 | Secondes à attendre pour l'interaction. |

### MultiEntry

Contrôle le nombre de sessions actives qu'un utilisateur peut avoir dans le parcours en même temps. Reflète [Contrôler le nombre de sessions qu'un utilisateur peut avoir en même temps](/fr/product/customer-journey/journey-elements/entry-elements/trigger-based-entry/#control-how-many-sessions-a-user-can-have-at-the-same-time) dans le constructeur de Customer Journey. Utilisé par le [point d'entrée d'événement](#message_bus-event-entry) et [wait_event](#wait_event).

| Champ | Type | Description |
|---|---|---|
| `enabled` | bool | Indique si un utilisateur peut avoir plusieurs sessions actives en même temps. `false` : une session active par utilisateur. `true` : plusieurs sessions actives par utilisateur. |
| `attribute_name` | string | Optionnel. Attribut d'événement qui définit la portée de chaque session. Lorsqu'il est défini, un utilisateur peut avoir une session active par valeur distincte de cet attribut (par exemple, une par `order_id`). Les événements avec la même valeur partagent une session. Laisser vide pour regrouper toutes les entrées de l'utilisateur. |

## Articles connexes

<CardGrid>
  <LinkCard title="Objet Journey" href="/developer/api-reference/customer-journey-api/journey-object/" />
  <LinkCard title="Créer et mettre à jour" href="/developer/api-reference/customer-journey-api/create-update/" />
  <LinkCard title="API Préréglages" href="/developer/api-reference/presets-api/" />
</CardGrid>