Skip to main content

Endpoints

All paths are relative to /api/v1. Every endpoint requires a Sanctum token except /auth/login, /ping, and /up.

Auth

MethodPathRoleNotes
POST/auth/loginIssue token.
POST/auth/logoutanyRevoke current token.
POST/auth/logout-allanyRevoke all tokens.
GET/meanyAuthenticated user profile, roles, scopes.

Organizations & Units

MethodPathRole
GET/organizationsSystemAdmin, SuperAdmin
POST/organizationsSystemAdmin
GET/organizations/{id}scoped
PATCH/organizations/{id}SystemAdmin, OrgAdmin
DELETE/organizations/{id}SystemAdmin
GET/organizations/{id}/unitsscoped
POST/organizations/{id}/unitsSystemAdmin, OrgAdmin
PATCH/units/{id}SystemAdmin, OrgAdmin, OrgUnitAdmin
POST/units/{id}/geoSystemAdmin, OrgAdmin

Employees

MethodPathRole
GET/employeesHR, ShiftManager (scoped)
POST/employeesHR
GET/employees/{id}scoped
PATCH/employees/{id}HR
POST/employees/{id}/deploymentsHR
POST/employees/{id}/transferHR
POST/employees/{id}/deactivateHR

Shifts & Roster

MethodPathRole
GET/shiftsscoped
POST/shiftsOrgAdmin, OrgUnitAdmin
PATCH/shifts/{id}OrgAdmin, OrgUnitAdmin
GET/roster?unit_id=&month=YYYY-MMShiftManager
POST/rosterShiftManager (bulk upsert)
PATCH/roster/{assignmentId}ShiftManager
POST/roster/{assignmentId}/locumShiftManager

Attendance

MethodPathRole
POST/attendance/punchEmployee (self)
GET/attendancescoped
GET/attendance/{id}scoped
PATCH/attendance/{id}HR (pre-lock), SuperAdmin (post-lock)
POST/attendance/{id}/recalculateHR, SuperAdmin
GET/attendance/{id}/flagsscoped
POST/attendance/lockHR
POST/attendance/unlockSuperAdmin

Punch request body

{
"direction": "in", // "in" | "out" | "auto"
"punched_at": "2026-04-23T09:05:12Z",
"organization_unit_id": 12,
"lat": 17.4375,
"lon": 78.4483,
"accuracy_m": 12.5,
"device_fingerprint": "abc123",
"channel": "mobile"
}

Response after processing

{
"accepted": true,
"punch_id": 998877,
"attendance_id": 3321,
"status": "present",
"flags": ["LATE_CHECK_IN"]
}

Leave

MethodPathRole
GET/leavesscoped
POST/leavesEmployee
POST/leaves/{id}/decideShiftManager, HR, SuperAdmin

Regularization

MethodPathRole
GET/regularizationsscoped
POST/regularizationsEmployee
POST/regularizations/{id}/decideShiftManager, HR, SuperAdmin

Devices

MethodPathRole
GET/devicesHR, Employee (own)
POST/devices/registerEmployee
POST/devices/{id}/approveHR
POST/devices/{id}/revokeHR

Reports & Exports

MethodPathRole
POST/reports/attendanceHR, OrgAdmin
POST/exportsHR, OrgAdmin
GET/exports/{id}requester
GET/exports/{id}/downloadrequester

Webhooks / Integrations

MethodPathNotes
POST/telegram/webhookTelegram callback.
POST/integrations/payroll/dailyPush locked attendance to payroll partner.
GET/integrations/payroll/pull?month=YYYY-MM&org_id=NPull for polling partners.