The rota between two dates
GET
/rota
const url = 'https://example.com/rota?from=2026-04-15&to=2026-04-15';const options = { method: 'GET', headers: {cookie: 'bottle.session_token=<bottle.session_token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}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.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”from
required
string format: date
to
required
string format: date
Responses
Section titled “Responses”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
holidayUnit
required
string | null
holidayYearStart
required
string | null
holidayApproval
required
string | null
sicknessApproval
required
string | null
carryOverMax
required
number | null
sicknessAllowance
required
number | null
days
required
Array<object>
object
date
required
string format: date
shift
required
object
start
required
string
end
required
string
working
required
boolean
timeOff
required
object
id
required
UUID v7
string format: uuid
kind
required
string
status
required
string
half
required
string | null
off
required
boolean
closed
required
object
name
required
string
kind
required
string
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
sicknessApproval
required
string
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
message
required
string
issues
required
Array<object>
object
path
required
string
message
required
string
Example
{ "error": "validation", "issues": [ { "path": "email", "message": "Invalid email" } ]}