These read-only endpoints surface the reference data your clinic needs to build a booking: its practitioners, its locations (sites), the billable items (services) you book by BillableItemId, each practitioner’s working hours, and their live availability — the open slots to book into.
/api/v1/practitionersList practitioners
Returns the practitioners in the client’s clinic. LocationIds lists the sites each practitioner works at (empty means the clinic’s default site only), and HomeLocationId is where their bookings go when you don’t pass a LocationId. Requires appointments:read.
curl https://api.mananotes.co.nz/api/v1/practitioners \
-H "Authorization: Bearer eyJhbGci..."{
"data": [
{
"id": "65f0a1...",
"email": "jo@clinic.co.nz",
"PreferredName": "Jo",
"ProviderFirstname": "Joanna",
"ProviderLastname": "Smith",
"ServiceCode": "PHY3",
"ClinicId": "65f0c0...",
"HomeLocationId": "65f0f1...",
"LocationIds": ["65f0f1...", "65f0f2..."],
"Active": true
}
]
}/api/v1/locationsList locations
Returns the clinic’s physical sites, default first. Every LocationId, locationIds and HomeLocationId elsewhere in the API refers to these ids. Deactivated sites (Active: false) stay listed because old appointments still point to them, but they can’t take new bookings. Solo practitioners and clinics that haven’t set up locations get an empty list: treat that as one implicit site. Requires appointments:read.
curl https://api.mananotes.co.nz/api/v1/locations \
-H "Authorization: Bearer eyJhbGci..."{
"data": [
{
"id": "65f0f1...",
"Name": "City Branch",
"IsDefault": true,
"Active": true,
"OnlineBookingEnabled": true,
"ContactNumber": "+6491234567",
"ContactEmail": "city@clinic.co.nz",
"ClinicAddress": {
"Line1": "12 Queen Street",
"City": "Auckland",
"PostCode": "1010",
"Country": "New Zealand"
}
}
]
}/api/v1/practitioners/{id}/working-hoursList working hours & breaks
Returns a practitioner’s weekly working hours and break times — the clinic configuration that shapes availability. There’s no separate “blocked time” resource: blocked time is modelled as an appointment. Times are clinic-local (Pacific/Auckland) in HH:mm, and Day is a weekday enum. In a multi-site clinic each site has its own weekly pattern: a row’s LocationId says which site it’s for (null means the default site). Requires appointments:read.
idstringrequiredcurl https://api.mananotes.co.nz/api/v1/practitioners/65f0a1.../working-hours \
-H "Authorization: Bearer eyJhbGci..."{
"data": [
{
"id": "66a1c2d3e4f5a6b7c8d9e0f1",
"PractitionerId": "65f0a1...",
"LocationId": "65f0f1...",
"Day": "MONDAY",
"StartTime": "09:00",
"EndTime": "17:00",
"BreakTimes": [
{
"id": "66a2b3c4d5e6f7a8b9c0d1e2",
"Name": "Lunch",
"LocationId": "65f0f1...",
"Day": "MONDAY",
"StartTime": "12:00",
"EndTime": "13:00"
}
]
}
]
}/api/v1/billable-itemsList billable items
Returns the bookable services/products for the clinic. An appointment requires a BillableItemId. Requires appointments:read.
limitintegeroptionaloffsetintegeroptionalsearchstringoptionalcurl "https://api.mananotes.co.nz/api/v1/billable-items?search=physio" \
-H "Authorization: Bearer eyJhbGci..."{
"data": [
{
"id": "65f0b1...",
"Code": "PHY3",
"Name": "Physio — follow-up",
"UnitPrice": 45.00,
"Duration": 30,
"Type": "Service",
"Active": true,
"IsACCClaimable": true
}
],
"totalCount": 1
}/api/v1/practitioners/{id}/availabilityGet open appointment slots
Computes a practitioner’s open slots for a service across a date range, honouring working hours, breaks, booking lead time and existing appointments. Dates are yyyy-MM-dd and slots come back in clinic-local time (Pacific/Auckland). Unlike the public booking portal, this trusted channel doesn’t require online booking to be enabled. Requires appointments:read.
idstringrequiredbillableItemIdstringrequiredfromstringrequiredyyyy-MM-dd, clinic-local).tostringrequiredyyyy-MM-dd, clinic-local). If the practitioner doesn’t take same-day bookings, today in Pacific/Auckland is never included.locationIdstringoptionalcurl "https://api.mananotes.co.nz/api/v1/practitioners/65f0a1.../availability?billableItemId=65f0b1...&from=2026-07-06&to=2026-07-12" \
-H "Authorization: Bearer eyJhbGci..."{
"data": [
{ "Date": "2026-07-06", "StartTime": "09:00", "EndTime": "09:30" },
{ "Date": "2026-07-06", "StartTime": "09:30", "EndTime": "10:00" }
]
}