Skip to Content
🚀 Welcome to Humansoft Open API Documentation

Get Adjust List

ดึงรายการเอกสารขอเพิ่มเวลาทำงานตามเงื่อนไขที่กำหนด รองรับ 3 โหมดการทำงาน พร้อม filter และ pagination

ใช้ API นี้เพื่อดึงรายการเอกสารขอเพิ่มเวลา ติดตามสถานะการอนุมัติ หรือสร้างรายงานสรุป รองรับ 3 โหมด: self (เอกสารของพนักงานคนเดียว), hr (มุมมอง Manager/HR/Admin), lasted (เอกสารล่าสุด)

Endpoint

GET /api/v1/open-apis/time-adjust/get-list

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

Request Parameters

ทุก parameter ไม่บังคับ ส่งเป็น query string

Optional Parameters (General)

ParameterTypeDefaultDescriptionExample
modestringselfโหมดการทำงาน: self, hr, lastedself
employee_codestring-รหัสพนักงาน — โหมด self = พนักงานที่ต้องการดูเอกสาร, โหมด hr = กรองเฉพาะพนักงานคนนี้EMP001
authorize_idstring-ID ผู้ใช้ของผู้ทำรายการ (Base64) — ใช้ระบุพนักงานในโหมด self เมื่อไม่ส่ง employee_code และใช้คำนวณ authorize_flag และสายการอนุมัติMjAyNjA0MzBVU0VSMDAwMDAx
yearstring-กรองตามปี (YYYY)2026
monthstring-กรองตามเดือน (MM, 01-12) ใช้คู่กับ year02
start_datestring-วันที่เริ่มต้น (YYYY-MM-DD) ต้องใช้คู่กับ end_date2026-01-01
end_datestring-วันที่สิ้นสุด (YYYY-MM-DD) ต้องใช้คู่กับ start_date2026-01-31
approve_flagstring-กรองตามสถานะการอนุมัติ (01-08 ดูตารางด้านล่าง)01
time_adjust_flag_lvstring-กรองตามประเภทเอกสาร (ดู Get Adjust Types)01
language_codestringTHภาษาของข้อมูลใน response เช่น header, detail, status และชื่อพนักงาน (TH หรือ EN)TH
_PAGEinteger1หน้าที่ต้องการ — ต้องส่งค่านี้จึงจะมี _PAGINATION ใน response1
_NUMBER_PER_PAGEintegerทั้งหมดจำนวนรายการต่อหน้า (1-1000) หากไม่ส่งจะคืนทุกรายการ20

โหมด self ต้องส่ง employee_code หรือ authorize_id ของผู้ใช้ที่ผูกกับพนักงานอย่างใดอย่างหนึ่ง มิฉะนั้นจะได้ HTTP 400

ลำดับการกรองตามวันที่ (กรองจาก time_adjust_dt):

  • ส่ง start_date + end_date จะใช้ช่วงวันที่นี้ก่อน
  • ส่ง year + month จะกรองตามช่วงวันที่ของงวดเงินเดือนของเดือนนั้น (หากไม่พบงวด จะกรองตามเดือนปฏิทิน)
  • ส่ง year อย่างเดียวจะกรองตามปีปฏิทิน ส่วน month ที่ไม่มี year จะไม่ถูกนำมากรอง

Optional Parameters (HR Mode Only)

ParameterTypeDefaultDescriptionExample
keywordstring-ค้นหาจากชื่อ นามสกุล (ไทย/อังกฤษ) ชื่อเล่น หรือรหัสพนักงานสมชาย
company_idstring-กรองตามบริษัท (Base64)MjAyNTExMjdENDU3M0M0MjE2Mzk=
branch_idstring-กรองตามสาขา (Base64)MjAyNTExMjdENDU3M0M0MjE2Mzk=
department_idstring-กรองตามแผนก (Base64)MjAyNTExMjdENDU3M0M0MjE2Mzk=
company_listsarray-กรองตามบริษัท (array ของ object { "id": "<Base64>" })[{"id": "MjAyNTExMjdENDU3M0M0MjE2Mzk="}]
branch_listsarray-กรองตามสาขา (array ของ object { "id": "<Base64>" })[{"id": "MjAyNTExMjdENDU3M0M0MjE2Mzk="}]
department_listsarray-กรองตามแผนก (array ของ object { "id": "<Base64>" })[{"id": "MjAyNTExMjdENDU3M0M0MjE2Mzk="}]
division_listsarray-กรองตามส่วนงาน (array ของ object { "id": "<Base64>" })[{"id": "MjAyNTExMjdENDU3M0M0MjE2Mzk="}]
section_listsarray-กรองตามฝ่าย (array ของ object { "id": "<Base64>" })[{"id": "MjAyNTExMjdENDU3M0M0MjE2Mzk="}]
section_lists_lv01 - section_lists_lv05array-กรองตามระดับสังกัดย่อย 1-5 (array ของ object { "id": "<Base64>" })[{"id": "MjAyNTExMjdENDU3M0M0MjE2Mzk="}]
position_listsarray-กรองตามตำแหน่ง (array ของ object { "id": "<Base64>" })[{"id": "MjAyNTExMjdENDU3M0M0MjE2Mzk="}]
employee_listsarray-กรองตามพนักงาน (array ของ object { "id": "<employee_id Base64>" }) เมื่อส่งคู่กับ authorize_line จะใช้รายการนี้แทนการคำนวณสายการอนุมัติ[{"id": "MjAyNTExMjdENDU3M0M0MjE2Mzk="}]
authorize_linestring-ส่ง true เพื่อกรองเฉพาะเอกสารของพนักงานในสายการอนุมัติของผู้ใช้ตาม authorize_id (รวมเอกสารของผู้ใช้เอง) ไม่ส่งหรือส่ง false = ไม่กรองtrue
sort_bystringtime_adjust_dtfield ที่ใช้เรียงลำดับ เช่น time_adjust_dt, created, employee_codetime_adjust_dt
sort_orderstringDESCทิศทางการเรียง (ASC, DESC) ดูหมายเหตุใน SortingDESC
  • ตัวกรองสาขา แผนก ส่วนงาน ฝ่าย และระดับสังกัดย่อย (branch_id, branch_lists, department_id, department_lists, division_lists, section_lists, section_lists_lv01-lv05) จะรวมกันแบบ OR ส่วนตัวกรองบริษัทและตำแหน่งจะกรองเพิ่มแบบ AND
  • id ใน parameter แบบ *_lists ต้องเข้ารหัส Base64 เช่นเดียวกับ parameter ระดับบนสุด
  • ส่ง array ใน query string ในรูปแบบ company_lists[0][id]=MjAyNTExMjdENDU3M0M0MjE2Mzk=

Approve Flag Values

ValueStatusDescription
01Pendingรออนุมัติ
02Approvedอนุมัติแล้ว
03Not Approvedไม่อนุมัติ
04Manager Approved Step 1หัวหน้าอนุมัติขั้นที่ 1 แล้ว รอขั้นถัดไป
05Recheckส่งกลับตรวจสอบอีกครั้ง
06Manager Approved Step 2หัวหน้าอนุมัติขั้นที่ 2 แล้ว รอขั้นถัดไป
07Manager Approved Step 3หัวหน้าอนุมัติขั้นที่ 3 แล้ว รอขั้นถัดไป
08Manager Approved Step 4หัวหน้าอนุมัติขั้นที่ 4 แล้ว รอขั้นถัดไป
  • กรองด้วย approve_flag=01 จะรวมสถานะ 01, 04, 05, 06, 07, 08 (รออนุมัติทุกระดับ รวมเอกสารที่ส่งกลับตรวจสอบอีกครั้ง)
  • กรองด้วย approve_flag=04 จะรวมสถานะ 04-08
  • ค่าอื่นจะกรองตามสถานะนั้นตรง ๆ
  • ใน response ค่า approve_flag ที่เป็น 04-08 จะแสดงเป็น 01 ส่วน status แสดงชื่อสถานะจริงของเอกสาร

Time Adjust Flag Values

รหัสและชื่อประเภทเอกสาร (time_adjust_flag_lv) กำหนดโดยแต่ละองค์กร ดูรายการที่ใช้ได้จาก Get Adjust Types

Example Request

Mode: self - ดูเอกสารของพนักงาน

GET /api/v1/open-apis/time-adjust/get-list?mode=self&employee_code=EMP001&year=2026&approve_flag=01

Mode: hr - มุมมอง HR/Manager

GET /api/v1/open-apis/time-adjust/get-list?mode=hr&year=2026&month=02&approve_flag=01&department_id=MjAyNTExMjdENDU3M0M0MjE2Mzk=&sort_by=time_adjust_dt&sort_order=DESC&_PAGE=1&_NUMBER_PER_PAGE=20

Mode: lasted - เอกสารล่าสุด

GET /api/v1/open-apis/time-adjust/get-list?mode=lasted

Response Format

Success Response - Mode: self / lasted (HTTP 200)

Response จะเป็น flat array ของเอกสาร:

{ "code": 200, "message": "สำเร็จ", "payload": [ { "doc_type": "Time_Adjust", "doc_id": "20251127D4573C421639", "employee_id": "20251127D4573C421639", "work_date": "2026-02-12", "time_adjust_dt": "2026-02-12", "header": "สมชาย ใจดี (ชาย) ยื่นขอ \"ลืมลงเวลา\"", "detail": "ขอวันที่ 12/02/2026 เวลา 09:00,18:00\nหมายเหตุ : ลืมลงเวลาเนื่องจากประชุม\n", "status": "รออนุมัติ", "approve_flag": "01", "approve_by": "สมหญิง มากมาย", "approve_remark": "", "last_upd": "2026-02-12 17:26:49", "last_upd_format": "12/02/2026 17:26", "created": "2026-02-12 17:26:49", "created_format": "12/02/2026 17:26", "image_url": "https://cdn.humansoft.co.th/.../image/a1B2c3D4e5F6.png", "authorize_flag": true } ], "_PAGINATION": { "_TOTAL_RECORDS": 1, "_PAGE": 1, "_NUMBER_PER_PAGE": 20 } }

_PAGINATION จะมีเฉพาะเมื่อส่ง _PAGE มาใน request

Success Response - Mode: hr (HTTP 200)

Response จะจัดกลุ่มตามพนักงาน พร้อมข้อมูลโปรไฟล์:

{ "code": 200, "message": "สำเร็จ", "payload": [ { "profile": { "employee_id": "20251127D4573C421639", "employee_code": "EMP001", "photograph": "https://cdn.humansoft.co.th/.../images/userPlaceHolder.png", "employee_name": "สมชาย", "employee_last_name": "ใจดี", "employee_nickname": "ชาย", "position_name": "พนักงาน", "department_name": "แผนกขาย", "division_name": "ส่วนงานขาย", "section_name": "", "branch_name": "สำนักงานใหญ่", "count_docs": 1 }, "docs": { "time_adjust": [ { "doc_type": "Time_Adjust", "doc_id": "20251127D4573C421639", "employee_id": "20251127D4573C421639", "work_date": "2026-02-25", "time_adjust_dt": "2026-02-25", "header": "สมชาย ใจดี (ชาย) ยื่นขอ \"ลืมลงเวลา\"", "detail": "ขอวันที่ 25/02/2026 เวลา 08:00\nหมายเหตุ : ลืมรูดบัตรเข้างาน\n", "status": "รออนุมัติ", "approve_flag": "01", "approve_by": "สมหญิง มากมาย", "approve_remark": "", "last_upd": "2026-02-25 11:50:51", "last_upd_format": "25/02/2026 11:50", "created": "2026-02-25 11:36:06", "created_format": "25/02/2026 11:36", "image_url": null, "authorize_flag": true, "is_approve_method_match": true } ] } } ], "_PAGINATION": { "_TOTAL_RECORDS": 1, "_PAGE": 1, "_NUMBER_PER_PAGE": 20 } }

Success Response - No Data (HTTP 200)

{ "code": 200, "message": "สำเร็จ", "payload": [] }

Error Response - Validation Failed (HTTP 422)

{ "code": 422, "message": "Validation failed / การตรวจสอบล้มเหลว", "errors": [ "'mode' must be one of: hr, self, lasted", "'year' must be a 4-digit year (YYYY)" ] }

Error Response (HTTP 400)

{ "code": 400, "message": "ไม่สำเร็จ / Failed", "error": "Employee not found: EMP999" }

Response Fields

Mode: self / lasted

FieldTypeDescription
doc_typestringประเภทเอกสาร (Time_Adjust)
doc_idstringรหัสเอกสาร (time_adjust_id) — ต้องเข้ารหัส Base64 ก่อนส่งให้ API อื่น
employee_idstringID ของพนักงาน
work_datestringวันที่เอกสาร (เท่ากับ time_adjust_dt)
time_adjust_dtstringวันที่เอกสารขอปรับเวลา (YYYY-MM-DD)
headerstringหัวข้อเอกสาร (ชื่อพนักงานและประเภทเอกสาร ตามภาษา)
detailstringรายละเอียดเอกสาร (วันที่ เวลาที่ขอ และหมายเหตุ ตามภาษา)
statusstringชื่อสถานะการอนุมัติตามสถานะจริงของเอกสาร ตามภาษา
approve_flagstringรหัสสถานะการอนุมัติ (04-08 จะแสดงเป็น 01)
approve_bystringชื่อผู้ใช้ที่บันทึกเป็นผู้ดำเนินการล่าสุดของเอกสาร — ผ่าน Open API คือผู้ใช้ตาม authorize_id ที่ส่งตอนยื่น แก้ไข หรืออนุมัติ (ค่าว่างหากไม่มี)
approve_remarkstringหมายเหตุการอนุมัติ (ค่าว่างหากไม่มี)
last_updstringวันเวลาอัปเดตล่าสุด (YYYY-MM-DD HH:mm:ss)
last_upd_formatstringวันเวลาอัปเดตล่าสุด (DD/MM/YYYY HH:mm)
createdstringวันเวลาที่สร้าง (YYYY-MM-DD HH:mm:ss)
created_formatstringวันเวลาที่สร้าง (DD/MM/YYYY HH:mm)
image_urlstring | nullURL ของไฟล์แนบ, null หากไม่มีไฟล์แนบ
authorize_flagbooleanผู้ใช้ตาม authorize_id มีสิทธิ์อนุมัติเอกสารนี้หรือไม่ (เป็น true เสมอหากผู้เรียก API มีสิทธิ์ HR)

Mode: hr - Document Fields

เอกสารใน docs.time_adjust มี field เหมือนโหมด self / lasted และมีเพิ่มเติมดังนี้

FieldTypeDescription
authorize_flagbooleanเป็น true เสมอในโหมด hr เพราะแสดงเฉพาะเอกสารของพนักงานที่ผ่านการตรวจสิทธิ์ (ตรวจต่อพนักงาน ไม่ใช่ต่อเอกสาร ดู Business Rules)
is_approve_method_matchbooleanวิธีอนุมัติของเอกสาร (ตามบุคคล/ตามตำแหน่ง) ตรงกับการตั้งค่าปัจจุบันขององค์กรหรือไม่

Mode: hr - Profile Fields

FieldTypeDescription
employee_idstringID ของพนักงาน
employee_codestringรหัสพนักงาน
photographstringURL รูปโปรไฟล์
employee_namestringชื่อพนักงาน ตามภาษา
employee_last_namestringนามสกุล ตามภาษา
employee_nicknamestringชื่อเล่น ตามภาษา
position_namestringตำแหน่ง ตามภาษา
department_namestringแผนก ตามภาษา
division_namestringส่วนงาน ตามภาษา
section_namestringฝ่าย ตามภาษา
section_lv01_name - section_lv05_namestringชื่อระดับสังกัดย่อย 1-5 ตามภาษา
branch_namestringสาขา ตามภาษา
count_docsintegerจำนวนเอกสารของพนักงานคนนี้ในผลลัพธ์

Mode hr จะจัดกลุ่มเอกสารตามพนักงาน โดยแต่ละรายการจะมี profile (ข้อมูลพนักงาน) และ docs.time_adjust (รายการเอกสาร) การแบ่งหน้าและ _TOTAL_RECORDS ในโหมดนี้นับตามจำนวนพนักงาน ไม่ใช่จำนวนเอกสาร

Code Examples

curl -X GET "https://openapi.humansoft.co.th/api/v1/open-apis/time-adjust/get-list?mode=self&employee_code=EMP001&year=2026&approve_flag=01&_PAGE=1&_NUMBER_PER_PAGE=20" \ -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY"

Validation Rules

ParameterValidationError Message
modeต้องเป็น self, hr, หรือ lasted (ค่าเริ่มต้น self)'mode' must be one of: hr, self, lasted
start_date, end_dateต้องส่งคู่กันMissing required parameter: 'end_date' (when using date range)
start_date, end_dateรูปแบบ YYYY-MM-DD และเป็นวันที่ที่มีอยู่จริง'start_date' must be in format YYYY-MM-DD, 'start_date' is not a valid calendar date
end_dateต้อง >= start_date'end_date' must be >= 'start_date'
yearตัวเลข 4 หลัก (YYYY)'year' must be a 4-digit year (YYYY)
month01-12 (2 หลัก)'month' must be in format MM (01-12)
approve_flag01-08'approve_flag' must be one of: 01-08
_PAGEตัวเลขตั้งแต่ 1 ขึ้นไป'_PAGE' must be a positive number
_NUMBER_PER_PAGEตัวเลข 1-1000'_NUMBER_PER_PAGE' must be between 1 and 1000

ระบบรวบรวมข้อผิดพลาดทั้งหมดไว้ใน errors โหมด lasted ไม่ตรวจสอบ start_date, end_date, year และ month

Business Rules

  • Mode self - ดึงเอกสารของพนักงานตาม employee_code หรือพนักงานที่ผูกกับ authorize_id (ถ้าไม่ส่ง employee_code)
  • Mode hr - ดึงเอกสารของพนักงานตามตัวกรอง และจัดกลุ่มตามพนักงาน หากผู้เรียก API ไม่มีสิทธิ์ HR จะแสดงเฉพาะเอกสารของพนักงานที่ผู้ใช้ตาม authorize_id มีสิทธิ์อนุมัติ โดยระบบตรวจสิทธิ์ครั้งเดียวต่อพนักงาน (จากเอกสารรายการแรกของพนักงานคนนั้นตามลำดับการเรียง) แล้วใช้ผลเดียวกันกับทุกเอกสารของพนักงานคนนั้น ในองค์กรที่อนุมัติหลายขั้น ให้ตรวจสิทธิ์รายเอกสารจาก authorize_flag ของ Get Adjust Detail
  • Mode hr + authorize_line - คืนเอกสารได้สูงสุด 100 รายการ โดยเลือกจากวันที่เอกสารเก่าที่สุดก่อน
  • Mode lasted - ดึงเอกสารล่าสุดสูงสุด 100 รายการ เรียงตามวันที่สร้างจากใหม่ไปเก่า ไม่ใช้ตัวกรองวันที่ สถานะ ประเภทเอกสาร และไม่แบ่งหน้า
  • เมื่อกรองด้วย approve_flag=01 ระบบจะรวมสถานะรออนุมัติทุกระดับ (01, 04-08)
  • เอกสารที่ถูกลบแล้วจะไม่แสดงในรายการ
  • หากไม่ส่ง _NUMBER_PER_PAGE จะคืนทุกรายการในหน้าเดียว

Sorting

  • โหมด self: เรียงตาม time_adjust_dt จากวันที่เก่าไปใหม่เสมอ (ไม่ใช้ sort_by / sort_order)
  • โหมด hr: ค่าเริ่มต้นเรียงตาม time_adjust_dt จากวันที่เก่าไปใหม่

ในโหมด hr เมื่อเรียงตาม time_adjust_dt (ค่าเริ่มต้น) ผลการเรียงจะกลับด้านกับ sort_order — ไม่ส่งหรือส่ง DESC จะได้วันที่เก่าไปใหม่ ส่วน ASC จะได้วันที่ใหม่ไปเก่า การเรียงตาม field อื่นเป็นไปตาม sort_order ตามปกติ

Error Handling

ErrorCauseSolution
'mode' must be one of: hr, self, lastedค่า mode ไม่ถูกต้องระบุ mode เป็น self, hr, หรือ lasted
'year' must be a 4-digit year (YYYY)รูปแบบปีไม่ถูกต้องใช้รูปแบบ YYYY เช่น 2026
'approve_flag' must be one of: 01-08ค่า approve_flag ไม่ถูกต้องใช้ค่า 01-08
Missing required parameter: 'end_date' (when using date range)ระบุ start_date หรือ end_date เพียงตัวเดียวต้องระบุทั้ง start_date และ end_date
'end_date' must be >= 'start_date'end_date น้อยกว่า start_dateตรวจสอบช่วงวันที่
Employee not found: XXX (HTTP 400)ไม่พบพนักงานตรวจสอบ employee_code ที่ส่ง
Employee identification (employee_code or login context) is required in self mode (HTTP 400)โหมด self ไม่ได้ส่ง employee_code และไม่มีพนักงานที่ผูกกับ authorize_idส่ง employee_code หรือ authorize_id
UnauthorizedAPI Key ไม่ถูกต้องหรือหมดอายุตรวจสอบ Ocp-Apim-Subscription-Key

Notes

  • Mode hr รองรับการกรองขั้นสูง เช่น กรองตามบริษัท สาขา แผนก ส่วนงาน ฝ่าย และตำแหน่ง โดยใช้ array ของ object { "id": "<Base64>" }
  • authorize_id ใช้ระบุผู้ใช้สำหรับโหมด self, authorize_flag และ authorize_line
  • Response ของ mode self / lasted เป็น flat array ส่วน mode hr จะจัดกลุ่มตามพนักงาน

Use Cases

  1. แสดงรายการรออนุมัติของพนักงาน - ใช้ mode=self กับ employee_code และ approve_flag=01
  2. HR ดูรายการทั้งหมด - ใช้ mode=hr กับ filter ตามแผนกหรือสาขา
  3. ดูเอกสารล่าสุด - ใช้ mode=lasted สำหรับดูรายการล่าสุดโดยไม่ต้องระบุวันที่
  4. กรองตามประเภท - ใช้ time_adjust_flag_lv เพื่อกรองเฉพาะประเภทเอกสาร
  5. รายงานประจำเดือน - ใช้ month และ year เพื่อกรองตามงวดเงินเดือนของเดือนนั้น
  • Time Adjust Overview - ภาพรวมโมดูลขอเพิ่มเวลาทำงาน
  • Get Adjust Types - ดึงรายการประเภทการขอเพิ่มเวลา
  • Get Adjust Detail - ดึงรายละเอียดเอกสารรายการเดียว
  • Submit Adjust - ยื่นเอกสารขอเพิ่มเวลาใหม่
Last updated on