Skip to content
ShiftlyDevelopers
Documentation menu

Leave blackout periods

Periods when the business limits leave, such as a busy season. Dates are calendar days at the business's first location.

Needs the leave:read permission, depending on the operation. The business sees it as "Leave and balances".

Fields

LeaveBlackout fields
FieldTypeAccessMeaning
idstringRead-onlyThe blackout period.
namestringRead-onlyThe period's name.
start_datedateRead-onlyFirst day of the period.
end_datedateRead-onlyLast day of the period.
enforcement"hard_block", "soft_warn", "informational"Read-onlyhard_block stops staff asking for these kinds of leave in Shiftly, soft_warn warns them, informational only shows the period. None of them stops a manager in Shiftly, or your app, from submitting leave.
leave_typesarray of stringRead-onlyThe kinds of leave the period applies to, as keys from the leave types list.
reasonstring, may be nullRead-onlyWhy the period is blocked out, as staff see it.
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 leave blackout periods

GET/v1/leave-blackouts

Permission: leave: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.
fromdateOptionalThe first day of the range, in the location's timezone. With to, at most 92 days.
todateOptionalThe last day of the range, inclusive.
200 response
{
  "data": [
    {
      "id": "66f1c2a4b3d9e8f7a6b5c4d3",
      "name": "text",
      "start_date": "2026-10-06",
      "end_date": "2026-10-06",
      "enforcement": "hard_block",
      "leave_types": [],
      "reason": "text",
      "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 leave blackout period

GET/v1/leave-blackouts/{id}

Permission: leave:read

200 response
{
  "id": "66f1c2a4b3d9e8f7a6b5c4d3",
  "name": "text",
  "start_date": "2026-10-06",
  "end_date": "2026-10-06",
  "enforcement": "hard_block",
  "leave_types": [
    "text"
  ],
  "reason": "text",
  "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.