PurrOSDocs

Time & Attendance

Punches and corrections, timesheets, labor rules, pay periods, payroll export and time off.

For how this area works day to day, see the Time & attendance guide.

Webhook events: punch.received, punch.corrected, punch.exception Planned, timesheet.approved, timesheet.rejected, pay_period.locked, time_off.requested, time_off.approved, time_off.rejected. See Webhooks.

All paths are relative to /api/v1. Key is the scope an integration key needs, People the permission a signed-in person or personal key needs, and Feature the feature switch the endpoint belongs to. See how to read this reference.

  • GET/labor-rule-sets

    List labor rule sets

    Keytime:read
    Peopletimesheets.read
    Featuretime
  • POST/labor-rule-sets

    Create a labor rule set

    Keytime:write
    Peoplelabor_rules.manage
    Featuretime
  • GET/labor-rule-sets/{id}

    Get a labor rule set

    Keytime:read
    Peopletimesheets.read
    Featuretime
  • PATCH/labor-rule-sets/{id}

    Update a labor rule set (partial)

    Keytime:write
    Peoplelabor_rules.manage
    Featuretime
  • GET/pay-periods

    List pay periods (newest first)

    Keypayroll:read
    Peopletimesheets.read
    Featuretime
  • POST/pay-periods

    Create a pay period

    Keypayroll:write
    Peoplepay_periods.lock
    Featuretime
  • GET/pay-periods/{id}

    Get a pay period

    Keypayroll:read
    Peopletimesheets.read
    Featuretime
  • GET/pay-periods/{id}/export

    Export hours for payroll

    Keypayroll:read
    Peoplepayroll.export
    Featuretime.payroll_export
  • POST/pay-periods/{id}:lock

    Lock a pay period (final payroll approval)

    Keypayroll:write
    Peoplepay_periods.lock
    Featuretime
  • GET/punch-corrections

    List punch corrections

    Keytime:read
    Peoplepunches.correct
    Featuretime
  • POST/punch-corrections/{id}:approve

    Approve a punch correction

    Keytime:write
    Peoplepunches.correct
    Featuretime
  • POST/punch-corrections/{id}:reject

    Reject a punch correction

    Keytime:write
    Peoplepunches.correct
    Featuretime
  • POST/time-off/adjustments

    Add or deduct time-off hours (accruals, corrections)

    Keytime:write
    Peopletime_off.approve
    Featuretime.time_off
  • GET/time-off/balances

    Time-off balances per employee and type

    Keytime:read
    Peopletime_off.read
    Featuretime.time_off
  • GET/time-off/requests

    List time-off requests

    Keytime:read
    Peopletime_off.read
    Featuretime.time_off
  • POST/time-off/requests

    Request time off

    Keytime:write
    Peopletime_off.approve
    Featuretime.time_off
  • POST/time-off/requests/{id}:approve

    Approve a time-off request (deducts the balance)

    Keytime:write
    Peopletime_off.approve
    Featuretime.time_off
  • POST/time-off/requests/{id}:cancel

    Cancel a time-off request (restores the balance if it was approved)

    Keytime:write
    Peopletime_off.approve
    Featuretime.time_off
  • POST/time-off/requests/{id}:reject

    Reject a time-off request

    Keytime:write
    Peopletime_off.approve
    Featuretime.time_off
  • GET/time-off/types

    List time off types

    Keytime:read
    Peopleanyone
    Featuretime.time_off
  • POST/time-off/types

    Create a time off type

    Keytime:write
    Peoplesettings.manage
    Featuretime.time_off
  • GET/time-off/types/external/{externalId}

    Get a time off type by external ID

    Keytime:read
    Peopleanyone
    Featuretime.time_off
  • PUT/time-off/types/external/{externalId}

    Create or replace a time off type by external ID

    Keytime:write
    Peoplesettings.manage
    Featuretime.time_off
  • GET/time-off/types/{id}

    Get a time off type

    Keytime:read
    Peopleanyone
    Featuretime.time_off
  • PATCH/time-off/types/{id}

    Update a time off type (partial)

    Keytime:write
    Peoplesettings.manage
    Featuretime.time_off
  • DELETE/time-off/types/{id}

    Archive a time off type

    Keytime:write
    Peoplesettings.manage
    Featuretime.time_off
  • GET/time/punches

    List punches

    Keytime:read
    Peoplepunches.read
    Featuretime
  • POST/time/punches:batch

    Send punches in bulk

    Keytime:write
    Peoplenot allowed
    Featuretime
  • GET/timesheets

    List timesheets

    Keytime:read
    Peopletimesheets.read
    Featuretime
  • GET/timesheets/{id}

    Get a timesheet with daily detail and exceptions

    Keytime:read
    Peopletimesheets.read
    Featuretime
  • POST/timesheets/{id}:approve

    Approve a timesheet (manager step)

    Keytime:write
    Peopletimesheets.approve
    Featuretime
  • POST/timesheets/{id}:reject

    Reject a timesheet

    Keytime:write
    Peopletimesheets.approve
    Featuretime
  • POST/timesheets:build

    Build or refresh timesheets from punches

    Keytime:write
    Peopletimesheets.approve
    Featuretime