List Shifts
Retrieve a paginated list of staff shifts.
Endpointโ
GET /v1/staff/shifts
Authenticationโ
Requires an API key with the staff:read scope.
Query Parametersโ
| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number |
per_page | integer | 15 | Items per page (max 100) |
date | string | - | Filter by shift date (YYYY-MM-DD) |
staff_id | integer | - | Filter by staff member ID |
location_id | integer | - | Filter by location ID |
status | string | - | Filter by status: Open, Unpublished, Published, Updated, Active, Inactive |
sort | string | shift_date | Sort field: id, shift_date, start_time, end_time, status, created_at |
direction | string | desc | Sort direction: asc or desc |
Responseโ
Success (200 OK)โ
{
"data": [
{
"id": 1,
"staff": {
"id": 5,
"first_name": "Jane",
"last_name": "Smith"
},
"staff_id": 5,
"location": {
"id": 2,
"name": "Beach Location"
},
"location_id": 2,
"shift_date": "2026-03-15",
"start_time": "09:00:00",
"end_time": "17:00:00",
"duration_calculation": "8 hours",
"break_setting": true,
"break_type": "lunch_break",
"break_time": "30",
"break_payment": "paid",
"shift_notes": "Morning briefing at 8:45",
"status": "Published",
"publish_type": null,
"created_at": "2026-03-10T08:00:00+00:00",
"updated_at": "2026-03-10T08:00:00+00:00"
}
],
"meta": {
"current_page": 1,
"per_page": 15,
"total": 24,
"total_pages": 2,
"request_id": "req_abc123",
"timestamp": "2026-03-10T12:00:00+00:00"
}
}
Response Fieldsโ
Shiftโ
| Field | Type | Description |
|---|---|---|
id | integer | Unique shift identifier |
staff | object|null | Assigned staff member (id, first_name, last_name) |
staff_id | integer|null | Staff member ID |
location | object|null | Shift location (id, name) |
location_id | integer|null | Location ID |
shift_date | string | Shift date (YYYY-MM-DD) |
start_time | string | Start time (HH:MM:SS) |
end_time | string | End time (HH:MM:SS) |
duration_calculation | string|null | Human-readable duration (e.g., "8 hours 30 minutes") |
break_setting | boolean | Whether break is enabled |
break_type | string|null | Break type (e.g., lunch_break, tea_break) |
break_time | string|null | Break duration in minutes |
break_payment | string|null | Break payment type (paid, unpaid) |
shift_notes | string|null | Notes for the shift |
status | string | Shift status |
publish_type | boolean|null | Publish type flag |
created_at | string | ISO 8601 datetime |
updated_at | string | ISO 8601 datetime |
Errorsโ
| Status | Code | Description |
|---|---|---|
| 401 | authentication_required | No API key provided |
| 401 | invalid_api_key | Invalid API key |
| 403 | insufficient_scope | API key lacks staff:read scope |
Example Requestโ
curl -X GET "https://app.equipdash.com/api/v1/staff/shifts?date=2026-03-15&staff_id=5" \
-H "Authorization: Bearer eqd_live_abc123xyz789..."