# API Access token

API Access Token เป็นตัวระบุที่ไม่ซ้ำกันซึ่งกำหนดให้กับโปรเจกต์ใดโปรเจกต์หนึ่งหรือหลายโปรเจกต์ในบัญชีของคุณ ใช้สำหรับยืนยันตัวตนบัญชีของคุณเพื่อจัดการโปรเจกต์ผ่าน API รวมถึงการแก้ไขบัญชี การส่งข้อความ การแก้ไขโปรเจกต์ ฯลฯ

## ประเภทของ API Access token

Pushwoosh มี API Access Token สองประเภทที่แตกต่างกัน: **Server** และ **Device**

โทเค็นแต่ละประเภทจะใช้ได้กับขอบเขต API ที่เฉพาะเจาะจงเท่านั้น จะเกิดข้อผิดพลาดในการยืนยันตัวตนหากใช้โทเค็นที่ไม่ถูกต้อง

#### Server API token

Server API token ใช้กับเมธอด API ทั้งหมด ยกเว้นเมธอดที่อยู่ภายใต้ Device API ควรระบุไว้ในส่วน body ของ request ในฟิลด์ `auth`

#### Device API token

Device API token ใช้เฉพาะกับเมธอด Device API เท่านั้น ควรระบุไว้ในส่วน header ของ HTTP request โดยใช้ `Authorization` header
ด้านล่างนี้คือตัวอย่างรูปแบบ header ที่ถูกต้อง:

```
Authorization: Token <device_api_token>
```
แทนที่ `<device_api_token>` ด้วยค่า Device API Token จริงของคุณ

<Aside type="caution" title="เมธอดที่ต้องใช้ Device API token">

เมธอด API ต่อไปนี้ **ต้องใช้ Device API token** สำหรับการให้สิทธิ์:
- [`registerDevice`](/th/developer/api-reference/device-api/#registerdevice)
- [`unregisterDevice`](/th/developer/api-reference/device-api/#unregisterdevice)
- [`deleteDevice`](/th/developer/api-reference/device-api/#deletedevice)
- [`setTags`](/th/developer/api-reference/device-api/#settags)
- [`getTags`](/th/developer/api-reference/device-api/#gettags)
- [`setBadge`](/th/developer/api-reference/device-api/#setbadge)
- [`applicationOpen`](/th/developer/api-reference/device-api/#applicationopen)
- [`pushStat`](/th/developer/api-reference/device-api/#pushstat)
- [`messageDeliveryEvent`](/th/developer/api-reference/device-api/#messagedeliveryevent)
- [`registerUser`](/th/developer/api-reference/user-centric-api/#registeruser)
- [`deleteUser`](/th/developer/api-reference/user-centric-api/#deleteuser)
- [`postEvent`](/th/developer/api-reference/user-centric-api/#postevent)
- [`registerEmail`](/th/developer/api-reference/email-api/#registeremail)
- [`deleteEmail`](/th/developer/api-reference/email-api/#deleteemail)
- [`setEmailTags`](/th/developer/api-reference/email-api/#setemailtags)
- [`registerEmailUser`](/th/developer/api-reference/email-api/#registeremailuser)
- [`getInboxMessages`](/th/developer/api-reference/message-inbox/#getinboxmessages)
- [`inboxStatus`](/th/developer/api-reference/message-inbox/#inboxstatus)
</Aside>

## การสร้างและจัดการ API Access token

คุณสามารถดู สร้าง และจัดการ API Access token ของคุณได้ในส่วน **API Access** ของ Pushwoosh Control Panel หากต้องการเข้าถึง ให้ไปที่ **Settings → API Access**
![โทเค็น Pushwoosh Demo App](/api-reference-api-access-token-1.webp)

โดยค่าเริ่มต้น แต่ละบัญชีจะมีโทเค็นที่ชื่อว่า **Pushwoosh Demo App** ซึ่งตั้งค่าเป็น server token

### สร้าง API Access token ใหม่

วิธีสร้าง API Access token ใหม่:

1. ไปที่ส่วน **API Access** ใน Control Panel

2. คลิก **Generate New Token**

3. ในหน้าต่างที่ปรากฏขึ้น ให้เลือกประเภทของโทเค็น:

   * [**Server**](#server-api-token) ใช้สำหรับเมธอด API ส่วนใหญ่ (ยกเว้นเมธอด Device API)

   * [**Device**](#device-api-token) ใช้สำหรับเมธอด Device API เท่านั้น

4. ป้อนชื่อสำหรับโทเค็น

5. คลิก **Generate** เพื่อสร้างโทเค็น

![สร้างโทเค็นใหม่](/api-reference-api-access-token-4.webp)

> **สำคัญ:** โปรดตรวจสอบให้แน่ใจว่าได้ให้สิทธิ์การเข้าถึงแอปที่ถูกต้องใน Pushwoosh Control Panel แก่โทเค็น [เรียนรู้เพิ่มเติม](#edit-token)

โทเค็นใหม่จะปรากฏในรายการ API Access จากตรงนั้น คุณสามารถคัดลอกค่าเพื่อใช้ใน request ของ API หรือจัดการสิทธิ์การเข้าถึงได้ตามต้องการ

### จัดการโทเค็น

หากต้องการจัดการ API token ที่มีอยู่ ให้คลิกที่ **เมนูสามจุด (⋮)** ถัดจากรายการโทเค็นในส่วน **API Access**

![จัดการโทเค็น](/api-reference-api-access-token-2.webp)

มีตัวเลือกดังต่อไปนี้:

#### ให้สิทธิ์การเข้าถึงทุกโปรเจกต์

ให้สิทธิ์โทเค็นในการเข้าถึงทุกโปรเจกต์ในบัญชีของคุณ ซึ่งจะทำให้สามารถใช้ API ได้อย่างเต็มที่ในทุกโปรเจกต์

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

#### เพิกถอนสิทธิ์การเข้าถึงจากทุกโปรเจกต์

ลบสิทธิ์การเข้าถึงของโทเค็นในทุกโปรเจกต์ในบัญชีของคุณ โทเค็นจะไม่สามารถใช้ API ได้อีกจนกว่าจะได้รับสิทธิ์อีกครั้ง

#### แก้ไขโทเค็น

เปิดหน้าจอ **Edit API Token Permissions** ซึ่งคุณสามารถ:

* เปลี่ยนชื่อโทเค็น

* คัดลอกค่าโทเค็น

* เลือกโปรเจกต์ที่โทเค็นสามารถเข้าถึงได้โดยการเลือกหรือยกเลิกการเลือกในรายการ

![จัดการโทเค็น](/api-reference-api-access-token-3.webp)

หลังจากทำการเปลี่ยนแปลงเสร็จแล้ว คลิก **Save** เพื่อนำไปใช้

<Aside type="tip">
ควรให้สิทธิ์โทเค็นในการเข้าถึงเฉพาะโปรเจกต์ที่จำเป็นเท่านั้น ซึ่งจะช่วยปกป้องบัญชีของคุณและควบคุมสิ่งที่แต่ละโทเค็นสามารถทำได้
</Aside>

#### ลบโทเค็น

ลบโทเค็นออกจากบัญชีของคุณอย่างถาวร

<Aside type="caution">

การกระทำนี้ไม่สามารถยกเลิกได้ เมื่อลบแล้ว จะไม่สามารถกู้คืนโทเค็นได้ โปรดตรวจสอบให้แน่ใจว่าโทเค็นไม่ได้ใช้งานแล้วก่อนที่จะลบ

</Aside>

## การให้สิทธิ์ request ของ API

หากต้องการให้สิทธิ์ request ของ API ให้ใช้ API Access token ประเภทที่ถูกต้องตามประเภทของเมธอด API ที่คุณกำลังเรียกใช้:

#### สำหรับเมธอด Server API

ระบุโทเค็นในฟิลด์ "auth" ของส่วน body ของ request:

ตัวอย่าง:

```json
{
  "request": {
    "application": "XXXXX-XXXXX",
    "auth": "yxoPUlwqm…………pIyEX4H", // วาง server token ของคุณที่นี่
    "notifications": [{
      "send_date": "now",
      "content": "Hello world"
    }]
  }
}
```

#### สำหรับเมธอด Device API

ใช้ **Device token** ระบุไว้ใน header ของ HTTP request โดยใช้รูปแบบต่อไปนี้:

```
Authorization: Token <device_api_token>
```

แทนที่ `<device_api_token>` ด้วยค่าโทเค็นจริงของคุณ
<Aside type="caution">
โปรดตรวจสอบให้แน่ใจว่าประเภทของโทเค็นตรงกับเมธอด API ที่คุณกำลังใช้ หากโทเค็นไม่ตรงกับประเภทที่ต้องการ request จะส่งคืนข้อผิดพลาดในการยืนยันตัวตน
</Aside>