13 July 2026
Appointments: cancellationReason is now an object
On GET /api/v1/appointments and GET /api/v1/appointments/{id}, cancellationReason has changed
from a plain text name to an object with an id, a name and a link to the matching reason. This is
a breaking change to the appointment response.
If you read the reason's text, change appointment.cancellationReason to
appointment.cancellationReason.name. You can now also match it against
GET /api/v1/cancellation-reasons. As before, it is null when the appointment was not cancelled.
Before:
"cancellationReason": "Client unwell"
After:
"cancellationReason": {
"id": 7,
"name": "Client unwell",
"links": [{ "href": "/api/v1/cancellation-reasons/7", "rel": "self", "method": "GET" }]
}
Cancellation reasons and appointment flags
GET /api/v1/cancellation-reasons and GET /api/v1/appointment-flags list the practice's
cancellation reasons and appointment flags, each with a by-id endpoint.