Skip to main content

Staff Availability API

Availability is when a staff member can work. It has two parts:

  • Their usual week: one row per day, each either off or on with a start and end time.
  • Specific dates: an answer for one date (can work, with hours, or can't work). A date answer beats their usual week for that day.

Staff can set both themselves from their own link, with no login. These endpoints let you read and set the same data, and send staff their link.

Availability guides who gets picked to work. The guide picker lists people outside their hours after everyone else, marked "Outside their hours", but never blocks them. Days off are separate: they are time off entries, and a day off a staff member asks for from their link arrives as pending until you approve it.

Endpointsโ€‹

MethodEndpointDescriptionScope Required
GET/v1/staff/{staffId}/availabilityGet a staff member's usual week and date answersstaff:read
PUT/v1/staff/{staffId}/availabilitySet their usual week, specific dates, or bothstaff:write
POST/v1/staff/{staffId}/availability-linkSend one staff member their linkstaff:write
POST/v1/staff/availability-requestsAsk several staff members at once, for every week or for a date rangestaff:write

The availability objectโ€‹

Every endpoint that returns availability uses this shape.

{
"week": {
"monday": { "on": true, "start": "09:00", "end": "17:00" },
"tuesday": { "on": true, "start": "09:00", "end": "17:00" },
"wednesday": { "on": false, "start": "09:00", "end": "17:00" },
"thursday": { "on": true, "start": "09:00", "end": "17:00" },
"friday": { "on": true, "start": "09:00", "end": "17:00" },
"saturday": { "on": true, "start": "07:00", "end": "12:00" },
"sunday": { "on": false, "start": "09:00", "end": "17:00" }
},
"set_by": "staff",
"dates": [
{ "date": "2026-10-05", "can_work": false, "start": null, "end": null },
{ "date": "2026-10-06", "can_work": true, "start": "12:00", "end": "18:00" }
]
}
FieldTypeDescription
weekobjectOne entry per day, monday to sunday. on is false on days they don't work. Times are HH:MM, 24-hour. A day that is off shows 09:00 to 17:00 as a placeholder.
set_bystring or nullstaff when the staff member set their own week from their link, owner when it was set in the portal, the API, the phone app or Dash, null when no week is set.
datesarrayAnswers for today and later dates, oldest first, up to 60. start and end are null when can_work is false.

Each staff member has one link, in the form https://app.equipdash.com/my-hours/{token}. It keeps working until you make a new one in the portal (Staff > (name) > Schedule > Send (name) their link > Make a new link), at which point the old link shows "This link no longer works."

Authenticationโ€‹

All endpoints require a bearer API key. Reads need staff:read; everything else needs staff:write. The two sending endpoints are limited to 30 calls a minute.