# Справочник по точкам

Каждая [точка (point)](/ru/developer/api-reference/customer-journey-api/journey-object/#point) содержит объект `point_data` с одним вложенным ключом, соответствующим `point_type` точки (см. [соответствие point-type → ключ](/ru/developer/api-reference/customer-journey-api/journey-object/#point-types-and-point_data)). На этой странице документирована структура под каждым ключом.

<Aside type="note">
Точки входа, времени, разделения, действия и конверсии полностью документированы ниже.

Для точек отправки сообщений (`send_*`, `inapp`) на этой странице рассматриваются только структурные поля: какой пресет или контент использовать и какие настройки канала передавать.
Само содержимое сообщения определяется в пресете и документировано в [Presets API](/ru/developer/api-reference/presets-api/) и документации по каждому каналу.
Некоторые поля ссылаются на вложенные объекты, которые отражают элементы управления в конструкторе Customer Journey.
</Aside>
## Точки входа

В Journey должна быть хотя бы одна точка входа. Все точки входа имеют один выход `default`.

### start_by_segment

Добавляет пользователей, которые соответствуют сегменту. `POINT_TYPE_START_BY_SEGMENT`.

| Поле | Тип | Описание |
|---|---|---|
| `application_code` | string | [Код приложения](/ru/developer/api-reference/api-identifiers/#application-code). |
| `filter_code` | string | [Код сегмента/фильтра](/ru/developer/api-reference/api-identifiers/#segment--filter-code), который определяет аудиторию. |
| `repeat` | `SegmentRepeat` | Необязательное расписание для повторяющегося входа (см. [SegmentRepeat](#segmentrepeat)). |
| `start_at` | timestamp | Не обрабатывать до этого времени (ISO 8601). |
| `is_deactivated` | bool | Выключена ли эта точка входа. |

### message_bus (вход по событию)

Добавляет пользователей, когда они вызывают событие. `POINT_TYPE_EVENT`.

| Поле | Тип | Описание |
|---|---|---|
| `event_name` | string | [Имя события](/ru/developer/api-reference/api-identifiers/#event-name), которое нужно отслеживать. |
| `application_code` | string | [Код приложения](/ru/developer/api-reference/api-identifiers/#application-code). |
| `event_conditions` | `PointEventCondition[]` | Условия, сопоставляемые с атрибутами события. |
| `active_period` | `Period` | Временное окно, в течение которого триггер активен. |
| `multi_entry` | `MultiEntry` | Как пользователь может войти более одного раза (см. [MultiEntry](#multientry)). |
| `attribute_entry` | `AttributeEntry` | Регистрировать User ID, содержащиеся в атрибуте события, вместо пользователя, вызвавшего событие (см. [AttributeEntry](#attributeentry)). |
| `allow_reenter` | bool | Могут ли пользователи повторно входить в Journey. |

##### AttributeEntry

Регистрирует [User ID](/ru/developer/api-reference/api-identifiers/#user-id), содержащиеся в атрибуте события, вместо пользователя, вызвавшего событие. Отражает [пользователей из атрибута события](/ru/product/customer-journey/journey-elements/entry-elements/trigger-based-entry/#users-from-an-event-attribute) в конструкторе Customer Journey.

| Поле | Тип | Описание |
|---|---|---|
| `enabled` | bool | Регистрировать ли пользователей, указанных в атрибуте события, а не пользователя, вызвавшего событие. |
| `attribute_name` | string | Имя атрибута события, который содержит User ID (или список User ID) для регистрации. |

### start_by_api

Точка входа, используемая вызовом [Start by API](/ru/developer/api-reference/customer-journey-api/start-by-api/). `POINT_TYPE_START_BY_API`.

| Поле | Тип | Описание |
|---|---|---|
| `application_code` | string | [Код приложения](/ru/developer/api-reference/api-identifiers/#application-code). |
| `attributes` | string[] | Имена пользовательских атрибутов, которые можно передать в `attribute_values` запроса [Start by API](/ru/developer/api-reference/customer-journey-api/start-by-api/#request-body). |
| `is_deactivated` | bool | Выключена ли эта точка входа. |

## Точки времени

### delay (ожидание)

Приостанавливает каждого пользователя на фиксированный или вычисляемый интервал. `POINT_TYPE_WAIT`. Объект `point_data.delay` устанавливает ровно один из следующих ключей интервала:

| Ключ интервала | Тип | Описание |
|---|---|---|
| `sec` | uint64 | Ожидать фиксированное количество секунд. |
| `exact_time` | [`ExactTime`](#time-objects) | Ожидать до определенного времени суток (`hour`, `minute`). |
| `exact_date_time` | [`ExactDateTime`](#time-objects) | Ожидать до абсолютной даты и времени. |
| `exact_week_days_time` | `ExactWeekDaysTime` | Ожидать до определенного времени в определенные дни недели (соответствие дня `0`=понедельник … `6`=воскресенье → `ExactTime`). |
| `dynamic_time` | [`DynamicTime`](#dynamictime) | Ожидать относительно значения из тега или события. |

`dynamic_time` с `split_branches: true` добавляет ветку `output1` (см. [ключи выходов](/ru/developer/api-reference/customer-journey-api/journey-object/#output-keys)).

#### DynamicTime

| Поле | Тип | Описание |
|---|---|---|
| `from` | enum `DynamicTimeFrom` | Поступает ли базовое время из тега или события. |
| `direction` | enum `DynamicTimeDirection` | Смещение до или после базового времени. |
| `duration` | uint64 | Размер смещения. |
| `unit` | enum `DynamicTimeUnit` | Единица `duration` (минуты, часы, дни, …). |
| `split_branches` | bool | Разделять пользователей на отдельные ветки, когда их вычисленное время отличается. |
| `tag_name` | string | Тег, содержащий базовое время (когда `from` — это тег). |
| `event_name` / `event_attribute` / `point_id` | string | Источник события базового времени (когда `from` — это событие). |

### wait_event

Ожидает, пока пользователи не вызовут событие (или не истечет время ожидания). `POINT_TYPE_WAIT_EVENT`. Выход `default` — это путь для **невызванного** события. Путь для вызванного события — `output1` или, при использовании скрипта, одна ветка на каждое условие.

| Поле | Тип | Описание |
|---|---|---|
| `events` | `PointWaitEventInfo[]` | События, которых нужно ожидать. |
| `conditions_script` | string | Необязательный скрипт для сложной логики с несколькими событиями. Его разобранные имена условий становятся ключами выходов. |
| `multi_entry` | `MultiEntry` | Поведение при повторном входе. |

## Точки разделения и фильтрации

### boolean_splitter

Направляет пользователей по веткам на основе условия. `POINT_TYPE_BOOLEAN_SPLITTER`.

| Поле | Тип | Описание |
|---|---|---|
| `application_code` | string | [Код приложения](/ru/developer/api-reference/api-identifiers/#application-code). |
| `split_strategy` | enum | `SPLIT_FILTER` (по сегменту), `SPLIT_TAGS` (по условиям тегов) или `SPLIT_EVENTS` (по условиям событий). |
| `load_policy` | enum | `ALL` (может соответствовать любое из устройств пользователя) или `FILTER` (только текущее устройство). |
| `filter_code` | string | Код сегмента, когда `split_strategy` — `SPLIT_FILTER`. |
| `filter_expressions` | `FilterExpression[]` | Условия тегов, когда `split_strategy` — `SPLIT_TAGS`: одна дополнительная ветка `output` на каждое выражение. |
| `event` | `BooleanSplitterEventInfo` | Условия событий, когда `split_strategy` — `SPLIT_EVENTS`: одна дополнительная ветка `output` на каждое условие. |

### ab_splitter

Случайным образом разделяет пользователей на взвешенные варианты. `POINT_TYPE_AB_SPLITTER`. Ключи выходов: `output0`, `output1`, … (по одному на каждую запись в `split`, индексируется с 0. Выхода `default` нет).

| Поле | Тип | Описание |
|---|---|---|
| `split` | uint32[] | Процент для каждой ветки. Сумма должна быть равна 100. Индекс `i` соответствует ключу выхода `output{i}`. |
| `auto_select_winner` | bool | Автоматически ли выбирать выигрышную ветку. |
| `winner_strategy` | enum | `ANY_GOAL` или `SPECIFIC_GOAL`. |
| `goal_uuid` | string | Цель, используемая для определения победителя (с `SPECIFIC_GOAL`). |
| `winner_split` | uint32 | Номер выигрышной ветки (начиная с 1, `0` = победителя еще нет). |

### filter

Позволяет продолжить только соответствующим пользователям (`default`), направляя остальных на `output1`. `POINT_TYPE_FILTER`.

| Поле | Тип | Описание |
|---|---|---|
| `filter` | enum `Filter` | Предопределенная проверка: `EMAIL_EXISTS`, `PUSH_TOKEN_EXISTS`, `SMS_TOKEN_EXISTS`, `WHATSAPP_TOKEN_EXISTS`, `LINE_TOKEN_EXISTS` или `CUSTOM`. |
| `filter_raw` | string | Пользовательское выражение фильтра, когда `filter` — `CUSTOM`. |

## Точки действия

### set_tags

Обновляет теги у пользователя. `POINT_TYPE_SET_TAGS`.

| Поле | Тип | Описание |
|---|---|---|
| `application_code` | string | [Код приложения](/ru/developer/api-reference/api-identifiers/#application-code). |
| `tags` | [`Tag`](#tag)[] | Теги для записи. |

#### Tag

| Поле | Тип | Описание |
|---|---|---|
| `name` | string | Имя тега. |
| `type` | enum `TagType` | Тип данных и операция: `TYPE_STRING`, `TYPE_INTEGER`, `TYPE_DATE`, `TYPE_BOOLEAN`, `TYPE_LIST`, `TYPE_LIST_APPEND`, `TYPE_LIST_REMOVE`, `TYPE_DYNAMIC`, … |
| _value_ | oneof | Ровно один ключ значения, соответствующий `type`: `str`, `int`, `bool`, `date`, `price`, `version`, `timezone`, `list` или `dynamic`. |

### web_hook

Отправляет исходящий HTTP-запрос. `POINT_TYPE_WEBHOOK`. Один выход `default`.

| Поле | Тип | Описание |
|---|---|---|
| `method` | string | Метод HTTP (`GET`, `POST`, `PUT`, …). |
| `url` | string | Целевой URL. |
| `request_template` | string | Шаблон тела запроса. Поддерживает шаблоны [Liquid](/ru/developer/api-reference/messaging-api-v2/payload-reference/). |
| `headers` | map&lt;string, string&gt; | Заголовки HTTP. |
| `disabled` | bool | Только для чтения. `true`, когда Pushwoosh автоматически отключил вебхук после повторных ошибок. |
| `reactivate` | bool | Только для записи. Установите `true`, чтобы повторно включить отключенный вебхук. |

## Точки конверсии

### goal_event

Отслеживает цель конверсии. `POINT_TYPE_GOAL_EVENT`. Не имеет выходов.

| Поле | Тип | Описание |
|---|---|---|
| `event_name` | string | Имя события цели. |
| `application_code` | string | [Код приложения](/ru/developer/api-reference/api-identifiers/#application-code). |
| `event_conditions` | `PointEventCondition[]` | Условия, сопоставляемые с атрибутами события цели. |
| `is_throw_out` | bool | Удалять ли пользователя из Journey после достижения цели. |
| `is_cancel_event` | bool | Является ли это отрицательной целью (отменой). |

## Точки выхода

### terminator

Завершает Journey для пользователя. `POINT_TYPE_EXIT`. Пустой объект (`{}`) и не имеет выходов.

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

## Точки отправки сообщений

Все точки отправки сообщений отправляют через канал и имеют общую оболочку. Каждая имеет один выход `default`, если не включен разделитель (см. [ключи выходов](/ru/developer/api-reference/customer-journey-api/journey-object/#output-keys)).

Общие поля:

| Поле | Тип | Описание |
|---|---|---|
| `application_code` | string | [Код приложения](/ru/developer/api-reference/api-identifiers/#application-code). |
| `preset_code` | string | [Пресет](/ru/developer/api-reference/presets-api/) (шаблон) для отправки. `inapp` вместо этого использует `richmedia_code`. |
| `content` / `title` | string | Встроенное содержимое сообщения, если не используется пресет (зависит от канала). |
| `campaign_code` | string | [Код кампании](/ru/developer/api-reference/api-identifiers/#campaign-code) для отслеживания. Создается автоматически, если не указан. |
| `split_params` | [`BehaviorSplitter`](#behaviorsplitter) | Необязательно: ожидать взаимодействия и разветвляться по нему. |
| `message_type` | enum | Тип сообщения [маркетинговое или транзакционное](/ru/product/messaging-channels/marketing-vs-transactional/) (управляет обработкой контрольной группы). |

Типы точек и их примечательные дополнительные поля:

| Тип точки | Ключ `point_data` | Примечания |
|---|---|---|
| `POINT_TYPE_SEND_PUSH` | `send_push` | `split_params` (поведение) плюс разделитель по доставке могут создавать до трех выходов. `send_by_user_id`, `wait_optimal_time`. |
| `POINT_TYPE_SEND_EMAIL` | `send_email` | `liquid_template_params`, `personalise`. См. [Email API](/ru/developer/api-reference/email-api/). |
| `POINT_TYPE_SEND_SMS` | `send_sms` | См. [SMS](/ru/developer/api-reference/sms/). |
| `POINT_TYPE_SEND_WHATSAPP` | `send_whatsapp` | Пресет с быстрыми ответами добавляет один выход на каждый ответ (ключ = значение ответа). См. [WhatsApp](/ru/developer/api-reference/whatsapp/). |
| `POINT_TYPE_SEND_TELEGRAM` | `send_telegram` | Канал Telegram. |
| `POINT_TYPE_SEND_KAKAO` | `send_kakao` | См. [Kakao](/ru/developer/api-reference/kakao/). |
| `POINT_TYPE_SEND_LINE` | `send_line` | См. [LINE API](/ru/developer/api-reference/line-api/). |
| `POINT_TYPE_SEND_DATA` | `send_data` | Тихое сообщение с данными (без UI). |
| `POINT_TYPE_INAPP` | `inapp` | Использует `richmedia_code`, `expire_in_days`, `capping`. |

## Общие типы

### SegmentRepeat

| Поле | Тип | Описание |
|---|---|---|
| `enabled` | bool | Включен ли повторяющийся вход. |
| `frequency` | string | `daily`, `weekly`, `monthly` или `dates`. |
| `every` | uint32 | Повторять каждые N периодов. |
| `dates` | string[] | Конкретные даты, когда `frequency` — `dates`. |
| `time` | `SegmentRepeatTime` | Конфигурация времени суток. |

### Объекты времени

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

### BehaviorSplitter

| Поле | Тип | Описание |
|---|---|---|
| `enabled` | bool | Ожидать ли взаимодействия и разветвляться по нему. |
| `interval` | uint64 | Секунды для ожидания взаимодействия. |

### MultiEntry

Управляет количеством активных сессий, которые пользователь может иметь в Journey одновременно. Отражает [управление количеством одновременных сессий пользователя](/ru/product/customer-journey/journey-elements/entry-elements/trigger-based-entry/#control-how-many-sessions-a-user-can-have-at-the-same-time) в конструкторе Customer Journey. Используется [точкой входа по событию](#message_bus-event-entry) и [wait_event](#wait_event).

| Поле | Тип | Описание |
|---|---|---|
| `enabled` | bool | Может ли пользователь иметь несколько активных сессий одновременно. `false`: одна активная сессия на пользователя. `true`: несколько активных сессий на пользователя. |
| `attribute_name` | string | Необязательно. Атрибут события, который определяет область видимости каждой сессии. Если установлено, пользователь может иметь одну активную сессию на каждое уникальное значение этого атрибута (например, одну на `order_id`). События с одинаковым значением используют одну сессию. Оставьте пустым, чтобы объединить все входы пользователя. |

## Связанные материалы

<CardGrid>
  <LinkCard title="Объект Journey" href="/developer/api-reference/customer-journey-api/journey-object/" />
  <LinkCard title="Создание и обновление" href="/developer/api-reference/customer-journey-api/create-update/" />
  <LinkCard title="Presets API" href="/developer/api-reference/presets-api/" />
</CardGrid>