Skip to Content
🚀 Welcome to Humansoft Open API Documentation

Submit Time Attendance

บันทึกเวลาเข้า-ออกของพนักงาน

ใช้ API นี้เพื่อบันทึกเวลาเข้า-ออกของพนักงาน รองรับหลายประเภทการบันทึก เช่น Checkin, Wifi, Beacon, QR, Facial, Manager และ Offline โดยข้อมูลจะถูกส่งเข้าระบบคิว (Queue) เพื่อประมวลผลแบบ Asynchronous

Endpoint

POST /api/v1/open-apis/time_attendance/submit

ต้องส่ง payload เป็น JSON ใน Request Body เท่านั้น ไม่รองรับการส่งผ่าน Query Parameters

Attendance Types

TypeDescriptionRequired เพิ่มเติม
Checkinบันทึกเวลาแบบ GPSlocation_id, latitude, longitude
Wifiบันทึกเวลาผ่าน Wifidevice_sn, device_name
Beaconบันทึกเวลาผ่าน Beacondevice_sn, device_name
QRบันทึกเวลาผ่าน QR Code (Time Attendance App)location_id หรือ (device_sn + device_name)
Facialบันทึกเวลาด้วยใบหน้าlocation_id, latitude, longitude, image_content
Managerผู้จัดการสแกนให้พนักงานimage_content
Offlineบันทึกเวลาแบบ Offlinelatitude, longitude (ไม่ต้องมี company_id, work_cycle_date)

Common Parameters

Required Parameters (ทุกประเภท)

ParameterTypeRequiredDescriptionExample
attendance_datetimestringYesวันเวลาที่บันทึก (ISO 8601 หรือ YYYY-MM-DD HH:mm:ss)2026-02-11T09:00:00.000
employee_codestringYesรหัสพนักงานEMP001
time_attendance_type_lvstringYesประเภทการบันทึกเวลาCheckin

Required Parameters (ส่วนใหญ่ ยกเว้น Offline)

ParameterTypeRequiredDescriptionExample
company_idstringYesรหัสบริษัท (Base64-encoded)MjAyNTExMTMzMjBCQzlGODVFNDQ=
work_cycle_datestringYesวันที่กะการทำงาน (YYYY-MM-DD)2026-02-11

Optional Parameters (ทุกประเภท)

ParameterTypeRequiredDescriptionExample
work_cycle_type_lvstringNoประเภทกะการทำงาน00
work_date_seqnumberNoลำดับวันทำงาน (default: 1)1
attendance_remarkstringNoหมายเหตุการบันทึกเวลาบันทึกเวลาเข้างาน
approve_remarkstringNoหมายเหตุการอนุมัติ
device_snstringNoSerial number อุปกรณ์
device_namestringNoชื่ออุปกรณ์
image_pathstringNoURL รูปภาพ
latitudenumberNoละติจูด (-90 ถึง 90)13.7563
longitudenumberNoลองจิจูด (-180 ถึง 180)100.5018
location_idstringNoรหัสสถานที่ (Base64-encoded)MjAyNjAyMTJEOUY2MTE1ODA1NTA=
round_month_configstringNoการตั้งค่ารอบเดือน (default: 1)1

Case: Checkin

บันทึกเวลาแบบ GPS ต้องระบุสถานที่และพิกัด

Required เพิ่มเติม

ParameterTypeRequiredDescriptionExample
location_idstringYesรหัสสถานที่ (Base64-encoded)MjAyNjAyMTJEOUY2MTE1ODA1NTA=
latitudenumberYesละติจูด (-90 ถึง 90)13.7563
longitudenumberYesลองจิจูด (-180 ถึง 180)100.5018

Request Body Example

{ "attendance_datetime": "2026-02-11T09:00:00.000", "employee_code": "EMP001", "time_attendance_type_lv": "Checkin", "company_id": "MjAyNTExMTMzMjBCQzlGODVFNDQ=", "work_cycle_date": "2026-02-11", "work_cycle_type_lv": "00", "location_id": "MjAyNjAyMTJEOUY2MTE1ODA1NTA=", "latitude": 13.7563, "longitude": 100.5018, "attendance_remark": "บันทึกเวลาเข้างาน" }

Case: Wifi

บันทึกเวลาผ่านอุปกรณ์ Wifi ต้องระบุ device ที่ลงทะเบียนในระบบ

Required เพิ่มเติม

ParameterTypeRequiredDescriptionExample
device_snstringYesSerial number อุปกรณ์ (ต้องมีในระบบและเป็นประเภท Wifi)00:E2:E3:E4:E5:E6
device_namestringYesชื่ออุปกรณ์Office Wifi

Request Body Example

{ "attendance_datetime": "2026-02-11T08:40:00.000", "employee_code": "EMP001", "time_attendance_type_lv": "Wifi", "company_id": "MjAyNTExMTMzMjBCQzlGODVFNDQ=", "work_cycle_date": "2026-02-11", "work_cycle_type_lv": "00", "device_sn": "00:E2:E3:E4:E5:E6", "device_name": "Office Wifi", "attendance_remark": "บันทึกเวลาผ่าน Wifi" }

Case: Beacon

บันทึกเวลาผ่านอุปกรณ์ Beacon ต้องระบุ device ที่ลงทะเบียนในระบบ

Required เพิ่มเติม

ParameterTypeRequiredDescriptionExample
device_snstringYesSerial number อุปกรณ์ (ต้องมีในระบบและเป็นประเภท Beacon)00:E2:E3:E4:E5:E7
device_namestringYesชื่ออุปกรณ์Office Beacon

Request Body Example

{ "attendance_datetime": "2026-02-11T09:10:00.000", "employee_code": "EMP001", "time_attendance_type_lv": "Beacon", "company_id": "MjAyNTExMTMzMjBCQzlGODVFNDQ=", "work_cycle_date": "2026-02-11", "work_cycle_type_lv": "00", "device_sn": "00:E2:E3:E4:E5:E7", "device_name": "Office Beacon", "attendance_remark": "บันทึกเวลาผ่าน Beacon" }

Case: QR

บันทึกเวลาผ่าน QR Code (Time Attendance App) ต้องระบุ location_id หรือ (device_sn + device_name) อย่างใดอย่างหนึ่ง

Required เพิ่มเติม (เลือกอย่างใดอย่างหนึ่ง)

ตัวเลือกที่ 1 — ใช้ Location:

ParameterTypeRequiredDescriptionExample
location_idstringConditionalรหัสสถานที่ (Base64-encoded) — Required ถ้าไม่มี deviceMjAyNjAyMTJEOUY2MTE1ODA1NTA=

ตัวเลือกที่ 2 — ใช้ Device:

ParameterTypeRequiredDescriptionExample
device_snstringConditionalSerial number อุปกรณ์ (ต้องมีในระบบและเป็นประเภท TimeApp)202602135BE4EB20778E
device_namestringConditionalชื่ออุปกรณ์ (ต้องมีพร้อม device_sn)Time App Test

Request Body Example (ใช้ Location)

{ "attendance_datetime": "2026-02-13T13:00:00.000", "employee_code": "EMP001", "time_attendance_type_lv": "QR", "company_id": "MjAyNTExMTMzMjBCQzlGODVFNDQ=", "work_cycle_date": "2026-02-13", "work_cycle_type_lv": "00", "location_id": "MjAyNjAyMTJEOUY2MTE1ODA1NTA=", "attendance_remark": "บันทึกเวลาผ่าน QR Code" }

Request Body Example (ใช้ Device)

{ "attendance_datetime": "2026-02-13T14:10:00.000", "employee_code": "EMP001", "time_attendance_type_lv": "QR", "company_id": "MjAyNTExMTMzMjBCQzlGODVFNDQ=", "work_cycle_date": "2026-02-13", "work_cycle_type_lv": "00", "device_sn": "202602135BE4EB20778E", "device_name": "Time App Test", "attendance_remark": "บันทึกเวลาผ่าน QR Code" }

Case: Facial

บันทึกเวลาด้วยการยืนยันใบหน้า ต้องระบุสถานที่ พิกัด และรูปภาพใบหน้า

Required เพิ่มเติม

ParameterTypeRequiredDescriptionExample
location_idstringYesรหัสสถานที่ (Base64-encoded)MjAyNjAyMTJEOUY2MTE1ODA1NTA=
latitudenumberYesละติจูด (-90 ถึง 90)13.7563
longitudenumberYesลองจิจูด (-180 ถึง 180)100.5018
image_contentstringYesรูปภาพ Base64-encoded (รองรับ data URI เช่น data:image/png;base64,...)data:image/png;base64,iVBORw0KG...

ระบบจะจัดเก็บรูปภาพอัตโนมัติหลังจากได้รับข้อมูล

Request Body Example

{ "attendance_datetime": "2026-02-22T10:50:00.000", "employee_code": "EMP001", "time_attendance_type_lv": "Facial", "company_id": "MjAyNTExMTMzMjBCQzlGODVFNDQ=", "work_cycle_date": "2026-02-11", "work_cycle_type_lv": "00", "location_id": "MjAyNjAyMTJEOUY2MTE1ODA1NTA=", "latitude": 13.7563, "longitude": 100.5018, "attendance_remark": "บันทึกเวลาด้วยใบหน้า", "image_content": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==" }

Case: Manager

ผู้จัดการสแกนบันทึกเวลาให้พนักงาน ต้องระบุรูปภาพ

Required เพิ่มเติม

ParameterTypeRequiredDescriptionExample
image_contentstringYesรูปภาพ Base64-encoded (รองรับ data URI เช่น data:image/png;base64,...)data:image/png;base64,iVBORw0KG...

ระบบจะจัดเก็บรูปภาพอัตโนมัติหลังจากได้รับข้อมูล

Request Body Example

{ "attendance_datetime": "2026-02-13T12:30:00.000", "employee_code": "EMP001", "time_attendance_type_lv": "Manager", "company_id": "MjAyNTExMTMzMjBCQzlGODVFNDQ=", "work_cycle_date": "2026-02-13", "work_cycle_type_lv": "00", "attendance_remark": "ผู้จัดการบันทึกเวลาให้", "image_content": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==" }

Case: Offline

บันทึกเวลาแบบ Offline ต้องระบุพิกัด แต่ ไม่จำเป็นต้องมี company_id และ work_cycle_date

Required เพิ่มเติม

ParameterTypeRequiredDescriptionExample
latitudenumberYesละติจูด (-90 ถึง 90)13.7563
longitudenumberYesลองจิจูด (-180 ถึง 180)100.5018

Case Offline ไม่ require company_id และ work_cycle_date ต่างจากประเภทอื่นๆ

Request Body Example

{ "attendance_datetime": "2026-02-13T12:30:00.000", "employee_code": "EMP001", "time_attendance_type_lv": "Offline", "latitude": 13.7563, "longitude": 100.5018, "attendance_remark": "บันทึกเวลาแบบ Offline" }

Response Format

Success Response (HTTP 200)

เมื่อส่งข้อมูลเข้าระบบคิวสำเร็จ

{ "code": 200, "message": "successfully en-queued", "payload": [] }

Error Response - Validation Failed (HTTP 400)

{ "code": 400, "message": "Validation failed", "errors": [ "Missing required parameter: 'location_id' (required when time_attendance_type_lv is 'Checkin')", "Missing required parameter: 'latitude' (required when time_attendance_type_lv is 'Checkin')" ] }

Response Fields

FieldTypeDescription
codenumberรหัสสถานะ (200 = สำเร็จ, 400 = ไม่สำเร็จ)
messagestringข้อความตอบกลับ
payloadarrayข้อมูลผลลัพธ์ (ว่างเมื่อสำเร็จ — ระบบประมวลผลแบบ Asynchronous)
errorsarrayรายการข้อผิดพลาด (กรณี validation ไม่ผ่าน)

Code Examples

curl -X POST "https://openapi.humansoft.co.th/api/v1/open-apis/time_attendance/submit" \ -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "attendance_datetime": "2026-02-11T09:00:00.000", "employee_code": "EMP001", "time_attendance_type_lv": "Checkin", "company_id": "MjAyNTExMTMzMjBCQzlGODVFNDQ=", "work_cycle_date": "2026-02-11", "work_cycle_type_lv": "00", "location_id": "MjAyNjAyMTJEOUY2MTE1ODA1NTA=", "latitude": 13.7563, "longitude": 100.5018, "attendance_remark": "บันทึกเวลาเข้างาน" }'

Validation Rules

ทุกประเภท

ParameterValidationError Message
attendance_datetimeต้องเป็นวันเวลาที่ถูกต้อง (ISO 8601 หรือ YYYY-MM-DD HH:mm:ss)'attendance_datetime' must be a valid datetime
employee_codeต้องมีอยู่จริงในระบบemployee_code 'XXX' not found
time_attendance_type_lvต้องเป็นค่าที่รองรับInvalid time_attendance_type_lv
company_idต้องเป็น Base64-encoded และมีอยู่จริงในระบบ (ยกเว้น Offline)company_id not found
work_cycle_dateต้องเป็นวันที่ถูกต้อง YYYY-MM-DD (ยกเว้น Offline)'work_cycle_date' must be in YYYY-MM-DD format
latitudeต้องเป็นตัวเลข -90 ถึง 90 (เมื่อ required)'latitude' must be between -90 and 90
longitudeต้องเป็นตัวเลข -180 ถึง 180 (เมื่อ required)'longitude' must be between -180 and 180

เฉพาะบางประเภท

ประเภทParameterValidation
Checkinlocation_idต้องเป็น Base64-encoded และมีอยู่จริงในระบบ
Wifidevice_snต้องมีอยู่จริงในระบบและ device type เป็น Wifi
Beacondevice_snต้องมีอยู่จริงในระบบและ device type เป็น Beacon
QRlocation_id หรือ device_snต้องมีอย่างใดอย่างหนึ่ง — device type ต้องเป็น TimeApp
Facialimage_contentต้องเป็น Base64-encoded image (รองรับ data URI)
Managerimage_contentต้องเป็น Base64-encoded image (รองรับ data URI)

Business Rules

ข้อจำกัด:

  • ข้อมูลจะถูกส่งเข้าระบบคิว (Queue) เพื่อประมวลผล — API จะตอบกลับทันทีหลังจาก validate สำเร็จ
  • company_id และ location_id ต้องเป็น Base64-encoded string
  • สำหรับ Wifi และ Beacon — device ต้องลงทะเบียนในระบบก่อนพร้อม device type ที่ตรงกัน
  • สำหรับ QR — ต้องระบุ location_id หรือ (device_sn + device_name) อย่างใดอย่างหนึ่ง
  • สำหรับ Offline — ไม่จำเป็นต้องมี company_id และ work_cycle_date
  • work_date_seq default เป็น 1 ถ้าไม่ระบุ

Error Handling

ErrorCauseSolution
Missing required parameter: 'location_id'ไม่ได้ส่ง location_id สำหรับ Checkin/Facialเพิ่ม location_id ใน request body
employee_code 'XXX' not foundไม่พบพนักงานตรวจสอบ employee_code
company_id not foundไม่พบบริษัทตรวจสอบ company_id (Base64-encoded)
device_sn not found or invalid typeไม่พบ device หรือ type ไม่ตรงตรวจสอบ device_sn และ device type ในระบบ
  • Import Time Attendance - นำเข้าข้อมูลบันทึกเวลาแบบกลุ่ม
Last updated on