Slots

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.

delete/signups/{id}/slot_series/{seriesId}/shifts/{shiftIndex}

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

idstring uuid required
seriesIdstring uuid required
shiftIndexstring required

The Shift's position in the Series' shift plan (from shiftIndex on its Occurrences), counting from 0.

Query parameters

expectStartstring

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.

expectEndstring

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.

weekdaystring

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

notestring nullable

A private note for organizers, kept on the Occurrence and never shown to participants.

messagestring nullable

Added to the email and text participants receive about this change.

Response

What the delete cancelled and who was told

confirmedboolean required

Always true from this route: the call executed.

datesinteger required

Live Occurrences of the Shift (on that weekday, for a weekly rule) that were cancelled. Already-cancelled ones are not counted.

affectedParticipantsinteger required

Registrations sitting on the cancelled Occurrences. They are kept, on cancelled dates.

Changes

No recorded changes to this operation across all 1 revision of this API.