Skip to Content
🚀 Welcome to Humansoft Open API Documentation
DocumentationWebhookAttendance Events

Attendance Events

Events ที่เกี่ยวข้องกับการลงเวลาเข้า-ออกงานของพนักงาน ระบบจะส่ง Event เมื่อมีการบันทึก แก้ไข หรือลบรายการลงเวลา ยกเว้นบางช่องทาง (ดูหัวข้อ กรณีที่ไม่มีการส่ง Event ด้านล่าง)

ข้อมูลใน body คือข้อมูลของรายการลงเวลา ณ ตอนที่เกิด Event (ไม่ได้ดึงข้อมูลล่าสุดใหม่ตอนส่ง)

Event Codeชื่อในหน้าตั้งค่า Webhookเกิดเมื่อ
attendance.createdบันทึกเวลาเข้า-ออกงานสำเร็จบันทึกเวลาสำเร็จ 1 รายการ จากช่องทางตาม ค่า source รวมถึง HR เพิ่มเวลาให้พนักงาน
attendance.updatedแก้ไขเวลาเข้า-ออกงานแก้ไขรายการลงเวลา และข้อมูลใน body มีการเปลี่ยนแปลง
attendance.deletedลบเวลาเข้า-ออกงานลบรายการลงเวลา

Events กลุ่มนี้อยู่ในหมวด การลงเวลา ของหน้าตั้งค่า Webhook — การเลือกหรือยกเลิก Event แล้วกดบันทึกจะมีผลกับการลงเวลาครั้งถัดไปทันที


attendance.created

เกิดขึ้นเมื่อบันทึกเวลาเข้า-ออกงานสำเร็จ 1 รายการ จากช่องทางตาม ค่า source รวมถึงกรณีที่ HR เพิ่มเวลาให้พนักงาน

ตัวอย่าง Payload:

{ "request_id": "7c2e9a41d3b84f06a5e1c9d27b3f8e40", "event": "attendance.created", "event_occurred_at": "2026-10-19 08:02:15", "body": { "time_attendance_transac_id": "20251127D4573C421639", "source": "mobile", "employee_id": "20251127A1B2C3D4E5F6", "employee_code": "EMP001", "attendance_datetime": "2026-10-19 08:02:00", "time_attendance_type_lv": "Checkin", "work_cycle_date": "2026-10-19", "location_id": "20251127F6E5D4C3B2A1", "location_name": "สำนักงานใหญ่", "latitude": "13.75633", "longitude": "100.50177", "device_sn": "" } }

attendance.updated

เกิดขึ้นเมื่อมีการแก้ไขรายการลงเวลา เช่น HR แก้เวลาในเว็บ แก้ไขผ่านแอป HumanSoft หรือแก้ไขผ่าน Edit Time (command = save)

body คือข้อมูลของรายการ หลังแก้ไข (ฟิลด์เดียวกับ attendance.created) และมีค่าเดิมก่อนแก้ไขเพิ่มอีก 2 ฟิลด์ คือ previous_attendance_datetime และ previous_work_cycle_date

ตัวอย่าง Payload:

{ "request_id": "9c1e4b7a2d0f4e6b8a3c5d7e9f1a2b3c", "event": "attendance.updated", "event_occurred_at": "2026-10-20 10:15:42", "body": { "time_attendance_transac_id": "20251127D4573C421639", "source": "web", "employee_id": "20251127A1B2C3D4E5F6", "employee_code": "EMP001", "attendance_datetime": "2026-10-19 08:00:00", "time_attendance_type_lv": "Checkin", "work_cycle_date": "2026-10-19", "location_id": "20251127F6E5D4C3B2A1", "location_name": "สำนักงานใหญ่", "latitude": "13.75633", "longitude": "100.50177", "device_sn": "", "previous_attendance_datetime": "2026-10-19 08:02:00", "previous_work_cycle_date": "2026-10-19" } }

ระบบจะไม่ส่ง attendance.updated หากการแก้ไขไม่ได้เปลี่ยนข้อมูลใดใน body (เช่น แก้เฉพาะข้อมูลที่ไม่ได้อยู่ใน Payload)


attendance.deleted

เกิดขึ้นเมื่อมีการลบรายการลงเวลา เช่น HR ลบเวลาในเว็บ หรือลบผ่าน Edit Time (command = delete)

body คือข้อมูลของรายการ ก่อนถูกลบ (ฟิลด์เดียวกับ attendance.created) — ระบบปลายทางควรลบรายการที่มี time_attendance_transac_id ตรงกัน

ตัวอย่าง Payload:

{ "request_id": "5d2a8f1c3b7e4a9d6c0b2e4f8a1d3c5b", "event": "attendance.deleted", "event_occurred_at": "2026-10-20 11:03:08", "body": { "time_attendance_transac_id": "20251127D4573C421639", "source": "web", "employee_id": "20251127A1B2C3D4E5F6", "employee_code": "EMP001", "attendance_datetime": "2026-10-19 08:00:00", "time_attendance_type_lv": "Checkin", "work_cycle_date": "2026-10-19", "location_id": "20251127F6E5D4C3B2A1", "location_name": "สำนักงานใหญ่", "latitude": "13.75633", "longitude": "100.50177", "device_sn": "" } }

Source Values

ฟิลด์ source บอกช่องทางที่ทำให้เกิด Event:

sourceช่องทาง
mobileแอป HumanSoft — รวมการส่งรายการที่ลงเวลาไว้ตอนออฟไลน์ และการแก้ไขเวลาผ่านแอป
open_apiOpen API — Submit Time Attendance และ Edit Time
fingerprintเครื่องสแกนลายนิ้วมือ
deviceอุปกรณ์บันทึกเวลาอื่น
lineLINE OA
timeappTime APP (เครื่องลงเวลาแบบ kiosk)
webเว็บ HumanSoft — รวมการเพิ่ม/แก้ไข/ลบเวลาโดย HR

Body Fields Reference

ทุกฟิลด์ใน body เป็น string — ฟิลด์ที่ไม่มีค่าจะเป็น "" (ไม่ใช่ null)

FieldTypeDescription
time_attendance_transac_idstringID ของรายการลงเวลา — เป็นค่าเดียวกันใน created / updated / deleted ของรายการเดียวกัน
sourcestringช่องทางที่ทำให้เกิด Event (ดู ค่า source)
employee_idstringID ของพนักงาน — ใช้เชื่อมกับข้อมูลจาก Employee Events
employee_codestringรหัสพนักงาน (เป็น "" หากระบบค้นหารหัสพนักงานไม่ได้)
attendance_datetimestringวันเวลาที่ลงเวลา รูปแบบ YYYY-MM-DD HH:mm:ss (เวลาประเทศไทย)
time_attendance_type_lvstringวิธีลงเวลา เช่น Checkin, Fingerprint, TimeApp, LINE-Checkin, Manual (ดูเพิ่มเติมที่ Attendance Types)
work_cycle_datestringวันของกะการทำงานที่รายการนี้ถูกนับ รูปแบบ YYYY-MM-DD — อาจต่างจากวันที่ใน attendance_datetime เมื่อเป็นกะข้ามวัน
location_idstringID ของจุดลงเวลา ("" หากไม่ได้ลงเวลาที่จุดลงเวลา)
location_namestringชื่อจุดลงเวลา — บางช่องทางใช้ชื่ออุปกรณ์แทนเมื่อไม่มีจุดลงเวลา และอาจเป็น ""
latitudestringละติจูดที่บันทึกพร้อมรายการลงเวลา
longitudestringลองจิจูดที่บันทึกพร้อมรายการลงเวลา
device_snstringSerial number ของอุปกรณ์ที่ใช้ลงเวลา ("" หากไม่ได้ลงเวลาผ่านอุปกรณ์)
previous_attendance_datetimestringเฉพาะ attendance.updated — attendance_datetime ก่อนแก้ไข
previous_work_cycle_datestringเฉพาะ attendance.updated — work_cycle_date ก่อนแก้ไข

Payload ไม่มีข้อมูลส่วนบุคคลอื่นของพนักงาน (เช่น ชื่อ เลขบัตรประชาชน รูปภาพ) — หากต้องการข้อมูลพนักงานให้ใช้ employee_id หรือ employee_code ร่วมกับ Employee API


กรณีที่ไม่มีการส่ง Event

  • บันทึกเวลาไม่สำเร็จ เช่น ลงเวลาซ้ำ หรือวันที่อยู่ในงวดเงินเดือนที่ปิดแล้ว
  • บริษัทไม่ได้เลือกรับ Event นั้นในหน้าตั้งค่า Webhook
  • attendance.updated ที่การแก้ไขไม่ได้เปลี่ยนข้อมูลใดใน body
  • การนำเข้าเวลาเป็นชุด เช่น Import Time Attendance และการนำเข้าไฟล์เวลาในระบบ
  • การเพิ่มเวลาผ่าน Add Time Attendance
  • เวลาที่ระบบเพิ่มให้เมื่อคำร้องขอปรับปรุงเวลาได้รับการอนุมัติ (ติดตามคำร้องได้จาก Time Adjust Events)

หากระบบของคุณต้องการข้อมูลลงเวลาครบทุกรายการ อย่าพึ่ง Webhook เพียงอย่างเดียว — รายการจากช่องทางข้างต้นจะไม่มี Event ให้ใช้ API ค้นหาข้อมูลลงเวลา เช่น Search Time Attendance ตรวจสอบเพิ่มเติม


สรุป Attendance Events

Event Codeคำอธิบาย
attendance.createdบันทึกเวลาเข้า-ออกงานสำเร็จ 1 รายการ (รวมถึง HR เพิ่มเวลา)
attendance.updatedแก้ไขรายการลงเวลา — body เป็นค่าหลังแก้ไข พร้อมค่าเดิม 2 ฟิลด์
attendance.deletedลบรายการลงเวลา — body เป็นข้อมูลก่อนถูกลบ

ดูรูปแบบ HTTP Headers, การตรวจสอบ Signature และแนวทางจัดการ Event ซ้ำได้ที่ Webhook Overview

Last updated on