Skip to content

The rota between two dates

GET
/rota
curl --request GET \
--url 'https://example.com/rota?from=2026-04-15&to=2026-04-15' \
--cookie bottle.session_token=<bottle.session_token>

Each driver’s days: the shift their pattern gives, time off, cover, and whether they are down to work, which is what planning the day reads. With each, how much holiday is left this year and how many days of sickness. A driver gets only their own row. At most 92 days at a time.

from
required
string format: date
to
required
string format: date

The rota

Media typeapplication/json
object
from
required
string format: date
to
required
string format: date
drivers
required
Array<object>
object
userId
required
string
name
required
string
shiftPatternId
required

UUID v7

string | null format: uuid
shiftPatternName
required
string | null
shiftPatternColour
required
string | null
settings
required
object
shiftPatternId
required

UUID v7

string | null format: uuid
shiftPatternFrom
required
string | null format: date
holidayAllowance
required
number | null
<= 366
holidayUnit
required
string | null
Allowed values: days weeks
holidayYearStart
required
string | null
/^(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$/
holidayApproval
required
string | null
Allowed values: auto manual
sicknessApproval
required
string | null
Allowed values: auto manual
carryOverMax
required
number | null
<= 366
sicknessAllowance
required
number | null
<= 366
days
required
Array<object>
object
date
required
string format: date
shift
required
object
start
required
string
/^([01]\d|2[0-3]):[0-5]\d$/
end
required
string
/^([01]\d|2[0-3]):[0-5]\d$/
working
required
boolean
timeOff
required
object
id
required

UUID v7

string format: uuid
kind
required
string
Allowed values: holiday sickness other
status
required
string
Allowed values: requested approved declined cancelled
half
required
string | null
Allowed values: am pm
off
required
boolean
closed
required
object
name
required
string
kind
required
string
Allowed values: bankHoliday closure
covering
required
Array<object>
object
id
required

UUID v7

string format: uuid
forName
required
string | null
patchName
required
string | null
coveredBy
required
Array<object>
object
id
required

UUID v7

string format: uuid
name
required
string
balance
required
object
holiday
required
object
allowanceDays
required
number
carriedDays
required
number
approvedDays
required
number
requestedDays
required
number
remainingDays
required
number
unpaidDays
required
number
yearStart
required
string format: date
yearEnd
required
string format: date
sickness
required
object
days
required
number
allowanceDays
required
number | null
unpaidDays
required
number
spells
required
integer
yearStart
required
string format: date
yearEnd
required
string format: date
holidayApproval
required
string
Allowed values: auto manual
sicknessApproval
required
string
Allowed values: auto manual
Example
{
"drivers": [
{
"shiftPatternId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"settings": {
"shiftPatternId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"holidayUnit": "days",
"holidayYearStart": "04-01",
"holidayApproval": "auto",
"sicknessApproval": "auto"
},
"days": [
{
"shift": {
"start": "07:30",
"end": "07:30"
},
"timeOff": {
"id": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"kind": "holiday",
"status": "requested",
"half": "am"
},
"closed": {
"kind": "bankHoliday"
},
"covering": [
{
"id": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f"
}
],
"coveredBy": [
{
"id": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f"
}
]
}
],
"balance": {
"holidayApproval": "auto",
"sicknessApproval": "auto"
}
}
]
}

Not signed in

Media typeapplication/json
object
error
required
string
message
required
string
Example
{
"error": "not_found",
"message": "Customer not found"
}

Not a member, or without the permission this needs

Media typeapplication/json
object
error
required
string
message
required
string
Example
{
"error": "not_found",
"message": "Customer not found"
}

Validation failed

Media typeapplication/json
object
error
required
string
Allowed values: validation
message
required
string
issues
required
Array<object>
object
path
required
string
message
required
string
Example
{
"error": "validation",
"issues": [
{
"path": "email",
"message": "Invalid email"
}
]
}