API 2.0
Attendance

Attendance

Clock In

Starts the user's active attendance timer.
/attendance-events/clock-in

Parameters

Name Required Type/Format Description
userId yes "USER-ID" ID of the user
comment no String Optional comment for the event
officeId no "OFFICE-ID" ID of the office location

Response

Sample response →
    {
        "id": "ATTENDANCE-EVENT-ID",
        "linkedAttendanceEventId": "ATTENDANCE-EVENT-ID",
        "userId": "USER-ID",
        "createByUserId": "USER-ID"
        "officeId": "OFFICE-ID",
        "date": "2024-07-15",
        "momentCreated": "2024-07-16T11:54:52.093993",
        "timestamp": "2024-07-15T15:23:58.561027",
        "ipAddress": "127.0.0.1",
        "type": "CLOCK-IN",
        "comment": "Some comment"
    }

Clock Out

Stops the user's active attendance timer.
/attendance-events/clock-out

Parameters

Name Required Type/Format Description
userId yes "USER-ID" ID of the user
comment no String Optional comment for the event
officeId no "OFFICE-ID" ID of the office location

Response

Sample response →
    {
        "id": "ATTENDANCE-EVENT-ID",
        "linkedAttendanceEventId": "ATTENDANCE-EVENT-ID",
        "userId": "USER-ID",
        "createByUserId": "USER-ID"
        "officeId": "OFFICE-ID",
        "date": "2024-07-15",
        "momentCreated": "2024-07-16T11:54:52.093993",
        "timestamp": "2024-07-15T15:23:58.561027",
        "ipAddress": "127.0.0.1",
        "type": "CLOCK-OUT",
        "comment": "Some comment"
    }

Create attendance records

Create both clock-in and clock-out attendance events for a user.
/attendance-events/create

Parameters

Name Required Type/Format Description
date yes YYYY-MM-DD Date of the attendance events
clockInTimestampUtc yes ISO 8601
e.g. 2025-07-18T08:00:00
Clock-in timestamp (in UTC)
clockOutTimestampUtc yes ISO 8601
e.g. 2025-07-18T17:00:00
Clock-out timestamp (in UTC)
userId yes "USER-ID" ID of the user
officeId no "OFFICE-ID" ID of the office location
clockInComment no String Optional comment for clock-in
clockOutComment no String Optional comment for clock-out

Response

Response

Sample response →
{
  "clockIn": {
    "id": "ATTENDANCE-EVENT-ID",
    "userId": "USER-ID",
    "createByUserId": "USER-ID",
    "officeId": "OFFICE-ID",
    "date": "2025-07-18",
    "momentCreated": "2025-07-18T08:01:00.000000",
    "timestamp": "2025-07-18T08:00:00.000000",
    "ipAddress": "127.0.0.1",
    "type": "CLOCK-IN",
    "comment": "Started shift"
  },
  "clockOut": {
    "id": "ATTENDANCE-EVENT-ID",
    "linkedAttendanceEventId": "ATTENDANCE-EVENT-ID",
    "userId": "USER-ID",
    "createByUserId": "USER-ID",
    "officeId": "OFFICE-ID",
    "date": "2025-07-18",
    "momentCreated": "2025-07-18T17:01:00.000000",
    "timestamp": "2025-07-18T17:00:00.000000",
    "ipAddress": "127.0.0.1",
    "type": "CLOCK-OUT",
    "comment": "Ended shift"
  }
}

Delete Attendance Event

Delete attendance event and its pair.
/attendance-events/ATTENDANCE-EVENT-ID

Response

Sample response →
"Ok"

Query Attendance Events

Retrieve a list of attendance events within a specific date range.
/attendance-events

Parameters

Name Required Type/Format Description
startDate yes YYYY-MM-DD Start date of the attendance event range
endDate yes YYYY-MM-DD End date of the attendance event range
userId no "USER-ID" Optional user ID to filter attendance events
userIds no A comma-separated string i.e ?userIds=abc123,def456 Optional user IDs to filter attendance events

Response

Sample response →
[
    {
        "id": "ATTENDANCE-EVENT-ID",
        "linkedAttendanceEventId": "ATTENDANCE-EVENT-ID",
        "userId": "USER-ID",
        "createByUserId": "USER-ID"
        "officeId": "OFFICE-ID",
        "date": "2024-07-15",
        "momentCreated": "2024-07-16T11:54:52.093993",
        "timestamp": "2024-07-15T15:23:58.561027",
        "ipAddress": "127.0.0.1",
        "type": "CLOCK-OUT",
        "comment": "Some comment"
    },
    ...
]