Skip to content

Delete a rotation

DELETE
/v1/rotations/{rotationId}
curl --request DELETE \
--url https://api.roundrobinbot.eu/v1/rotations/example \
--header 'Authorization: Bearer <token>' \
--header 'If-Match: example'

Removes the rotation and everything that hangs off it: whoever was on duty comes off duty, the on-duty user group is emptied, the channel topic is put back and the calendar entries go. It answers 204 with no body, and a second delete of the same rotation answers 404. If-Match is required, as it is on every write here, and a validator that has been spent is refused with 412. A delete cannot be corrected by sending it again, so a caller working from a stale read is stopped rather than allowed to remove a rotation that has changed since they looked at it. Read the rotation, then send its ETag. There is no undelete. A rotation you may want back is better disabled, with PATCH /v1/rotations/{rotationId} and enabled: false: it keeps its configuration and its history, holds whoever was on duty, and hands over to nobody.

rotationId
required
string
If-Match
required
string

The ETag from your last read of this rotation, sent back exactly as you received it, quotes included. The write happens only if nothing changed in between: a stale validator is answered 412 and nothing is written. Send * to write against whatever is current on purpose. Omitting the header is 428, never an unconditional write. https://docs.roundrobinbot.eu/api/conventions/#conditional-writes

No Content

Media typeapplication/json

Bad Request

Media typeapplication/json
object
type
null | string
title
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
detail
null | string
instance
null | string
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example"
}

Unauthorized

Media typeapplication/json
object
type
null | string
title
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
detail
null | string
instance
null | string
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example"
}

Forbidden

Media typeapplication/json
object
type
null | string
title
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
detail
null | string
instance
null | string
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example"
}

Not Found

Media typeapplication/json
object
type
null | string
title
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
detail
null | string
instance
null | string
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example"
}

Precondition Failed

Media typeapplication/json
object
type
null | string
title
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
detail
null | string
instance
null | string
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example"
}

Precondition Required

Media typeapplication/json
object
type
null | string
title
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
detail
null | string
instance
null | string
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example"
}