Skip to Content
🚀 Welcome to Humansoft Open API Documentation

Submit Leave

ยื่นคำขอลาใหม่

ใช้ API นี้เพื่อสร้างคำขอลาใหม่ คำขอที่สร้างสำเร็จจะมีสถานะรออนุมัติ (01)

Endpoint

POST /api/v1/open-apis/time-leave/submit

สิทธิ์ที่ต้องการ: API Key ต้องมีสิทธิ์ ข้อมูลการยื่นเอกสาร (document:manage)

Request Parameters

Required Parameters

ParameterTypeRequiredDescriptionExample
employee_codestringYesรหัสพนักงานEMP001
absence_flag_lvstringYesประเภทการลา (01-08, 10-20 หรือรูปแบบ absence-01) ดูรหัสได้จาก Get Leave Typesabsence-01
effective_hourstringYesเวลาเริ่มต้น (YYYY-MM-DD HH:MM:SS)2026-01-15 08:00:00
expire_hourstringYesเวลาสิ้นสุด (YYYY-MM-DD HH:MM:SS)2026-01-15 17:00:00

Optional Parameters

ParameterTypeRequiredDescriptionExample
time_leave_descstringNoรายละเอียด/เหตุผลไม่สบาย มีไข้
image_contentstringNoไฟล์แนบ (Base64 encoded) แนะนำให้ส่งพร้อม prefix ระบุชนิดไฟล์data:image/png;base64,...
language_codestringNoภาษาของข้อความตอบกลับ: TH (ค่าเริ่มต้น) หรือ ENTH
authorize_idstringNoID ผู้ทำรายการ (Base64)MjAyNjA0MzBVU0VSMDAwMDAx

หา authorize_id ได้อย่างไร: รับค่าจาก Get Employee Data Filter โดยใช้ path_action=get-user พร้อม employee_code ของผู้ทำรายการ — ใช้ค่า user_id ที่ได้กลับมาเป็น authorize_id

Request Body Example

{ "employee_code": "EMP001", "absence_flag_lv": "absence-01", "effective_hour": "2026-01-15 08:00:00", "expire_hour": "2026-01-15 17:00:00", "time_leave_desc": "ไม่สบาย มีไข้" }

Response Format

Success Response (HTTP 200)

{ "code": 200, "message": "สำเร็จ", "payload": { "time_leave_id": "20251127D4573C421639", "employee_id": "20251127D4573C421639", "employee_code": "EMP001", "type": "01", "start_dt": "2026-01-15 08:00:00", "end_dt": "2026-01-15 17:00:00", "description": "ไม่สบาย มีไข้", "approve_flag": "01", "created": "2026-01-13 09:00:00", "image_url": null } }

Error Response - Validation Failed (HTTP 400)

{ "code": 400, "message": "Validation failed", "errors": [ "Missing required parameter: 'employee_code'", "'effective_hour' must be in format YYYY-MM-DD HH:MM:SS" ] }

Error Response - Employee Not Found (HTTP 400)

{ "code": 400, "message": "Employee not found" }

Error Response - Duplicate Leave (HTTP 400)

{ "code": 400, "message": "ไม่สามารถบันทึกได้ เพราะได้มีการขอเอกสารทับซ้อนกับที่ขอมาก่อนหน้าแล้ว!!" }

Error Response - Document Limit (HTTP 400)

{ "code": 400, "message": "ไม่สามารถขอเอกสารเกิน 2 ฉบับ ต่อวัน" }

Error Response - Salary Period Closed (HTTP 400)

{ "code": 400, "message": "ไม่สามารถบันทึกได้ เพราะสิ้นสุดการคำนวณเงินเดือนไปแล้ว" }

Response Fields

FieldTypeDescription
time_leave_idstringID ของคำขอที่สร้าง
employee_idstringID ของพนักงาน
employee_codestringรหัสพนักงาน
typestringรหัสประเภทการลาในรูปแบบตัวเลข เช่น 01 (แม้จะส่งมาเป็น absence-01)
start_dtdatetimeเวลาเริ่มต้น
end_dtdatetimeเวลาสิ้นสุด
descriptionstringรายละเอียด
approve_flagstringสถานะการอนุมัติ — เป็น 01 (รออนุมัติ) เมื่อยื่นสำเร็จ
createddatetimeวันเวลาที่ยื่นคำขอ
image_urlstring | nullURL ของไฟล์แนบ, null หากไม่มีไฟล์แนบ

Code Examples

curl -X POST "https://openapi.humansoft.co.th/api/v1/open-apis/time-leave/submit" \ -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "employee_code": "EMP001", "absence_flag_lv": "absence-01", "effective_hour": "2026-01-15 08:00:00", "expire_hour": "2026-01-15 17:00:00", "time_leave_desc": "ไม่สบาย มีไข้" }'

Validation Rules

ParameterValidationError Message
employee_codeต้องระบุMissing required parameter: 'employee_code'
employee_codeต้องเป็น string'employee_code' must be a string
absence_flag_lvต้องระบุMissing required parameter: 'absence_flag_lv'
absence_flag_lvต้องเป็น 01-08 หรือ 10-20 (หรือ absence-01 ถึง absence-20 ยกเว้น 09)'absence_flag_lv' must be 01 to 08 or 10 to 20
effective_hourต้องระบุMissing required parameter: 'effective_hour'
effective_hourรูปแบบ YYYY-MM-DD HH:MM:SS'effective_hour' must be in format YYYY-MM-DD HH:MM:SS
effective_hourต้องเป็นวันเวลาที่มีอยู่จริง'effective_hour' is not a valid datetime
expire_hourต้องระบุMissing required parameter: 'expire_hour'
expire_hourรูปแบบ YYYY-MM-DD HH:MM:SS'expire_hour' must be in format YYYY-MM-DD HH:MM:SS
expire_hourต้องเป็นวันเวลาที่มีอยู่จริง'expire_hour' is not a valid datetime
expire_hourต้อง >= effective_hour'expire_hour' must be greater than or equal to 'effective_hour'
time_leave_descต้องเป็น string'time_leave_desc' must be a string
image_contentต้องเป็น string'image_content' must be a string

Business Rules

ข้อจำกัดการยื่นคำขอ:

  • employee_code ต้องเป็นพนักงานที่มีอยู่ในระบบ
  • เวลาสิ้นสุดต้องมากกว่าหรือเท่ากับเวลาเริ่มต้น
  • ไม่สามารถยื่นคำขอเมื่อวันเริ่มหรือวันสิ้นสุดการลาอยู่ในงวดเงินเดือนที่ปิดแล้ว ยกเว้นช่วงวันลาอยู่ในงวดเวลาทำงานที่ยังเปิดอยู่
  • ช่วงเวลาต้องไม่ทับซ้อนกับคำขอลาอื่นของพนักงานคนเดียวกัน (ไม่นับคำขอที่ไม่อนุมัติ 03 และคำขอที่ถูกลบ)
  • พนักงาน 1 คนมีคำขอลาที่เริ่มในวันเดียวกันได้ไม่เกิน 2 ฉบับ (นับทุกสถานะ ยกเว้นคำขอที่ถูกลบ)
  • ระบบอาจตรวจสอบเงื่อนไขตามการตั้งค่าประเภทการลาขององค์กร เช่น โควตาการลา การลาล่วงหน้า การลาย้อนหลัง จำนวนวันลาติดต่อกัน และประเภทการลาที่พนักงานไม่สามารถใช้ได้
  • หากองค์กรเปิดใช้การกำหนดวันตัดรอบการยื่นเอกสาร หรือจำกัดจำนวนเอกสารลาต่องวดเงินเดือน ระบบอาจปฏิเสธคำขอที่เกินกำหนด

Error Handling

ErrorCauseSolution
Missing required parameter: 'employee_code'ไม่ได้ส่ง employee_codeตรวจสอบ request body
Employee not foundไม่พบพนักงานจาก employee_codeตรวจสอบ employee_code
ไม่สามารถบันทึกได้ เพราะสิ้นสุดการคำนวณเงินเดือนไปแล้ววันเริ่มหรือวันสิ้นสุดการลาอยู่ในงวดเงินเดือนที่ปิดแล้วเลือกวันที่ในงวดที่ยังเปิดอยู่
ไม่สามารถบันทึก เพราะการลาครั้งนี้เกินโควตาแล้ว!!โควตาการลาประเภทนี้ไม่พอหรือไม่มีโควตาตรวจสอบโควตาการลาของพนักงาน
ไม่สามารถบันทึก เพราะต้องลาล่วงหน้าอย่างน้อย 3 วัน!!ยื่นล่วงหน้าไม่ถึงจำนวนวันที่ประเภทการลากำหนด (ตัวเลขตามการตั้งค่า)ยื่นคำขอล่วงหน้าตามที่กำหนด
ไม่สามารถบันทึก เพราะลาย้อนหลังได้ไม่เกิน 2 วัน!!ยื่นย้อนหลังเกินจำนวนวันที่ประเภทการลากำหนด (ตัวเลขตามการตั้งค่า)ติดต่อ HR
ไม่สามารถบันทึก เพราะลาติดต่อกันเกินกว่า 30 วัน!!ลาติดต่อกันเกินจำนวนวันสูงสุดที่ประเภทการลากำหนด (ตัวเลขตามการตั้งค่า)ตรวจสอบช่วงวันที่ลา
ไม่สามารถบันทึก เพราะคุณไม่สามารถลาประเภทนี้ได้!!พนักงานไม่สามารถใช้ประเภทการลานี้ได้ เช่น ประเภทการลาที่จำกัดเพศเลือกประเภทการลาอื่น
ไม่สามารถบันทึกได้ เพราะได้มีการขอเอกสารทับซ้อนกับที่ขอมาก่อนหน้าแล้ว!!ช่วงเวลาทับซ้อนกับคำขอลาอื่นของพนักงานตรวจสอบช่วงเวลา
ไม่สามารถขอเอกสารได้ เนื่องจากเกินกำหนดวันที่ขอเอกสารแล้วเกินกำหนดวันตัดรอบการยื่นเอกสารที่องค์กรตั้งค่าไว้ติดต่อ HR
ไม่สามารถขอเอกสารได้ เนื่องจากเกินจำนวนโควตาการขอเอกสารจำนวนคำขอลาในงวดเงินเดือนเกินจำนวนที่องค์กรกำหนดติดต่อ HR
ไม่สามารถขอเอกสารเกิน 2 ฉบับ ต่อวันมีคำขอลาที่เริ่มในวันเดียวกันครบ 2 ฉบับแล้วตรวจสอบคำขอเดิม

Notes

Use Cases

  1. พนักงานยื่นคำขอลา - สร้างคำขอผ่าน Self-service
  2. HR สร้างคำขอแทน - สร้างคำขอให้พนักงานที่ไม่มี access
  3. Import ข้อมูลจากระบบภายนอก - นำเข้าข้อมูลการลาจากระบบอื่น

Time Format

  • effective_hour และ expire_hour ใช้รูปแบบ YYYY-MM-DD HH:MM:SS
  • ตัวอย่าง: 2026-01-15 08:00:00

File Attachment

  • ส่งไฟล์แนบเป็น Base64 encoded string ใน image_content แนะนำให้มี prefix ระบุชนิดไฟล์ เช่น data:image/jpeg;base64,... หากไม่มี prefix ระบบจะระบุชนิดไฟล์จากเนื้อหาไฟล์
  • เมื่อแนบไฟล์สำเร็จ response จะคืน image_url เป็น URL ของไฟล์แนบ

Message Language

  • ข้อความสำเร็จและข้อความภาษาไทยในตาราง Error Handling จะเป็นภาษาอังกฤษเมื่อส่ง language_code = EN
  • ข้อความ validation (errors) และ Employee not found เป็นภาษาอังกฤษเสมอ
Last updated on