# Journey ऑब्जेक्ट

[जीवनचक्र](/hi/developer/api-reference/customer-journey-api/lifecycle/), [बनाएं, और अपडेट करें](/hi/developer/api-reference/customer-journey-api/create-update/) विधियाँ सभी एक ही शीर्ष-स्तरीय आकार के साथ एक Journey ऑब्जेक्ट लौटाती हैं:

```json title="आकार"
{
  "info": { ... },        // केवल-पढ़ने के लिए मेटाडेटा (केवल प्रतिक्रियाओं में)
  "params": { ... },      // यात्रा-व्यापी कॉन्फ़िगरेशन (बनाएं / अपडेट करें)
  "points": [ ... ],      // कैनवास नोड्स और उनके कनेक्शन
  "comments": [ ... ]     // कैनवास टिप्पणियाँ
}
```

जब आप एक Journey **बनाते** या **अपडेट करते** हैं तो आप `title`, `params`, `points`, और `comments` भेजते हैं। प्रतिक्रियाएं `info` (जिसमें `params` होता है) के साथ `points` और `comments` लौटाती हैं।

## जानकारी

केवल-पढ़ने के लिए Journey मेटाडेटा। हर v3 विधि द्वारा लौटाया जाता है। अनुरोध बॉडी का हिस्सा नहीं है।

| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
| `uuid` | string | [Journey ID](/hi/developer/api-reference/api-identifiers/#journey-id)। |
| `title` | string | Journey का नाम। |
| `status` | [`JourneyStatus`](#journeystatus-enum) | वर्तमान स्थिति। |
| `created_at` | string | निर्माण टाइमस्टैम्प (ISO 8601)। |
| `updated_at` | string | अंतिम अपडेट टाइमस्टैम्प (ISO 8601)। |
| `is_first_activated` | bool | क्या Journey कम से कम एक बार शुरू की गई है। |
| `params` | [`JourneyParams`](#journeyparams) | Journey-व्यापी कॉन्फ़िगरेशन। |
| `category_uuid` | string | श्रेणी का UUID, या यदि अवर्गीकृत है तो खाली। |
| `pointCounts` | map&lt;string, uint32&gt; | प्रकार के अनुसार पॉइंट्स की गिनती। |
| `campaign_type` | [`CampaignType`](#campaigntype-enum) | उपयोगकर्ता Journey में कैसे प्रवेश करते हैं। |
| `stop_reason` | string | यदि लागू हो, तो Journey क्यों रुकी। |
| `last_edited_by` | `User` | जिस उपयोगकर्ता ने अंतिम बार Journey को संपादित किया। |
| `dynamic_entry` | bool | क्या डायनामिक एंट्री सक्षम है। |

## JourneyParams

Journey-व्यापी कॉन्फ़िगरेशन। बनाने/अपडेट करने पर भेजा जाता है और `info.params` के अंदर लौटाया जाता है।

| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
| `application_code` | string | [एप्लिकेशन कोड](/hi/developer/api-reference/api-identifiers/#application-code) जिससे Journey संबंधित है। बनाते समय आवश्यक है। |
| `silent_hours` | [`SilentHours`](#silenthours) | वे घंटे जिनके दौरान संदेशों को दबा दिया जाता है, प्रति चैनल। |
| `capping` | [`EntryCapping`](#entrycapping) | एक उपयोगकर्ता कितनी बार Journey में फिर से प्रवेश कर सकता है, इस पर सीमाएं। |
| `conversion_window` | [`ConversionWindow`](#conversionwindow) | लक्ष्य रूपांतरणों को एट्रिब्यूट करने के लिए विंडो। |
| `user_id_track_change_policy` | [`UserIDTrackChangePolicy`](#useridtrackchangepolicy-enum) | Journey के बीच में उपयोगकर्ता की ID बदलने पर कैसे संभालें। |

### SilentHours

शांत घंटों के दौरान भेजने को रोकता है। **प्रति चैनल** कॉन्फ़िगर किया गया: प्रत्येक चैनल अपना `SilentHoursParams` लेता है:

| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
| `push_params` | `SilentHoursParams` | पुश नोटिफिकेशन के लिए शांत घंटे। |
| `inapp_params` | `SilentHoursParams` | इन-ऐप संदेशों के लिए शांत घंटे। |
| `email_params` | `SilentHoursParams` | ईमेल के लिए शांत घंटे। |
| `sms_params` | `SilentHoursParams` | SMS के लिए शांत घंटे। |
| `whatsapp_params` | `SilentHoursParams` | WhatsApp के लिए शांत घंटे। |
| `line_params` | `SilentHoursParams` | LINE के लिए शांत घंटे। |

प्रत्येक `SilentHoursParams` है:

| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
| `enabled` | bool | क्या इस चैनल पर शांत घंटे लागू होते हैं। |
| `from_time` | `Time` | शांत विंडो की शुरुआत: `{ "hour": 0–23, "minute": 0–59 }`। |
| `to_time` | `Time` | शांत विंडो का अंत। |
| `week_days` | bool[] | उन दिनों के लिए सात बूलियन जिन पर विंडो लागू होती है (सोमवार = इंडेक्स 0)। |
| `behavior` | enum | जब कोई संदेश शांत घंटों के भीतर आता है तो क्या करें: `WaitAndSend` (रोकें, फिर विंडो समाप्त होने पर भेजें), `DropAndGo` (संदेश छोड़ें, तुरंत Journey जारी रखें), या `WaitAndDrop` (विंडो के समाप्त होने तक प्रतीक्षा करें, फिर बिना भेजे जारी रखें)। |

### EntryCapping

यह सीमित करता है कि एक ही उपयोगकर्ता कितनी बार Journey में प्रवेश कर सकता है।

| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
| `is_enabled` | bool | क्या एंट्री कैपिंग चालू है। |
| `period` | uint64 | एक उपयोगकर्ता के प्रवेश के बीच सेकंड की न्यूनतम संख्या। |

### ConversionWindow

| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
| `seconds` | uint64 | एक Journey में प्रवेश करने के कितने समय बाद तक उपयोगकर्ता का लक्ष्य पूरा करना एक रूपांतरण के रूप में गिना जाता है। |

## पॉइंट

एक पॉइंट Journey कैनवास पर एक नोड है: एक प्रवेश बिंदु, एक संदेश, एक देरी, एक स्प्लिटर, और इसी तरह।

| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
| `uuid` | string | Journey के भीतर पॉइंट की अद्वितीय ID। एक कैनोनिकल [RFC 4122](https://www.rfc-editor.org/rfc/rfc4122) UUID होना चाहिए: 8-4-4-4-12 समूहों में 32 हेक्स अंक। |
| `title` | string | पॉइंट का प्रदर्शन नाम। |
| `point_type` | [`PointType`](#pointtype-enum) | नोड का प्रकार। |
| `outputs` | array of [`PointOutput`](#pointoutput) | डाउनस्ट्रीम पॉइंट्स से कनेक्शन। |
| `position` | [`Position`](#position) | कैनवास निर्देशांक। |
| `point_data` | object | ठीक एक नेस्टेड कुंजी, `point_type` से मेल खाती है ([पॉइंट प्रकार](#point-types-and-point_data) तालिका देखें)। |

<Aside type="note">
सभी UUIDs (`info.uuid`, प्रत्येक पॉइंट `uuid`, और प्रत्येक आउटपुट का `next_point_uuid`) कैनोनिकल RFC 4122 UUIDs (8-4-4-4-12 हेक्स समूह) होने चाहिए।
</Aside>

### PointOutput

एक पॉइंट के आउटपुट उसकी बाहर जाने वाली शाखाएं होती हैं। उनकी कुंजियाँ **फ्री-फॉर्म नहीं** होती हैं। वैलिडेटर प्रत्येक पॉइंट प्रकार के लिए कुंजियों का एक सटीक सेट की उम्मीद करता है, और एक ऐसी Journey को अस्वीकार कर देता है जिसके पॉइंट में गलत संख्या में आउटपुट या एक ऐसी कुंजी होती है जिसे वह नहीं पहचानता है।

| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
| `identity.key` | string | शाखा कुंजी। नीचे दिए गए [आउटपुट कुंजी नियमों](#output-keys) का पालन करना चाहिए। |
| `identity.order` | int | शाखा का प्रदर्शन क्रम। |
| `info.title` | string | वैकल्पिक शाखा लेबल। |
| `info.next_point_uuid` | string | अगले पॉइंट का UUID जिससे यह शाखा जुड़ती है। |

#### आउटपुट कीज़

डिफ़ॉल्ट (पहली) शाखा का नाम हमेशा `"default"` होता है। अतिरिक्त शाखाओं का नाम `"output1"`, `"output2"`, … (उपसर्ग `output` के बाद 1-आधारित इंडेक्स) होता है। दो पॉइंट प्रकार इस नियम को तोड़ते हैं, जैसा कि नीचे बताया गया है।

| पॉइंट प्रकार | अपेक्षित आउटपुट कीज़ |
|---|---|
| एंट्री पॉइंट्स (`START_BY_SEGMENT`, `START_BY_API`, `EVENT`), `INAPP`, `SET_TAGS`, `WEBHOOK`, `AUDIENCE_SYNC`, और बिना स्प्लिटर वाले संदेश पॉइंट्स (`SEND_PUSH`, `SEND_EMAIL`, `SEND_SMS`, `SEND_WHATSAPP`, `SEND_LINE`, `SEND_KAKAO`, `SEND_TELEGRAM`, `SEND_DATA`) | `default` |
| `GOAL_EVENT`, `EXIT` | कोई नहीं (कोई आउटपुट नहीं) |
| `FILTER` | `default`, `output1` |
| `BOOLEAN_SPLITTER` | `default`, फिर `output1` … `outputN` (प्रति शर्त एक अतिरिक्त शाखा। एक साधारण हाँ/नहीं विभाजन `default` + `output1` है) |
| `WAIT` (देरी) | `default`। शाखा विभाजन के साथ एक गतिशील देरी `output1` जोड़ती है |
| `WAIT_EVENT` | `default` **इवेंट-नॉट-ट्रिगर्ड** शाखा है। `output1` (या, एक कंडीशंस स्क्रिप्ट के साथ, प्रति शर्त एक शाखा) ट्रिगर किया गया पथ है |
| एक स्प्लिटर के साथ `SEND_PUSH` | `default`, `output1` (और `output2` जब संदेश और डिलीवरी दोनों स्प्लिटर चालू हों) |
| एक स्प्लिटर के साथ `SEND_EMAIL` / `SEND_SMS` / `SEND_LINE` / `SEND_WHATSAPP` | `default`, `output1` |
| एक क्विक-रिप्लाई प्रीसेट के साथ `SEND_WHATSAPP` | `default`, साथ ही प्रति क्विक-रिप्लाई एक शाखा। कुंजी क्विक-रिप्लाई मान ही है |
| `AB_SPLITTER` | `output0`, `output1`, `output2`, … (प्रति संस्करण एक। **कोई `default` शाखा नहीं है**) |

### पोजीशन

| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
| `x` | float | कैनवास पर क्षैतिज निर्देशांक। |
| `y` | float | कैनवास पर ऊर्ध्वाधर निर्देशांक। |

## पॉइंट प्रकार और point_data

`point_data` एक-में-से-एक है: इसमें ठीक एक नेस्टेड ऑब्जेक्ट होता है जिसकी कुंजी पॉइंट के `point_type` द्वारा निर्धारित होती है।

| `point_type` | `point_data` कुंजी | उद्देश्य |
|---|---|---|
| `POINT_TYPE_START_BY_SEGMENT` | `start_by_segment` | प्रवेश: एक सेगमेंट से मेल खाने वाले उपयोगकर्ता। |
| `POINT_TYPE_EVENT` | `message_bus` | प्रवेश: एक इवेंट को ट्रिगर करने वाले उपयोगकर्ता। |
| `POINT_TYPE_START_BY_API` | `start_by_api` | प्रवेश: [Start by API](/hi/developer/api-reference/customer-journey-api/start-by-api/) कॉल के माध्यम से इंजेक्ट किए गए उपयोगकर्ता। |
| `POINT_TYPE_WAIT` | `delay` | एक निश्चित या गतिशील अंतराल के लिए प्रतीक्षा करें। |
| `POINT_TYPE_WAIT_EVENT` | `wait_event` | एक इवेंट होने तक प्रतीक्षा करें। |
| `POINT_TYPE_SEND_PUSH` | `send_push` | एक पुश नोटिफिकेशन भेजें। |
| `POINT_TYPE_SEND_EMAIL` | `send_email` | एक ईमेल भेजें। |
| `POINT_TYPE_SEND_SMS` | `send_sms` | एक SMS भेजें। |
| `POINT_TYPE_SEND_WHATSAPP` | `send_whatsapp` | एक WhatsApp संदेश भेजें। |
| `POINT_TYPE_SEND_TELEGRAM` | `send_telegram` | एक Telegram संदेश भेजें। |
| `POINT_TYPE_SEND_KAKAO` | `send_kakao` | एक Kakao संदेश भेजें। |
| `POINT_TYPE_SEND_LINE` | `send_line` | एक LINE संदेश भेजें। |
| `POINT_TYPE_SEND_DATA` | `send_data` | एक साइलेंट डेटा संदेश भेजें। |
| `POINT_TYPE_INAPP` | `inapp` | एक इन-ऐप संदेश दिखाएं। |
| `POINT_TYPE_BOOLEAN_SPLITTER` | `boolean_splitter` | उपयोगकर्ताओं को एक शर्त (सेगमेंट, टैग, या इवेंट) के अनुसार विभाजित करें। |
| `POINT_TYPE_AB_SPLITTER` | `ab_splitter` | उपयोगकर्ताओं को A/B समूहों में विभाजित करें। |
| `POINT_TYPE_FILTER` | `filter` | केवल एक फ़िल्टर से मेल खाने वाले उपयोगकर्ताओं को जारी रखने की अनुमति दें। |
| `POINT_TYPE_SET_TAGS` | `set_tags` | उपयोगकर्ता टैग अपडेट करें। |
| `POINT_TYPE_WEBHOOK` | `web_hook` | एक आउटबाउंड HTTP अनुरोध भेजें। |
| `POINT_TYPE_GOAL_EVENT` | `goal_event` | एक रूपांतरण लक्ष्य को ट्रैक करें। |
| `POINT_TYPE_AUDIENCE_SYNC` | `audience_sync` | उपयोगकर्ताओं को एक बाहरी ऑडियंस के साथ सिंक करें। |
| `POINT_TYPE_EXIT` | `terminator` | Journey से बाहर निकलें। |

<Aside type="note">
प्रति-प्रकार `point_data` पेलोड [पॉइंट संदर्भ](/hi/developer/api-reference/customer-journey-api/point-reference/) में प्रलेखित हैं। प्रवेश, समय, विभाजन, और एक्शन पॉइंट्स को वहां पूरी तरह से कवर किया गया है। मैसेजिंग पॉइंट्स को एनवेलप स्तर पर कवर किया गया है जिसमें संबंधित चैनल डॉक्स के लिंक हैं।
</Aside>

### उदाहरण पॉइंट

एकल डाउनस्ट्रीम कनेक्शन के साथ एक "सेट टैग" पॉइंट:

```json
{
  "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

| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
| `id` | string | टिप्पणी UUID। |
| `message` | string | टिप्पणी पाठ। |
| `position` | [`Position`](#position) | कैनवास निर्देशांक। |
| `index` | int | प्रदर्शन क्रम। |
| `created_at` | string | निर्माण टाइमस्टैम्प (ISO 8601)। |
| `deleted` | bool | क्या टिप्पणी हटा दी गई है। |

## एनम

### JourneyStatus एनम

`STATUS_DRAFT`, `STATUS_RUNNING`, `STATUS_FINISHED`, `STATUS_ARCHIVED`, `STATUS_PAUSED`, `STATUS_UNKNOWN`।

### CampaignType एनम

- `TriggerBased`: उपयोगकर्ता एक इवेंट पर प्रवेश करते हैं।
- `AudienceBased`: उपयोगकर्ता एक सेगमेंट से प्रवेश करते हैं।
- `APIBased`: उपयोगकर्ता Start by API कॉल के माध्यम से प्रवेश करते हैं।
- `Mixed`: एक से अधिक प्रवेश प्रकार।
- `Unknown`: प्रवेश प्रकार निर्धारित नहीं है।

### PointType एनम

पूरी सूची और प्रत्येक `point_data` कुंजी के लिए ऊपर [पॉइंट प्रकार](#point-types-and-point_data) तालिका देखें।

### UserIDTrackChangePolicy एनम

यह नियंत्रित करता है कि एक उपयोगकर्ता के साथ क्या होता है जो Journey के बीच में है जब उसकी [User ID](/hi/developer/api-reference/api-identifiers/#user-id) बदल जाती है:

- `DEFAULT`: डिफ़ॉल्ट व्यवहार।
- `TRACK`: नई ID के तहत उपयोगकर्ता को ट्रैक करते रहें।
- `DROP`: जब उपयोगकर्ता की ID बदलती है तो उसे Journey से हटा दें।

## संबंधित

<CardGrid>
  <LinkCard title="पॉइंट संदर्भ" href="/developer/api-reference/customer-journey-api/point-reference/" />
  <LinkCard title="बनाएं और अपडेट करें" href="/developer/api-reference/customer-journey-api/create-update/" />
  <LinkCard title="जीवनचक्र" href="/developer/api-reference/customer-journey-api/lifecycle/" />
</CardGrid>