# ภาพรวม Customer Journey API

Customer Journey API ช่วยให้แบ็กเอนด์สามารถจัดการ [Customer Journeys](/th/product/customer-journey/pushwoosh-journey-overview/) ผ่านโปรแกรมได้: สร้างและแก้ไขคำจำกัดความของ Journey, ย้าย Journeys ไปตามวงจรชีวิต (เริ่ม, หยุดชั่วคราว, สิ้นสุด, ร่าง, เก็บถาวร), ทริกเกอร์ Journey ที่กำลังทำงานจากระบบของคุณเอง และดึงสถิติต่อ Journey

เป็น API เดียวกันกับที่ Customer Journey builder ใช้ ซึ่งเปิดเผยผ่าน REST/JSON ผ่าน gRPC-Gateway bridge

## URL พื้นฐาน

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

<Aside type="tip">
หากคุณใช้ภูมิภาคเฉพาะหรือการปรับใช้ส่วนตัว โปรดยืนยัน URL พื้นฐานที่แน่นอนกับผู้จัดการความสำเร็จของลูกค้า Pushwoosh ของคุณ
</Aside>

## การยืนยันตัวตน

ทุกคำขอต้องมีเฮดเดอร์ `Authorization` พร้อมกับ [API access token](/th/developer/api-reference/api-access-token/#server-api-token) ของ Pushwoosh ฝั่งเซิร์ฟเวอร์:

```
Authorization: Api YOUR_API_TOKEN
```

<Aside type="note">
โทเค็นจะผูกกับบัญชีที่เป็นเจ้าของ การดำเนินการทั้งหมดจะนำไปใช้กับบัญชีนั้น ใช้โทเค็นเดียวกับที่คุณออกสำหรับการเรียก API อื่นๆ แบบ server-to-server และอย่าเปิดเผยในแอปพลิเคชันไคลเอ็นต์
</Aside>

## เมธอด

### จัดการ Journeys

-   [วงจรชีวิต](/th/developer/api-reference/customer-journey-api/lifecycle/): `POST /api/v3/journeygateway/{action}` เริ่ม, หยุดชั่วคราว, สิ้นสุด, ร่าง หรือเก็บถาวร Journey ตาม UUID
-   [สร้างและอัปเดต](/th/developer/api-reference/customer-journey-api/create-update/): `POST /api/v3/journeygateway` และ `PUT /api/v3/journeygateway/{uuid}` สร้างคำจำกัดความของ Journey ใหม่หรือแทนที่อันที่มีอยู่

### ทริกเกอร์ Journeys

-   [เริ่มโดย API](/th/developer/api-reference/customer-journey-api/start-by-api/): `POST /api/journey/{id}/start/external` ใส่ผู้ใช้เข้าไปในจุดเริ่มต้น API ของ Journey ที่กำลังทำงานอยู่แล้ว

### สถิติและกลุ่มเป้าหมาย

-   [รับสถิติ Journey](/th/developer/api-reference/customer-journey-api/statistics/): `GET /api/journey/{id}/statistics/external` ตัวชี้วัดการส่งมอบและ conversion ต่อจุด
-   [ลบผู้ใช้ออกจาก Journeys](/th/developer/api-reference/customer-journey-api/drop-users/): `POST /api/journey/drop-users/external` ลบผู้ใช้ออกจาก Journeys ที่ใช้งานอยู่ทั้งหมดหรือที่เลือก

### การอ้างอิง

-   [อ็อบเจกต์ Journey](/th/developer/api-reference/customer-journey-api/journey-object/): รูปแบบของคำจำกัดความของ Journey (ข้อมูล, พารามิเตอร์, จุด, ความคิดเห็น) ที่ส่งคืนโดยเมธอดวงจรชีวิต, สร้าง และอัปเดต
-   [การอ้างอิง Point](/th/developer/api-reference/customer-journey-api/point-reference/): โครงสร้าง `point_data` สำหรับแต่ละประเภทของจุด: องค์ประกอบการเข้า, เวลา, การแยก, การกระทำ และการส่งข้อความ

## Lifecycle start เทียบกับ Start by API

Customer Journey มีการดำเนินการสองอย่างที่ฟังดูคล้ายกันแต่ทำงานแตกต่างกัน

[Lifecycle start](/th/developer/api-reference/customer-journey-api/lifecycle/#endpoints) จะเปลี่ยนสถานะของ Journey (ตัวอย่างเช่น จาก Draft เป็น **Running**)
[Start by API](/th/developer/api-reference/customer-journey-api/start-by-api/) จะใส่ผู้ใช้เข้าไปใน Journey ที่กำลังทำงานอยู่แล้ว ตารางด้านล่างเปรียบเทียบทั้งสองอย่าง

| | Lifecycle Start | Start by API |
|---|---|---|
| Endpoint | `POST /api/v3/journeygateway/start` | `POST /api/journey/{id}/start/external` |
| หน้าที่ | เปิดใช้งาน Journey และย้ายไปยังสถานะ **Running** | ใส่ผู้ใช้เข้าไปใน **API entry point** ของ Journey ที่กำลังทำงานอยู่แล้ว |
| สถานะ Journey ที่ต้องการ | Draft หรือ Paused | Running (พร้อมกับ API Start point) |
| ความถี่ในการรัน | หนึ่งครั้งต่อการเปลี่ยนแปลงสถานะ | ทำซ้ำๆ ตามที่ผู้ใช้ต้องเข้ามา |

## รูปแบบคำขอและการตอบกลับ

-   ประเภทเนื้อหา: `application/json`
-   ชื่อฟิลด์ `v3` ใช้ `snake_case` ค่า Enum จะถูกแปลงเป็นชื่อสตริง (ตัวอย่างเช่น `"STATUS_RUNNING"`, `"POINT_TYPE_SEND_PUSH"`)
-   เมธอด gRPC-Gateway (`/api/v3/journeygateway/...`) จะส่งคืน [อ็อบเจกต์ Journey](/th/developer/api-reference/customer-journey-api/journey-object/) เมื่อสำเร็จ และซองข้อผิดพลาดมาตรฐานของ gRPC-Gateway เมื่อล้มเหลว: `{ "code": ..., "message": ..., "details": [...] }`
-   เมธอดภายนอกแบบเก่า (`/api/journey/...`) จะส่งคืนเนื้อหา JSON เฉพาะของเมธอดเมื่อสำเร็จ และ `{ "success": false, "message": ... }` พร้อมกับ HTTP `400` เมื่อมีข้อผิดพลาดในการตรวจสอบความถูกต้อง

## เริ่มต้นอย่างรวดเร็ว

```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="เริ่มโดย API" href="/developer/api-reference/customer-journey-api/start-by-api/" />
  <LinkCard title="รับสถิติ Journey" href="/developer/api-reference/customer-journey-api/statistics/" />
  <LinkCard title="ลบผู้ใช้ออกจาก Journeys" href="/developer/api-reference/customer-journey-api/drop-users/" />
  <LinkCard title="อ็อบเจกต์ Journey" href="/developer/api-reference/customer-journey-api/journey-object/" />
  <LinkCard title="การอ้างอิง Point" href="/developer/api-reference/customer-journey-api/point-reference/" />
</CardGrid>