{
    "version": "https://jsonfeed.org/version/1",
    "title": "Zanda Health Public API release notes",
    "home_page_url": "https://zandaapi.zandahealth.com/docs/changelog",
    "description": "Changes to the Zanda Health Public API",
    "items": [
        {
            "id": "https://zandaapi.zandahealth.com/docs/changelog/2026/10/08/release",
            "content_html": "<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"client-profiles-alberta-and-british-columbia-time-zones\">Client profiles: Alberta and British Columbia time zones<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/10/08/release#client-profiles-alberta-and-british-columbia-time-zones\" class=\"hash-link\" aria-label=\"Direct link to Client profiles: Alberta and British Columbia time zones\" title=\"Direct link to Client profiles: Alberta and British Columbia time zones\" translate=\"no\">​</a></h3>\n<p>A client profile saved with <code>timeZone</code> <code>America/Edmonton</code>, <code>America/Yellowknife</code>, <code>America/Inuvik</code> or\n<code>Canada/Mountain</code> now reads back as <code>America/Edmonton</code> instead of <code>America/Denver</code>, and one saved\nwith <code>America/Vancouver</code> or <code>Canada/Pacific</code> reads back as <code>America/Vancouver</code> instead of\n<code>America/Los_Angeles</code>. Time zone answers from <code>GET /api/v1/forms/{id}</code> gain \"Calgary, Edmonton\" and\n\"Vancouver, Victoria\", and the US options now read \"Denver, Salt Lake City\" and \"Los Angeles, Seattle\".</p>",
            "url": "https://zandaapi.zandahealth.com/docs/changelog/2026/10/08/release",
            "title": "8 October 2026",
            "summary": "Client profiles: Alberta and British Columbia time zones",
            "date_modified": "2026-10-08T00:00:00.000Z",
            "tags": [
                "Changed"
            ]
        },
        {
            "id": "https://zandaapi.zandahealth.com/docs/changelog/2026/09/30/release",
            "content_html": "<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"appointment-resource-assignment\">Appointment resource assignment<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/09/30/release#appointment-resource-assignment\" class=\"hash-link\" aria-label=\"Direct link to Appointment resource assignment\" title=\"Direct link to Appointment resource assignment\" translate=\"no\">​</a></h3>\n<p><code>PATCH /api/v1/appointments/{id}</code>, <code>PATCH /api/v1/group-appointments/{id}</code> and <code>PATCH /api/v1/group-appointments/{appointmentId}/participants/{clientId}</code> no longer report success when a resource item you asked for could not be attached; the request fails instead of returning <code>200</code> with the resource silently missing. Moving an appointment and assigning a resource item in the same request now also attaches it when that resource is only busy at the appointment's previous time.</p>",
            "url": "https://zandaapi.zandahealth.com/docs/changelog/2026/09/30/release",
            "title": "30 September 2026",
            "summary": "Appointment resource assignment",
            "date_modified": "2026-09-30T00:00:00.000Z",
            "tags": [
                "Fixed",
                "Beta"
            ]
        },
        {
            "id": "https://zandaapi.zandahealth.com/docs/changelog/2026/09/28/release",
            "content_html": "<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"appointment-write-endpoints-are-published\">Appointment write endpoints are published<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/09/28/release#appointment-write-endpoints-are-published\" class=\"hash-link\" aria-label=\"Direct link to Appointment write endpoints are published\" title=\"Direct link to Appointment write endpoints are published\" translate=\"no\">​</a></h3>\n<p>Creating and updating appointments, group appointments and group participants is now available to\nevery practice, and the group appointment operations appear in the API reference for the first time.</p>",
            "url": "https://zandaapi.zandahealth.com/docs/changelog/2026/09/28/release",
            "title": "28 September 2026",
            "summary": "Appointment write endpoints are published",
            "date_modified": "2026-09-28T00:00:00.000Z",
            "tags": [
                "Changed"
            ]
        },
        {
            "id": "https://zandaapi.zandahealth.com/docs/changelog/2026/09/23/release",
            "content_html": "<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"created-and-modified-dates-on-payments\">Created and modified dates on payments<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/09/23/release#created-and-modified-dates-on-payments\" class=\"hash-link\" aria-label=\"Direct link to Created and modified dates on payments\" title=\"Direct link to Created and modified dates on payments\" translate=\"no\">​</a></h3>\n<p>Payment responses now carry <code>created</code>, when the payment was created, and <code>userModified</code>, when its\ndetails or invoice allocations were last changed. <code>userModified</code> is null until the payment is first\nchanged. Prefer it over <code>lastModified</code> for detecting edits: <code>lastModified</code> is broader and also moves\nwhen the record is rewritten without any of those values changing.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"invoice-allocations-on-payments\">Invoice allocations on payments<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/09/23/release#invoice-allocations-on-payments\" class=\"hash-link\" aria-label=\"Direct link to Invoice allocations on payments\" title=\"Direct link to Invoice allocations on payments\" translate=\"no\">​</a></h3>\n<p>Payment responses now carry an <code>invoices</code> collection: one entry per invoice the payment was\nallocated to, with a link to it and the amount allocated. An unallocated payment returns an empty\ncollection.</p>",
            "url": "https://zandaapi.zandahealth.com/docs/changelog/2026/09/23/release",
            "title": "23 September 2026",
            "summary": "Created and modified dates on payments",
            "date_modified": "2026-09-23T00:00:00.000Z",
            "tags": [
                "Added"
            ]
        },
        {
            "id": "https://zandaapi.zandahealth.com/docs/changelog/2026/09/21/release",
            "content_html": "<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"write-operations-are-now-linked-from-the-responses-you-already-fetch\">Write operations are now linked from the responses you already fetch<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/09/21/release#write-operations-are-now-linked-from-the-responses-you-already-fetch\" class=\"hash-link\" aria-label=\"Direct link to Write operations are now linked from the responses you already fetch\" title=\"Direct link to Write operations are now linked from the responses you already fetch\" translate=\"no\">​</a></h3>\n<p>Responses using <code>application/vnd.zandaapi.hateoas+json</code> now advertise the write operations available,\nso you can act by following a link rather than building the URL yourself. A collection carries\n<code>create</code>; the operations that act on a record — update, delete and the like — are on that record's\nown response, so fetch it and follow the links it returns.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"personal-appointments\">Personal appointments<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/09/21/release#personal-appointments\" class=\"hash-link\" aria-label=\"Direct link to Personal appointments\" title=\"Direct link to Personal appointments\" translate=\"no\">​</a></h3>\n<p>Added <code>GET /api/v1/personal-appointments</code> and <code>GET /api/v1/personal-appointments/{id}</code>, which list\nthe practice's personal appointments and fetch one by id.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"practitioner-roster-overrides\">Practitioner roster overrides<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/09/21/release#practitioner-roster-overrides\" class=\"hash-link\" aria-label=\"Direct link to Practitioner roster overrides\" title=\"Direct link to Practitioner roster overrides\" translate=\"no\">​</a></h3>\n<p>Added <code>GET /api/v1/practitioner-roster-overrides</code> and\n<code>GET /api/v1/practitioner-roster-overrides/{id}</code>, which return the one-off changes made to a\npractitioner's recurring roster: a day off, a conference, an extra evening clinic. Each override\ngives the date range and the daily time window it covers, whether it adds or removes availability,\nand whether those hours can be booked online. Filter by practitioner, location, active status,\navailability, online bookings, or the date an override is in effect.</p>",
            "url": "https://zandaapi.zandahealth.com/docs/changelog/2026/09/21/release",
            "title": "21 September 2026",
            "summary": "Write operations are now linked from the responses you already fetch",
            "date_modified": "2026-09-21T00:00:00.000Z",
            "tags": [
                "Added"
            ]
        },
        {
            "id": "https://zandaapi.zandahealth.com/docs/changelog/2026/09/17/release",
            "content_html": "<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"beta-endpoints-are-labelled\">Beta endpoints are labelled<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/09/17/release#beta-endpoints-are-labelled\" class=\"hash-link\" aria-label=\"Direct link to Beta endpoints are labelled\" title=\"Direct link to Beta endpoints are labelled\" translate=\"no\">​</a></h3>\n<p>Endpoints that are still in beta now show a <code>[BETA]</code> prefix or a <code>BETA</code> chip in the documentation pages.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"practitioner-rosters\">Practitioner rosters<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/09/17/release#practitioner-rosters\" class=\"hash-link\" aria-label=\"Direct link to Practitioner rosters\" title=\"Direct link to Practitioner rosters\" translate=\"no\">​</a></h3>\n<p>Added <code>GET /api/v1/practitioner-roster</code> and <code>GET /api/v1/practitioner-roster/{id}</code>, which return a\npractitioner's recurring working pattern: the date range, the location, how often the pattern\nrepeats, and the time slots for all seven weekdays, including any services a slot excludes from\nonline booking. Filter by practitioner, location, active status, availability, online bookings, or\nthe date a roster is in effect.</p>",
            "url": "https://zandaapi.zandahealth.com/docs/changelog/2026/09/17/release",
            "title": "17 September 2026",
            "summary": "Beta endpoints are labelled",
            "date_modified": "2026-09-17T00:00:00.000Z",
            "tags": [
                "Changed",
                "Added"
            ]
        },
        {
            "id": "https://zandaapi.zandahealth.com/docs/changelog/2026/09/15/release",
            "content_html": "<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"invoices-can-be-created-and-updated-by-every-practice\">Invoices can be created and updated by every practice<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/09/15/release#invoices-can-be-created-and-updated-by-every-practice\" class=\"hash-link\" aria-label=\"Direct link to Invoices can be created and updated by every practice\" title=\"Direct link to Invoices can be created and updated by every practice\" translate=\"no\">​</a></h3>\n<p><code>POST /api/v1/invoices</code> and <code>PATCH /api/v1/invoices/{id}</code> are out of limited release and enabled for\nall practices. Request and response shapes are unchanged, so an integration built against them\nduring the limited release needs no update.</p>",
            "url": "https://zandaapi.zandahealth.com/docs/changelog/2026/09/15/release",
            "title": "15 September 2026",
            "summary": "Invoices can be created and updated by every practice",
            "date_modified": "2026-09-15T00:00:00.000Z",
            "tags": [
                "Changed"
            ]
        },
        {
            "id": "https://zandaapi.zandahealth.com/docs/changelog/2026/09/10/release",
            "content_html": "<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"appointments-can-be-invoiced-for-billable-items\">Appointments can be invoiced for billable items<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/09/10/release#appointments-can-be-invoiced-for-billable-items\" class=\"hash-link\" aria-label=\"Direct link to Appointments can be invoiced for billable items\" title=\"Direct link to Appointments can be invoiced for billable items\" translate=\"no\">​</a></h3>\n<p><code>POST /api/v1/appointments</code> takes <code>billableItemIds</code>, the items the appointment is invoiced for, as\nreturned by <code>GET /api/v1/billable-items</code>. Order matters: the first identifier becomes the\nappointment's service. Send none and the appointment is not invoiced.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"appointments-the-invoiced-billable-items-can-be-replaced\">Appointments: the invoiced billable items can be replaced<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/09/10/release#appointments-the-invoiced-billable-items-can-be-replaced\" class=\"hash-link\" aria-label=\"Direct link to Appointments: the invoiced billable items can be replaced\" title=\"Direct link to Appointments: the invoiced billable items can be replaced\" translate=\"no\">​</a></h3>\n<p><code>PATCH /api/v1/appointments/{id}</code> takes <code>billableItemIds</code> as the full set the appointment is invoiced\nfor, replacing whatever is there. Omit it to leave the invoice untouched, or send an empty array to\nclear the billable items, which leaves the invoice with a zero total rather than deleting it.\nAnything else on the invoice, such as a session-pack session or a card surcharge, stays as it is.</p>",
            "url": "https://zandaapi.zandahealth.com/docs/changelog/2026/09/10/release",
            "title": "10 September 2026",
            "summary": "Appointments can be invoiced for billable items",
            "date_modified": "2026-09-10T00:00:00.000Z",
            "tags": [
                "Added",
                "Beta"
            ]
        },
        {
            "id": "https://zandaapi.zandahealth.com/docs/changelog/2026/09/08/release",
            "content_html": "<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"paging-by-page-has-been-removed\">Paging by <code>page</code> has been removed<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/09/08/release#paging-by-page-has-been-removed\" class=\"hash-link\" aria-label=\"Direct link to paging-by-page-has-been-removed\" title=\"Direct link to paging-by-page-has-been-removed\" translate=\"no\">​</a></h3>\n<p>The <code>page</code> parameter no longer exists on any list endpoint. Every list is paged with <code>cursor</code>. This\nis a breaking change to any request that still sends <code>page</code>.</p>\n<p>Read <code>cursor</code> from the response and send it back to fetch the next page; omit it to start from the\nbeginning. <code>pageSize</code> is unchanged and still sets how many records a page holds. Paging by cursor is\nforward-only, so there is no page number to jump to and no total to divide.</p>\n<p>Before:</p>\n<div class=\"language-text codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-color:#bfc7d5;--prism-background-color:#292d3e\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-text codeBlock_bY9V thin-scrollbar\" style=\"color:#bfc7d5;background-color:#292d3e\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:#bfc7d5\"><span class=\"token plain\">GET /api/v1/invoices?page=3&amp;pageSize=25</span><br></div></code></pre></div></div>\n<p>After:</p>\n<div class=\"language-text codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-color:#bfc7d5;--prism-background-color:#292d3e\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-text codeBlock_bY9V thin-scrollbar\" style=\"color:#bfc7d5;background-color:#292d3e\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:#bfc7d5\"><span class=\"token plain\">GET /api/v1/invoices?cursor=CURSOR_FROM_PREVIOUS_RESPONSE&amp;pageSize=25</span><br></div></code></pre></div></div>",
            "url": "https://zandaapi.zandahealth.com/docs/changelog/2026/09/08/release",
            "title": "8 September 2026",
            "summary": "Paging by page has been removed",
            "date_modified": "2026-09-08T00:00:00.000Z",
            "tags": [
                "Breaking",
                "Removed"
            ]
        },
        {
            "id": "https://zandaapi.zandahealth.com/docs/changelog/2026/09/07/release",
            "content_html": "<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"group-appointments-add-a-participant\">Group appointments: add a participant<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/09/07/release#group-appointments-add-a-participant\" class=\"hash-link\" aria-label=\"Direct link to Group appointments: add a participant\" title=\"Direct link to Group appointments: add a participant\" translate=\"no\">​</a></h3>\n<p><code>POST /api/v1/group-appointments/{appointmentId}/participants</code> adds a client to an existing group\nbooking.</p>",
            "url": "https://zandaapi.zandahealth.com/docs/changelog/2026/09/07/release",
            "title": "7 September 2026",
            "summary": "Group appointments: add a participant",
            "date_modified": "2026-09-07T00:00:00.000Z",
            "tags": [
                "Added",
                "Beta"
            ]
        },
        {
            "id": "https://zandaapi.zandahealth.com/docs/changelog/2026/09/03/release",
            "content_html": "<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"group-appointments-can-be-created\">Group appointments can be created<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/09/03/release#group-appointments-can-be-created\" class=\"hash-link\" aria-label=\"Direct link to Group appointments can be created\" title=\"Direct link to Group appointments can be created\" translate=\"no\">​</a></h3>\n<p><code>POST /api/v1/group-appointments</code> creates a group appointment.</p>",
            "url": "https://zandaapi.zandahealth.com/docs/changelog/2026/09/03/release",
            "title": "3 September 2026",
            "summary": "Group appointments can be created",
            "date_modified": "2026-09-03T00:00:00.000Z",
            "tags": [
                "Added",
                "Beta"
            ]
        },
        {
            "id": "https://zandaapi.zandahealth.com/docs/changelog/2026/08/27/release",
            "content_html": "<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"group-appointments-remove-a-participant\">Group appointments: remove a participant<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/08/27/release#group-appointments-remove-a-participant\" class=\"hash-link\" aria-label=\"Direct link to Group appointments: remove a participant\" title=\"Direct link to Group appointments: remove a participant\" translate=\"no\">​</a></h3>\n<p><code>DELETE /api/v1/group-appointments/{appointmentId}/participants/{clientId}</code> removes one participant\nfrom a group booking, leaving the other participants untouched.</p>",
            "url": "https://zandaapi.zandahealth.com/docs/changelog/2026/08/27/release",
            "title": "27 August 2026",
            "summary": "Group appointments: remove a participant",
            "date_modified": "2026-08-27T00:00:00.000Z",
            "tags": [
                "Added",
                "Beta"
            ]
        },
        {
            "id": "https://zandaapi.zandahealth.com/docs/changelog/2026/08/26/release",
            "content_html": "<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"resource-items-locationid-is-replaced-by-a-locations-collection\">Resource items: <code>locationId</code> is replaced by a <code>locations</code> collection<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/08/26/release#resource-items-locationid-is-replaced-by-a-locations-collection\" class=\"hash-link\" aria-label=\"Direct link to resource-items-locationid-is-replaced-by-a-locations-collection\" title=\"Direct link to resource-items-locationid-is-replaced-by-a-locations-collection\" translate=\"no\">​</a></h3>\n<p>On <code>GET /api/v1/resource-items</code> and <code>GET /api/v1/resource-items/{id}</code>, the single <code>locationId</code> field\nis gone. A resource item now returns <code>locations</code>, a list of the locations it is available at, each\nwith an <code>id</code>, a <code>name</code> and a link. This is a breaking change to the resource item response.</p>\n<p>A resource can be shared across locations, which the single field could not express. Read\n<code>resourceItem.locations</code> and match on the entry you need instead of comparing <code>locationId</code>. The\n<code>locationId</code> filter on the list endpoint is unchanged and now matches an item at any of its\nlocations.</p>\n<p>Before:</p>\n<div class=\"language-json codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-color:#bfc7d5;--prism-background-color:#292d3e\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-json codeBlock_bY9V thin-scrollbar\" style=\"color:#bfc7d5;background-color:#292d3e\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:#bfc7d5\"><span class=\"token property\">\"locationId\"</span><span class=\"token operator\" style=\"color:rgb(137, 221, 255)\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:rgb(247, 140, 108)\">3</span><br></div></code></pre></div></div>\n<p>After:</p>\n<div class=\"language-json codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-color:#bfc7d5;--prism-background-color:#292d3e\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-json codeBlock_bY9V thin-scrollbar\" style=\"color:#bfc7d5;background-color:#292d3e\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:#bfc7d5\"><span class=\"token property\">\"locations\"</span><span class=\"token operator\" style=\"color:rgb(137, 221, 255)\">:</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">[</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#bfc7d5\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">{</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#bfc7d5\"><span class=\"token plain\">    </span><span class=\"token property\">\"id\"</span><span class=\"token operator\" style=\"color:rgb(137, 221, 255)\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:rgb(247, 140, 108)\">3</span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#bfc7d5\"><span class=\"token plain\">    </span><span class=\"token property\">\"name\"</span><span class=\"token operator\" style=\"color:rgb(137, 221, 255)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:rgb(195, 232, 141)\">\"Coburg\"</span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#bfc7d5\"><span class=\"token plain\">    </span><span class=\"token property\">\"links\"</span><span class=\"token operator\" style=\"color:rgb(137, 221, 255)\">:</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">[</span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">{</span><span class=\"token plain\"> </span><span class=\"token property\">\"href\"</span><span class=\"token operator\" style=\"color:rgb(137, 221, 255)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:rgb(195, 232, 141)\">\"/api/v1/locations/3\"</span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">,</span><span class=\"token plain\"> </span><span class=\"token property\">\"rel\"</span><span class=\"token operator\" style=\"color:rgb(137, 221, 255)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:rgb(195, 232, 141)\">\"self\"</span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">,</span><span class=\"token plain\"> </span><span class=\"token property\">\"method\"</span><span class=\"token operator\" style=\"color:rgb(137, 221, 255)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:rgb(195, 232, 141)\">\"GET\"</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">}</span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">]</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#bfc7d5\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">}</span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#bfc7d5\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">{</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#bfc7d5\"><span class=\"token plain\">    </span><span class=\"token property\">\"id\"</span><span class=\"token operator\" style=\"color:rgb(137, 221, 255)\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:rgb(247, 140, 108)\">7</span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#bfc7d5\"><span class=\"token plain\">    </span><span class=\"token property\">\"name\"</span><span class=\"token operator\" style=\"color:rgb(137, 221, 255)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:rgb(195, 232, 141)\">\"Fitzroy\"</span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#bfc7d5\"><span class=\"token plain\">    </span><span class=\"token property\">\"links\"</span><span class=\"token operator\" style=\"color:rgb(137, 221, 255)\">:</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">[</span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">{</span><span class=\"token plain\"> </span><span class=\"token property\">\"href\"</span><span class=\"token operator\" style=\"color:rgb(137, 221, 255)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:rgb(195, 232, 141)\">\"/api/v1/locations/7\"</span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">,</span><span class=\"token plain\"> </span><span class=\"token property\">\"rel\"</span><span class=\"token operator\" style=\"color:rgb(137, 221, 255)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:rgb(195, 232, 141)\">\"self\"</span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">,</span><span class=\"token plain\"> </span><span class=\"token property\">\"method\"</span><span class=\"token operator\" style=\"color:rgb(137, 221, 255)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:rgb(195, 232, 141)\">\"GET\"</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">}</span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">]</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#bfc7d5\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">}</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#bfc7d5\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">]</span><br></div></code></pre></div></div>",
            "url": "https://zandaapi.zandahealth.com/docs/changelog/2026/08/26/release",
            "title": "26 August 2026",
            "summary": "Resource items: locationId is replaced by a locations collection",
            "date_modified": "2026-08-26T00:00:00.000Z",
            "tags": [
                "Breaking",
                "Changed"
            ]
        },
        {
            "id": "https://zandaapi.zandahealth.com/docs/changelog/2026/08/25/release",
            "content_html": "<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"appointments-when-schedulereminder-may-be-set\">Appointments: when <code>scheduleReminder</code> may be set<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/08/25/release#appointments-when-schedulereminder-may-be-set\" class=\"hash-link\" aria-label=\"Direct link to appointments-when-schedulereminder-may-be-set\" title=\"Direct link to appointments-when-schedulereminder-may-be-set\" translate=\"no\">​</a></h3>\n<p>On <code>PATCH /api/v1/appointments/{id}</code> and\n<code>PATCH /api/v1/group-appointments/{appointmentId}/participants/{clientId}</code>, <code>scheduleReminder</code> is\nrejected once the appointment's start time has passed, and while the attendance state is anything\nother than <code>Pending</code> or <code>Confirmed</code> unless a reminder has already been sent. Setting it to <code>true</code>\nalso requires a client who can receive reminders. Omit the property in those cases. The rules now\nmatch the ones the Zanda app applies.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"invoices-can-be-created-against-a-deactivated-practitioner\">Invoices can be created against a deactivated practitioner<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/08/25/release#invoices-can-be-created-against-a-deactivated-practitioner\" class=\"hash-link\" aria-label=\"Direct link to Invoices can be created against a deactivated practitioner\" title=\"Direct link to Invoices can be created against a deactivated practitioner\" translate=\"no\">​</a></h3>\n<p><code>POST /api/v1/invoices</code> no longer rejects an invoice whose practitioner has since been deactivated,\nwhich matches what the practice can do in the app.</p>",
            "url": "https://zandaapi.zandahealth.com/docs/changelog/2026/08/25/release",
            "title": "25 August 2026",
            "summary": "Appointments: when scheduleReminder may be set",
            "date_modified": "2026-08-25T00:00:00.000Z",
            "tags": [
                "Changed",
                "Beta"
            ]
        },
        {
            "id": "https://zandaapi.zandahealth.com/docs/changelog/2026/08/24/release",
            "content_html": "<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"invoices-cursor-paging-could-still-time-out\">Invoices: cursor paging could still time out<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/08/24/release#invoices-cursor-paging-could-still-time-out\" class=\"hash-link\" aria-label=\"Direct link to Invoices: cursor paging could still time out\" title=\"Direct link to Invoices: cursor paging could still time out\" translate=\"no\">​</a></h3>\n<p>Paging through <code>GET /api/v1/invoices</code> with <code>cursor</code> could still fail rather than return a page for\nsome practices; this is now fixed.</p>",
            "url": "https://zandaapi.zandahealth.com/docs/changelog/2026/08/24/release",
            "title": "24 August 2026",
            "summary": "Invoices: cursor paging could still time out",
            "date_modified": "2026-08-24T00:00:00.000Z",
            "tags": [
                "Fixed"
            ]
        },
        {
            "id": "https://zandaapi.zandahealth.com/docs/changelog/2026/08/20/release",
            "content_html": "<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"client-profiles-can-be-created-and-updated-by-every-practice\">Client profiles can be created and updated by every practice<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/08/20/release#client-profiles-can-be-created-and-updated-by-every-practice\" class=\"hash-link\" aria-label=\"Direct link to Client profiles can be created and updated by every practice\" title=\"Direct link to Client profiles can be created and updated by every practice\" translate=\"no\">​</a></h3>\n<p><code>POST /api/v1/client-profiles/clients</code> and <code>PATCH /api/v1/client-profiles/clients/{id}</code> are out of\nlimited release and enabled for all practices. Request and response shapes are unchanged, so an\nintegration built against them during the limited release needs no update.</p>\n<p>Creating or updating a profile with a lookup id that is no longer active, such as an archived\nclassification, category or status, is rejected with <code>400</code>. Read the current options from the\nmatching reference-data endpoint.</p>",
            "url": "https://zandaapi.zandahealth.com/docs/changelog/2026/08/20/release",
            "title": "20 August 2026",
            "summary": "Client profiles can be created and updated by every practice",
            "date_modified": "2026-08-20T00:00:00.000Z",
            "tags": [
                "Changed"
            ]
        },
        {
            "id": "https://zandaapi.zandahealth.com/docs/changelog/2026/08/19/release",
            "content_html": "<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"referrals-referrertype-is-now-an-object\">Referrals: <code>referrerType</code> is now an object<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/08/19/release#referrals-referrertype-is-now-an-object\" class=\"hash-link\" aria-label=\"Direct link to referrals-referrertype-is-now-an-object\" title=\"Direct link to referrals-referrertype-is-now-an-object\" translate=\"no\">​</a></h3>\n<p>On <code>GET /api/v1/referrals</code> and <code>GET /api/v1/referrals/{id}</code>, the <code>referrerType</code> field has changed\nfrom a plain text name to an object with an <code>id</code>, a <code>name</code>, and a link to the matching referrer type.\nThis is a breaking change to the referral response.</p>\n<p>If you currently read the referrer type's name, change <code>referral.referrerType</code> to\n<code>referral.referrerType.name</code>. You can now also use <code>referral.referrerType.id</code> to fetch it from\n<code>GET /api/v1/referrer-types/{id}</code>, or match it against the <code>GET /api/v1/referrer-types</code> list. As\nbefore, <code>referrerType</code> is <code>null</code> when a referrer has no type set.</p>\n<p>Before:</p>\n<div class=\"language-json codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-color:#bfc7d5;--prism-background-color:#292d3e\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-json codeBlock_bY9V thin-scrollbar\" style=\"color:#bfc7d5;background-color:#292d3e\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:#bfc7d5\"><span class=\"token property\">\"referrerType\"</span><span class=\"token operator\" style=\"color:rgb(137, 221, 255)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:rgb(195, 232, 141)\">\"General Practitioner\"</span><br></div></code></pre></div></div>\n<p>After:</p>\n<div class=\"language-json codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-color:#bfc7d5;--prism-background-color:#292d3e\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-json codeBlock_bY9V thin-scrollbar\" style=\"color:#bfc7d5;background-color:#292d3e\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:#bfc7d5\"><span class=\"token property\">\"referrerType\"</span><span class=\"token operator\" style=\"color:rgb(137, 221, 255)\">:</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">{</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#bfc7d5\"><span class=\"token plain\">  </span><span class=\"token property\">\"id\"</span><span class=\"token operator\" style=\"color:rgb(137, 221, 255)\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:rgb(247, 140, 108)\">42</span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#bfc7d5\"><span class=\"token plain\">  </span><span class=\"token property\">\"name\"</span><span class=\"token operator\" style=\"color:rgb(137, 221, 255)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:rgb(195, 232, 141)\">\"General Practitioner\"</span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">,</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#bfc7d5\"><span class=\"token plain\">  </span><span class=\"token property\">\"links\"</span><span class=\"token operator\" style=\"color:rgb(137, 221, 255)\">:</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">[</span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">{</span><span class=\"token plain\"> </span><span class=\"token property\">\"href\"</span><span class=\"token operator\" style=\"color:rgb(137, 221, 255)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:rgb(195, 232, 141)\">\"/api/v1/referrer-types/42\"</span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">,</span><span class=\"token plain\"> </span><span class=\"token property\">\"rel\"</span><span class=\"token operator\" style=\"color:rgb(137, 221, 255)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:rgb(195, 232, 141)\">\"self\"</span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">,</span><span class=\"token plain\"> </span><span class=\"token property\">\"method\"</span><span class=\"token operator\" style=\"color:rgb(137, 221, 255)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:rgb(195, 232, 141)\">\"GET\"</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">}</span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">]</span><span class=\"token plain\"></span><br></div><div class=\"token-line\" style=\"color:#bfc7d5\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:rgb(199, 146, 234)\">}</span><br></div></code></pre></div></div>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"note-and-form-templates\">Note and form templates<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/08/19/release#note-and-form-templates\" class=\"hash-link\" aria-label=\"Direct link to Note and form templates\" title=\"Direct link to Note and form templates\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><code>GET /api/v1/note-templates</code> lists the practice's note templates.</li>\n<li class=\"\"><code>GET /api/v1/form-templates</code> and <code>GET /api/v1/form-templates/{id}</code> list and fetch form templates.</li>\n</ul>",
            "url": "https://zandaapi.zandahealth.com/docs/changelog/2026/08/19/release",
            "title": "19 August 2026",
            "summary": "Referrals: referrerType is now an object",
            "date_modified": "2026-08-19T00:00:00.000Z",
            "tags": [
                "Breaking",
                "Changed",
                "Added"
            ]
        },
        {
            "id": "https://zandaapi.zandahealth.com/docs/changelog/2026/08/18/release",
            "content_html": "<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"group-appointments-edit-one-participant\">Group appointments: edit one participant<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/08/18/release#group-appointments-edit-one-participant\" class=\"hash-link\" aria-label=\"Direct link to Group appointments: edit one participant\" title=\"Direct link to Group appointments: edit one participant\" translate=\"no\">​</a></h3>\n<p><code>PATCH /api/v1/group-appointments/{appointmentId}/participants/{clientId}</code> updates a single\nparticipant's appointment within a group booking, leaving the other participants untouched.</p>",
            "url": "https://zandaapi.zandahealth.com/docs/changelog/2026/08/18/release",
            "title": "18 August 2026",
            "summary": "Group appointments: edit one participant",
            "date_modified": "2026-08-18T00:00:00.000Z",
            "tags": [
                "Added",
                "Beta"
            ]
        },
        {
            "id": "https://zandaapi.zandahealth.com/docs/changelog/2026/08/12/release",
            "content_html": "<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"group-appointments-can-be-updated\">Group appointments can be updated<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/08/12/release#group-appointments-can-be-updated\" class=\"hash-link\" aria-label=\"Direct link to Group appointments can be updated\" title=\"Direct link to Group appointments can be updated\" translate=\"no\">​</a></h3>\n<p><code>PATCH /api/v1/group-appointments/{id}</code> edits a group appointment.</p>",
            "url": "https://zandaapi.zandahealth.com/docs/changelog/2026/08/12/release",
            "title": "12 August 2026",
            "summary": "Group appointments can be updated",
            "date_modified": "2026-08-12T00:00:00.000Z",
            "tags": [
                "Added",
                "Beta"
            ]
        },
        {
            "id": "https://zandaapi.zandahealth.com/docs/changelog/2026/08/10/release",
            "content_html": "<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"notes\">Notes<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/08/10/release#notes\" class=\"hash-link\" aria-label=\"Direct link to Notes\" title=\"Direct link to Notes\" translate=\"no\">​</a></h3>\n<p><code>GET /api/v1/notes</code> and <code>GET /api/v1/notes/{id}</code> return client notes. The list returns note metadata;\nfetch a single note to read its answers.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"payments-can-be-created-updated-and-deleted-by-every-practice\">Payments can be created, updated and deleted by every practice<a href=\"https://zandaapi.zandahealth.com/docs/changelog/2026/08/10/release#payments-can-be-created-updated-and-deleted-by-every-practice\" class=\"hash-link\" aria-label=\"Direct link to Payments can be created, updated and deleted by every practice\" title=\"Direct link to Payments can be created, updated and deleted by every practice\" translate=\"no\">​</a></h3>\n<p><code>POST /api/v1/payments</code>, <code>PATCH /api/v1/payments/{id}</code> and <code>DELETE /api/v1/payments/{id}</code> are out of\nlimited release and enabled for all practices. Nothing about them changed on the way out, so an\nintegration built against them during the limited release needs no update.</p>",
            "url": "https://zandaapi.zandahealth.com/docs/changelog/2026/08/10/release",
            "title": "10 August 2026",
            "summary": "Notes",
            "date_modified": "2026-08-10T00:00:00.000Z",
            "tags": [
                "Changed",
                "Added"
            ]
        }
    ]
}