Skip to content

Preview a cover request

POST
/v1/rotations/{rotationId}/cover-requests/preview
curl --request POST \
--url https://api.roundrobinbot.eu/v1/rotations/example/cover-requests/preview \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/*+json' \
--data '{ "cellId": "example", "from": "2026-04-15T12:00:00Z", "operationId": "example", "reason": "example", "recipientUserIds": [ "example" ], "to": "2026-04-15T12:00:00Z" }'

Requires a Slack member access token. API keys are refused. Returns the proposed intervals and rotation ETag without changing duty or creating a request.

rotationId
required
string

UTC interval and selected audience for a new cover request.

object
cellId

Stable cell identifier from the rotation or personal duty read.

string
from

Inclusive requested start, with UTC offset zero.

string format: date-time
operationId

Caller-generated mutation identity, at most 128 characters. Reuse only for an identical retry.

string
reason

Optional explanation, at most 2000 characters. Use an empty string when omitted.

string
recipientUserIds

Between 1 and 100 distinct eligible Slack user identifiers, excluding the requester.

Array<string>
to

Exclusive requested end, with UTC offset zero.

string format: date-time
Examplegenerated
{
"cellId": "example",
"from": "2026-04-15T12:00:00Z",
"operationId": "example",
"reason": "example",
"recipientUserIds": [
"example"
],
"to": "2026-04-15T12:00:00Z"
}

OK

Media typeapplication/json

Conflict evaluation for the proposed terms. A preview does not change duty.

object
canCommit
required

Whether every observed conflict permits acknowledgment and has been acknowledged. The write rechecks current state.

boolean
conflicts
required

Observed conflicts and source uncertainties.

Array<object>

A conflict or an uncertainty affecting the proposed assignment.

object
canAcknowledge
required

Whether explicit acknowledgment permits proceeding with this conflict. False means the conflict blocks the write.

boolean
from
required

The inclusive UTC start of the conflict intersection with the requested interval.

string format: date-time
id
required

The acknowledgment identifier for this conflict and the previewed terms.

string
source
required

arrangement, manualAvailability, googleCalendar or slackStatus.

string
to
required

The exclusive UTC end of the conflict intersection with the requested interval.

string format: date-time
type
required

absence, sameCellArrangement or unknownAvailability.

string
userId
required

The affected person’s Slack user identifier.

string
effectiveFrom
required

The later of the requested start and preview time. The actual write can begin later.

string format: date-time
oneClick

On a cover acceptance preview only: allowed when the acceptance can be committed from one action, unavailable when the caller cannot accept, conflictReview when conflicts need review first. Null on every other preview.

null | string
to
required

The requested exclusive UTC end.

string format: date-time
turnSelection
One of:
null
Examplegenerated
{
"canCommit": true,
"conflicts": [
{
"canAcknowledge": true,
"from": "2026-04-15T12:00:00Z",
"id": "example",
"source": "example",
"to": "2026-04-15T12:00:00Z",
"type": "example",
"userId": "example"
}
],
"effectiveFrom": "2026-04-15T12:00:00Z",
"oneClick": "example",
"to": "2026-04-15T12:00:00Z",
"turnSelection": {
"from": "2026-04-15T12:00:00Z",
"kind": "example",
"to": "2026-04-15T12:00:00Z"
}
}