Skip to Content
🚀 Welcome to Humansoft Open API Documentation

Import Time Adjust

นำเข้าเอกสารขอเพิ่มเวลาทำงานแบบกลุ่ม (Batch Import)

ใช้ API นี้เพื่อนำเข้าเอกสารขอเพิ่มเวลาทำงานจำนวนมากพร้อมกัน รองรับทั้งการเพิ่ม/แก้ไข (UPSERT) และการลบ (DEL) ข้อมูลจะถูกส่งเข้า Queue เพื่อประมวลผลแบบ Asynchronous

Endpoint

POST /api/v1/open-apis/time-adjust/import

Request Parameters

ParameterTypeRequiredDescriptionExample
import_dataarrayYesรายการข้อมูลที่ต้องการนำเข้า (array of objects)(ดูตัวอย่างด้านล่าง)

UPSERT Fields (เพิ่ม/แก้ไข)

FieldTypeRequiredDescriptionExample
statusstringYesการดำเนินการ: UPSERT"UPSERT"
employee_codestringYesรหัสพนักงาน"EMP001"
typestringYesประเภทเอกสาร (01-06)"01"
adjust_dtstringYesวันที่เอกสาร (YYYY-MM-DD)"2026-02-18"
adjust_list_dtarrayYesรายการเวลา (สูงสุด 4 รายการ, format YYYY-MM-DD HH:MM:SS)["2026-02-18 09:00:00"]
descriptionstringNoคำอธิบาย"ลืมลงเวลา"

DEL Fields (ลบ)

FieldTypeRequiredDescriptionExample
statusstringYesการดำเนินการ: DEL"DEL"
employee_codestringYesรหัสพนักงาน"EMP001"
adjust_dtstringYesวันที่เอกสารที่ต้องการลบ (YYYY-MM-DD)"2026-02-18"

Adjust Type Codes

CodeประเภทDescription
01ลืมลงเวลาForget to enter time
02ระบบมีปัญหาSystem has a problem
03เครื่องลงเวลาใช้งานไม่ได้Device malfunction
04ไฟฟ้าดับPower outage
05ทำงานนอกสถานที่Work off-site
06ทำงานเกินเวลาOverwork

Request Body Example

UPSERT (เพิ่ม/แก้ไข)

{ "import_data": [ { "status": "UPSERT", "employee_code": "EMP001", "type": "01", "adjust_dt": "2026-02-18", "adjust_list_dt": ["2026-02-18 09:00:00", "2026-02-18 18:00:00"], "description": "ลืมลงเวลา" }, { "status": "UPSERT", "employee_code": "EMP002", "type": "02", "adjust_dt": "2026-02-18", "adjust_list_dt": ["2026-02-18 08:30:00"], "description": "เครื่องสแกนลายนิ้วมือเสีย" } ] }

Mixed (UPSERT + DEL)

{ "import_data": [ { "status": "UPSERT", "employee_code": "EMP001", "type": "01", "adjust_dt": "2026-02-18", "adjust_list_dt": ["2026-02-18 09:00:00"] }, { "status": "DEL", "employee_code": "EMP002", "adjust_dt": "2026-02-17" } ] }

Response Format

Success Response - All Valid (HTTP 200)

เมื่อข้อมูลทุกรายการถูกต้อง ระบบจะส่งข้อมูลทั้งหมดเข้า Queue

{ "code": 200, "message": "Successfully enqueued for processing", "payload": { "valid_items_count": 2, "invalid_items": [] } }

Success Response - Partial (HTTP 200)

เมื่อมีข้อมูลที่ถูกต้องอย่างน้อย 1 รายการ ระบบจะส่งข้อมูลที่ถูกต้องเข้า Queue และตอบกลับรายการที่ไม่ผ่าน validation

{ "code": 200, "message": "Successfully enqueued for processing", "payload": { "valid_items_count": 1, "invalid_items": [ { "index": 1, "data": { "status": "UPSERT", "employee_code": "EMP999", "type": "01", "adjust_dt": "2026-02-18", "adjust_list_dt": ["2026-02-18 09:00:00"] }, "errors": ["Employee not found: 'EMP999'"] } ] } }

Error Response - Validation Failed (HTTP 422)

เมื่อโครงสร้างข้อมูลไม่ถูกต้อง (ไม่มี import_data, ไม่ใช่ array, หรือว่างเปล่า)

{ "code": 422, "message": "Validation failed", "errors": ["Missing 'import_data' field"] }

Error Response - No Valid Data (HTTP 400)

เมื่อไม่มีข้อมูลที่ผ่าน validation เลย

{ "code": 400, "message": "No valid data to import", "payload": { "invalid_items": [ { "index": 0, "data": { "status": "UPSERT", "employee_code": "EMP999", "type": "01", "adjust_dt": "2026-02-18", "adjust_list_dt": ["2026-02-18 09:00:00"] }, "errors": ["Employee not found: 'EMP999'"] } ] } }

Error Response - System Error (HTTP 500)

{ "code": 500, "message": "Internal server error" }

Response Fields

FieldTypeDescription
codenumberรหัสสถานะ (200 = สำเร็จ, 400/422 = ไม่สำเร็จ)
messagestringข้อความตอบกลับ
payload.valid_items_countintegerจำนวนรายการที่ถูกต้องและเพิ่มเข้าคิวประมวลผล
payload.invalid_itemsarrayรายการข้อมูลที่ไม่ผ่าน validation
payload.invalid_items[].indexintegerลำดับรายการใน array (เริ่มจาก 0)
payload.invalid_items[].dataobjectข้อมูลรายการที่ไม่ถูกต้อง
payload.invalid_items[].errorsarrayรายการข้อผิดพลาด

Code Examples

curl -X POST "https://openapi.humansoft.co.th/api/v1/open-apis/time-adjust/import" \ -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "import_data": [ { "status": "UPSERT", "employee_code": "EMP001", "type": "01", "adjust_dt": "2026-02-18", "adjust_list_dt": ["2026-02-18 09:00:00", "2026-02-18 18:00:00"], "description": "ลืมลงเวลา" } ] }'

Validation Rules

ParameterValidationError Message
import_dataต้องเป็น array ที่ไม่ว่างMissing 'import_data' field
statusต้องเป็น UPSERT หรือ DELstatus must be 'UPSERT' or 'DEL'
employee_codeต้องมีอยู่ในระบบEmployee not found: 'XXX'
typeต้องเป็น 01-06 (เฉพาะ UPSERT)type must be one of: 01, 02, 03, 04, 05, 06
adjust_dtต้องอยู่ในรูปแบบ YYYY-MM-DDadjust_dt must be in format YYYY-MM-DD
adjust_list_dtต้องเป็น array 1-4 รายการ, format YYYY-MM-DD HH:MM:SS (เฉพาะ UPSERT)adjust_list_dt must contain 1-4 items in format YYYY-MM-DD HH:MM:SS

Business Rules

Partial Success:

  • ระบบจะประมวลผลเฉพาะรายการที่ถูกต้อง และแจ้งรายการที่ไม่ถูกต้องกลับมาใน response
  • รายการที่ผ่าน validation จะถูกส่งเข้าคิวประมวลผลทันที
  • รายการที่ไม่ผ่าน validation จะถูกส่งกลับมาพร้อม error message

Asynchronous Processing

  • ระบบจะประมวลผลเบื้องหลังและคืนผลลัพธ์ทันที
  • API จะตอบกลับทันทีหลังจาก validate และส่งข้อมูลเข้าคิวประมวลผลสำเร็จ
  • เหมาะสำหรับการนำเข้าข้อมูลจำนวนมาก
  • แนะนำไม่เกิน 1,000 รายการต่อ request

Time List Limit

  • รายการเวลา (adjust_list_dt) จำกัดสูงสุด 4 รายการต่อเอกสาร

Delete Behavior

  • การลบ (DEL) เอกสารที่ลบจะไม่แสดงในรายการอีกต่อไป

Error Handling

HTTP StatusDescriptionสาเหตุ
200Successมีข้อมูลที่ถูกต้องอย่างน้อย 1 รายการ
400No Valid Dataไม่มีข้อมูลที่ผ่าน validation เลย
422Validation Failedโครงสร้างข้อมูลไม่ถูกต้อง (ไม่มี import_data, ไม่ใช่ array, หรือว่างเปล่า)
500System Errorเกิดข้อผิดพลาดภายในระบบ

Notes

Status Values

StatusDescription
UPSERTเพิ่มหรือแก้ไขเอกสารขอเพิ่มเวลา
DELลบเอกสารขอเพิ่มเวลาที่มีอยู่

Important Notes

  • type ต้องเป็นประเภทที่เปิดใช้งานในระบบ สามารถตรวจสอบได้จาก API Get Adjust Types
  • adjust_list_dt แต่ละรายการต้องอยู่ในรูปแบบ YYYY-MM-DD HH:MM:SS
  • การลบ (DEL) ควรระบุ employee_code และ adjust_dt ให้ตรงกับเอกสารที่มีอยู่ในระบบ
  • ข้อมูลที่ส่งเข้าคิวจะถูกประมวลผลตามลำดับ (FIFO)
  • ไม่สามารถสร้าง/แก้ไข/ลบเอกสารในงวดเงินเดือนที่ปิดแล้ว

Use Cases

  1. Migration - ย้ายข้อมูลขอเพิ่มเวลาจากระบบเดิม
  2. Bulk Create - สร้างเอกสารจำนวนมากพร้อมกัน
  3. Integration - รับข้อมูลจากระบบภายนอก
  • Get Adjust Types - ดึงรายการประเภทการขอเพิ่มเวลา
  • Get Adjust List - ดึงรายการเอกสารขอเพิ่มเวลา
  • Submit Adjust - ยื่นเอกสารขอเพิ่มเวลาทีละรายการ
  • Time Adjust Overview - ภาพรวม Time Adjust APIs
Last updated on