# 포인트 참조

모든 [포인트](/ko/developer/api-reference/customer-journey-api/journey-object/#point)는 포인트의 `point_type`과 일치하는 정확히 하나의 중첩된 키를 가진 `point_data` 객체를 포함합니다 ([포인트 유형 → 키 매핑](/ko/developer/api-reference/customer-journey-api/journey-object/#point-types-and-point_data) 참조). 이 페이지는 각 키 아래의 구조를 문서화합니다.

<Aside type="note">
진입, 타이밍, 분기, 액션, 전환 포인트는 아래에 자세히 설명되어 있습니다.

메시징 포인트(`send_*`, `inapp`)의 경우, 이 페이지에서는 구조적 필드만 다룹니다: 어떤 프리셋이나 콘텐츠를 참조할지, 어떤 채널 설정을 전달할지 등입니다.
메시지 콘텐츠 자체는 프리셋에 정의되어 있으며 [프리셋 API](/ko/developer/api-reference/presets-api/) 및 채널별 문서에 설명되어 있습니다.
일부 필드는 Customer Journey 빌더의 컨트롤을 미러링하는 중첩된 객체를 참조합니다.
</Aside>
## 진입 포인트

Journey에는 최소 하나 이상의 진입 포인트가 필요합니다. 모든 진입 포인트는 단일 `default` 출력을 가집니다.

### start_by_segment

세그먼트와 일치하는 사용자를 진입시킵니다. `POINT_TYPE_START_BY_SEGMENT`.

| 필드 | 유형 | 설명 |
|---|---|---|
| `application_code` | string | [애플리케이션 코드](/ko/developer/api-reference/api-identifiers/#application-code). |
| `filter_code` | string | 잠재고객을 정의하는 [세그먼트/필터 코드](/ko/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 | 수신할 [이벤트 이름](/ko/developer/api-reference/api-identifiers/#event-name). |
| `application_code` | string | [애플리케이션 코드](/ko/developer/api-reference/api-identifiers/#application-code). |
| `event_conditions` | `PointEventCondition[]` | 이벤트의 속성과 일치하는 조건. |
| `active_period` | `Period` | 트리거가 활성화되는 시간 창. |
| `multi_entry` | `MultiEntry` | 사용자가 두 번 이상 진입할 수 있는 방법 ([MultiEntry](#multientry) 참조). |
| `attribute_entry` | `AttributeEntry` | 이벤트를 트리거한 사용자 대신 이벤트 속성에 포함된 사용자 ID를 등록합니다 ([AttributeEntry](#attributeentry) 참조). |
| `allow_reenter` | bool | 사용자가 Journey에 다시 진입할 수 있는지 여부. |

##### AttributeEntry

이벤트를 트리거한 사용자 대신 이벤트 속성에 포함된 [사용자 ID](/ko/developer/api-reference/api-identifiers/#user-id)를 등록합니다. Customer Journey 빌더의 [이벤트 속성의 사용자](/ko/product/customer-journey/journey-elements/entry-elements/trigger-based-entry/#users-from-an-event-attribute)를 미러링합니다.

| 필드 | 유형 | 설명 |
|---|---|---|
| `enabled` | bool | 이벤트를 트리거한 사용자 대신 이벤트 속성에 명시된 사용자를 등록할지 여부. |
| `attribute_name` | string | 등록할 사용자 ID(또는 사용자 ID 목록)를 포함하는 이벤트 속성의 이름. |

### start_by_api

[Start by API](/ko/developer/api-reference/customer-journey-api/start-by-api/) 호출에 의해 공급되는 진입 포인트입니다. `POINT_TYPE_START_BY_API`.

| 필드 | 유형 | 설명 |
|---|---|---|
| `application_code` | string | [애플리케이션 코드](/ko/developer/api-reference/api-identifiers/#application-code). |
| `attributes` | string[] | [Start by API](/ko/developer/api-reference/customer-journey-api/start-by-api/#request-body) 요청의 `attribute_values`에 전달될 수 있는 사용자 지정 속성의 이름. |
| `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) | 태그 또는 이벤트의 값을 기준으로 대기합니다. |

`split_branches: true`를 가진 `dynamic_time`은 `output1` 브랜치를 추가합니다 ([출력 키](/ko/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 | [애플리케이션 코드](/ko/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 | [애플리케이션 코드](/ko/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](/ko/developer/api-reference/messaging-api-v2/payload-reference/) 템플릿을 지원합니다. |
| `headers` | map&lt;string, string&gt; | HTTP 헤더. |
| `disabled` | bool | 읽기 전용. 반복적인 오류 후 Pushwoosh가 웹훅을 자동으로 비활성화했을 때 `true`입니다. |
| `reactivate` | bool | 쓰기 전용. 비활성화된 웹훅을 다시 활성화하려면 `true`로 설정합니다. |

## 전환 포인트

### goal_event

전환 목표를 추적합니다. `POINT_TYPE_GOAL_EVENT`. 출력이 없습니다.

| 필드 | 유형 | 설명 |
|---|---|---|
| `event_name` | string | 목표 이벤트 이름. |
| `application_code` | string | [애플리케이션 코드](/ko/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` 출력을 가집니다 ([출력 키](/ko/developer/api-reference/customer-journey-api/journey-object/#output-keys) 참조).

공통 필드:

| 필드 | 유형 | 설명 |
|---|---|---|
| `application_code` | string | [애플리케이션 코드](/ko/developer/api-reference/api-identifiers/#application-code). |
| `preset_code` | string | 보낼 [프리셋](/ko/developer/api-reference/presets-api/) (템플릿). `inapp`은 대신 `richmedia_code`를 사용합니다. |
| `content` / `title` | string | 프리셋을 사용하지 않을 때의 인라인 메시지 콘텐츠 (채널에 따라 다름). |
| `campaign_code` | string | 추적을 위한 [캠페인 코드](/ko/developer/api-reference/api-identifiers/#campaign-code). 생략하면 자동으로 생성됩니다. |
| `split_params` | [`BehaviorSplitter`](#behaviorsplitter) | 선택 사항: 상호 작용을 기다렸다가 분기합니다. |
| `message_type` | enum | [마케팅 대 거래](/ko/product/messaging-channels/marketing-vs-transactional/) 메시지 유형 (컨트롤 그룹 처리 제어). |

포인트 유형 및 주목할 만한 추가 필드:

| 포인트 유형 | `point_data` 키 | 참고 |
|---|---|---|
| `POINT_TYPE_SEND_PUSH` | `send_push` | `split_params` (동작) 및 전달 분할기는 최대 3개의 출력을 생성할 수 있습니다. `send_by_user_id`, `wait_optimal_time`. |
| `POINT_TYPE_SEND_EMAIL` | `send_email` | `liquid_template_params`, `personalise`. [이메일 API](/ko/developer/api-reference/email-api/)를 참조하십시오. |
| `POINT_TYPE_SEND_SMS` | `send_sms` | [SMS](/ko/developer/api-reference/sms/)를 참조하십시오. |
| `POINT_TYPE_SEND_WHATSAPP` | `send_whatsapp` | 빠른 답장 프리셋은 답장당 하나의 출력을 추가합니다 (키 = 답장 값). [WhatsApp](/ko/developer/api-reference/whatsapp/)을 참조하십시오. |
| `POINT_TYPE_SEND_TELEGRAM` | `send_telegram` | 텔레그램 채널. |
| `POINT_TYPE_SEND_KAKAO` | `send_kakao` | [카카오](/ko/developer/api-reference/kakao/)를 참조하십시오. |
| `POINT_TYPE_SEND_LINE` | `send_line` | [LINE API](/ko/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에서 동시에 가질 수 있는 활성 세션 수를 제어합니다. Customer Journey 빌더의 [사용자가 동시에 가질 수 있는 세션 수 제어](/ko/product/customer-journey/journey-elements/entry-elements/trigger-based-entry/#control-how-many-sessions-a-user-can-have-at-the-same-time)를 미러링합니다. [이벤트 진입 포인트](#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="프리셋 API" href="/developer/api-reference/presets-api/" />
</CardGrid>