# Referência de pontos

Cada [ponto](/pt/developer/api-reference/customer-journey-api/journey-object/#point) carrega um objeto `point_data` com exatamente uma chave aninhada, correspondendo ao `point_type` do ponto (consulte o [mapeamento de point-type → chave](/pt/developer/api-reference/customer-journey-api/journey-object/#point-types-and-point_data)). Esta página documenta a estrutura sob cada chave.

<Aside type="note">
Pontos de entrada, tempo, divisão, ação e conversão são documentados na íntegra abaixo.

Para pontos de mensagens (`send_*`, `inapp`), esta página cobre apenas os campos estruturais: qual preset ou conteúdo referenciar e quais configurações de canal passar.
O conteúdo da mensagem em si é definido no preset e documentado na [API de Presets](/pt/developer/api-reference/presets-api/) e na documentação de cada canal.
Alguns campos referenciam objetos aninhados que espelham os controles no construtor da Customer Journey.
</Aside>
## Pontos de entrada

Uma jornada precisa de pelo menos um ponto de entrada. Todos os pontos de entrada têm uma única saída `default`.

### start_by_segment

Insere usuários que correspondem a um segmento. `POINT_TYPE_START_BY_SEGMENT`.

| Campo | Tipo | Descrição |
|---|---|---|
| `application_code` | string | [Código da aplicação](/pt/developer/api-reference/api-identifiers/#application-code). |
| `filter_code` | string | [Código do segmento/filtro](/pt/developer/api-reference/api-identifiers/#segment--filter-code) que define a audiência. |
| `repeat` | `SegmentRepeat` | Agendamento opcional de entrada recorrente (consulte [SegmentRepeat](#segmentrepeat)). |
| `start_at` | timestamp | Não processar antes deste horário (ISO 8601). |
| `is_deactivated` | bool | Se este ponto de entrada está desativado. |

### message_bus (entrada por evento)

Insere usuários quando eles acionam um evento. `POINT_TYPE_EVENT`.

| Campo | Tipo | Descrição |
|---|---|---|
| `event_name` | string | [Nome do evento](/pt/developer/api-reference/api-identifiers/#event-name) a ser escutado. |
| `application_code` | string | [Código da aplicação](/pt/developer/api-reference/api-identifiers/#application-code). |
| `event_conditions` | `PointEventCondition[]` | Condições comparadas com os atributos do evento. |
| `active_period` | `Period` | Janela de tempo durante a qual o gatilho está ativo. |
| `multi_entry` | `MultiEntry` | Como um usuário pode entrar mais de uma vez (consulte [MultiEntry](#multientry)). |
| `attribute_entry` | `AttributeEntry` | Inscreve os User IDs contidos em um atributo de evento em vez do usuário que acionou o evento (consulte [AttributeEntry](#attributeentry)). |
| `allow_reenter` | bool | Se os usuários podem reentrar na jornada. |

##### AttributeEntry

Inscreve os [User IDs](/pt/developer/api-reference/api-identifiers/#user-id) contidos em um atributo de evento, em vez do usuário que acionou o evento. Espelha [Usuários de um atributo de evento](/pt/product/customer-journey/journey-elements/entry-elements/trigger-based-entry/#users-from-an-event-attribute) no construtor da Customer Journey.

| Campo | Tipo | Descrição |
|---|---|---|
| `enabled` | bool | Se deve inscrever usuários nomeados em um atributo de evento em vez do usuário que acionou o evento. |
| `attribute_name` | string | Nome do atributo de evento que contém o User ID (ou lista de User IDs) a ser inscrito. |

### start_by_api

Ponto de entrada alimentado pela chamada [Start by API](/pt/developer/api-reference/customer-journey-api/start-by-api/). `POINT_TYPE_START_BY_API`.

| Campo | Tipo | Descrição |
|---|---|---|
| `application_code` | string | [Código da aplicação](/pt/developer/api-reference/api-identifiers/#application-code). |
| `attributes` | string[] | Nomes dos atributos personalizados que podem ser passados nos `attribute_values` de uma solicitação [Start by API](/pt/developer/api-reference/customer-journey-api/start-by-api/#request-body). |
| `is_deactivated` | bool | Se este ponto de entrada está desativado. |

## Pontos de tempo

### delay (wait)

Pausa cada usuário por um intervalo fixo ou calculado. `POINT_TYPE_WAIT`. O objeto `point_data.delay` define exatamente uma das seguintes chaves de intervalo:

| Chave de intervalo | Tipo | Descrição |
|---|---|---|
| `sec` | uint64 | Aguardar um número fixo de segundos. |
| `exact_time` | [`ExactTime`](#time-objects) | Aguardar até um horário do dia (`hour`, `minute`). |
| `exact_date_time` | [`ExactDateTime`](#time-objects) | Aguardar até uma data e hora absolutas. |
| `exact_week_days_time` | `ExactWeekDaysTime` | Aguardar até horários específicos em dias da semana específicos (mapa do dia `0`=Segunda-feira … `6`=Domingo → `ExactTime`). |
| `dynamic_time` | [`DynamicTime`](#dynamictime) | Aguardar em relação a um valor de uma tag ou evento. |

Um `dynamic_time` com `split_branches: true` adiciona uma ramificação `output1` (consulte [chaves de saída](/pt/developer/api-reference/customer-journey-api/journey-object/#output-keys)).

#### DynamicTime

| Campo | Tipo | Descrição |
|---|---|---|
| `from` | enum `DynamicTimeFrom` | Se o tempo base vem de uma tag ou de um evento. |
| `direction` | enum `DynamicTimeDirection` | Deslocamento antes ou depois do tempo base. |
| `duration` | uint64 | Tamanho do deslocamento. |
| `unit` | enum `DynamicTimeUnit` | Unidade de `duration` (minutos, horas, dias, …). |
| `split_branches` | bool | Dividir usuários em ramificações separadas quando seus horários calculados diferem. |
| `tag_name` | string | Tag que contém o tempo base (quando `from` é uma tag). |
| `event_name` / `event_attribute` / `point_id` | string | Fonte do evento do tempo base (quando `from` é um evento). |

### wait_event

Aguarda até que os usuários acionem um evento (ou um tempo limite). `POINT_TYPE_WAIT_EVENT`. A saída `default` é o caminho **não acionado**. O caminho acionado é `output1` ou, com um script, uma ramificação por condição.

| Campo | Tipo | Descrição |
|---|---|---|
| `events` | `PointWaitEventInfo[]` | Eventos a aguardar. |
| `conditions_script` | string | Script opcional para lógica complexa de múltiplos eventos. Seus nomes de condição analisados tornam-se as chaves de saída. |
| `multi_entry` | `MultiEntry` | Comportamento de reentrada. |

## Pontos de divisão e filtragem

### boolean_splitter

Encaminha os usuários por ramificações com base em uma condição. `POINT_TYPE_BOOLEAN_SPLITTER`.

| Campo | Tipo | Descrição |
|---|---|---|
| `application_code` | string | [Código da aplicação](/pt/developer/api-reference/api-identifiers/#application-code). |
| `split_strategy` | enum | `SPLIT_FILTER` (por segmento), `SPLIT_TAGS` (por condições de tag) ou `SPLIT_EVENTS` (por condições de evento). |
| `load_policy` | enum | `ALL` (qualquer um dos dispositivos do usuário pode corresponder) ou `FILTER` (apenas o dispositivo atual). |
| `filter_code` | string | Código do segmento, quando `split_strategy` é `SPLIT_FILTER`. |
| `filter_expressions` | `FilterExpression[]` | Condições de tag, quando `split_strategy` é `SPLIT_TAGS`: uma ramificação `output` extra por expressão. |
| `event` | `BooleanSplitterEventInfo` | Condições de evento, quando `split_strategy` é `SPLIT_EVENTS`: uma ramificação `output` extra por condição. |

### ab_splitter

Divide aleatoriamente os usuários em variantes ponderadas. `POINT_TYPE_AB_SPLITTER`. As chaves de saída são `output0`, `output1`, … (uma por entrada em `split`, indexada a partir de 0. Não há `default`).

| Campo | Tipo | Descrição |
|---|---|---|
| `split` | uint32[] | Porcentagem para cada ramificação. Deve somar 100. O índice `i` mapeia para a chave de saída `output{i}`. |
| `auto_select_winner` | bool | Se deve escolher automaticamente uma ramificação vencedora. |
| `winner_strategy` | enum | `ANY_GOAL` ou `SPECIFIC_GOAL`. |
| `goal_uuid` | string | Meta usada para determinar o vencedor (com `SPECIFIC_GOAL`). |
| `winner_split` | uint32 | Número da ramificação vencedora (base 1, `0` = ainda sem vencedor). |

### filter

Permite que apenas os usuários correspondentes continuem (`default`), encaminhando o restante para `output1`. `POINT_TYPE_FILTER`.

| Campo | Tipo | Descrição |
|---|---|---|
| `filter` | enum `Filter` | Uma verificação predefinida: `EMAIL_EXISTS`, `PUSH_TOKEN_EXISTS`, `SMS_TOKEN_EXISTS`, `WHATSAPP_TOKEN_EXISTS`, `LINE_TOKEN_EXISTS` ou `CUSTOM`. |
| `filter_raw` | string | Expressão de filtro personalizada, quando o `filter` é `CUSTOM`. |

## Pontos de ação

### set_tags

Atualiza tags no usuário. `POINT_TYPE_SET_TAGS`.

| Campo | Tipo | Descrição |
|---|---|---|
| `application_code` | string | [Código da aplicação](/pt/developer/api-reference/api-identifiers/#application-code). |
| `tags` | [`Tag`](#tag)[] | Tags a serem escritas. |

#### Tag

| Campo | Tipo | Descrição |
|---|---|---|
| `name` | string | Nome da tag. |
| `type` | enum `TagType` | Tipo de dados e operação: `TYPE_STRING`, `TYPE_INTEGER`, `TYPE_DATE`, `TYPE_BOOLEAN`, `TYPE_LIST`, `TYPE_LIST_APPEND`, `TYPE_LIST_REMOVE`, `TYPE_DYNAMIC`, … |
| _value_ | oneof | Exatamente uma chave de valor correspondente a `type`: `str`, `int`, `bool`, `date`, `price`, `version`, `timezone`, `list` ou `dynamic`. |

### web_hook

Envia uma solicitação HTTP de saída. `POINT_TYPE_WEBHOOK`. Saída única `default`.

| Campo | Tipo | Descrição |
|---|---|---|
| `method` | string | Método HTTP (`GET`, `POST`, `PUT`, …). |
| `url` | string | URL de destino. |
| `request_template` | string | Modelo do corpo da solicitação. Suporta templates [Liquid](/pt/developer/api-reference/messaging-api-v2/payload-reference/). |
| `headers` | map&lt;string, string&gt; | Cabeçalhos HTTP. |
| `disabled` | bool | Apenas leitura. `true` quando o Pushwoosh desativou automaticamente o webhook após erros repetidos. |
| `reactivate` | bool | Apenas escrita. Defina como `true` para reativar um webhook desativado. |

## Pontos de conversão

### goal_event

Rastreia uma meta de conversão. `POINT_TYPE_GOAL_EVENT`. Não tem saídas.

| Campo | Tipo | Descrição |
|---|---|---|
| `event_name` | string | Nome do evento da meta. |
| `application_code` | string | [Código da aplicação](/pt/developer/api-reference/api-identifiers/#application-code). |
| `event_conditions` | `PointEventCondition[]` | Condições comparadas com os atributos do evento da meta. |
| `is_throw_out` | bool | Se o usuário deve ser removido da jornada assim que a meta for alcançada. |
| `is_cancel_event` | bool | Se esta é uma meta negativa (de cancelamento). |

## Pontos de saída

### terminator

Termina a jornada para o usuário. `POINT_TYPE_EXIT`. Objeto vazio (`{}`) e sem saídas.

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

## Pontos de mensagens

Todos os pontos de mensagens enviam através de um canal e compartilham um envelope comum. Cada um tem uma única saída `default`, a menos que um divisor esteja ativado (consulte [chaves de saída](/pt/developer/api-reference/customer-journey-api/journey-object/#output-keys)).

Campos comuns:

| Campo | Tipo | Descrição |
|---|---|---|
| `application_code` | string | [Código da aplicação](/pt/developer/api-reference/api-identifiers/#application-code). |
| `preset_code` | string | [Preset](/pt/developer/api-reference/presets-api/) (modelo) a ser enviado. `inapp` usa `richmedia_code` em vez disso. |
| `content` / `title` | string | Conteúdo da mensagem em linha, quando não estiver usando um preset (dependente do canal). |
| `campaign_code` | string | [Código da campanha](/pt/developer/api-reference/api-identifiers/#campaign-code) para rastreamento. Criado automaticamente se omitido. |
| `split_params` | [`BehaviorSplitter`](#behaviorsplitter) | Opcional: aguardar por uma interação e ramificar com base nela. |
| `message_type` | enum | Tipo de mensagem [Marketing vs transacional](/pt/product/messaging-channels/marketing-vs-transactional/) (controla o tratamento do grupo de controle). |

Tipos de ponto e seus campos extras notáveis:

| Tipo de ponto | Chave `point_data` | Notas |
|---|---|---|
| `POINT_TYPE_SEND_PUSH` | `send_push` | `split_params` (comportamento) mais um divisor de entrega podem produzir até três saídas. `send_by_user_id`, `wait_optimal_time`. |
| `POINT_TYPE_SEND_EMAIL` | `send_email` | `liquid_template_params`, `personalise`. Consulte a [API de E-mail](/pt/developer/api-reference/email-api/). |
| `POINT_TYPE_SEND_SMS` | `send_sms` | Consulte [SMS](/pt/developer/api-reference/sms/). |
| `POINT_TYPE_SEND_WHATSAPP` | `send_whatsapp` | Um preset de resposta rápida adiciona uma saída por resposta (chave = valor da resposta). Consulte [WhatsApp](/pt/developer/api-reference/whatsapp/). |
| `POINT_TYPE_SEND_TELEGRAM` | `send_telegram` | Canal do Telegram. |
| `POINT_TYPE_SEND_KAKAO` | `send_kakao` | Consulte [Kakao](/pt/developer/api-reference/kakao/). |
| `POINT_TYPE_SEND_LINE` | `send_line` | Consulte a [API do LINE](/pt/developer/api-reference/line-api/). |
| `POINT_TYPE_SEND_DATA` | `send_data` | Mensagem de dados silenciosa (sem interface do usuário). |
| `POINT_TYPE_INAPP` | `inapp` | Usa `richmedia_code`, `expire_in_days`, `capping`. |

## Tipos compartilhados

### SegmentRepeat

| Campo | Tipo | Descrição |
|---|---|---|
| `enabled` | bool | Se a entrada recorrente está ativada. |
| `frequency` | string | `daily`, `weekly`, `monthly` ou `dates`. |
| `every` | uint32 | Repetir a cada N períodos. |
| `dates` | string[] | Datas específicas, quando `frequency` é `dates`. |
| `time` | `SegmentRepeatTime` | Configuração de hora do dia. |

### Objetos de tempo

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

### BehaviorSplitter

| Campo | Tipo | Descrição |
|---|---|---|
| `enabled` | bool | Se deve aguardar por uma interação e ramificar com base nela. |
| `interval` | uint64 | Segundos para aguardar a interação. |

### MultiEntry

Controla quantas sessões ativas um usuário pode ter na jornada ao mesmo tempo. Espelha [Controlar quantas sessões um usuário pode ter ao mesmo tempo](/pt/product/customer-journey/journey-elements/entry-elements/trigger-based-entry/#control-how-many-sessions-a-user-can-have-at-the-same-time) no construtor da Customer Journey. Usado pelo [ponto de entrada de evento](#message_bus-event-entry) e [wait_event](#wait_event).

| Campo | Tipo | Descrição |
|---|---|---|
| `enabled` | bool | Se um usuário pode ter várias sessões ativas ao mesmo tempo. `false`: uma sessão ativa por usuário. `true`: várias sessões ativas por usuário. |
| `attribute_name` | string | Opcional. Atributo de evento que define o escopo de cada sessão. Quando definido, um usuário pode ter uma sessão ativa por valor distinto deste atributo (por exemplo, uma por `order_id`). Eventos com o mesmo valor compartilham uma sessão. Deixe em branco para definir o escopo de todas as entradas do usuário juntas. |

## Relacionados

<CardGrid>
  <LinkCard title="Objeto Journey" href="/developer/api-reference/customer-journey-api/journey-object/" />
  <LinkCard title="Criar e atualizar" href="/developer/api-reference/customer-journey-api/create-update/" />
  <LinkCard title="API de Presets" href="/developer/api-reference/presets-api/" />
</CardGrid>