Bulk Update Shifts
Change the start and/or end time on all shifts within a date range. By default only unpublished shifts are updated; pass only_unpublished: false to also update published shifts.
Endpointโ
POST /v1/staff/shifts/bulk-update
Authenticationโ
Requires an API key with the staff:write scope.
Request Bodyโ
| Parameter | Type | Required | Description |
|---|---|---|---|
start_date | string | Yes | Start of the date range (YYYY-MM-DD) |
end_date | string | Yes | End of the date range (YYYY-MM-DD, must be โฅ start_date) |
new_start_time | string | Conditional | New start time (HH:MM). At least one of new_start_time or new_end_time is required. |
new_end_time | string | Conditional | New end time (HH:MM). At least one of new_start_time or new_end_time is required. |
only_unpublished | boolean | No | When true (default), only unpublished shifts are updated |
Responseโ
Success (200 OK)โ
{
"data": {
"updated_count": 8
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-04-01T09:00:00+00:00"
}
}
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:write scope |
| 422 | validation_error | Missing or invalid fields |
| 422 | nothing_to_change | Neither new_start_time nor new_end_time provided |
Example Requestโ
curl -X POST "https://app.equipdash.com/api/v1/staff/shifts/bulk-update" \
-H "Authorization: Bearer eqd_live_abc123xyz789..." \
-H "Content-Type: application/json" \
-d '{
"start_date": "2026-04-07",
"end_date": "2026-04-13",
"new_start_time": "08:00",
"new_end_time": "16:00",
"only_unpublished": true
}'