Dùng token kết nối, dưới /v1/work.
Chấm công
GET /attendance?from=&to=&member=&department=&limit=&cursor= — quyền attendance:read. Tối đa 92 ngày một lần gọi.
{ "id": "…", "member_id": "mem_…", "department_id": "dep_…", "date": "2026-09-06",
"status": "late",
"check_in": "2026-09-06T08:12:00+07:00", "check_out": "2026-09-06T17:03:40+07:00",
"sessions": [ { "check_in": "…", "check_out": "…", "verified_by": "geofence" } ],
"worked_minutes": 531, "late_minutes": 12, "early_leave_minutes": null, "leave_type": null,
"shift": { "name": "Ca sáng", "start": "08:00", "end": "17:00", "kind": "shift", "standing": false, "credit_day": false } }
late_minuteslànullkhi hôm đó không có ca để so, không phải0.shiftlànullkhi không có ca.- Bản ghi trả theo thứ tự tạo và phân trang bằng con trỏ, nên đồng bộ dở dang có thể tiếp tục đúng chỗ dừng.
- Không có toạ độ vị trí.
Lịch làm việc
GET /schedule?member=&from=&to= — một nhân sự, tối đa 92 ngày.
Trả từng ngày có ca: { "date", "is_working_day", "shift" }, gồm cả ca xếp tay lẫn ca cố định (standing: true). Không có giá trị ngày công quy ra tiền.
Đơn nghỉ
GET /leave-requests?status=&from=&to= — quyền leave:read
POST /leave-requests/{id}/approve · POST /leave-requests/{id}/reject với { "reason" } — quyền leave:write
Đơn đã có quyết định thì trả 409. Quyết định qua API được ghi là quyết định của ứng dụng, không phải của một người.
Trạng thái
| Trường | Giá trị |
|---|---|
attendance.status | present, late, early_leave, absent, leave, off |
attendance.source | app, manual, adjusted |
leave-requests.status | pending, approved, rejected, canceled |
CTAS Developer