본문으로 건너뛰기
로그인
Apus Platform
문서 목차
hrm

HRM

Human resources — the employee master, org structure, attendance, leave and payroll runs. People data shared by projects, timesheets, expenses and finance. Sync an HRIS, a time clock or a payroll provider against these endpoints.

GET/v1/hrm/employeesScope: hrm:read

List employees

Returns a cursor-paginated list of employees. Filter by department or employment status.

Query parameters
limitoptionalintegerPage size, 1–200 (default 50).
cursoroptionalstringPagination cursor from a previous response.
departmentoptionalstringFilter by department code.
statusoptionalstringFilter by status: active, on_leave or terminated.
Request
curl "https://api.apusplatform.com/v1/hrm/employees" \
  -H "Authorization: Bearer $APUS_TOKEN"
Response
{
  "data": [
    {
      "id": "emp_1a2b",
      "code": "EMP-000142",
      "name": "Nguyen Van An",
      "department": "production",
      "title": "Line supervisor",
      "email": "an.nv@apusplatform.com",
      "status": "active",
      "hired_at": "2024-03-01",
      "updated_at": "2026-07-12T04:20:11Z"
    }
  ],
  "has_more": true,
  "next_cursor": "crsr_9a10"
}
POST/v1/hrm/employeesScope: hrm:write

Create an employee

Creates an employee record. name and department are required.

Body
namerequiredstringFull name.
departmentrequiredstringDepartment code.
titleoptionalstringJob title.
emailoptionalstringWork email.
Request
curl -X POST "https://api.apusplatform.com/v1/hrm/employees" \
  -H "Authorization: Bearer $APUS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Nguyen Van An",
    "department": "production",
    "title": "Line supervisor",
    "email": "an.nv@apusplatform.com"
  }'
Response
{
  "id": "emp_1a2b",
  "code": "EMP-000142",
  "created_at": "2026-07-20T02:10:00Z"
}
GET/v1/hrm/employees/{id}Scope: hrm:read

Retrieve an employee

Returns a single employee by its id, or by code (prefix the value with code_).

Path parameters
idrequiredstringEmployee id.
Request
curl "https://api.apusplatform.com/v1/hrm/employees/emp_1a2b" \
  -H "Authorization: Bearer $APUS_TOKEN"
Response
{
  "id": "emp_1a2b",
  "code": "EMP-000142",
  "name": "Nguyen Van An",
  "department": "production",
  "title": "Line supervisor",
  "email": "an.nv@apusplatform.com",
  "status": "active",
  "hired_at": "2024-03-01",
  "updated_at": "2026-07-12T04:20:11Z"
}
PATCH/v1/hrm/employees/{id}Scope: hrm:write

Update an employee

Updates mutable fields of an employee. Only supplied fields change.

Path parameters
idrequiredstringEmployee id.
Body
nameoptionalstringFull name.
departmentoptionalstringDepartment code.
titleoptionalstringJob title.
emailoptionalstringWork email.
Request
curl -X PATCH "https://api.apusplatform.com/v1/hrm/employees/emp_1a2b" \
  -H "Authorization: Bearer $APUS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "department": "quality",
    "title": "QA lead"
  }'
Response
{
  "id": "emp_1a2b",
  "code": "EMP-000142",
  "updated_at": "2026-07-20T02:12:00Z"
}
POST/v1/hrm/employees/{id}/terminateScope: hrm:write

Terminate an employee

Ends employment on the effective date and moves the employee to status terminated.

Path parameters
idrequiredstringEmployee id.
Body
effective_daterequiredstringLast working day (YYYY-MM-DD).
reasonoptionalstringReason for termination.
Request
curl -X POST "https://api.apusplatform.com/v1/hrm/employees/emp_1a2b/terminate" \
  -H "Authorization: Bearer $APUS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "effective_date": "2026-08-31",
    "reason": "Resignation"
  }'
Response
{
  "id": "emp_1a2b",
  "status": "terminated",
  "effective_date": "2026-08-31",
  "updated_at": "2026-07-20T02:14:00Z"
}
GET/v1/hrm/departmentsScope: hrm:read

List departments

Returns the organization's department tree.

No parameters.

Request
curl "https://api.apusplatform.com/v1/hrm/departments" \
  -H "Authorization: Bearer $APUS_TOKEN"
Response
{
  "data": [
    {
      "code": "production",
      "name": "Production",
      "parent": null,
      "manager": "emp_1a2b"
    },
    {
      "code": "quality",
      "name": "Quality",
      "parent": "production",
      "manager": null
    }
  ]
}
GET/v1/hrm/attendanceScope: hrm:read

List attendance records

Returns clock-in/out records. Filter by employee and date range.

Query parameters
limitoptionalintegerPage size, 1–200 (default 50).
cursoroptionalstringPagination cursor from a previous response.
employee_idoptionalstringFilter by employee id.
fromoptionalstringStart date, inclusive (YYYY-MM-DD).
tooptionalstringEnd date, inclusive (YYYY-MM-DD).
Request
curl "https://api.apusplatform.com/v1/hrm/attendance" \
  -H "Authorization: Bearer $APUS_TOKEN"
Response
{
  "data": [
    {
      "id": "att_3c4d",
      "employee_id": "emp_1a2b",
      "date": "2026-07-14",
      "check_in": "08:02",
      "check_out": "17:05",
      "worked_hours": 8.05
    }
  ],
  "has_more": false,
  "next_cursor": null
}
POST/v1/hrm/attendanceScope: hrm:write

Record attendance

Creates an attendance record for an employee on a given date.

Body
employee_idrequiredstringEmployee id.
daterequiredstringAttendance date (YYYY-MM-DD).
check_inoptionalstringClock-in time (HH:mm).
check_outoptionalstringClock-out time (HH:mm).
Request
curl -X POST "https://api.apusplatform.com/v1/hrm/attendance" \
  -H "Authorization: Bearer $APUS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "employee_id": "emp_1a2b",
    "date": "2026-07-14",
    "check_in": "08:02",
    "check_out": "17:05"
  }'
Response
{
  "id": "att_3c4d",
  "employee_id": "emp_1a2b",
  "date": "2026-07-14",
  "created_at": "2026-07-20T02:16:00Z"
}
GET/v1/hrm/leave-requestsScope: hrm:read

List leave requests

Returns leave requests. Filter by employee or approval status.

Query parameters
limitoptionalintegerPage size, 1–200 (default 50).
cursoroptionalstringPagination cursor from a previous response.
employee_idoptionalstringFilter by employee id.
statusoptionalstringFilter by status: pending, approved or rejected.
Request
curl "https://api.apusplatform.com/v1/hrm/leave-requests" \
  -H "Authorization: Bearer $APUS_TOKEN"
Response
{
  "data": [
    {
      "id": "lve_5f6g",
      "employee_id": "emp_1a2b",
      "type": "annual",
      "from": "2026-08-04",
      "to": "2026-08-08",
      "days": 5,
      "status": "pending",
      "created_at": "2026-07-18T03:10:00Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
POST/v1/hrm/leave-requestsScope: hrm:write

Create a leave request

Submits a leave request for an employee. It starts in status pending.

Body
employee_idrequiredstringEmployee id.
typerequiredstringLeave type: annual, sick or unpaid.
fromrequiredstringFirst day of leave (YYYY-MM-DD).
torequiredstringLast day of leave (YYYY-MM-DD).
Request
curl -X POST "https://api.apusplatform.com/v1/hrm/leave-requests" \
  -H "Authorization: Bearer $APUS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "employee_id": "emp_1a2b",
    "type": "annual",
    "from": "2026-08-04",
    "to": "2026-08-08"
  }'
Response
{
  "id": "lve_5f6g",
  "employee_id": "emp_1a2b",
  "status": "pending",
  "created_at": "2026-07-20T02:18:00Z"
}
POST/v1/hrm/leave-requests/{id}/approvalsScope: hrm:write

Approve or reject a leave request

Records an approval decision on a pending leave request.

Path parameters
idrequiredstringLeave request id.
Body
decisionrequiredstringDecision: approve or reject.
commentoptionalstringOptional note recorded with the decision.
Request
curl -X POST "https://api.apusplatform.com/v1/hrm/leave-requests/lve_5f6g/approvals" \
  -H "Authorization: Bearer $APUS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "decision": "approve",
    "comment": "Coverage arranged."
  }'
Response
{
  "id": "lve_5f6g",
  "status": "approved",
  "decided_by": "emp_7h8i",
  "decided_at": "2026-07-20T02:20:00Z"
}
GET/v1/hrm/payroll-runsScope: hrm:read

List payroll runs

Returns payroll runs. Filter by pay period.

Query parameters
periodoptionalstringFilter by period (YYYY-MM).
Request
curl "https://api.apusplatform.com/v1/hrm/payroll-runs" \
  -H "Authorization: Bearer $APUS_TOKEN"
Response
{
  "data": [
    {
      "id": "pay_9j0k",
      "period": "2026-06",
      "status": "closed",
      "employee_count": 142,
      "gross_total": {
        "amount": 1842500000,
        "currency": "VND"
      },
      "paid_at": "2026-07-05"
    }
  ]
}
GET/v1/hrm/payroll-runs/{id}Scope: hrm:read

Retrieve a payroll run

Returns a payroll run with its per-employee payslip lines.

Path parameters
idrequiredstringPayroll run id.
Request
curl "https://api.apusplatform.com/v1/hrm/payroll-runs/pay_9j0k" \
  -H "Authorization: Bearer $APUS_TOKEN"
Response
{
  "id": "pay_9j0k",
  "period": "2026-06",
  "status": "closed",
  "gross_total": {
    "amount": 1842500000,
    "currency": "VND"
  },
  "payslips": [
    {
      "employee_id": "emp_1a2b",
      "gross": {
        "amount": 18500000,
        "currency": "VND"
      },
      "net": {
        "amount": 15980000,
        "currency": "VND"
      }
    }
  ]
}
GET/v1/hrm/positionsScope: hrm:read

List positions

Returns the catalog of job positions and their pay grades.

No parameters.

Request
curl "https://api.apusplatform.com/v1/hrm/positions" \
  -H "Authorization: Bearer $APUS_TOKEN"
Response
{
  "data": [
    {
      "code": "line-supervisor",
      "title": "Line supervisor",
      "grade": "G5",
      "department": "production"
    },
    {
      "code": "qa-lead",
      "title": "QA lead",
      "grade": "G6",
      "department": "quality"
    }
  ]
}

연동을 시작할 준비가 되셨나요?

Account Console에서 API 클라이언트를 만들어 인증 정보를 발급받거나, 통합 엔지니어와 사용 사례를 상담하세요.

noindex