# Customer Journey API ওভারভিউ

Customer Journey API একটি ব্যাকএন্ডকে প্রোগ্রাম্যাটিকভাবে [Customer Journeys](/bn/product/customer-journey/pushwoosh-journey-overview/) পরিচালনা করতে দেয়: Journey সংজ্ঞা তৈরি এবং সম্পাদনা করা, Journey-গুলিকে তাদের জীবনচক্রের মাধ্যমে সরানো (শুরু, বিরতি, শেষ, ড্রাফট, আর্কাইভ), আপনার নিজের সিস্টেম থেকে একটি চলমান Journey ট্রিগার করা, এবং প্রতি-Journey পরিসংখ্যান পুল করা।

এটি সেই একই API যা Customer Journey বিল্ডার ব্যবহার করে, যা একটি gRPC-Gateway ব্রিজের মাধ্যমে REST/JSON-এর উপর উন্মুক্ত করা হয়েছে।

## বেস URL

```
https://journey.pushwoosh.com
```

<Aside type="tip">
আপনি যদি একটি ডেডিকেটেড অঞ্চল বা ব্যক্তিগত ডিপ্লয়মেন্ট ব্যবহার করেন, তাহলে আপনার Pushwoosh Customer Success Manager-এর সাথে সঠিক বেস URL নিশ্চিত করুন।
</Aside>

## অথেন্টিকেশন

প্রতিটি অনুরোধে একটি `Authorization` হেডার অন্তর্ভুক্ত করতে হবে, যেখানে একটি সার্ভার-সাইড Pushwoosh [API access token](/bn/developer/api-reference/api-access-token/#server-api-token) থাকবে:

```
Authorization: Api YOUR_API_TOKEN
```

<Aside type="note">
টোকেনটি যে অ্যাকাউন্টের মালিক তার সাথে আবদ্ধ। সমস্ত অপারেশন সেই অ্যাকাউন্টে প্রযোজ্য। আপনি অন্যান্য সার্ভার-টু-সার্ভার API কলের জন্য যে টোকেন ইস্যু করেন, সেটিই ব্যবহার করুন এবং ক্লায়েন্ট অ্যাপ্লিকেশনগুলিতে এটিকে কখনও প্রকাশ করবেন না।
</Aside>

## মেথড

### Journey পরিচালনা

- [Lifecycle](/bn/developer/api-reference/customer-journey-api/lifecycle/): `POST /api/v3/journeygateway/{action}`। একটি Journey-কে তার UUID দ্বারা শুরু, বিরতি, শেষ, ড্রাফট বা আর্কাইভ করুন।
- [Create and update](/bn/developer/api-reference/customer-journey-api/create-update/): `POST /api/v3/journeygateway` এবং `PUT /api/v3/journeygateway/{uuid}`। একটি নতুন Journey সংজ্ঞা তৈরি করুন বা বিদ্যমান একটি প্রতিস্থাপন করুন।

### Journey ট্রিগার

- [Start by API](/bn/developer/api-reference/customer-journey-api/start-by-api/): `POST /api/journey/{id}/start/external`। ব্যবহারকারীদের একটি ইতিমধ্যে চলমান Journey-এর API এন্ট্রি পয়েন্টে ইনজেক্ট করুন।

### পরিসংখ্যান এবং অডিয়েন্স

- [Get Journey stats](/bn/developer/api-reference/customer-journey-api/statistics/): `GET /api/journey/{id}/statistics/external`। প্রতি-পয়েন্ট ডেলিভারি এবং কনভার্সন মেট্রিক্স।
- [Remove users from journeys](/bn/developer/api-reference/customer-journey-api/drop-users/): `POST /api/journey/drop-users/external`। সমস্ত বা নির্বাচিত সক্রিয় Journey থেকে ব্যবহারকারীদের ড্রপ করুন।

### রেফারেন্স

- [Journey object](/bn/developer/api-reference/customer-journey-api/journey-object/): Journey সংজ্ঞার আকার (তথ্য, প্যারামিটার, পয়েন্ট, মন্তব্য) যা লাইফসাইকেল, তৈরি এবং আপডেট মেথড দ্বারা ফেরত দেওয়া হয়।
- [Point reference](/bn/developer/api-reference/customer-journey-api/point-reference/): প্রতিটি পয়েন্ট প্রকারের জন্য `point_data` কাঠামো: এন্ট্রি, টাইমিং, স্প্লিটিং, অ্যাকশন এবং মেসেজিং উপাদান।

## Lifecycle start বনাম Start by API

Customer Journey-তে দুটি অপারেশন রয়েছে যা শুনতে একই রকম কিন্তু ভিন্নভাবে আচরণ করে।

[Lifecycle start](/bn/developer/api-reference/customer-journey-api/lifecycle/#endpoints) Journey-এর অবস্থা পরিবর্তন করে (উদাহরণস্বরূপ, ড্রাফট থেকে **চলমান**)। [Start by API](/bn/developer/api-reference/customer-journey-api/start-by-api/) ব্যবহারকারীদের একটি ইতিমধ্যে-চলমান Journey-তে ইনজেক্ট করে। নীচের টেবিলটি তাদের পাশাপাশি তুলনা করে।

| | Lifecycle Start | Start by API |
|---|---|---|
| এন্ডপয়েন্ট | `POST /api/v3/journeygateway/start` | `POST /api/journey/{id}/start/external` |
| এটি কী করে | Journey সক্রিয় করে এবং এটিকে **চলমান** অবস্থায় নিয়ে যায় | ব্যবহারকারীদের একটি ইতিমধ্যে-চলমান Journey-এর **API এন্ট্রি পয়েন্টে** ইনজেক্ট করে |
| প্রয়োজনীয় Journey অবস্থা | ড্রাফট বা পজড | চলমান (একটি API স্টার্ট পয়েন্ট সহ) |
| চালানোর ফ্রিকোয়েন্সি | প্রতিবার অবস্থা পরিবর্তনের জন্য একবার | বারবার, যখন ব্যবহারকারীদের প্রবেশ করতে হবে |

## অনুরোধ এবং প্রতিক্রিয়া ফরম্যাট

- কন্টেন্ট টাইপ: `application/json`।
- `v3` ফিল্ডের নামগুলি `snake_case` ব্যবহার করে। Enum মানগুলি তাদের স্ট্রিং নাম হিসাবে সিরিয়ালাইজ করা হয় (উদাহরণস্বরূপ, `"STATUS_RUNNING"`, `"POINT_TYPE_SEND_PUSH"`)।
- gRPC-Gateway মেথডগুলি (`/api/v3/journeygateway/...`) সফল হলে [journey object](/bn/developer/api-reference/customer-journey-api/journey-object/) এবং ব্যর্থ হলে স্ট্যান্ডার্ড gRPC-Gateway ত্রুটি এনভেলপ ফেরত দেয়: `{ "code": ..., "message": ..., "details": [...] }`।
- লিগ্যাসি এক্সটার্নাল মেথডগুলি (`/api/journey/...`) সফল হলে একটি মেথড-নির্দিষ্ট JSON বডি এবং ভ্যালিডেশন ত্রুটির ক্ষেত্রে HTTP `400`-এর সাথে `{ "success": false, "message": ... }` ফেরত দেয়।

## দ্রুত শুরু

```bash title="একটি Journey শুরু করুন"
curl -X POST https://journey.pushwoosh.com/api/v3/journeygateway/start \
  -H "Authorization: Api YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "uuid": "11111111-2222-3333-4444-555555555555" }'
```

## পরবর্তী পদক্ষেপ

<CardGrid>
  <LinkCard title="লাইফসাইকেল" href="/developer/api-reference/customer-journey-api/lifecycle/" />
  <LinkCard title="তৈরি এবং আপডেট" href="/developer/api-reference/customer-journey-api/create-update/" />
  <LinkCard title="Start by API" href="/developer/api-reference/customer-journey-api/start-by-api/" />
  <LinkCard title="Journey পরিসংখ্যান পান" href="/developer/api-reference/customer-journey-api/statistics/" />
  <LinkCard title="Journey থেকে ব্যবহারকারীদের সরান" href="/developer/api-reference/customer-journey-api/drop-users/" />
  <LinkCard title="Journey অবজেক্ট" href="/developer/api-reference/customer-journey-api/journey-object/" />
  <LinkCard title="পয়েন্ট রেফারেন্স" href="/developer/api-reference/customer-journey-api/point-reference/" />
</CardGrid>