Skip to Content
🚀 Welcome to Humansoft Open API Documentation

Submit Holiday Change

ยื่นคำขอเปลี่ยนวันหยุดใหม่ เพื่อเปลี่ยนประเภทของวันใดวันหนึ่ง

ใช้ API นี้เพื่อสร้างคำขอเปลี่ยนวันหยุดใหม่ เช่น เปลี่ยนจากวันหยุดเป็นวันทำงาน หรือเปลี่ยนจากวันทำงานเป็นวันหยุด

Endpoint

POST /api/v1/open-apis/holiday-change/submit

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

Request Parameters

Required Parameters

ParameterTypeRequiredDescriptionExample
employee_codestringYesรหัสพนักงานEMP001
holiday_change_dtstringYesวันที่ต้องการเปลี่ยน (Y-m-d)2026-01-15
holiday_flag_lvstringYesประเภทวันหยุดที่ต้องการเปลี่ยนเป็น00

Optional Parameters

ParameterTypeRequiredDescriptionExample
holiday_mode_lvstringNoโหมดการเปลี่ยน — change = เปลี่ยนประเภทของวันที่ holiday_change_dt เป็นค่าใน holiday_flag_lvchange
holiday_change_descstringNoเหตุผลการเปลี่ยนต้องประชุมลูกค้า
image_contentstringNoรูปภาพ (Base64 encoded)data:image/png;base64,...
authorize_idstringNoID ผู้ทำรายการ (Base64)MjAyNjA0MzBVU0VSMDAwMDAx

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

Holiday Flag Values

CodeประเภทDescription
00วันทำงานWorkday
01วันหยุดนักขัตฤกษ์Public Holiday
03วันหยุดพนักงานEmployee Holiday
04วันหยุดพิเศษSpecial Holiday (ใช้โควตาวันหยุดพิเศษ)

Request Body Example

{ "employee_code": "EMP001", "holiday_change_dt": "2026-01-15", "holiday_mode_lv": "change", "holiday_flag_lv": "00", "holiday_change_desc": "ต้องประชุมลูกค้า" }

Response Format

Success Response (HTTP 200)

{ "code": 200, "message": "Success", "payload": { "holiday_change_id": "20251127D4573C421639", "employee_id": "20251127D4573C421639", "employee_code": "EMP001", "holiday_change_dt": "2026-01-15", "holiday_mode_lv": "change", "holiday_flag_lv": "00", "holiday_switch_dt": null, "switch_holiday_flag_lv_from": null, "switch_holiday_flag_lv_to": null, "holiday_change_desc": "ต้องประชุมลูกค้า", "approve_flag": "01", "approve_id": "20251127D4573C421639", "approve_upd": "2026-01-13 10:30:00", "approve_remark": "", "created": "2026-01-13 10:30:00", "last_upd": "2026-01-13 10:30:00", "image_url": null } }

Error Response - Validation Failed (HTTP 400)

{ "code": 400, "message": "Validation failed", "errors": [ "Missing required parameter: 'employee_code'", "'holiday_change_dt' must be in Y-m-d format (e.g., 2024-01-15)" ] }

Error Response - Duplicate Request (HTTP 400)

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

Error Response - Salary Period Closed (HTTP 400)

{ "code": 400, "message": "ไม่สามารถเพิ่มข้อมูลได้เนื่องจากปิดงวดเงินเดือนแล้ว" }

Response Fields

FieldTypeDescription
holiday_change_idstringID ของคำขอที่สร้างใหม่ (ค่า raw ไม่ได้เข้ารหัส Base64 — ต้องเข้ารหัส Base64 ก่อนส่งให้ Update, Delete หรือ Approve)
employee_idstringID ของพนักงาน
employee_codestringรหัสพนักงาน
holiday_change_dtstringวันที่เปลี่ยน (YYYY-MM-DD)
holiday_mode_lvstringโหมดการเปลี่ยน (change, switch) ตามที่บันทึกในคำขอ
holiday_flag_lvstringประเภทวันหยุด
holiday_switch_dtstring | nullวันที่สลับไป (ใช้กับโหมด switch)
switch_holiday_flag_lv_fromstring | nullประเภทวันเดิม (ใช้กับโหมด switch)
switch_holiday_flag_lv_tostring | nullประเภทวันใหม่ (ใช้กับโหมด switch)
holiday_change_descstringเหตุผลการเปลี่ยน (ค่าว่างหากไม่ได้ระบุ)
approve_flagstringสถานะการอนุมัติ (คำขอใหม่เป็น 01 = รออนุมัติ)
approve_idstringuser_id ของผู้ทำรายการล่าสุด (ผู้ยื่น/แก้ไขคำขอ หรือผู้อนุมัติ)
approve_upddatetimeวันเวลาที่ปรับสถานะล่าสุด (ยื่น/แก้ไข/อนุมัติ)
approve_remarkstringหมายเหตุการอนุมัติ
createddatetimeวันเวลาที่สร้าง
last_upddatetimeวันเวลาที่แก้ไขล่าสุด
image_urlstring | nullURL ของไฟล์แนบ, null หากไม่มีไฟล์แนบ

Code Examples

curl -X POST "https://openapi.humansoft.co.th/api/v1/open-apis/holiday-change/submit" \ -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "employee_code": "EMP001", "holiday_change_dt": "2026-01-15", "holiday_mode_lv": "change", "holiday_flag_lv": "00", "holiday_change_desc": "ต้องประชุมลูกค้า" }'

Example: Submit with Image

// แปลงรูปภาพเป็น Base64 const fileInput = document.getElementById('imageInput') const file = fileInput.files[0] const reader = new FileReader() reader.onload = async function(e) { const base64Image = e.target.result // data:image/png;base64,... const response = await fetch( 'https://openapi.humansoft.co.th/api/v1/open-apis/holiday-change/submit', { method: 'POST', headers: { 'Ocp-Apim-Subscription-Key': 'YOUR_API_KEY', 'Content-Type': 'application/json' }, body: JSON.stringify({ employee_code: 'EMP001', holiday_change_dt: '2026-01-15', holiday_mode_lv: 'change', holiday_flag_lv: '00', holiday_change_desc: 'ต้องประชุมลูกค้า', image_content: base64Image }) } ) const data = await response.json() console.log(data) } reader.readAsDataURL(file)

Validation Rules

ParameterValidationError Message
employee_codeต้องระบุMissing required parameter: 'employee_code'
holiday_change_dtต้องระบุMissing required parameter: 'holiday_change_dt'
holiday_change_dtรูปแบบ Y-m-d'holiday_change_dt' must be in Y-m-d format (e.g., 2024-01-15)
holiday_flag_lvต้องระบุMissing required parameter: 'holiday_flag_lv'
holiday_change_descต้องเป็น string'holiday_change_desc' must be a string
image_contentต้องเป็น string'image_content' must be a string

Business Rules

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

  • ไม่สามารถยื่นคำขอได้ หากพนักงานมีคำขอเปลี่ยนวันหยุดในวันเดียวกันอยู่แล้ว (ยกเว้นคำขอที่ไม่อนุมัติ 03)
  • ไม่สามารถยื่นคำขอในงวดเงินเดือนที่ปิดแล้ว ยกเว้นวันที่นั้นอยู่ในงวด OT หรืองวดเวลาทำงานที่ยังเปิดอยู่
  • อาจมี cut-off date จำกัดวันที่สามารถยื่นได้
  • อาจมี quota จำกัดจำนวนคำขอต่องวด
  • คำขอเปลี่ยนเป็นวันหยุดพิเศษ (holiday_flag_lv = 04) ต้องมีโควตาวันหยุดพิเศษคงเหลือเพียงพอ

Error Handling

ErrorCauseSolution
Missing required parameter: 'employee_code'ไม่ได้ส่ง employee_codeตรวจสอบ request body
Employee not found: XXXไม่พบพนักงานตรวจสอบ employee_code
ไม่สามารถบันทึกได้ เพราะได้มีการขอเอกสารทับซ้อนกับที่ขอมาก่อนหน้าแล้ว!!มีคำขอในวันเดียวกันอยู่แล้วตรวจสอบคำขอที่มีอยู่
ไม่สามารถเพิ่มข้อมูลได้เนื่องจากปิดงวดเงินเดือนแล้วงวดเงินเดือนปิดแล้วติดต่อ HR
ไม่สามารถขอเอกสารได้ เนื่องจากเกินกำหนดวันที่ขอเอกสารแล้วเกิน cut-off dateติดต่อ HR
ไม่สามารถขอเอกสารได้ เนื่องจากเกินจำนวนโควตาการขอเอกสารเกิน quotaรอถึงงวดถัดไป
ไม่สามารถบันทึก เพราะการเปลี่ยนวันหยุดครั้งนี้เกินโควตาแล้ว!!โควตาวันหยุดพิเศษไม่พอ (holiday_flag_lv = 04)ตรวจสอบโควตาวันหยุดพิเศษของพนักงาน
Last updated on