Skip to content

List appointments

Request

Returns the appointments of the Location as a cursor-paginated list, newest window first by start time with a stable tie-breaker. Client contact data inside expand[]=client uses redacted contact fields without clients:read_contact.

Cancelled appointments are included; filter them out on the status field. There is no status query parameter in the first iteration.

Cursor-paginated list. Default ordering: starts_at desc, id tie-breaker. Cursors use the cursor query parameter, expire after 15 minutes, and are bound to the credential, tenant, and filters. Expired, malformed, or foreign cursors fail with 422 validation_failed using field codes expired_cursor, invalid_cursor, or foreign_cursor.

Security
OAuth2(Required scopes: appointments:read) or RestrictedKey
Path
location_idintegerrequired

Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with 404.

Query
starts_at_fromstring, (date-time)

Only appointments starting at or after this RFC 3339 datetime.

starts_at_tostring, (date-time)

Only appointments starting before this RFC 3339 datetime.

team_member_idinteger

Only appointments of this Team Member.

client_idinteger

Only appointments of this client.

limitinteger, [ 1 .. 100 ]

Page size for cursor pagination. Default is 25; maximum is 100.

Default:25
cursorstring

Opaque cursor from next_cursor. Cursors expire after 15 minutes and are bound to credential, tenant, filters, and ordering; expired, malformed, or foreign cursors fail with 422 validation_failed.

expand[]Array of strings

Relations to embed, one level deep. Expanding client never bypasses PII rules — contact fields are null and listed in redacted_fields without clients:read_contact. Unknown values fail with 422.

Items Enum:"client""team_member"
curl -i -X GET \
  'https://developer.alteg.io/_mock/en/b2b-v3/openapi/locations/{location_id}/appointments?starts_at_from=2019-08-24T14%3A15%3A22Z&starts_at_to=2019-08-24T14%3A15%3A22Z&team_member_id=0&client_id=0&limit=25&cursor=string&expand%5B%5D=client' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

A page of appointments.

Headers
RateLimit-Remaininginteger, (int32), >= 0

Requests left in the most constrained policy window that applies to this request.

RateLimit-Resetinteger, (int32), >= 0

On 429, seconds until the most constrained policy frees up; it equals Retry-After there. On a successful response it reports the length of that policy's window rather than the time left in the current one, so treat it as the window size, not as a countdown — the counter to pace against is RateLimit-Remaining.

RateLimit-Policystring

Most constrained policy applied to the request, as <limit>;w=<window in seconds>.

Example:"10;w=60"
X-Request-Idstring

Request identifier for support and log correlation.

Bodyapplication/json
dataArray of objects(Appointment)required
has_morebooleanrequired

Whether more items exist beyond this page.

next_cursorstring or nullrequired

Opaque cursor for the next page; null on the last page.

objectstringrequired
Value:"list"
Response
{ "object": "list", "data": [ {} ], "has_more": true, "next_cursor": "cur_appt_01J3K6Y8Q4W5E9R2T7A1B0C3D4" }