List Appointments
Changed onList Appointments. Returns one-on-one, group, and class bookings. The booking_type field distinguishes them, and group/class rows expose capacity, participant_count, and (via _include=participants) their participants. For class bookings patient_id is null.
Filtering: Filter records by field values using the format: field[operator]=value
Available fields:
- public_id: string
- start_at: ISO 8601 datetime (e.g. 2025-01-01T12:00:00Z)
- end_at: ISO 8601 datetime
- patient_id: UUID String
- staff_member_id: UUID String
- location_id: UUID String
- treatment_id: UUID String
- created_at: ISO 8601 datetime
- updated_at: ISO 8601 datetime
Available operators:
- eq: Equals
- gt: Greater than
- gte: Greater than or equal
- lt: Less than
- lte: Less than or equal
Date-time filters (ex. start_at, end_at, created_at, updated_at) must:
- Use ISO 8601 date-time format
- Be precise to the second (e.g. 2025-01-01T12:00:00Z)
Examples:
/appointments?public_id[eq]=abc123
/appointments?created_at[gte]=2025-01-01T00:00:00Z&created_at[lt]=2025-01-02T00:00:00Z
Request
- Base URLhttps://jdpdocsdemo.jane.qa
- URLhttps://jdpdocsdemo.jane.qa/api/2026-01-01/appointments
- AuthOAuth 2Authorization code: https://login.id.janeapp.com/realms/jane_partner_sandbox/protocol/openid-connect/auth?response_type=code&resource=https://jdpdocsdemo.jane.qa&prompt=consentToken URL: https://login.id.janeapp.com/realms/jane_partner_sandbox/protocol/openid-connect/token scopes: appointments:read
Query parameters
The Base64 encoded cursor to start the list from. Contains page and size information for pagination.
The number of records to return
Comma-separated list of fields to sort by. Prefix a field with '-' for descending order.
Examples:
- sort=name,-created_at sorts by name ascending, then created_at descending.
- sort=-updated_at sorts by updated_at descending.
Available fields:
- start_at
- end_at
- booked_at
- created_at
- updated_at
Filter by public_id. Example: public_id[eq]=123
Filter by start_at timestamp (ISO 8601). Example: start_at[gte]=2025-01-01T00:00:00Z
Filter by end_at timestamp (ISO 8601). Example: end_at[lte]=2025-01-02T00:00:00Z
Filter by patient_id. Example: patient_id[eq]=123
Filter by staff_member_id. Example: staff_member_id[eq]=123
Filter by location_id. Example: location_id[eq]=123
Filter by treatment_id. Example: treatment_id[eq]=123
Filter by created_at timestamp (ISO 8601). Example: created_at[gte]=2025-01-01T00:00:00Z
Filter by updated_at timestamp (ISO 8601). Example: updated_at[lt]=2025-01-02T00:00:00Z
Comma-separated list of related resources to sideload alongside each appointment.
Note: this parameter is currently consumed only by Jane's internal Companion app and is not yet part of the stable public contract. The shape and supported values may change without a CalVer version bump while we iterate.
When provided, the response includes a top-level included array of deduplicated resources in a JSON:API-inspired { type, id, attributes } shape. Deduplication is per page, so a page of 50 appointments referencing 3 patients yields 3 patient entries.
Supported values:
- patient -- exposes first_name, last_name, preferred_name. Requires the patients:read scope.
- treatment -- exposes name. Requires the treatments:read scope.
- participants -- for group/class bookings, populates each appointment's inline participants array (patient_id, state, arrived_at, no_show_at, cancelled_at). Requires the appointments:read scope (no extra scope beyond the appointment itself). Unlike patient/treatment, participants render inline on each appointment rather than in the top-level included array, because they have no standalone identity.
- room -- exposes name. Requires the rooms:read scope.
If the token lacks the required scope for a requested resource, the API returns 403 with a message naming the missing scope. (The parent payload already exposes the related resource's ID, so there is no existence-leak concern.) Unknown values return 400 with the list of allowed values.
Example: _include=patient,treatment,participants,room
Response
The appointments
Example response
{
"links": {
"after": "/api/2026-01-01/appointments?page[cursor]=eyJwYWdlIjozLCJzaXplIjo1fQ==&page[limit]=5"
},
"cursor": "eyJwYWdlIjozLCJzaXplIjo1fQ=="
}Changes
- info
endpoint added
- info