Attendance
Bulk update attendance entries for an employee
Update one or more attendance entries (time log entries) for a specific employee. Only provided fields are updated. Entries must match the <b>reporting method</b> (duration or start-end) and rules of the <b>attendance policy</b> linked to the employee. Update is scoped per employee to keep authorization, validation (such as overlaps or locked days), and transactional boundaries simple and safe, since those rules are typically employee-centric.
<ul> <li>Each item must include the entry <code>id</code> field to identify the entry to update.</li> <li>Maximum 100 entries per request.</li> <li><b>Read-only fields</b>: <code>employeeId</code>, <code>clockInDate</code>, <code>type</code>.</li> <li><b>Reporting method</b>: <ul> <li><b>Duration</b>: Update <code>duration</code>, maximum 24 hours..</li> <li><b>Start-end</b>: Update <code>clockInTime</code> and/or <code>clockOutTime</code> (timestamps).</li> <li><b>Start-end (cross-midnight)</b>: <code>clockInTime</code> and <code>clockOutTime</code> must be on the <b>same date</b>. If clock-out is on another day, the API returns an error. Split into two entries: one till 23:59 and one from 00:00 the next day.</li> </ul> </li> </ul>patch/attendance/employees/{employeeId}/entries
Path parameters
employeeIdstring required
The ID of the employee whose entries are being updated
Request body
Example request
{
"items": [
{
"objectType": "attendanceEntry",
"fields": {
"/attendanceEntry/id": {
"value": 12345
},
"/attendanceEntry/reportingMethod": {
"value": "startEnd"
},
"/attendanceEntry/clockInTime": {
"value": "2026-01-23T09:15:00"
},
"/attendanceEntry/clockOutTime": {
"value": "2026-01-23T16:30:00"
}
}
},
{
"objectType": "attendanceEntry",
"fields": {
"/attendanceEntry/id": {
"value": 12346
},
"/attendanceEntry/notes": {
"value": "Updated notes"
}
}
}
]
}Response
Attendance entries updated successfully