Update Leave
แก้ไขคำขอลาที่มีอยู่
ใช้ API นี้เพื่อแก้ไขรายละเอียดคำขอลา เช่น ช่วงเวลา ประเภทการลา รายละเอียด หรือไฟล์แนบ
Endpoint
POST /api/v1/open-apis/time-leave/updateสิทธิ์ที่ต้องการ: API Key ต้องมีสิทธิ์ ข้อมูลการยื่นเอกสาร (document:manage)
Request Parameters
Required Parameters
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
time_leave_id | string | Yes | ID ของคำขอที่ต้องการแก้ไข (Base64) | MjAyNTExMjdENDU3M0M0MjE2Mzk= |
employee_code | string | Yes | รหัสพนักงานเจ้าของคำขอ | EMP001 |
absence_flag_lv | string | Yes | ประเภทการลา (01-08, 10-20 หรือรูปแบบ absence-01) ดูรหัสได้จาก Get Leave Types | absence-01 |
effective_hour | string | Yes | เวลาเริ่มต้น (YYYY-MM-DD HH:MM:SS) | 2026-01-15 08:00:00 |
expire_hour | string | Yes | เวลาสิ้นสุด (YYYY-MM-DD HH:MM:SS) | 2026-01-15 17:00:00 |
Optional Parameters
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
time_leave_desc | string | No | รายละเอียด/เหตุผล (ถ้าไม่ส่ง รายละเอียดจะถูกบันทึกเป็นค่าว่าง) | แก้ไขเหตุผลการลา |
image_content | string | No | ไฟล์แนบใหม่ (Base64 encoded) — ถ้าไม่ส่ง ไฟล์แนบเดิมจะยังคงอยู่ | data:image/png;base64,... |
language_code | string | No | ภาษาของข้อความตอบกลับ: TH (ค่าเริ่มต้น) หรือ EN | TH |
authorize_id | string | No | ID ผู้ทำรายการ (Base64) | MjAyNjA0MzBVU0VSMDAwMDAx |
หา authorize_id ได้อย่างไร: รับค่าจาก Get Employee Data Filter โดยใช้ path_action=get-user พร้อม employee_code ของผู้ทำรายการ — ใช้ค่า user_id ที่ได้กลับมาเป็น authorize_id
time_leave_id ที่ได้จาก Get Leave List หรือ Submit Leave เป็นค่า raw ต้องเข้ารหัส Base64 ก่อนส่งใน API นี้
Request Body Example
{
"time_leave_id": "MjAyNTExMjdENDU3M0M0MjE2Mzk=",
"employee_code": "EMP001",
"absence_flag_lv": "absence-01",
"effective_hour": "2026-01-15 08:00:00",
"expire_hour": "2026-01-16 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-16 17:00:00",
"description": "แก้ไขเหตุผลการลา",
"approve_flag": "01",
"updated_at": "2026-01-13 14:30:00",
"image_url": "https://cdn.humansoft.co.th/.../image/a1B2c3D4e5F6.png"
}
}Error Response - Validation Failed (HTTP 400)
{
"code": 400,
"message": "Validation failed",
"errors": [
"Missing required parameter: 'time_leave_id'",
"'expire_hour' must be greater than or equal to 'effective_hour'"
]
}Error Response - Not Found (HTTP 400)
{
"code": 400,
"message": "Time leave record not found"
}Error Response - Already Approved (HTTP 400)
{
"code": 400,
"message": "ไม่สามารถแก้ไขเอกสารที่อนุมัติแล้ว"
}Error Response - Already Deleted (HTTP 400)
{
"code": 400,
"message": "Cannot update deleted time leave record"
}Error Response - Salary Period Closed (HTTP 400)
{
"code": 400,
"message": "ไม่สามารถบันทึกได้ เพราะสิ้นสุดการคำนวณเงินเดือนไปแล้ว"
}Response Fields
| Field | Type | Description |
|---|---|---|
time_leave_id | string | ID ของคำขอที่แก้ไข |
employee_id | string | ID ของพนักงาน |
employee_code | string | รหัสพนักงาน |
type | string | รหัสประเภทการลาในรูปแบบตัวเลข เช่น 01 (แม้จะส่งมาเป็น absence-01) |
start_dt | datetime | เวลาเริ่มต้น |
end_dt | datetime | เวลาสิ้นสุด |
description | string | รายละเอียด |
approve_flag | string | สถานะการอนุมัติ — เป็น 01 (รออนุมัติ) หลังแก้ไขสำเร็จ |
updated_at | datetime | วันเวลาที่แก้ไข |
image_url | string | null | URL ของไฟล์แนบ, null หากไม่มีไฟล์แนบ — ถ้าไม่ได้ส่ง image_content จะคืนไฟล์แนบเดิมของคำขอ |
Code Examples
cURL
curl -X POST "https://openapi.humansoft.co.th/api/v1/open-apis/time-leave/update" \
-H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"time_leave_id": "MjAyNTExMjdENDU3M0M0MjE2Mzk=",
"employee_code": "EMP001",
"absence_flag_lv": "absence-01",
"effective_hour": "2026-01-15 08:00:00",
"expire_hour": "2026-01-16 17:00:00",
"time_leave_desc": "แก้ไขเหตุผลการลา"
}'Validation Rules
| Parameter | Validation | Error Message |
|---|---|---|
time_leave_id | ต้องระบุ | Missing required parameter: 'time_leave_id' |
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
ข้อจำกัดการแก้ไข:
- ไม่สามารถแก้ไขคำขอที่อนุมัติแล้ว (approve_flag = 02)
- ไม่สามารถแก้ไขคำขอที่ลบไปแล้ว
- ไม่สามารถแก้ไขเมื่อวันเริ่มหรือวันสิ้นสุดการลาอยู่ในงวดเงินเดือนที่ปิดแล้ว ยกเว้นวันเริ่มลาอยู่ในงวดเวลาทำงานที่ยังเปิดอยู่
- ช่วงเวลาใหม่ต้องไม่ทับซ้อนกับคำขอลาอื่นของพนักงาน (ไม่นับคำขอนี้เอง คำขอที่ไม่อนุมัติ
03และคำขอที่ถูกลบ) - ระบบอาจตรวจสอบเงื่อนไขตามการตั้งค่าประเภทการลาขององค์กรเช่นเดียวกับการยื่นคำขอ และอาจปฏิเสธการแก้ไขที่เกินกำหนดวันตัดรอบการยื่นเอกสารที่องค์กรตั้งค่าไว้
- เมื่อแก้ไขสำเร็จ สถานะของคำขอจะกลับเป็น
01(รออนุมัติ) เสมอ - ระบบจะบันทึกคำขอเป็นของพนักงานตาม
employee_codeที่ส่งมา โดยไม่ได้ตรวจสอบว่าตรงกับเจ้าของคำขอเดิม จึงต้องส่งemployee_codeของเจ้าของคำขอเสมอ
Error Handling
| Error | Cause | Solution |
|---|---|---|
Missing required parameter: 'time_leave_id' | ไม่ได้ส่ง time_leave_id | ตรวจสอบ request body |
Employee not found | ไม่พบพนักงานจาก employee_code | ตรวจสอบ employee_code |
Time leave record not found | ไม่พบคำขอ | ตรวจสอบ time_leave_id (ต้องเข้ารหัส Base64) |
Cannot update deleted time leave record | คำขอถูกลบไปแล้ว | ไม่สามารถแก้ไขได้ |
ไม่สามารถแก้ไขเอกสารที่อนุมัติแล้ว | คำขออนุมัติแล้ว | ไม่สามารถแก้ไขได้ |
ไม่สามารถบันทึกได้ เพราะสิ้นสุดการคำนวณเงินเดือนไปแล้ว | วันเริ่มหรือวันสิ้นสุดการลาอยู่ในงวดเงินเดือนที่ปิดแล้ว | ติดต่อ HR |
ไม่สามารถบันทึกได้ เพราะได้มีการขอเอกสารทับซ้อนกับที่ขอมาก่อนหน้าแล้ว!! | ช่วงเวลาซ้ำกับคำขออื่น | ตรวจสอบช่วงเวลา |
ไม่สามารถแก้ไขเอกสารได้เนื่องจากเกินกำหนดเวลาที่ร้องขอแล้ว | เกินกำหนดวันตัดรอบการยื่นเอกสารที่องค์กรตั้งค่าไว้ | ติดต่อ HR |
ข้อความ error จากการตรวจสอบเงื่อนไขของประเภทการลา (โควตา การลาล่วงหน้า การลาย้อนหลัง จำนวนวันลาติดต่อกัน และประเภทการลาที่ใช้ไม่ได้) เป็นชุดเดียวกับ Submit Leave
Notes
Use Cases
- แก้ไขช่วงเวลา - เปลี่ยนวันเริ่มต้นหรือสิ้นสุด
- เปลี่ยนประเภทการลา - เปลี่ยนจากลาป่วยเป็นลากิจ
- เพิ่มรายละเอียด - อัพเดทเหตุผลการลา
- แนบไฟล์เพิ่มเติม - อัพโหลดใบรับรองแพทย์
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,...) ไฟล์ใหม่จะใช้แทนไฟล์แนบเดิม - ถ้าไม่ส่ง
image_contentไฟล์แนบเดิมจะยังคงอยู่ และimage_urlใน response จะเป็น URL ของไฟล์แนบเดิม
Message Language
- ข้อความสำเร็จและข้อความภาษาไทยในตาราง Error Handling จะเป็นภาษาอังกฤษเมื่อส่ง
language_code=EN - ข้อความ validation (
errors),Employee not found,Time leave record not foundและCannot update deleted time leave recordเป็นภาษาอังกฤษเสมอ
Related APIs
- Get Leave List - ดึงรายการคำขอลา
- Submit Leave - ยื่นคำขอลาใหม่
- Delete Leave - ลบคำขอลา
Last updated on