Availability
When people have said they can and cannot work. Each record is a rule that may repeat, not a list of days.
Needs the roster:read permission, depending on the operation. The business sees it as "Rosters and shifts".
Fields
| Field | Type | Access | Meaning |
|---|---|---|---|
| id | string | Read-only | The availability rule. |
| employee_id | string | Read-only | Whose availability this is. |
| polarity | "available", "unavailable" | Read-only | available or unavailable. |
| all_day | boolean | Read-only | True when the rule covers the whole day. |
| start_minutes | integer, may be null | Read-only | Minutes after midnight the rule starts, on the clock at whichever location a shift is at. |
| end_minutes | integer, may be null | Read-only | Minutes after midnight the rule ends. |
| start_date | date | Read-only | First day the rule applies. |
| end_date | date, may be null | Read-only | Last day the rule applies. Empty when it has no end. |
| ended_on | date, may be null | Read-only | The day the rule was ended early. |
| repeat | "none", "weekly", "fortnightly", "monthly" | Read-only | none, weekly, fortnightly or monthly. |
| comment | string, may be null | Read-only | What the person wrote, where the connecting person may see it. |
| created_at | timestamp | Read-only | When the rule was created. |
| updated_at | timestamp | Read-only | When the rule last changed. |
Operations
List availability rules that apply in a date range
GET/v1/availability
Permission: roster:read
| Parameter | Type | Meaning | |
|---|---|---|---|
| from | date | Required | The first day of the range, in the location's timezone. With to, at most 92 days. |
| to | date | Required | The last day of the range, inclusive. |
| employee_id | string | Optional | Only this person. |
{
"data": [
{
"id": "66f1c2a4b3d9e8f7a6b5c4d3",
"employee_id": "66f1c2a4b3d9e8f7a6b5c4d3",
"polarity": "available",
"all_day": true,
"start_minutes": 1,
"end_minutes": 1,
"start_date": "2026-10-06",
"end_date": "2026-10-06",
"ended_on": "2026-10-06",
"repeat": "none",
"comment": "text",
"created_at": "2026-10-06T09:00:00+11:00",
"updated_at": "2026-10-06T09:00:00+11:00"
}
],
"has_more": true,
"next_cursor": "text"
}| Status | When |
|---|---|
| 400 | The error's code is invalid_request or range_too_long. The Errors page describes each code. |
| 401 | The error's code is invalid_token or token_expired. The Errors page describes each code. |
| 403 | The error's code is origin_not_allowed, permission_denied, not_available, connection_disconnected, connection_suspended or app_suspended. The Errors page describes each code. |
| 404 | There is nothing at this address, or no such record in this business. |
| 429 | Too many requests. Retry-After says when to try again. |
| 500 | Something went wrong at Shiftly. Quote the request id. |
| 503 | This environment is not set up for partner apps yet. |
