API Permissions (สิทธิ์การเข้าถึง)
API Key แต่ละตัวจะได้รับ สิทธิ์ (Permission) ตามกลุ่มข้อมูลที่เปิดให้ตอนตั้งค่าการเชื่อมต่อ แต่ละ Endpoint จะตรวจสิทธิ์ของ API Key ก่อนทำงาน หากไม่มีสิทธิ์ที่ต้องการจะได้รับ HTTP 403
การเปิดสิทธิ์ทำได้ที่เมนู ตั้งค่า → ตั้งค่าผู้ใช้ → ตั้งค่ากลุ่มผู้ใช้ → ตั้งค่าการเชื่อมต่อ (ต้องใช้สิทธิ์ HR หรือ Admin) ดูขั้นตอนได้ที่ Get Started
รายการสิทธิ์ทั้งหมด (Available Permissions)
| Permission | ชื่อกลุ่มข้อมูล | ครอบคลุม API |
|---|---|---|
org:manage | กลุ่มข้อมูลองค์กร | Organization, Holiday, Work Cycle |
document:manage | ข้อมูลการยื่นเอกสาร | Document (ทุกชนิด), Overtime, Time Adjust, Time Leave, Holiday Change, Work Cycle Change, Report |
employee:read:basic | ข้อมูลพนักงานพื้นฐาน | Employee — ดู/จัดการข้อมูลทั่วไป, ข้อมูลตั้งค่า และจัดการสถานะพนักงาน |
employee:read:personal | ข้อมูลส่วนตัวพนักงาน | Employee — เพิ่ม/แก้ไข/ลบข้อมูลประวัติส่วนตัวและข้อมูลการเงิน |
payroll:read:self | ข้อมูลเงินเดือนของพนักงาน | Salary › Time Table — ข้อมูลเงินเดือน/เวลาทำงานรายคน, สลิป, สรุป |
payroll:read:all | ข้อมูลเงินเดือนทั้งองค์กร | Salary › Payroll Import, การปิด/เปิดงวด และประมวลผลทั้งงวด |
attendance:read | ข้อมูลการลงเวลา | Time Attendance |
การตรวจสิทธิ์เป็นแบบ ตรงตัว (exact match) — การมี employee:read:personal ไม่ได้รวมสิทธิ์ employee:read:basic โดยอัตโนมัติ หาก Endpoint ต้องการสิทธิ์ใด API Key ต้องได้รับสิทธิ์นั้นโดยตรง
เมื่อไม่มีสิทธิ์ที่ต้องการ
หากเรียก API โดย API Key ไม่มีสิทธิ์ที่ต้องการ ระบบจะตอบกลับ HTTP status 403 พร้อม payload:
{
"code": 403,
"message": "Forbidden: Insufficient permissions",
"error": {
"type": "PERMISSION_DENIED",
"required_permission": "document:manage",
"resource": "document:manage"
}
}การกรองข้อมูลตามสิทธิ์ (Field-Level Filtering)
นอกจากการคุมการเข้าถึง Endpoint แล้ว บาง Endpoint ของโมดูล Employee จะ กรองฟิลด์ใน response อัตโนมัติ ตามสิทธิ์ของ API Key แม้เรียก Endpoint ได้สำเร็จ ฟิลด์ที่ไม่ได้รับอนุญาตจะถูกตัดออกหรือคืนค่าเป็น null:
| ถ้าไม่มีสิทธิ์ | ฟิลด์ที่ถูกกรองออก |
|---|---|
employee:read:personal | ข้อมูลส่วนตัว เช่น id_no, mobilephone, emailaddress, ข้อมูลที่อยู่ และรายการประวัติส่วนตัว (family_lists, education_lists, ability_lists, ฯลฯ) |
payroll:read:self หรือ payroll:read:all | ข้อมูลการเงิน เช่น บัญชีธนาคาร (bank_id, bank_code, bank_account_code), ข้อมูลภาษี/ประกันสังคม (sso_no, tax_method_lv), รายการการเงิน (fund_lists, tax_lists, loan_lists, ฯลฯ) และอัตราเงินเดือน |
Endpoint ที่มีการกรองข้อมูลระดับฟิลด์จะระบุไว้ในหน้าของ Endpoint นั้นๆ เช่น Get Employee Info, Get Employee List, Get Employee Data