Skip to content

List Team Availability

GET
/appointments/availability/team

Every teammate’s availability windows for one day.

Cursor-paged on user id rather than offset, so a team that changes between pages does not shift rows under you. An empty date_ranges means that person has not set up a schedule, not that they are fully booked.

Authorizations

Parameters

Query Parameters

date
required

The day, YYYY-MM-DD.

string
/^\d{4}-\d{2}-\d{2}$/

The day, YYYY-MM-DD.

viewer_tz

IANA timezone. INFORMATIONAL - the windows come back in UTC and the caller renders them; this shifts nothing server-side.

string
default: UTC

IANA timezone. INFORMATIONAL - the windows come back in UTC and the caller renders them; this shifts nothing server-side.

limit
integer
default: 50 >= 1 <= 100
cursor
Any of:
integer

next_cursor from the previous page.

search
Any of:
string

Name or email substring.

user_ids
Any of:
Array<integer>

Only these teammates. REPEATABLE (?user_ids=1&user_ids=2), and it takes PRECEDENCE over search - sending both ignores the search.

Header Parameters

X-Target-Org-Id
Any of:
string

Responses

200

Successful Response

object
data
required

An open envelope for a filter, a setting, an embed config or a slot grid.

Open because org settings gain branding fields as the booking page does and the embed config gains styling keys as the widget does. Closing it would drop a field the app had already started returning.

object
key
additional properties
any
pagination
Any of:
object
has_next
required

Whether there are more pages

boolean
limit
required

Items per page

integer
next_cursor
Any of:
string
notes
Any of:
Array<string>
page
required

Current page number (1-indexed)

integer
total
required

Total number of items

integer
total_available
Any of:
integer
total_is_lower_bound
Any of:
boolean

422

Validation Error

object
detail
Array<object>
object
loc
required
Array
msg
required
string
type
required
string