Get Leave Types
ดึงรายการประเภทการลาทั้งหมดที่ตั้งค่าไว้ในองค์กร พร้อมชื่อ (ไทย/อังกฤษ) หน่วยการลา สถานะเปิด/ปิดใช้งาน และเงื่อนไขการลาของแต่ละประเภท
ใช้ API นี้เพื่อดึงรายการประเภทการลาสำหรับแสดงใน dropdown ใช้อ้างอิง code กับชื่อประเภท และตรวจสอบเงื่อนไขการลาก่อนยื่นคำขอ
Endpoint
GET /api/v1/open-apis/time-leave/get-typesสิทธิ์ที่ต้องการ: API Key ต้องมีสิทธิ์ ข้อมูลการยื่นเอกสาร (document:manage)
Request Parameters
ไม่มี parameter ที่ต้องส่ง
Response Format
Success Response (HTTP 200)
{
"code": 200,
"message": "สำเร็จ",
"payload": [
{
"code": "absence-01",
"name": "ลาป่วย",
"name_en": "Sick Leave",
"unit": "Daily",
"status": "Y",
"leave_conditions": {
"time_limit_type": "B",
"advance_leave_days": 0,
"retroactive_leave_days": 2,
"max_consecutive_days": 30,
"work_day_only": "N",
"disallow_over_quota": "Y",
"gender": "A"
}
},
{
"code": "absence-02",
"name": "ลากิจ",
"name_en": "Personal Leave",
"unit": "Daily",
"status": "Y",
"leave_conditions": {
"time_limit_type": "A",
"advance_leave_days": 3,
"retroactive_leave_days": 0,
"max_consecutive_days": 5,
"work_day_only": "Y",
"disallow_over_quota": "Y",
"gender": "A"
}
},
{
"code": "absence-03",
"name": "ลาคลอด",
"name_en": "Maternity Leave",
"unit": "Daily",
"status": "Y",
"leave_conditions": {
"time_limit_type": "A",
"advance_leave_days": 0,
"retroactive_leave_days": 0,
"max_consecutive_days": 98,
"work_day_only": "N",
"disallow_over_quota": "Y",
"gender": "F"
}
},
{
"code": "absence-07",
"name": "ลาบวช",
"name_en": "Ordination Leave",
"unit": "Daily",
"status": "N",
"leave_conditions": {
"time_limit_type": "A",
"advance_leave_days": 15,
"retroactive_leave_days": 0,
"max_consecutive_days": 15,
"work_day_only": "Y",
"disallow_over_quota": "Y",
"gender": "M"
}
}
]
}Response Fields
| Field | Type | Description |
|---|---|---|
code | number | รหัสสถานะ (200 = สำเร็จ) |
message | string | ข้อความตอบกลับจากระบบ |
payload | array | รายการประเภทการลา เรียงตามลำดับการแสดงผลที่องค์กรตั้งค่าไว้ |
payload[].code | string | รหัสประเภทการลา รูปแบบ absence-XX — ดู Leave Type Codes |
payload[].name | string | ชื่อประเภทการลา (TH) |
payload[].name_en | string | ชื่อประเภทการลา (EN) |
payload[].unit | string | หน่วยการลา — Daily (วัน) หรือ Hour (ชั่วโมง) |
payload[].status | string | สถานะการเปิดใช้งาน (Y = เปิดใช้งาน, N = ปิดใช้งาน) |
payload[].leave_conditions | object | เงื่อนไขการลาของประเภทนี้ — ดู Leave Conditions |
API นี้คืนประเภทการลาที่ปิดใช้งานอยู่ (status = N) มาด้วย หากต้องการเฉพาะประเภทที่ใช้ยื่นคำขอได้จริง ต้องกรอง status === 'Y' ที่ฝั่งผู้เรียกเอง
Leave Conditions
เงื่อนไขและข้อจำกัดของการลาแต่ละประเภท ใช้ตรวจสอบความถูกต้องของคำขอก่อนส่งไปยัง Submit Leave
| Field | Type | Description |
|---|---|---|
time_limit_type | string | ประเภทข้อจำกัดเวลาที่ยื่นได้ — ดู Time Limit Type |
advance_leave_days | number | ต้องยื่นล่วงหน้าอย่างน้อยกี่วัน (มีผลเมื่อ time_limit_type = A) |
retroactive_leave_days | number | ยื่นย้อนหลังได้ไม่เกินกี่วัน (มีผลเมื่อ time_limit_type = B) |
max_consecutive_days | number | ลาติดต่อกันได้สูงสุดกี่วันต่อครั้ง (0 = ไม่จำกัด) |
work_day_only | string | Y = นับเฉพาะวันทำงาน (ข้ามวันหยุดในช่วงลา), N = นับทุกวันรวมวันหยุด |
disallow_over_quota | string | Y = ยื่นไม่ได้เมื่อโควตาไม่พอ, N = ยื่นได้แม้โควตาไม่พอ (ติดลบได้) |
gender | string | เพศที่ลาประเภทนี้ได้ — ดู Gender Codes |
leave_conditions จะมีครบทั้ง 7 key เสมอในทุกรายการ ประเภทที่ยังไม่ได้ตั้งเงื่อนไขจะได้ค่าเริ่มต้น (ตัวเลขเป็น 0, gender เป็น A, time_limit_type เป็นค่าว่าง)
Time Limit Type
| Value | ความหมาย | ฟิลด์ที่มีผล |
|---|---|---|
A | จำกัดการลาล่วงหน้า — ต้องยื่นก่อนถึงวันลาตามจำนวนที่กำหนด | advance_leave_days |
B | จำกัดการลาย้อนหลัง — ยื่นย้อนหลังได้ไม่เกินจำนวนที่กำหนด | retroactive_leave_days |
"" | ไม่จำกัดเวลาที่ยื่น | — |
ทั้ง advance_leave_days และ retroactive_leave_days จะถูกส่งกลับมาเสมอ แต่มีผลบังคับใช้เฉพาะตัวที่ตรงกับ time_limit_type เท่านั้น อีกตัวหนึ่งให้มองข้ามไป
Gender Codes
| Value | เพศที่ลาประเภทนี้ได้ |
|---|---|
A | ทุกเพศ |
M | เฉพาะเพศชาย |
F | เฉพาะเพศหญิง |
N | เฉพาะผู้ที่ไม่ระบุเพศ |
MF | เพศชายและเพศหญิง |
MN | ผู้ที่ไม่ระบุเพศและเพศชาย |
FN | ผู้ที่ไม่ระบุเพศและเพศหญิง |
Leave Type Codes
code อยู่ในช่วง absence-01 ถึง absence-08 และ absence-10 ถึง absence-20 (ไม่มี absence-09 ระบบข้ามลำดับนี้)
| ช่วงรหัส | ลักษณะการใช้งาน |
|---|---|
absence-01 – absence-08 | ประเภทการลามาตรฐานที่ระบบเตรียมไว้ให้ |
absence-10 – absence-20 | ประเภทการลาเพิ่มเติมที่องค์กรกำหนดเอง |
ชื่อประเภทการลาแต่ละรหัสตั้งค่าได้เองในแต่ละองค์กร เช่น absence-03 อาจเป็น “ลาพักร้อน” ในองค์กรหนึ่ง แต่เป็นชื่ออื่นในอีกองค์กรหนึ่ง จึงไม่ควร hardcode ชื่อไว้ในระบบของท่าน ให้ใช้ name / name_en ที่ API คืนมาแทน
Code Examples
cURL
curl -X GET "https://openapi.humansoft.co.th/api/v1/open-apis/time-leave/get-types" \
-H "Ocp-Apim-Subscription-Key: YOUR_API_KEY"Error Handling
Error Response (HTTP 400)
{
"code": 400,
"message": "ไม่สำเร็จ",
"error": "รายละเอียดข้อผิดพลาด"
}| Field | Type | Description |
|---|---|---|
code | number | รหัสสถานะ (400 = ไม่สำเร็จ) |
message | string | ข้อความแสดงสถานะ (ไม่สำเร็จ) |
error | string | รายละเอียดข้อผิดพลาด |
Notes
payloadเรียงตามลำดับการแสดงผลที่องค์กรตั้งค่าไว้แล้ว จึงนำไปแสดงใน dropdown ได้ทันทีโดยไม่ต้องเรียงใหม่- ประเภทการลาที่ยังไม่ได้ตั้งชื่อจะไม่ถูกส่งกลับมา — จำนวนรายการที่ได้จึงต่างกันไปตามการตั้งค่าของแต่ละองค์กร
leave_conditionsเป็นเงื่อนไขที่องค์กรตั้งไว้ ใช้ตรวจสอบคำขอฝั่งผู้เรียกก่อนยื่นได้ เพื่อลดการยื่นคำขอที่จะถูกปฏิเสธcodeที่ได้จาก API นี้ส่งต่อเป็นค่าabsence_flag_lvใน Submit Leave และ Get Leave List หรือเป็นค่าtypeใน Import Leave ได้ทันที โดยรองรับทั้งรูปแบบabsence-01และ01- แนะนำให้ cache ข้อมูลนี้ไว้ เพราะประเภทการลาและเงื่อนไขไม่ได้เปลี่ยนบ่อย
Related APIs
- Submit Leave - ยื่นคำขอลาใหม่โดยใช้
codeเป็นabsence_flag_lv - Get Leave List - ดึงรายการคำขอลา กรองตามประเภทได้
- Import Leave - นำเข้าข้อมูลการลาแบบหลายรายการ
- Get Leave Custom Fields - ดึงฟิลด์เพิ่มเติมของเอกสารการลา