Delete one Shift of a repeating schedule
Remove one Shift from the Series' plan and cancel its live Occurrences, executed immediately: there is no dry run, and no confirmation step. Name the Shift with shiftIndex (path) and, on a weekly rule, weekday (query; 0-6, 0 = Sunday). Higher Shifts are renumbered down by one. ALWAYS send expectStart and expectEnd (query, HH:MM from get_slot_coverage): higher Shifts renumber down after a delete, so the same shiftIndex then names a different Shift, and a retried or replayed DELETE (clients and proxies retry DELETE as idempotent) would cancel it and email its participants. With the precondition a replay is 409 conflict and nothing is written; never retry without re-reading. The Occurrences are cancelled, not deleted: each keeps its seriesId, gets cancelledAt set and becomes detached, and its registrations stay on it. Every participant registered on a cancelled Occurrence is told by email, and by text when they gave a phone number and SMS consent; the optional JSON body's message is added to that notification and note is a private organizer note. A client or proxy that strips DELETE bodies sends the notification without message. The response reports the blast radius: dates cancelled, affectedParticipants and notified. A shiftIndex the Series does not have (or a weekly rule with no weekday) is 400 bad_request, and so is removing the schedule's last Shift — delete the Series instead (DELETE /signups/{id}/slot_series/{seriesId}). Nothing is written in either case. The account behind the credential must have a verified email, or the call is 403 forbidden.
Request
- Base URL: https://thesignup.app/api/v1
- URL: https://thesignup.app/api/v1/signups/{id}/slot_series/{seriesId}/shifts/{shiftIndex}
- Auth: HTTP bearer
Path parameters
The Shift's position in the Series' shift plan (from shiftIndex on its Occurrences), counting from 0.
Query parameters
Precondition, sent together with expectEnd: the HH:MM start the Shift at this index has right now, in the signup's timezone (read it from get_slot_coverage). If the Shift there has other times — e.g. because a delete already renumbered the Shifts — the call is 409 conflict and nothing is written. Always send it.
Precondition, sent together with expectStart: the HH:MM end the Shift at this index has right now, in the signup's timezone. Both or neither.
Weekly schedules only: the weekday the Shift runs on, 0-6 with 0 = Sunday. Ignored on daily and monthly schedules. The Series' rule.activeDays is keyed by the same numbers; get_slot_coverage groups a Shift without a weekday, so derive it from an Occurrence's startTime in the signup's timezone.
Request body
Response
What the delete cancelled and who was told
Changes
No recorded changes to this operation across all 1 revision of this API.