PeopleSync API
  1. Attendances
PeopleSync API
  • Authentication
    • Authenticate user
      POST
    • Get current user
      GET
  • Roles
    • List all roles
      GET
    • Create a new role
      POST
    • Get role details
      GET
    • Update role
      PUT
  • Departments
    • List all departments
      GET
    • Create a new department
      POST
    • Get department details
      GET
    • Update department
      PUT
  • Employees
    • List employees
      GET
    • Create employee
      POST
    • Get employee details
      GET
    • Update employee
      PUT
  • Attendances
    • Record clock-in
      POST
    • Sync offline attendances
      POST
  • Leaves
    • List leaves
      GET
    • Create leave request
      POST
    • Approve/reject leave
      PATCH
  • SalaryComponents
    • List all salary components
      GET
    • Create a new salary component
      POST
    • Get salary component details
      GET
    • Update salary component
      PUT
  • Payroll
    • Generate payroll
  • Jobs
    • Check job status
  • Uploads
    • Get presigned upload URL
  • Settings
    • Get organization settings
    • Update settings
  • ActivityLogs
    • List activity logs
  • Notifications
    • List notifications
  • System
    • Health check
  • Schemas
    • Schemas
      • MetaPagination
      • ErrorResponse
      • UUID
      • AuthLoginRequest
      • User
      • AuthLoginResponse
      • Role
      • Department
      • DepartmentCreate
      • DepartmentUpdate
      • Employee
      • EmployeeCreate
      • EmployeeUpdate
      • Attendance
      • AttendanceClockIn
      • AttendanceSync
      • Leave
      • LeaveCreate
      • LeaveApprove
      • SalaryComponent
      • SalaryComponentCreate
      • SalaryComponentUpdate
      • Payroll
      • PayrollItem
      • PayrollGenerate
      • PayrollSnapshot
      • ActivityLog
      • Notification
      • Setting
      • SettingUpdate
      • JobStatus
      • PresignedUrl
      • PresignRequest
      • HealthCheck
    • Response
      • Unauthorized
      • Forbidden
      • NotFound
      • ValidationError
      • Conflict
  1. Attendances

Sync offline attendances

Develop Env
https://dev.your-api-server.com
Develop Env
https://dev.your-api-server.com
POST
/attendances/sync
Idempotent endpoint for syncing multiple offline attendance records.
Requires Idempotency-Key header.

Request

Authorization
JWT Bearer
Add the parameter
Authorization
to Headers
Example:
Authorization: ********************
or
Header Params

Body Params application/jsonRequired

Example
{
    "records": [
        {
            "id": "client-att-123",
            "employee_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "clock_in_client_ts": "2025-11-16T08:00:00Z",
            "clock_out_client_ts": "2019-08-24T14:15:22.123Z",
            "lat": 0,
            "lng": 0,
            "location": "string",
            "location_accuracy": 0,
            "device_id": "device-abc123",
            "photo_url": "http://example.com",
            "source": "mobile",
            "sync_status": "pending"
        }
    ]
}

Request Code Samples

Shell
JavaScript
Java
Swift
Go
PHP
Python
HTTP
C
C#
Objective-C
Ruby
OCaml
Dart
R
Request Request Example
Shell
JavaScript
Java
Swift
curl --location --request POST 'https://dev.your-api-server.com/attendances/sync' \
--header 'Idempotency-Key;' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data-raw '{
    "records": [
        {
            "id": "client-att-123",
            "employee_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "clock_in_client_ts": "2025-11-16T08:00:00Z",
            "clock_out_client_ts": "2019-08-24T14:15:22.123Z",
            "lat": 0,
            "lng": 0,
            "location": "string",
            "location_accuracy": 0,
            "device_id": "device-abc123",
            "photo_url": "http://example.com",
            "source": "mobile",
            "sync_status": "pending"
        }
    ]
}'

Responses

🟢202Accepted
application/json
Sync accepted and queued for processing
Headers

Body

Example
{
    "job_id": "job_payroll_nov2025",
    "status": "queued",
    "progress": {
        "processed": 15,
        "total": 100
    },
    "result": {
        "payroll_ids": [
            "497f6eca-6276-4993-bfeb-53cbbbba6f08"
        ]
    },
    "error": null,
    "created_at": "2025-11-13T09:00:00Z",
    "updated_at": "2025-11-13T09:05:00Z"
}
🟠400Bad Request
🟠401Unauthorized
🟠409Conflict
Modified at 2025-11-17 05:13:15
Previous
Record clock-in
Next
List leaves
Built with