# เปลี่ยนชื่อ

`POST` `https://api.pushwoosh.com/messaging/v2/rename`

กำหนดหรือล้าง **ชื่อแคมเปญ** ของข้อความที่สร้างไว้ก่อนหน้านี้ ซึ่งระบุโดย `message_code` ไม่มีสิ่งอื่นใดในข้อความเปลี่ยนแปลง เนื้อหา กลุ่มเป้าหมาย และกำหนดการยังคงเหมือนเดิมทุกประการ

การเปลี่ยนชื่อทำได้ก็ต่อเมื่อข้อความยังคง **รอดำเนินการ** — สร้างแล้วแต่ยังไม่ถูกนำไปส่ง ข้อความที่เปลี่ยนไปอยู่ในสถานะ `waiting`, `processing` หรือสถานะถัดไปใดๆ จะไม่สามารถเปลี่ยนชื่อได้อีกต่อไป ใน Control Panel สถานะนี้จะแสดงเป็น **Scheduled** ในคอลัมน์ สถานะ ไม่ใช่ "Pending" ตามตัวอักษร ดู [สถานะของข้อความ](/th/product/statistics-and-analytics/message-history/#message-statuses)

<Aside type="caution" title="สำคัญ">

- ชื่อจะถูกตัดช่องว่างหน้า-หลังออกและตัดให้เหลือไม่เกิน 255 ตัวอักษร ชื่อที่ว่างเปล่า (หรือมีแต่ช่องว่าง) จะล้างชื่อแคมเปญทั้งหมด และข้อความจะกลับไปใช้ชื่อเริ่มต้นใน [Message History](/th/product/statistics-and-analytics/message-history/)

- คำขอนี้เป็น idempotent: การส่งชื่อเดิมซ้ำจะใช้ค่าเดิมซ้ำ แต่ก็ยังคงอัปเดตเวลาแก้ไขล่าสุดของข้อความในทุกครั้งที่เรียก ไม่ว่าชื่อจะเปลี่ยนจริงหรือไม่ ดังนั้นการเรียกซ้ำอาจทำให้ข้อความขึ้นไปอยู่บนสุดของการเรียงลำดับเริ่มต้นของ Message History ตาม **แก้ไขล่าสุด**
</Aside>

หากต้องการตรวจสอบว่าข้อความยังอยู่ในสถานะที่สามารถเปลี่ยนชื่อได้หรือไม่ ดู [การตรวจสอบสถานะข้อความ](#checking-message-status)

## คำขอ

รับรองความถูกต้องด้วย [Server API token](/th/developer/api-reference/api-access-token/#server-api-token) ของคุณในส่วนหัว `Authorization: Token <API_TOKEN>`

| ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
| `message_code` | string | ใช่ | [Message code](/th/developer/api-reference/api-identifiers/#message-code) ของข้อความที่จะเปลี่ยนชื่อ ซึ่งส่งคืนโดย [`Notify`](/th/developer/api-reference/messaging-api-v2/notify/) ใน `result.message_code` |
| `campaign_name` | string | ใช่ | ชื่อแคมเปญใหม่ ถูกตัดช่องว่างและตัดให้เหลือไม่เกิน 255 ตัวอักษร สตริงว่างจะล้างชื่อ |

### ตัวอย่างคำขอ

```bash
curl -X POST https://api.pushwoosh.com/messaging/v2/rename \
  -H "Authorization: Token YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "message_code": "XXXX-XXXXXXXX-XXXXXXXX",
    "campaign_name": "Flash_Sale_Push"
  }'
```

## การตอบกลับ

เมื่อสำเร็จ จะส่งคืน HTTP 200 พร้อมเนื้อหา JSON ว่างเปล่า

```json
{}
```

## ข้อผิดพลาด

ข้อผิดพลาดใช้รูปแบบข้อผิดพลาดมาตรฐานของ gRPC-Gateway: `{ "code": ..., "message": ..., "details": [...] }`

| สถานะ HTTP | เงื่อนไข |
|---|---|
| `400` | `message_code` หายไป |
| `400` | ข้อความไม่อยู่ในสถานะที่สามารถเปลี่ยนชื่อได้ (ไม่ได้อยู่ในสถานะ `pending` อีกต่อไป) |
| `403` | ข้อความนี้เป็นของบัญชีอื่น |
| `404` | ไม่มีข้อความสำหรับ `message_code` ที่ระบุ |
| `500` | เกิดข้อผิดพลาดภายในขณะโหลดข้อความหรือใช้ชื่อใหม่ โปรดลองส่งคำขออีกครั้ง |


**ตัวอย่าง**

การเปลี่ยนชื่อข้อความที่เริ่มส่งไปแล้วจะส่งคืน HTTP `400`:

```json
{
  "code": 9,
  "message": "message status \"waiting\" is not renamable",
  "details": []
}
```

<span id="checking-message-status" />

## การตรวจสอบสถานะข้อความ

ก่อนเปลี่ยนชื่อ คุณสามารถตรวจสอบได้ว่าข้อความยังอยู่ในสถานะที่สามารถเปลี่ยนชื่อได้หรือไม่ นอกจากการอ่านคอลัมน์ **สถานะ (Status)** ในตารางข้อความใน Control Panel ([**Campaigns → One-time messages**](/th/product/statistics-and-analytics/message-history/)) ซึ่งข้อความที่เปลี่ยนชื่อได้จะแสดงเป็น **Scheduled** ไม่ใช่ "Pending" ตามตัวอักษรแล้ว คุณยังสามารถสอบถามสถานะผ่านโปรแกรมได้ด้วย [`messages:list`](/th/developer/api-reference/statistics-api/message-statistics-api/#messageslist):

- ส่ง `message_code` ในอาร์เรย์ `filters.messages_codes` (พร้อมกับ `filters.application` ที่จำเป็น)
- อ่านฟิลด์ `status` ของรายการที่ตรงกันใน `items[]`

<Aside type="note">
`messages:list` เป็นส่วนหนึ่งของ Statistics API และใช้ส่วนหัวการยืนยันตัวตนที่แตกต่างจากเอนด์พอยต์นี้: `Authorization: Api <Server Key>`
</Aside>

## หัวข้อที่เกี่ยวข้อง

<CardGrid>
  <LinkCard title="Notify" href="/developer/api-reference/messaging-api-v2/notify/" />
  <LinkCard title="Update" href="/developer/api-reference/messaging-api-v2/update/" />
  <LinkCard title="Cancel" href="/developer/api-reference/messaging-api-v2/cancel/" />
  <LinkCard title="สถิติข้อความ" href="/developer/api-reference/statistics-api/message-statistics-api/#messageslist" />
  <LinkCard title="ภาพรวม Messaging API v2" href="/developer/api-reference/messaging-api-v2/" />
  <LinkCard title="การย้ายจาก v1" href="/developer/api-reference/messaging-api-v2/migration-from-v1/" />
</CardGrid>