Skip to content
ShiftlyDevelopers
Documentation menu

Employments

A person's job at the business: when it started, on what basis, and (with the pay permission) what they are paid. An employment is created and ended in Shiftly.

Needs the people:read permission, depending on the operation. The business sees it as "Staff details".

Fields

Employment fields
FieldTypeAccessMeaning
idstringRead-onlyThe employment.
employee_idstringRead-onlyThe person employed.
start_datedate, may be nullRead-onlyThe day the employment started.
employment_basis"fulltime", "parttime", "casual"Read-onlyfulltime, parttime or casual.
ordinary_hours_per_weeknumber, may be nullRead-onlyOrdinary hours a week.
payroll_employee_numberstring, may be nullRead-onlyThe person's number in the payroll system.
pay_basisstring, may be nullRead-onlyhourly or salary. Returned only with pay:read.
base_hourly_ratenumber, may be nullRead-onlyBase rate in dollars an hour. Returned only with pay:read.
hourly_rate_multipliernumber, may be nullRead-onlyPercentage paid above the base rate. Returned only with pay:read.
annual_salarynumber, may be nullRead-onlySalary in dollars a year, for salaried staff. Returned only with pay:read.
salary_weekly_hoursnumber, may be nullRead-onlyHours a week the salary covers. Returned only with pay:read.
classification_levelstring, may be nullRead-onlyAward classification. Returned only with pay:read.
award_codestring, may be nullRead-onlyThe award the person is paid under. Returned only with pay:read.
award_streamstring, may be nullRead-onlyThe stream within the award. Returned only with pay:read.
rate_overridesobject, may be nullRead-onlyRates set for this person in place of the award's, in dollars an hour, by rate category. Returned only with pay:read.
archivedbooleanRead-onlyTrue when the record has been removed in Shiftly.
created_attimestampRead-onlyWhen the record was created.
updated_attimestampRead-onlyWhen the record last changed.

Operations

List employments

GET/v1/employments

Permission: people:read

Query parameters
ParameterTypeMeaning
limitinteger, default 50, up to 200OptionalHow many records per page. Up to 200.
afterstringOptionalThe next_cursor from the previous page.
updated_sincetimestampOptionalOnly records changed at or after this moment. Pair it with include_archived to see removals.
include_archived"true", "false"OptionalInclude records that have been archived.
employee_idstringOptionalOnly this person.
200 response
{
  "data": [
    {
      "id": "66f1c2a4b3d9e8f7a6b5c4d3",
      "employee_id": "66f1c2a4b3d9e8f7a6b5c4d3",
      "start_date": "2026-10-06",
      "employment_basis": "fulltime",
      "ordinary_hours_per_week": 1.5,
      "payroll_employee_number": "text",
      "pay_basis": "text",
      "base_hourly_rate": 1.5,
      "hourly_rate_multiplier": 1.5,
      "annual_salary": 1.5,
      "salary_weekly_hours": 1.5,
      "classification_level": "text",
      "award_code": "text",
      "award_stream": "text",
      "rate_overrides": {},
      "archived": true,
      "created_at": "2026-10-06T09:00:00+11:00",
      "updated_at": "2026-10-06T09:00:00+11:00"
    }
  ],
  "has_more": true,
  "next_cursor": "text"
}
Refusals
StatusWhen
400The error's code is invalid_request or range_too_long. The Errors page describes each code.
401The error's code is invalid_token or token_expired. The Errors page describes each code.
403The error's code is origin_not_allowed, permission_denied, not_available, connection_disconnected, connection_suspended or app_suspended. The Errors page describes each code.
404There is nothing at this address, or no such record in this business.
429Too many requests. Retry-After says when to try again.
500Something went wrong at Shiftly. Quote the request id.
503This environment is not set up for partner apps yet.

Get one employment

GET/v1/employments/{id}

Permission: people:read

200 response
{
  "id": "66f1c2a4b3d9e8f7a6b5c4d3",
  "employee_id": "66f1c2a4b3d9e8f7a6b5c4d3",
  "start_date": "2026-10-06",
  "employment_basis": "fulltime",
  "ordinary_hours_per_week": 1.5,
  "payroll_employee_number": "text",
  "pay_basis": "text",
  "base_hourly_rate": 1.5,
  "hourly_rate_multiplier": 1.5,
  "annual_salary": 1.5,
  "salary_weekly_hours": 1.5,
  "classification_level": "text",
  "award_code": "text",
  "award_stream": "text",
  "rate_overrides": {},
  "archived": true,
  "created_at": "2026-10-06T09:00:00+11:00",
  "updated_at": "2026-10-06T09:00:00+11:00"
}
Refusals
StatusWhen
400The error's code is invalid_request or range_too_long. The Errors page describes each code.
401The error's code is invalid_token or token_expired. The Errors page describes each code.
403The error's code is origin_not_allowed, permission_denied, not_available, connection_disconnected, connection_suspended or app_suspended. The Errors page describes each code.
404There is nothing at this address, or no such record in this business.
429Too many requests. Retry-After says when to try again.
500Something went wrong at Shiftly. Quote the request id.
503This environment is not set up for partner apps yet.

Not available to partner apps

  • PATCH /v1/employments/{id}

    Employments are changed in Shiftly, not by partner apps.