Dữ liệu

Chấm công, lịch, nghỉ phép

Bản ghi chấm công, lịch làm việc, duyệt đơn nghỉ.

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_minutes là null khi hôm đó không có ca để so, không phải 0. shift là null khi 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ườngGiá trị
attendance.statuspresent, late, early_leave, absent, leave, off
attendance.sourceapp, manual, adjusted
leave-requests.statuspending, approved, rejected, canceled