Ask for or book time off
POST
/time-off
const url = 'https://example.com/time-off';const options = { method: 'POST', headers: { cookie: 'bottle.session_token=<bottle.session_token>', 'Content-Type': 'application/json' }, body: '{"userId":"example","kind":"holiday","startsOn":"2026-04-15","endsOn":"2026-04-15","halfStart":true,"halfEnd":true,"note":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/time-off \ --header 'Content-Type: application/json' \ --cookie bottle.session_token=<bottle.session_token> \ --data '{ "userId": "example", "kind": "holiday", "startsOn": "2026-04-15", "endsOn": "2026-04-15", "halfStart": true, "halfEnd": true, "note": "example" }'A driver asks for their own; whether it is booked straight away depends on the business’s settings and theirs. The office can book it for anybody, and that is booked at once.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”Media typeapplication/json
object
userId
string
kind
required
string
startsOn
required
string format: date
endsOn
required
string format: date
halfStart
boolean
halfEnd
boolean
note
string | null
Responses
Section titled “Responses”Booked or asked for
Media typeapplication/json
object
id
required
UUID v7
string format: uuid
userId
required
string
userName
required
string
kind
required
string
startsOn
required
string format: date
endsOn
required
string format: date
halfStart
required
boolean
halfEnd
required
boolean
note
required
string | null
status
required
string
days
required
number
unpaidDays
required
number
decidedByName
required
string | null
decidedAt
required
string | null format: date-time
createdAt
required
string format: date-time
Example
{ "id": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f", "kind": "holiday", "status": "requested"}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"}Not found
Media typeapplication/json
object
error
required
string
message
required
string
Example
{ "error": "not_found", "message": "Customer not found"}Conflict
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" } ]}