Skip to content
ShiftlyDevelopers
Documentation menu

Employees

The people who work at the business. A person is added in Shiftly, not through the API. Someone who has left is an archived employment; their own record is no longer shared with the business.

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

Fields

Employee fields
FieldTypeAccessMeaning
idstringRead-onlyThe person.
first_namestringRead-onlyFirst name.
last_namestringRead-onlyLast name.
middle_namesstring, may be nullRead-onlyMiddle names.
preferred_namestring, may be nullRead-onlyThe name they go by.
emailstringRead-onlySign-in email. Read only.
phone_numberstring, may be nullRead-onlyAustralian phone number.
date_of_birthdate, may be nullRead-onlyDate of birth.
gender"M", "F", "I", "N", may be nullRead-onlyM, F, I (indeterminate) or N (not stated).
emergency_contactobject, may be nullRead-onlyWho to call in an emergency.
addressobject, may be nullRead-onlyHome address.
employment_idstring, may be nullRead-onlyTheir employment at this business.
excluded_position_idsarray of stringRead-onlyPositions at this business the person may not be rostered to.
location_idsarray of stringRead-onlyThe locations the person is assigned to. Empty when they can be rostered at any location.
created_attimestampRead-onlyWhen the person's record was created.
updated_attimestampRead-onlyWhen the person's own details last changed.

Operations

List employees

GET/v1/employees

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.
200 response
{
  "data": [
    {
      "id": "66f1c2a4b3d9e8f7a6b5c4d3",
      "first_name": "text",
      "last_name": "text",
      "middle_names": "text",
      "preferred_name": "text",
      "email": "text",
      "phone_number": "text",
      "date_of_birth": "2026-10-06",
      "gender": "M",
      "emergency_contact": {
        "name": null,
        "phone": null,
        "relationship": null
      },
      "address": {
        "street": null,
        "city": null,
        "state": null,
        "post_code": null,
        "country": null
      },
      "employment_id": "66f1c2a4b3d9e8f7a6b5c4d3",
      "excluded_position_ids": [],
      "location_ids": [],
      "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 employee

GET/v1/employees/{id}

Permission: people:read

200 response
{
  "id": "66f1c2a4b3d9e8f7a6b5c4d3",
  "first_name": "text",
  "last_name": "text",
  "middle_names": "text",
  "preferred_name": "text",
  "email": "text",
  "phone_number": "text",
  "date_of_birth": "2026-10-06",
  "gender": "M",
  "emergency_contact": {
    "name": "text",
    "phone": "text",
    "relationship": "text"
  },
  "address": {
    "street": "text",
    "city": "text",
    "state": "text",
    "post_code": "text",
    "country": "text"
  },
  "employment_id": "66f1c2a4b3d9e8f7a6b5c4d3",
  "excluded_position_ids": [
    "66f1c2a4b3d9e8f7a6b5c4d3"
  ],
  "location_ids": [
    "66f1c2a4b3d9e8f7a6b5c4d3"
  ],
  "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/employees/{id}

    Staff details are changed in Shiftly, not by partner apps.