Search Time Attendance Full
ค้นหาประวัติการลงเวลาทำงานแบบ HRS full search รองรับการกรองหลายพนักงาน หลายบริษัท หลายสาขา หลายแผนก และ filter lists อื่น ๆ
ใช้ API นี้สำหรับค้นหาประวัติลงเวลาในภาพรวม (ไม่จำกัดเฉพาะพนักงานคนเดียว) เหมาะกับการดึงข้อมูลแบบ batch สำหรับ HR/Admin หรือก่อนนำรายการไปแก้ไข
Endpoint
POST /api/v1/open-apis/salary/get-data-filter?path_action=search_time_attendance_fullสิทธิ์ที่ต้องการ: API Key ต้องมีสิทธิ์ ข้อมูลเงินเดือนทั้งองค์กร (payroll:read:all)
Request Parameters
Required Parameters
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
date_from | string | Yes | วันที่เริ่มต้น (YYYY-MM-DD) | "2026-05-21" |
date_to | string | Yes | วันที่สิ้นสุด (YYYY-MM-DD) | "2026-05-21" |
Filter Parameters
| Parameter | Type | Default | Description | Example |
|---|---|---|---|---|
employee_lists | array | [] | กรองพนักงาน (object ที่มี id เป็น base64) | [{"id":"BASE64_EMPLOYEE_ID"}] |
company_lists | array | [] | กรองบริษัท | [{"id":"BASE64_COMPANY_ID"}] |
branch_lists | array | [] | กรองสาขา | [{"id":"BASE64_BRANCH_ID"}] |
department_lists | array | [] | กรองแผนก | [{"id":"BASE64_DEPARTMENT_ID"}] |
division_lists | array | [] | กรอง division | [{"id":"BASE64_DIVISION_ID"}] |
section_lists | array | [] | กรอง section | [{"id":"BASE64_SECTION_ID"}] |
section_lists_lv01 | array | [] | กรอง section ระดับ 1 | [{"id":"BASE64_SECTION_LV01_ID"}] |
section_lists_lv02 | array | [] | กรอง section ระดับ 2 | [{"id":"BASE64_SECTION_LV02_ID"}] |
section_lists_lv03 | array | [] | กรอง section ระดับ 3 | [{"id":"BASE64_SECTION_LV03_ID"}] |
section_lists_lv04 | array | [] | กรอง section ระดับ 4 | [{"id":"BASE64_SECTION_LV04_ID"}] |
section_lists_lv05 | array | [] | กรอง section ระดับ 5 | [{"id":"BASE64_SECTION_LV05_ID"}] |
position_lists | array | [] | กรองตำแหน่ง | [{"id":"BASE64_POSITION_ID"}] |
keyword | string | "" | ค้นหาพนักงานก่อนดึงเวลา (ชื่อ, รหัสพนักงาน, รหัสลายนิ้วมือ, เลขบัตร) | "EMP001" |
search | string | "" | ค้นหาจาก location_name, time_attendance_type_lv, employee_code, employee_name (partial match) | "ธาวัน" |
location_name | string | "" | กรองตามชื่อสถานที่ (ตรงตัว) | "สำนักงานใหญ่" |
time_attendance_type_lv | string | "" | กรองตามประเภทการบันทึก (ดู Attendance Types ด้านล่าง) | "Manual" |
hashtags | array | [] | กรอง hashtag พนักงาน | ["fulltime"] |
language_code | string | "TH" | ภาษาของข้อมูลพนักงาน (TH หรือ EN) | "TH" |
Pagination & Limit
| Parameter | Type | Default | Description | Example |
|---|---|---|---|---|
_PAGE | integer | 1 | หน้าที่ต้องการ (เริ่มที่ 1) | 1 |
_NUMBER_PER_PAGE | integer | 10 | จำนวนรายการต่อหน้า (1-100) | 10 |
check_count_of_employee | boolean | false | เปิดการตรวจจำนวนพนักงานเกิน limit | true |
count_of_employee_limit | integer | 5000 | จำนวนพนักงานสูงสุดเมื่อเปิด check_count_of_employee | 5000 |
List Parameter Format
ทุก *_lists parameter ใช้ array ของ object ที่มี id เป็น Base64 encoded:
[
{ "id": "Q09NUDAwMQ==" },
{ "id": "Q09NUDAwMg==" }
]Attendance Types
| Value | Description (TH) | Description (EN) |
|---|---|---|
Beacon | เช็คอินผ่านอุปกรณ์ Beacon | Check-in via Beacon Device |
Checkin | เช็คอินผ่านระบบ | Check-in via System |
Facial | สแกนใบหน้า | Facial Recognition |
Fingerprint | สแกนลายนิ้วมือ | Fingerprint Scanner |
Import | นำเข้าข้อมูลจากไฟล์ | Imported from File |
LINE-Checkin | เช็คอินผ่าน LINE | Check-in via LINE |
LINE-QR | เช็คอินผ่าน QR Code บน LINE | Check-in via LINE QR Code |
Manager | ผู้จัดการบันทึกเวลาให้ | Manager Recorded |
Manual | บันทึกด้วยมือโดย HR/Admin | Manual Entry by HR/Admin |
Offline | บันทึกขณะออฟไลน์ | Offline Recording |
QR | เช็คอินผ่าน QR Code | Check-in via QR Code |
Time Adjust | ปรับแก้เวลา | Time Adjustment |
TimeApp | บันทึกผ่านแอปพลิเคชัน | Recorded via Mobile App |
Wifi | เช็คอินผ่านเครือข่าย Wi-Fi | Check-in via Wi-Fi |
Validation Rules
| กฎ | รายละเอียด |
|---|---|
date_from, date_to | ต้องระบุและรูปแบบ YYYY-MM-DD |
date_from ≤ date_to | วันที่เริ่มต้นต้องไม่มากกว่าวันที่สิ้นสุด |
language_code | รองรับ TH หรือ EN (ค่าเริ่มต้น TH) |
_PAGE | ถ้าน้อยกว่า 1 ระบบปรับเป็น 1 |
_NUMBER_PER_PAGE | จำกัดในช่วง 1-100 (ค่าเริ่มต้น 10) |
count_of_employee_limit | ถ้าเปิด check_count_of_employee และจำนวนพนักงานเกิน limit จะตอบ 413 Payload Too Large |
Code Examples
ดึงทั้งหมด (cURL)
curl -X POST "https://openapi.humansoft.co.th/api/v1/open-apis/salary/get-data-filter?path_action=search_time_attendance_full" \
-H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"date_from": "2026-05-21",
"date_to": "2026-05-21",
"language_code": "TH",
"_PAGE": 1,
"_NUMBER_PER_PAGE": 10
}'Response Format
Success Response (HTTP 200)
{
"code": 200,
"message": "Search Time Attendance Full (1) Accept",
"payload": [
{
"time_attendance_transac_id": "20260521AABBCC",
"time_attendance_type_lv": "Fingerprint",
"time_attendance_id": "",
"employee_id": "202503219741427917A0",
"device_sn": "SN001",
"attendance_date": "2026-05-21",
"attendance_datetime": "2026-05-21 08:30:00",
"work_type_lv": "1",
"latitude": null,
"longitude": null,
"location_id": null,
"temperature": "0.00",
"image_path": null,
"attendance_inout": null,
"attendance_remark": null,
"employee_code": "EMP001",
"fing_code": "EMP001",
"employee_name": "สมชาย",
"employee_last_name": "ทดสอบ",
"employee_nickname": "ชาย",
"employee_name_en": "Somchai",
"employee_last_name_en": "Test",
"employee_nickname_en": "Chai",
"employee_title_lv": "01",
"company_id": "20241225C3024958C974",
"branch_id": "202412254358646B34E4",
"department_id": "20251006192FE88E97A5",
"division_id": null,
"section_id": null,
"section_lv01_id": null,
"section_lv02_id": null,
"section_lv03_id": null,
"section_lv04_id": null,
"section_lv05_id": null,
"position_id": "2024122587C216DA2C19",
"photograph": "images/userPlaceHolder.png",
"location_name": "สำนักงานใหญ่",
"device_name": "Device 01",
"device_sys_del_flag": "N"
}
],
"_PAGINATION": {
"_TOTAL_RECORDS": 42,
"_PAGE": 1,
"_NUMBER_PER_PAGE": 10
}
}Pagination Fields
| Field | Type | Description |
|---|---|---|
_PAGINATION._TOTAL_RECORDS | integer | จำนวนรายการทั้งหมดหลังกรอง (ก่อนแบ่งหน้า) |
_PAGINATION._PAGE | integer | หน้าปัจจุบัน |
_PAGINATION._NUMBER_PER_PAGE | integer | จำนวนรายการต่อหน้า |
Key Response Fields
| Field | Type | Description |
|---|---|---|
time_attendance_transac_id | string | รหัสรายการลงเวลา (unique) — ใช้สำหรับ Edit Time API |
time_attendance_type_lv | string | ประเภทการลงเวลา |
attendance_date | string | วันที่ลงเวลา (YYYY-MM-DD) |
attendance_datetime | string | วันเวลาที่ลงเวลา (YYYY-MM-DD HH:mm:ss) |
work_type_lv | string | รอบการทำงาน: "1" (เช้า), "2" (บ่าย), null (ไม่ระบุ) |
attendance_inout | string | ทิศทาง: "IN", "OUT", หรือ null |
latitude / longitude | string | พิกัด GPS (มีค่าเมื่อเช็คอินผ่าน GPS) |
location_name | string | ชื่อสถานที่ |
employee_code | string | รหัสพนักงาน |
employee_name | string | ชื่อ (ภาษาตาม language_code) |
employee_name_en | string | ชื่อ (EN) — ส่งมาเสมอ |
device_name | string | ชื่ออุปกรณ์ที่ใช้ลงเวลา |
device_sys_del_flag | string | สถานะอุปกรณ์: "N" = ปกติ, null = ไม่ผ่าน device |
Error Responses
Validation Failed (HTTP 400)
{
"code": 400,
"message": "ValidationException: Missing or invalid 'date_from' (YYYY-MM-DD)",
"payload": []
}Payload Too Large (HTTP 413)
{
"code": 413,
"message": "Payload Too Large",
"payload": []
}จะเกิดเมื่อเปิด check_count_of_employee แล้วจำนวนพนักงานที่ match เกิน count_of_employee_limit — แนะนำให้แคบลงด้วย filter lists
Notes
- API นี้ไม่บังคับ
employee_code— ถ้าต้องการเจาะจงพนักงานให้ใช้employee_lists - การค้นหาด้วย
searchจะ match แบบ partial (LIKE) ส่วนlocation_nameกรองแบบตรงตัว - ระบบจะซ่อนรายการที่ถูกลบโดยอัตโนมัติ (ตรวจสอบจาก
device_sys_del_flag) - Pagination ไม่กระทบ employee filter — เพื่อป้องกันการตัดรายชื่อพนักงานก่อนดึง attendance
Related APIs
- Search Time Attendance - ค้นหาประวัติลงเวลาของพนักงานคนเดียวด้วย
employee_code - Get Detail - ดูรายละเอียดรายการเดียว
- Edit Time - แก้ไขรายการลงเวลา (ใช้
time_attendance_transac_id) - Add Time Attendance - เพิ่มรายการลงเวลาใหม่
Last updated on