ข้ามไปเนื้อหาหลัก

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

วิธีส่ง API Key และหน้าตาของ request ที่ถูกปฏิเสธ

ทุก endpoint ภายใต้ /openapi/v1 ต้องมี API Key ไม่มีการเรียก login ไม่มีการแลก token และไม่มี refresh — ตัวคีย์ คือ ข้อมูลยืนยันตัวตน

Header Authorization

ส่งคีย์เป็น bearer token

bash
curl -X GET "https://api.abserp.com/openapi/v1/company" \
  -H "Authorization: Bearer absk_your_api_key_here" \
  -H "Accept: application/json"

Header X-API-Key

ไคลเอนต์ HTTP และแพลตฟอร์มเชื่อมต่อบางตัวสงวน Authorization ไว้ใช้งานเอง กรณีนั้นสามารถส่งคีย์ใน X-API-Key ได้

bash
curl -X GET "https://api.abserp.com/openapi/v1/company" \
  -H "X-API-Key: absk_your_api_key_here"

เลือกส่งอย่างใดอย่างหนึ่ง การส่งทั้งสองไม่ได้ให้ประโยชน์เพิ่ม

รูปแบบของคีย์

คีย์มีความยาว 45 ตัวอักษร ประกอบด้วยคำนำหน้า absk_ ตามด้วยอักขระ base62 แบบสุ่ม 40 ตัว

text
absk_7Qm2XbV9tR4sK1pLzN6yA3wD8fH0jC5eU2gT7oIb
└──┘ └────────────── อักขระสุ่ม 40 ตัว ──────────────┘

หากต้องตรวจจับว่าค่าหนึ่งเป็นคีย์ของ ABSERP ให้ตรวจที่คำนำหน้า absk_ แต่อย่าพยายามตีความส่วนที่เหลือ เพราะส่วนสุ่มไม่มีโครงสร้างใด ๆ

เมื่อ request ถูกปฏิเสธ

คีย์ที่ไม่ได้ส่งมา ผิดรูปแบบ ถูกเพิกถอน หรือหมดอายุ จะได้รับ 401 Unauthorized พร้อมรูปแบบข้อผิดพลาดมาตรฐาน

json
{
  "statusCode": 401,
  "errorCode": "ApiKeyInvalid",
  "errorMessage": "API key ไม่ถูกต้องหรือหมดอายุแล้ว"
}

ทุกกรณีข้างต้นตอบ 401 เหมือนกันโดยเจตนา เพราะ API จะไม่บอกผู้เรียกที่ไม่ผ่านการยืนยันตัวตนว่าคีย์ล้มเหลว เพราะอะไร เมื่อเจอ 401 ให้ตรวจตามลำดับนี้

  1. ระบบส่ง header ออกไปจริงหรือไม่ (proxy บางตัวตัด Authorization ออก)
  2. คีย์ยังมีอยู่และขึ้นสถานะ ใช้งานได้ ที่ ตั้งค่าองค์กร → API Keys หรือไม่
  3. คีย์หมดอายุแล้วหรือยัง ในรายการมีวันหมดอายุแสดงไว้
  4. องค์กรยังใช้งานอยู่หรือไม่ องค์กรที่ถูกปิดใช้งานจะปฏิเสธคีย์ของตัวเองด้วย

เลือกภาษาของข้อความ

ข้อความข้อผิดพลาดและป้ายบางส่วนมีการแปล เพิ่ม Accept-Language เพื่อเลือกภาษา

bash
curl -X GET "https://api.abserp.com/openapi/v1/products?limit=5" \
  -H "Authorization: Bearer absk_your_api_key_here" \
  -H "Accept-Language: th"

ค่าที่รองรับคือ en และ th header นี้ไม่บังคับ หากไม่ส่งจะใช้ภาษาขององค์กร

การรับส่งข้อมูล

  • รองรับ HTTPS เท่านั้น ไม่ให้บริการผ่าน HTTP ธรรมดา
  • request และ response เป็น application/json ยกเว้น POST /contacts และ PATCH /contacts/{id} ที่รับ multipart/form-data — ทุก endpoint รวมถึง GET /sales/documents/{id}/print-data คืนค่าเป็น JSON ทั้งหมด ไม่มี endpoint ใดคืนไฟล์ PDF โดยตรง

ขั้นตอนถัดไป

อ่านต่อที่ Base URL และการจำกัดอัตราการเรียก