Import Time Adjust
นำเข้าเอกสารขอเพิ่มเวลาทำงานแบบกลุ่ม (Batch Import)
ใช้ API นี้เพื่อนำเข้าเอกสารขอเพิ่มเวลาทำงานจำนวนมากพร้อมกัน รองรับทั้งการเพิ่ม/แก้ไข (UPSERT) และการลบ (DEL) ข้อมูลจะถูกส่งเข้า Queue เพื่อประมวลผลแบบ Asynchronous
Endpoint
POST /api/v1/open-apis/time-adjust/importRequest Parameters
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
import_data | array | Yes | รายการข้อมูลที่ต้องการนำเข้า (array of objects) | (ดูตัวอย่างด้านล่าง) |
UPSERT Fields (เพิ่ม/แก้ไข)
| Field | Type | Required | Description | Example |
|---|---|---|---|---|
status | string | Yes | การดำเนินการ: UPSERT | "UPSERT" |
employee_code | string | Yes | รหัสพนักงาน | "EMP001" |
type | string | Yes | ประเภทเอกสาร (01-06) | "01" |
adjust_dt | string | Yes | วันที่เอกสาร (YYYY-MM-DD) | "2026-02-18" |
adjust_list_dt | array | Yes | รายการเวลา (สูงสุด 4 รายการ, format YYYY-MM-DD HH:MM:SS) | ["2026-02-18 09:00:00"] |
description | string | No | คำอธิบาย | "ลืมลงเวลา" |
DEL Fields (ลบ)
| Field | Type | Required | Description | Example |
|---|---|---|---|---|
status | string | Yes | การดำเนินการ: DEL | "DEL" |
employee_code | string | Yes | รหัสพนักงาน | "EMP001" |
adjust_dt | string | Yes | วันที่เอกสารที่ต้องการลบ (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
| Field | Type | Description |
|---|---|---|
code | number | รหัสสถานะ (200 = สำเร็จ, 400/422 = ไม่สำเร็จ) |
message | string | ข้อความตอบกลับ |
payload.valid_items_count | integer | จำนวนรายการที่ถูกต้องและเพิ่มเข้าคิวประมวลผล |
payload.invalid_items | array | รายการข้อมูลที่ไม่ผ่าน validation |
payload.invalid_items[].index | integer | ลำดับรายการใน array (เริ่มจาก 0) |
payload.invalid_items[].data | object | ข้อมูลรายการที่ไม่ถูกต้อง |
payload.invalid_items[].errors | array | รายการข้อผิดพลาด |
Code Examples
cURL
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
| Parameter | Validation | Error Message |
|---|---|---|
import_data | ต้องเป็น array ที่ไม่ว่าง | Missing 'import_data' field |
status | ต้องเป็น UPSERT หรือ DEL | status 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-DD | adjust_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 Status | Description | สาเหตุ |
|---|---|---|
200 | Success | มีข้อมูลที่ถูกต้องอย่างน้อย 1 รายการ |
400 | No Valid Data | ไม่มีข้อมูลที่ผ่าน validation เลย |
422 | Validation Failed | โครงสร้างข้อมูลไม่ถูกต้อง (ไม่มี import_data, ไม่ใช่ array, หรือว่างเปล่า) |
500 | System Error | เกิดข้อผิดพลาดภายในระบบ |
Notes
Status Values
| Status | Description |
|---|---|
UPSERT | เพิ่มหรือแก้ไขเอกสารขอเพิ่มเวลา |
DEL | ลบเอกสารขอเพิ่มเวลาที่มีอยู่ |
Important Notes
typeต้องเป็นประเภทที่เปิดใช้งานในระบบ สามารถตรวจสอบได้จาก API Get Adjust Typesadjust_list_dtแต่ละรายการต้องอยู่ในรูปแบบ YYYY-MM-DD HH:MM:SS- การลบ (
DEL) ควรระบุemployee_codeและadjust_dtให้ตรงกับเอกสารที่มีอยู่ในระบบ - ข้อมูลที่ส่งเข้าคิวจะถูกประมวลผลตามลำดับ (FIFO)
- ไม่สามารถสร้าง/แก้ไข/ลบเอกสารในงวดเงินเดือนที่ปิดแล้ว
Use Cases
- Migration - ย้ายข้อมูลขอเพิ่มเวลาจากระบบเดิม
- Bulk Create - สร้างเอกสารจำนวนมากพร้อมกัน
- Integration - รับข้อมูลจากระบบภายนอก
Related APIs
- Get Adjust Types - ดึงรายการประเภทการขอเพิ่มเวลา
- Get Adjust List - ดึงรายการเอกสารขอเพิ่มเวลา
- Submit Adjust - ยื่นเอกสารขอเพิ่มเวลาทีละรายการ
- Time Adjust Overview - ภาพรวม Time Adjust APIs
Last updated on