Scheduling
142 endpoints
Schedule
63 endpoints
/api/v1/{org_id}/schedule/appointment-rulesList appointment rules
List appointment rules with optional filters. Returns paginated appointment rules. Supports filtering by location and appointment type. Raises 422 if pagination parameters are out of range.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
location_uuidstringFilter by location UUID. Returns org-wide rules when omitted.
appointment_type_uuidstringFilter by appointment type UUID — matches rules where this type is either side of the pair.
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of results per page.
Default: 50
Responses
itemsobject[]requiredPage of appointment rule records.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of items per page.
totalintegerrequiredTotal number of matching records.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/appointment-rules" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/appointment-rules" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/appointment-rules/{rule_uuid}Get appointment rule
Retrieve a single appointment rule by UUID. Raises 404 if the appointment rule does not exist.
Parameters
Path Parameters
rule_uuidstringrequiredorg_idstringrequiredResponses
allow_overlapbooleanrequiredWhether appointments of these two types are allowed to overlap in the schedule.
appointment_type_aobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
appointment_type_bobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
created_atstring (date-time)requiredTimestamp when the rule was created.
idstring (uuid)requiredPublic UUID of the appointment rule.
locationobjectLightweight reference to a related entity — exposes UUID and optional name.
updated_atstring (date-time)requiredTimestamp of the most recent update.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/appointment-rules/{rule_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/appointment-rules/{rule_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/calendar/dailyGet daily calendar data
Load the full calendar view for a single day at a location. Returns all appointments, blockouts, and resolved provider schedules for the given date. Pass `fields` to include optional Tier 2 appointment fields (e.g., chart_number, mobile_phone, balance_due). Raises 404 if the location does not exist.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
location_uuidstringrequiredUUID of the location to load the calendar for.
target_datestringrequiredCalendar date to load (YYYY-MM-DD).
fieldsstringComma-separated list of Tier 2 field keys to include (e.g., 'chart_number,mobile_phone').
Responses
appointmentsobject[]requiredAll appointments scheduled for this day.
blockoutsobject[]requiredAll blockouts scheduled for this day.
datestring (date)requiredday_hoursintegerrequiredWall-clock hours in this day (23 on spring-forward, 25 on fall-back, 24 otherwise).
location_timezonestringrequiredIANA timezone identifier for the location (e.g., 'America/Chicago').
provider_schedulesobject[]requiredProvider schedule summaries for this day.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/calendar/daily" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/calendar/daily" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/calendar/monthlyGet monthly calendar summary
Load aggregate calendar metrics for an entire month. Returns per-day summaries with scheduled/completed production, appointment counts, production goals, and holiday blockout flags. Does NOT return individual appointment details. Raises 404 if the location does not exist. Raises 422 if month format is invalid.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
location_uuidstringrequiredUUID of the location.
monthstringrequiredMonth to load in YYYY-MM format (e.g., '2026-03').
Responses
daysobject[]requiredOne summary per calendar day in the month.
location_timezonestringrequiredIANA timezone identifier for the location.
monthstringrequiredMonth in YYYY-MM format.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/calendar/monthly" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/calendar/monthly" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/calendar/weeklyGet weekly calendar data
Load the full calendar view for a 7-day week at a location. Returns appointments, blockouts, and resolved provider schedules for all 7 days. Pass `fields` to include optional Tier 2 appointment fields (e.g., chart_number, mobile_phone, balance_due). Raises 404 if the location does not exist.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
location_uuidstringrequiredUUID of the location to load the calendar for.
week_startstringrequiredFirst day of the week to load (YYYY-MM-DD, typically a Monday).
fieldsstringComma-separated list of Tier 2 field keys to include (e.g., 'chart_number,mobile_phone').
Responses
daysobject[]requiredDaily calendar data for each day in the week (7 entries).
location_timezonestringrequiredIANA timezone identifier for the location (e.g., 'America/Chicago').
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/calendar/weekly" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/calendar/weekly" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/daily-providersGet all provider schedules for a date
Resolve all providers' schedules for a location on a given date. Returns time ranges for each provider with a template or override scheduled on that date. Raises 404 if the location does not exist.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
location_uuidstringrequiredUUID of the location to look up.
datestringrequiredDate to resolve all provider schedules for (YYYY-MM-DD).
Responses
datestring (date)requiredlocationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
location_timezonestringrequiredIANA timezone identifier for the location (e.g., 'America/Chicago').
providersobject[]requiredResolved schedules for all scheduled providers at this location.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/daily-providers" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/daily-providers" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/flow-statusesList patient flow statuses
List all patient flow status definitions for the organization. Ordered by item_order ascending.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
include_inactivebooleanWhen true, includes inactive flow statuses in the results.
Default: true
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of results per page (max 200).
Default: 50
Responses
itemsobject[]requiredPage of flow status records.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of items per page.
totalintegerrequiredTotal number of matching records.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/flow-statuses" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/flow-statuses" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/notesList schedule notes
List per-location per-date schedule notes. Filter by location_uuid and/or a date range. Returns a paginated list ordered by note_date ascending.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
location_uuidstringFilter by location UUID.
date_fromstringFilter notes on or after this date (inclusive).
date_tostringFilter notes on or before this date (inclusive).
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of items per page.
Default: 50
Responses
itemsobject[]requiredSchedule notes for the requested page.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of items per page.
totalintegerrequiredTotal number of matching schedule notes.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/notes" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/notes" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/notes/{note_uuid}Get schedule note
Get a single schedule note by UUID. Raises 404 if the note does not exist.
Parameters
Path Parameters
note_uuidstringrequiredorg_idstringrequiredResponses
created_atstring (date-time)requiredTimestamp when the note was created.
idstring (uuid)requiredPublic UUID of the schedule note.
locationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
notestringrequiredThe note text displayed on the calendar.
note_datestring (date)requiredThe calendar date this note applies to.
updated_atstring (date-time)requiredTimestamp when the note was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/notes/{note_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/notes/{note_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/overridesList provider schedule overrides
List provider schedule overrides with optional date-range and entity filtering. Raises 404 if the provider or location does not exist.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
provider_uuidstringFilter by provider UUID.
location_uuidstringFilter by location UUID.
date_fromstringFilter to overrides on or after this date (YYYY-MM-DD).
date_tostringFilter to overrides on or before this date (YYYY-MM-DD).
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of results per page (max 200).
Default: 50
Responses
itemsobject[]requiredPage of provider schedule override records.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of items per page.
totalintegerrequiredTotal number of matching records.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/overrides" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/overrides" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/overrides/{override_uuid}Get provider schedule override
Retrieve a single provider schedule override by UUID. Raises 404 if the override does not exist.
Parameters
Path Parameters
override_uuidstringrequiredorg_idstringrequiredResponses
created_atstring (date-time)requiredTimestamp when the override was created.
end_timestring (time)idstring (uuid)requiredPublic UUID of the provider schedule override.
is_unavailablebooleanrequiredWhether the provider is fully unavailable for this date.
locationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
notestringrequiredOptional note for this override.
operatoryobjectLightweight reference to a related entity — exposes UUID and optional name.
override_datestring (date)requiredThe specific calendar date being overridden.
override_reasonstringrequiredReason for the override.
providerobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
start_timestring (time)updated_atstring (date-time)requiredTimestamp when the override was last updated.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/overrides/{override_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/overrides/{override_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/patient-preferencesList patient scheduling preferences
List patient scheduling preferences. Optionally filter by patient_uuid. Returns a paginated list ordered by record ID ascending.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
patient_uuidstringFilter by patient UUID.
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of items per page.
Default: 50
Responses
itemsobject[]requiredPatient scheduling preferences for the requested page.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of items per page.
totalintegerrequiredTotal number of matching preferences.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/patient-preferences" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/patient-preferences" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/patient-preferences/{preference_uuid}Get patient scheduling preference
Get a single patient scheduling preference by UUID. Raises 404 if the preference does not exist.
Parameters
Path Parameters
preference_uuidstringrequiredorg_idstringrequiredResponses
created_atstring (date-time)requiredTimestamp when the preference was created.
idstring (uuid)requiredPublic UUID of the patient scheduling preference.
learned_from_historybooleanrequiredWhether this preference was inferred from appointment history rather than entered manually.
notesstringrequiredFree-text notes about scheduling preferences.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
preferred_contact_methodstringpreferred_daysinteger[]preferred_operatoryobjectLightweight reference to a related entity — exposes UUID and optional name.
preferred_providerobjectLightweight reference to a related entity — exposes UUID and optional name.
preferred_time_endstring (time)preferred_time_startstring (time)updated_atstring (date-time)requiredTimestamp when the preference was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/patient-preferences/{preference_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/patient-preferences/{preference_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/patient-preferences/by-patient/{patient_uuid}Get scheduling preference for a patient
Get the scheduling preference record for a specific patient. Returns the preference if it exists, or null if no preference has been set. Raises 404 if the patient does not exist.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredResponses
created_atstring (date-time)requiredTimestamp when the preference was created.
idstring (uuid)requiredPublic UUID of the patient scheduling preference.
learned_from_historybooleanrequiredWhether this preference was inferred from appointment history rather than entered manually.
notesstringrequiredFree-text notes about scheduling preferences.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
preferred_contact_methodstringpreferred_daysinteger[]preferred_operatoryobjectLightweight reference to a related entity — exposes UUID and optional name.
preferred_providerobjectLightweight reference to a related entity — exposes UUID and optional name.
preferred_time_endstring (time)preferred_time_startstring (time)updated_atstring (date-time)requiredTimestamp when the preference was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/patient-preferences/by-patient/{patient_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/patient-preferences/by-patient/{patient_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/production-goalsList production goals
List production goals with optional filters. Supports filtering by location, provider, and date range. Results are paginated. Raises 422 if pagination parameters are out of range.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
location_uuidstringFilter by location UUID.
provider_uuidstringFilter by provider UUID.
date_fromstringInclude goals on or after this date (YYYY-MM-DD).
date_tostringInclude goals on or before this date (YYYY-MM-DD).
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of results per page.
Default: 50
Responses
itemsobject[]requiredPage of production goal records.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of items per page.
totalintegerrequiredTotal number of matching records.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/production-goals" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/production-goals" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/production-goals/{goal_uuid}Get production goal
Retrieve a single production goal by UUID. Raises 404 if the production goal does not exist.
Parameters
Path Parameters
goal_uuidstringrequiredorg_idstringrequiredResponses
created_atstring (date-time)requiredTimestamp when the record was created.
goal_amountstringrequiredTarget production amount in dollars.
goal_datestring (date)requiredCalendar date for this production target.
idstring (uuid)requiredPublic UUID of the production goal.
locationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
providerobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
updated_atstring (date-time)requiredTimestamp of the most recent update.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/production-goals/{goal_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/production-goals/{goal_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/production-goals/production-summaryGet production summary
Get aggregated production analytics grouped by provider for a date range. Aggregates appointment production amounts by provider, split into scheduled, completed, and lost (broken + cancelled) buckets. Joins with production goals to compute attainment percentage. Raises 404 if location_uuid is not found. Raises 422 if date_from is after date_to.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
location_uuidstringrequiredUUID of the location to summarize production for.
date_fromstringrequiredStart date of the reporting range (inclusive, YYYY-MM-DD).
date_tostringrequiredEnd date of the reporting range (inclusive, YYYY-MM-DD).
Responses
date_fromstring (date)requiredStart of the reporting date range (inclusive).
date_tostring (date)requiredEnd of the reporting date range (inclusive).
overall_attainment_pctnumberrequiredOverall completed production as a percentage of total goal (0.0 if no goal set).
providersobject[]requiredPer-provider production breakdown.
total_completedstringrequiredGrand total of completed production across all providers.
total_goalstringrequiredGrand total of production goals across all providers.
total_loststringrequiredGrand total of lost production (broken + cancelled) across all providers.
total_scheduledstringrequiredGrand total of scheduled production across all providers.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/production-goals/production-summary" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/production-goals/production-summary" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/provider-availabilityGet provider availability for a date
Resolve a single provider's schedule for a given date and location. Returns the effective time ranges from either a weekly template or a date-specific override. Raises 404 if the provider or location does not exist.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
provider_uuidstringrequiredUUID of the provider to look up.
location_uuidstringrequiredUUID of the location to look up.
datestringrequiredDate to resolve the schedule for (YYYY-MM-DD).
Responses
datestring (date)requiredis_overridebooleanrequiredTrue if the schedule comes from a date-specific override rather than the weekly template.
location_timezonestringrequiredIANA timezone identifier for the location (e.g., 'America/Chicago').
providerobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
time_rangesobject[]requiredResolved scheduled time ranges for the provider.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/provider-availability" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/provider-availability" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/saved-searchesList saved searches
List saved searches for the current user. Results are automatically scoped to the authenticated user — no user_uuid parameter is accepted. Raises 422 if pagination parameters are out of range.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
search_typestringFilter by search type (e.g., 'find_free_time').
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of items per page.
Default: 50
Responses
itemsobject[]requiredSaved searches for the requested page.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of items per page.
totalintegerrequiredTotal number of matching saved searches.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/saved-searches" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/saved-searches" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/saved-searches/{search_uuid}Get saved search
Retrieve a single saved search by UUID. Only returns the search if it belongs to the authenticated user. Raises 404 if the saved search does not exist or belongs to a different user.
Parameters
Path Parameters
search_uuidstringrequiredorg_idstringrequiredResponses
created_atstring (date-time)requiredTimestamp when the saved search was created.
criteriaobjectrequiredSearch criteria parameters as a JSON object. Keys are user-defined and returned as-is.
idstring (uuid)requiredPublic UUID of the saved search.
is_defaultbooleanrequiredWhether this is the user's default search for the given search_type.
namestringrequiredDisplay name of this saved search.
search_typestringrequiredCategory of search this criteria applies to (e.g., 'find_free_time').
updated_atstring (date-time)requiredTimestamp when the saved search was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/saved-searches/{search_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/saved-searches/{search_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/templatesList provider schedule templates
List provider schedule templates with optional filtering. Raises 404 if the provider or location does not exist.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
provider_uuidstringFilter by provider UUID.
location_uuidstringFilter by location UUID.
day_of_weekintegerFilter by day of week (0=Monday, 6=Sunday).
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of results per page (max 200).
Default: 50
Responses
itemsobject[]requiredPage of provider schedule template records.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of items per page.
totalintegerrequiredTotal number of matching records.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/templates" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/templates" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/templates/{template_uuid}Get provider schedule template
Retrieve a single provider schedule template by UUID. Raises 404 if the template does not exist.
Parameters
Path Parameters
template_uuidstringrequiredorg_idstringrequiredResponses
created_atstring (date-time)requiredTimestamp when the template was created.
day_of_weekintegerrequiredDay of week this template applies to (0=Monday, 6=Sunday).
effective_fromstring (date)requiredDate from which this template is active (inclusive).
effective_tostring (date)end_timestring (time)requiredScheduled end time for the provider (local time).
idstring (uuid)requiredPublic UUID of the provider schedule template.
locationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
notestringrequiredOptional note for this schedule template.
operatoryobjectLightweight reference to a related entity — exposes UUID and optional name.
providerobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
start_timestring (time)requiredScheduled start time for the provider (local time).
updated_atstring (date-time)requiredTimestamp when the template was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/templates/{template_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/templates/{template_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/viewsList schedule views
List saved schedule views for a location. Returns views scoped to the given location, ordered by name. Raises 404 if the location does not exist.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
location_uuidstringFilter by location UUID. Returns views for all locations if omitted.
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of results per page (max 200).
Default: 50
Responses
itemsobject[]requiredPage of schedule view records.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of items per page.
totalintegerrequiredTotal number of matching records.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/views" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/views" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/views/{view_uuid}Get schedule view
Retrieve a single schedule view by UUID. Raises 404 if the view does not exist.
Parameters
Path Parameters
view_uuidstringrequiredorg_idstringrequiredResponses
auto_scroll_to_current_timebooleanrequiredWhether the calendar auto-scrolls to current time on load.
bubble_enabledbooleanrequiredWhether appointment bubbles are enabled in weekly view.
bubble_layoutobjectcard_layoutobjectcolor_configobjectcompact_modebooleanrequiredWhether compact appointment block rendering is enabled.
created_atstring (date-time)requiredTimestamp when the view was created.
dynamic_op_filteringbooleanrequiredWhether operatories with no scheduled providers are automatically hidden.
end_timestring (time)requiredLatest time shown on the calendar.
font_sizestringrequiredBase font size for appointment blocks — one of: xs, sm, md, lg.
idstring (uuid)requiredPublic UUID of the schedule view.
is_defaultbooleanrequiredWhether this is the current user's default view for the location. Derived from UserViewPreference — not stored on the view itself.
keyboard_shortcutintegerlocationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
min_operatory_width_pxintegerrequiredMinimum operatory column width in pixels. 0 means no minimum (auto).
namestringrequiredDisplay name of the schedule view.
operatory_uuidsstring (uuid)[]privacy_modebooleanrequiredWhether patient names and details are obscured for privacy.
provider_uuidsstring (uuid)[]show_business_days_onlybooleanrequiredWhether weekend columns are hidden in weekly view.
show_missed_appointmentsbooleanrequiredWhether missed/broken appointment slots are displayed on the schedule.
show_productionbooleanrequiredWhether production amounts are shown on appointment blocks.
show_provider_barsbooleanrequiredWhether provider availability bars are shown.
start_timestring (time)requiredEarliest time shown on the calendar.
time_incrementintegerrequiredTime slot increment in minutes.
updated_atstring (date-time)requiredTimestamp when the view was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
view_typestringrequiredView mode — one of: daily, weekly.
visibilitystringrequiredView visibility — one of: shared, personal.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/views/{view_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/views/{view_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/views/templatesList preset view templates
Return the 6 preset view templates. Templates define default card layouts, bubble sections, and color schemes. Apply a template by copying its card_layout, bubble_layout, and color_config into a view via the create or update endpoint.
Parameters
Path Parameters
org_idstringrequiredResponses
templatesobject[]requiredAvailable preset view templates.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/views/templates" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/schedule/views/templates" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/appointment-rulesCreate appointment rule
Create a new appointment rule for a type pair. Raises 409 if a rule already exists for the (type_a, type_b, location) combination. Raises 404 if the appointment type or location UUID does not exist.
Parameters
Path Parameters
org_idstringrequiredRequest Body
allow_overlapbooleanrequiredWhether appointments of these two types are allowed to overlap in the schedule.
appointment_type_uuid_astring (uuid)requiredUUID of the first appointment type in the pair.
appointment_type_uuid_bstring (uuid)requiredUUID of the second appointment type in the pair.
location_uuidstring (uuid)Responses
allow_overlapbooleanrequiredWhether appointments of these two types are allowed to overlap in the schedule.
appointment_type_aobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
appointment_type_bobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
created_atstring (date-time)requiredTimestamp when the rule was created.
idstring (uuid)requiredPublic UUID of the appointment rule.
locationobjectLightweight reference to a related entity — exposes UUID and optional name.
updated_atstring (date-time)requiredTimestamp of the most recent update.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/schedule/appointment-rules" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"allow_overlap": false,
"appointment_type_uuid_a": "00000000-0000-0000-0000-000000000000",
"appointment_type_uuid_b": "00000000-0000-0000-0000-000000000000",
"location_uuid": "string"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/schedule/appointment-rules" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"allow_overlap": false,
"appointment_type_uuid_a": "00000000-0000-0000-0000-000000000000",
"appointment_type_uuid_b": "00000000-0000-0000-0000-000000000000",
"location_uuid": "string"
}'/api/v1/{org_id}/schedule/flow-statusesCreate patient flow status
Create a new patient flow status definition. Raises 422 if the name is missing or invalid.
Parameters
Path Parameters
org_idstringrequiredRequest Body
colorstringis_activebooleanWhether this flow status is active and available for use.
item_orderintegerDisplay order among flow statuses (ascending).
namestringrequiredDisplay name for the flow status (e.g., 'Arrived', 'In Chair').
Responses
colorstringrequiredHex color string for this status.
created_atstring (date-time)requiredTimestamp when the flow status was created.
idstring (uuid)requiredPublic UUID of the flow status.
is_activebooleanrequiredWhether this flow status is active and available for use.
item_orderintegerrequiredDisplay order among flow statuses.
namestringrequiredDisplay name of the flow status.
slugstringrequiredURL-safe identifier derived from the name.
updated_atstring (date-time)requiredTimestamp when the flow status was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/schedule/flow-statuses" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"color": "string",
"is_active": true,
"item_order": 0,
"name": "string"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/schedule/flow-statuses" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"color": "string",
"is_active": true,
"item_order": 0,
"name": "string"
}'/api/v1/{org_id}/schedule/notesCreate schedule note
Create a new per-location per-date schedule note. Raises 409 if a note already exists for the same location and date (unique constraint). Raises 422 if required fields are missing or invalid.
Parameters
Path Parameters
org_idstringrequiredRequest Body
location_uuidstring (uuid)requiredUUID of the location this note belongs to.
notestringrequiredThe note text displayed at the top of the calendar for this date.
note_datestring (date)requiredThe calendar date this note applies to.
Responses
created_atstring (date-time)requiredTimestamp when the note was created.
idstring (uuid)requiredPublic UUID of the schedule note.
locationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
notestringrequiredThe note text displayed on the calendar.
note_datestring (date)requiredThe calendar date this note applies to.
updated_atstring (date-time)requiredTimestamp when the note was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/schedule/notes" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"location_uuid": "00000000-0000-0000-0000-000000000000",
"note": "string",
"note_date": "2025-01-15"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/schedule/notes" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"location_uuid": "00000000-0000-0000-0000-000000000000",
"note": "string",
"note_date": "2025-01-15"
}'/api/v1/{org_id}/schedule/overridesCreate provider schedule override
Create a provider schedule override for a specific date. Raises 404 if the provider, location, or operatory does not exist. Raises 422 if override_reason is not a valid value.
Parameters
Path Parameters
org_idstringrequiredRequest Body
end_timestring (time)is_unavailablebooleanWhen true, marks the provider as fully unavailable for this date.
location_uuidstring (uuid)requiredUUID of the location this override is scoped to.
notestringoperatory_uuidstring (uuid)override_datestring (date)requiredThe specific calendar date being overridden (YYYY-MM-DD).
override_reasonstringprovider_uuidstring (uuid)requiredUUID of the provider this override applies to.
start_timestring (time)Responses
created_atstring (date-time)requiredTimestamp when the override was created.
end_timestring (time)idstring (uuid)requiredPublic UUID of the provider schedule override.
is_unavailablebooleanrequiredWhether the provider is fully unavailable for this date.
locationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
notestringrequiredOptional note for this override.
operatoryobjectLightweight reference to a related entity — exposes UUID and optional name.
override_datestring (date)requiredThe specific calendar date being overridden.
override_reasonstringrequiredReason for the override.
providerobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
start_timestring (time)updated_atstring (date-time)requiredTimestamp when the override was last updated.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/schedule/overrides" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"end_time": "string",
"is_unavailable": false,
"location_uuid": "00000000-0000-0000-0000-000000000000",
"note": "string",
"operatory_uuid": "string",
"override_date": "2025-01-15",
"provider_uuid": "00000000-0000-0000-0000-000000000000"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/schedule/overrides" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"end_time": "string",
"is_unavailable": false,
"location_uuid": "00000000-0000-0000-0000-000000000000",
"note": "string",
"operatory_uuid": "string",
"override_date": "2025-01-15",
"provider_uuid": "00000000-0000-0000-0000-000000000000"
}'/api/v1/{org_id}/schedule/patient-preferencesCreate patient scheduling preference
Create a new scheduling preference record for a patient. Raises 409 if a preference already exists for the same patient (unique constraint). Raises 404 if the patient, provider, or operatory UUID does not resolve. Raises 422 if required fields are missing or invalid.
Parameters
Path Parameters
org_idstringrequiredRequest Body
notesstringFree-text notes about scheduling preferences.
patient_uuidstring (uuid)requiredUUID of the patient this preference belongs to.
preferred_contact_methodstringpreferred_daysinteger[]preferred_operatory_uuidstring (uuid)preferred_provider_uuidstring (uuid)preferred_time_endstring (time)preferred_time_startstring (time)Responses
created_atstring (date-time)requiredTimestamp when the preference was created.
idstring (uuid)requiredPublic UUID of the patient scheduling preference.
learned_from_historybooleanrequiredWhether this preference was inferred from appointment history rather than entered manually.
notesstringrequiredFree-text notes about scheduling preferences.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
preferred_contact_methodstringpreferred_daysinteger[]preferred_operatoryobjectLightweight reference to a related entity — exposes UUID and optional name.
preferred_providerobjectLightweight reference to a related entity — exposes UUID and optional name.
preferred_time_endstring (time)preferred_time_startstring (time)updated_atstring (date-time)requiredTimestamp when the preference was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/schedule/patient-preferences" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"notes": "",
"patient_uuid": "00000000-0000-0000-0000-000000000000",
"preferred_contact_method": "string",
"preferred_days": null,
"preferred_operatory_uuid": "string"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/schedule/patient-preferences" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"notes": "",
"patient_uuid": "00000000-0000-0000-0000-000000000000",
"preferred_contact_method": "string",
"preferred_days": null,
"preferred_operatory_uuid": "string"
}'/api/v1/{org_id}/schedule/production-goalsCreate production goal
Create a new per-provider daily production goal. Raises 422 if required fields are missing or if a goal already exists for the (provider, location, date) combination — use PUT /upsert instead for idempotent create-or-update.
Parameters
Path Parameters
org_idstringrequiredRequest Body
goal_amountnumberrequiredgoal_datestring (date)requiredCalendar date for this production target (YYYY-MM-DD).
location_uuidstring (uuid)requiredUUID of the location this goal is scoped to.
provider_uuidstring (uuid)requiredUUID of the provider this goal targets.
Responses
created_atstring (date-time)requiredTimestamp when the record was created.
goal_amountstringrequiredTarget production amount in dollars.
goal_datestring (date)requiredCalendar date for this production target.
idstring (uuid)requiredPublic UUID of the production goal.
locationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
providerobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
updated_atstring (date-time)requiredTimestamp of the most recent update.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/schedule/production-goals" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"goal_amount": null,
"goal_date": "2025-01-15",
"location_uuid": "00000000-0000-0000-0000-000000000000",
"provider_uuid": "00000000-0000-0000-0000-000000000000"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/schedule/production-goals" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"goal_amount": null,
"goal_date": "2025-01-15",
"location_uuid": "00000000-0000-0000-0000-000000000000",
"provider_uuid": "00000000-0000-0000-0000-000000000000"
}'/api/v1/{org_id}/schedule/saved-searchesCreate saved search
Create a new saved search for the current user. The user_id is auto-injected from the authenticated actor — clients cannot specify a different user. If is_default is true, any existing default for the same search_type is unset automatically. Raises 422 if required fields are missing or invalid.
Parameters
Path Parameters
org_idstringrequiredRequest Body
criteriaobjectrequiredSearch criteria parameters as a JSON object (user-defined keys — e.g., provider UUIDs, appointment types, date range). Keys are preserved as-is.
is_defaultbooleanWhether this is the default search for the user's search_type. Setting to true unsets any existing default for the same search_type.
namestringrequiredDisplay name for this saved search (max 100 characters).
search_typestringCategory of search this criteria applies to (e.g., 'find_free_time'). Defaults to 'find_free_time'.
Responses
created_atstring (date-time)requiredTimestamp when the saved search was created.
criteriaobjectrequiredSearch criteria parameters as a JSON object. Keys are user-defined and returned as-is.
idstring (uuid)requiredPublic UUID of the saved search.
is_defaultbooleanrequiredWhether this is the user's default search for the given search_type.
namestringrequiredDisplay name of this saved search.
search_typestringrequiredCategory of search this criteria applies to (e.g., 'find_free_time').
updated_atstring (date-time)requiredTimestamp when the saved search was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/schedule/saved-searches" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"criteria": {},
"is_default": false,
"name": "string",
"search_type": "find_free_time"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/schedule/saved-searches" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"criteria": {},
"is_default": false,
"name": "string",
"search_type": "find_free_time"
}'/api/v1/{org_id}/schedule/templatesCreate provider schedule template
Create a new provider schedule template. Raises 404 if the provider, location, or operatory does not exist. Raises 422 if day_of_week is not 0–6.
Parameters
Path Parameters
org_idstringrequiredRequest Body
day_of_weekintegerrequiredDay of week this template applies to (0=Monday, 6=Sunday).
effective_fromstring (date)requiredDate from which this template becomes active (inclusive).
effective_tostring (date)end_timestring (time)requiredScheduled end time for the provider (local time).
location_uuidstring (uuid)requiredUUID of the location this template is scoped to.
notestringoperatory_uuidstring (uuid)provider_uuidstring (uuid)requiredUUID of the provider this template applies to.
start_timestring (time)requiredScheduled start time for the provider (local time).
Responses
created_atstring (date-time)requiredTimestamp when the template was created.
day_of_weekintegerrequiredDay of week this template applies to (0=Monday, 6=Sunday).
effective_fromstring (date)requiredDate from which this template is active (inclusive).
effective_tostring (date)end_timestring (time)requiredScheduled end time for the provider (local time).
idstring (uuid)requiredPublic UUID of the provider schedule template.
locationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
notestringrequiredOptional note for this schedule template.
operatoryobjectLightweight reference to a related entity — exposes UUID and optional name.
providerobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
start_timestring (time)requiredScheduled start time for the provider (local time).
updated_atstring (date-time)requiredTimestamp when the template was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/schedule/templates" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"day_of_week": 0,
"effective_from": "2025-01-15",
"effective_to": "string",
"end_time": "09:00:00",
"location_uuid": "00000000-0000-0000-0000-000000000000",
"provider_uuid": "00000000-0000-0000-0000-000000000000",
"start_time": "09:00:00"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/schedule/templates" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"day_of_week": 0,
"effective_from": "2025-01-15",
"effective_to": "string",
"end_time": "09:00:00",
"location_uuid": "00000000-0000-0000-0000-000000000000",
"provider_uuid": "00000000-0000-0000-0000-000000000000",
"start_time": "09:00:00"
}'/api/v1/{org_id}/schedule/viewsCreate schedule view
Create a new schedule view for a location. Raises 404 if the location does not exist.
Parameters
Path Parameters
org_idstringrequiredRequest Body
auto_scroll_to_current_timebooleanWhether to auto-scroll the calendar to the current time on load.
bubble_enabledbooleanWhether appointment bubbles are enabled in weekly view.
bubble_layoutobjectcard_layoutobjectcolor_configobjectcompact_modebooleanWhether to use compact (condensed) appointment block rendering.
dynamic_op_filteringbooleanWhether to automatically hide operatories with no scheduled providers.
end_timestring (time)Latest time shown on the calendar (local time).
font_sizestringBase font size for appointment blocks — one of: xs, sm, md, lg.
location_uuidstring (uuid)requiredUUID of the location this view is scoped to.
min_operatory_width_pxintegerMinimum operatory column width in pixels. 0 means no minimum (auto).
namestringrequiredDisplay name for this schedule view.
operatory_uuidsstring (uuid)[]privacy_modebooleanWhether to obscure patient names and details for privacy (e.g., public-facing displays).
provider_uuidsstring (uuid)[]show_business_days_onlybooleanWhether to hide weekend columns in weekly view.
show_missed_appointmentsbooleanWhether to display missed/broken appointment slots on the schedule.
show_productionbooleanWhether to display production amounts on appointment blocks.
show_provider_barsbooleanWhether to show provider availability bars on the calendar.
start_timestring (time)Earliest time shown on the calendar (local time).
time_incrementintegerTime slot increment in minutes (e.g., 10, 15, 20).
view_typestringView mode — one of: daily, weekly.
visibilitystringResponses
auto_scroll_to_current_timebooleanrequiredWhether the calendar auto-scrolls to current time on load.
bubble_enabledbooleanrequiredWhether appointment bubbles are enabled in weekly view.
bubble_layoutobjectcard_layoutobjectcolor_configobjectcompact_modebooleanrequiredWhether compact appointment block rendering is enabled.
created_atstring (date-time)requiredTimestamp when the view was created.
dynamic_op_filteringbooleanrequiredWhether operatories with no scheduled providers are automatically hidden.
end_timestring (time)requiredLatest time shown on the calendar.
font_sizestringrequiredBase font size for appointment blocks — one of: xs, sm, md, lg.
idstring (uuid)requiredPublic UUID of the schedule view.
is_defaultbooleanrequiredWhether this is the current user's default view for the location. Derived from UserViewPreference — not stored on the view itself.
keyboard_shortcutintegerlocationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
min_operatory_width_pxintegerrequiredMinimum operatory column width in pixels. 0 means no minimum (auto).
namestringrequiredDisplay name of the schedule view.
operatory_uuidsstring (uuid)[]privacy_modebooleanrequiredWhether patient names and details are obscured for privacy.
provider_uuidsstring (uuid)[]show_business_days_onlybooleanrequiredWhether weekend columns are hidden in weekly view.
show_missed_appointmentsbooleanrequiredWhether missed/broken appointment slots are displayed on the schedule.
show_productionbooleanrequiredWhether production amounts are shown on appointment blocks.
show_provider_barsbooleanrequiredWhether provider availability bars are shown.
start_timestring (time)requiredEarliest time shown on the calendar.
time_incrementintegerrequiredTime slot increment in minutes.
updated_atstring (date-time)requiredTimestamp when the view was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
view_typestringrequiredView mode — one of: daily, weekly.
visibilitystringrequiredView visibility — one of: shared, personal.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/schedule/views" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"auto_scroll_to_current_time": true,
"bubble_enabled": true,
"bubble_layout": null,
"card_layout": null,
"color_config": null,
"location_uuid": "00000000-0000-0000-0000-000000000000",
"name": "string"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/schedule/views" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"auto_scroll_to_current_time": true,
"bubble_enabled": true,
"bubble_layout": null,
"card_layout": null,
"color_config": null,
"location_uuid": "00000000-0000-0000-0000-000000000000",
"name": "string"
}'/api/v1/{org_id}/schedule/views/{view_uuid}/set-defaultSet view as default
Set this view as the default for its user and location. Clears is_default on all other views belonging to the same user at the same location, then sets is_default=true on the target view. Raises 404 if the view does not exist.
Parameters
Path Parameters
view_uuidstringrequiredorg_idstringrequiredResponses
auto_scroll_to_current_timebooleanrequiredWhether the calendar auto-scrolls to current time on load.
bubble_enabledbooleanrequiredWhether appointment bubbles are enabled in weekly view.
bubble_layoutobjectcard_layoutobjectcolor_configobjectcompact_modebooleanrequiredWhether compact appointment block rendering is enabled.
created_atstring (date-time)requiredTimestamp when the view was created.
dynamic_op_filteringbooleanrequiredWhether operatories with no scheduled providers are automatically hidden.
end_timestring (time)requiredLatest time shown on the calendar.
font_sizestringrequiredBase font size for appointment blocks — one of: xs, sm, md, lg.
idstring (uuid)requiredPublic UUID of the schedule view.
is_defaultbooleanrequiredWhether this is the current user's default view for the location. Derived from UserViewPreference — not stored on the view itself.
keyboard_shortcutintegerlocationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
min_operatory_width_pxintegerrequiredMinimum operatory column width in pixels. 0 means no minimum (auto).
namestringrequiredDisplay name of the schedule view.
operatory_uuidsstring (uuid)[]privacy_modebooleanrequiredWhether patient names and details are obscured for privacy.
provider_uuidsstring (uuid)[]show_business_days_onlybooleanrequiredWhether weekend columns are hidden in weekly view.
show_missed_appointmentsbooleanrequiredWhether missed/broken appointment slots are displayed on the schedule.
show_productionbooleanrequiredWhether production amounts are shown on appointment blocks.
show_provider_barsbooleanrequiredWhether provider availability bars are shown.
start_timestring (time)requiredEarliest time shown on the calendar.
time_incrementintegerrequiredTime slot increment in minutes.
updated_atstring (date-time)requiredTimestamp when the view was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
view_typestringrequiredView mode — one of: daily, weekly.
visibilitystringrequiredView visibility — one of: shared, personal.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/schedule/views/{view_uuid}/set-default" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X POST "https://api.example.com/api/v1/{org_id}/schedule/views/{view_uuid}/set-default" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/views/{view_uuid}/set-shortcutSet keyboard shortcut
Assign a keyboard shortcut (Ctrl+1 through Ctrl+9) to this view for the current user. Clears any existing shortcut with the same number for this user at this location. Raises 404 if the view does not exist.
Parameters
Path Parameters
view_uuidstringrequiredorg_idstringrequiredQuery Parameters
shortcutintegerrequiredKeyboard shortcut number (1-9).
Responses
auto_scroll_to_current_timebooleanrequiredWhether the calendar auto-scrolls to current time on load.
bubble_enabledbooleanrequiredWhether appointment bubbles are enabled in weekly view.
bubble_layoutobjectcard_layoutobjectcolor_configobjectcompact_modebooleanrequiredWhether compact appointment block rendering is enabled.
created_atstring (date-time)requiredTimestamp when the view was created.
dynamic_op_filteringbooleanrequiredWhether operatories with no scheduled providers are automatically hidden.
end_timestring (time)requiredLatest time shown on the calendar.
font_sizestringrequiredBase font size for appointment blocks — one of: xs, sm, md, lg.
idstring (uuid)requiredPublic UUID of the schedule view.
is_defaultbooleanrequiredWhether this is the current user's default view for the location. Derived from UserViewPreference — not stored on the view itself.
keyboard_shortcutintegerlocationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
min_operatory_width_pxintegerrequiredMinimum operatory column width in pixels. 0 means no minimum (auto).
namestringrequiredDisplay name of the schedule view.
operatory_uuidsstring (uuid)[]privacy_modebooleanrequiredWhether patient names and details are obscured for privacy.
provider_uuidsstring (uuid)[]show_business_days_onlybooleanrequiredWhether weekend columns are hidden in weekly view.
show_missed_appointmentsbooleanrequiredWhether missed/broken appointment slots are displayed on the schedule.
show_productionbooleanrequiredWhether production amounts are shown on appointment blocks.
show_provider_barsbooleanrequiredWhether provider availability bars are shown.
start_timestring (time)requiredEarliest time shown on the calendar.
time_incrementintegerrequiredTime slot increment in minutes.
updated_atstring (date-time)requiredTimestamp when the view was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
view_typestringrequiredView mode — one of: daily, weekly.
visibilitystringrequiredView visibility — one of: shared, personal.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/schedule/views/{view_uuid}/set-shortcut" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X POST "https://api.example.com/api/v1/{org_id}/schedule/views/{view_uuid}/set-shortcut" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/patient-preferences/by-patient/{patient_uuid}Upsert scheduling preference for a patient
Create or update the scheduling preference for a patient. If no preference exists for the patient, a new one is created. If a preference already exists, base_version is required for optimistic concurrency. Raises 404 if the patient, provider, or operatory UUID does not resolve. Raises 409 if a preference already exists and base_version is stale. Raises 422 if base_version is omitted when updating an existing preference.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredRequest Body
base_versionintegerlearned_from_historybooleanWhether this preference was inferred from appointment history rather than entered manually.
notesstringFree-text notes about scheduling preferences.
preferred_contact_methodstringpreferred_daysinteger[]preferred_operatory_uuidstring (uuid)preferred_provider_uuidstring (uuid)preferred_time_endstring (time)preferred_time_startstring (time)Responses
created_atstring (date-time)requiredTimestamp when the preference was created.
idstring (uuid)requiredPublic UUID of the patient scheduling preference.
learned_from_historybooleanrequiredWhether this preference was inferred from appointment history rather than entered manually.
notesstringrequiredFree-text notes about scheduling preferences.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
preferred_contact_methodstringpreferred_daysinteger[]preferred_operatoryobjectLightweight reference to a related entity — exposes UUID and optional name.
preferred_providerobjectLightweight reference to a related entity — exposes UUID and optional name.
preferred_time_endstring (time)preferred_time_startstring (time)updated_atstring (date-time)requiredTimestamp when the preference was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X PUT "https://api.example.com/api/v1/{org_id}/schedule/patient-preferences/by-patient/{patient_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"learned_from_history": false,
"notes": "",
"preferred_contact_method": "string",
"preferred_days": null
}'curl -X PUT "https://api.example.com/api/v1/{org_id}/schedule/patient-preferences/by-patient/{patient_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"learned_from_history": false,
"notes": "",
"preferred_contact_method": "string",
"preferred_days": null
}'/api/v1/{org_id}/schedule/production-goals/upsertUpsert production goal
Create or update a production goal by (provider, location, date). If a goal already exists for the given provider + location + date, updates the goal_amount. Otherwise creates a new record. This is the preferred endpoint for bulk calendar imports. Raises 404 if the provider or location UUID does not exist.
Parameters
Path Parameters
org_idstringrequiredRequest Body
goal_amountnumberrequiredgoal_datestring (date)requiredCalendar date for this production target (YYYY-MM-DD).
location_uuidstring (uuid)requiredUUID of the location this goal is scoped to.
provider_uuidstring (uuid)requiredUUID of the provider this goal targets.
Responses
created_atstring (date-time)requiredTimestamp when the record was created.
goal_amountstringrequiredTarget production amount in dollars.
goal_datestring (date)requiredCalendar date for this production target.
idstring (uuid)requiredPublic UUID of the production goal.
locationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
providerobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
updated_atstring (date-time)requiredTimestamp of the most recent update.
detailobject[]curl -X PUT "https://api.example.com/api/v1/{org_id}/schedule/production-goals/upsert" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"goal_amount": null,
"goal_date": "2025-01-15",
"location_uuid": "00000000-0000-0000-0000-000000000000",
"provider_uuid": "00000000-0000-0000-0000-000000000000"
}'curl -X PUT "https://api.example.com/api/v1/{org_id}/schedule/production-goals/upsert" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"goal_amount": null,
"goal_date": "2025-01-15",
"location_uuid": "00000000-0000-0000-0000-000000000000",
"provider_uuid": "00000000-0000-0000-0000-000000000000"
}'/api/v1/{org_id}/schedule/appointment-rules/{rule_uuid}Update appointment rule
Update the allow_overlap field of an existing appointment rule. The appointment_type pair and location are immutable after creation. Raises 404 if the appointment rule does not exist. Raises 409 if base_version does not match the current version (optimistic concurrency).
Parameters
Path Parameters
rule_uuidstringrequiredorg_idstringrequiredRequest Body
allow_overlapbooleanrequiredWhether appointments of these two types are allowed to overlap in the schedule.
base_versionintegerrequiredCurrent version for optimistic concurrency — rejected with 409 if stale.
Responses
allow_overlapbooleanrequiredWhether appointments of these two types are allowed to overlap in the schedule.
appointment_type_aobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
appointment_type_bobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
created_atstring (date-time)requiredTimestamp when the rule was created.
idstring (uuid)requiredPublic UUID of the appointment rule.
locationobjectLightweight reference to a related entity — exposes UUID and optional name.
updated_atstring (date-time)requiredTimestamp of the most recent update.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/schedule/appointment-rules/{rule_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"allow_overlap": false,
"base_version": 1
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/schedule/appointment-rules/{rule_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"allow_overlap": false,
"base_version": 1
}'/api/v1/{org_id}/schedule/flow-statuses/{flow_status_uuid}Update patient flow status
Update a patient flow status definition. Raises 404 if the flow status does not exist. Raises 409 if base_version is stale.
Parameters
Path Parameters
flow_status_uuidstringrequiredorg_idstringrequiredRequest Body
base_versionintegerrequiredCurrent version for optimistic concurrency — rejected with 409 if stale.
colorstringis_activebooleanitem_orderintegernamestringResponses
colorstringrequiredHex color string for this status.
created_atstring (date-time)requiredTimestamp when the flow status was created.
idstring (uuid)requiredPublic UUID of the flow status.
is_activebooleanrequiredWhether this flow status is active and available for use.
item_orderintegerrequiredDisplay order among flow statuses.
namestringrequiredDisplay name of the flow status.
slugstringrequiredURL-safe identifier derived from the name.
updated_atstring (date-time)requiredTimestamp when the flow status was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/schedule/flow-statuses/{flow_status_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"color": "string",
"is_active": null,
"item_order": 1,
"name": "string"
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/schedule/flow-statuses/{flow_status_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"color": "string",
"is_active": null,
"item_order": 1,
"name": "string"
}'/api/v1/{org_id}/schedule/notes/{note_uuid}Update schedule note
Update a schedule note. Only the `note` field is mutable. Requires `base_version` for optimistic concurrency. Raises 404 if the note does not exist. Raises 409 if `base_version` is stale.
Parameters
Path Parameters
note_uuidstringrequiredorg_idstringrequiredRequest Body
base_versionintegerrequiredCurrent version for optimistic concurrency — rejected with 409 if stale.
notestringResponses
created_atstring (date-time)requiredTimestamp when the note was created.
idstring (uuid)requiredPublic UUID of the schedule note.
locationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
notestringrequiredThe note text displayed on the calendar.
note_datestring (date)requiredThe calendar date this note applies to.
updated_atstring (date-time)requiredTimestamp when the note was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/schedule/notes/{note_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"note": "string"
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/schedule/notes/{note_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"note": "string"
}'/api/v1/{org_id}/schedule/overrides/{override_uuid}Update provider schedule override
Update a provider schedule override. Raises 404 if the override or operatory does not exist. Raises 422 if override_reason is not a valid value.
Parameters
Path Parameters
override_uuidstringrequiredorg_idstringrequiredRequest Body
end_timestring (time)is_unavailablebooleannotestringoperatory_uuidstring (uuid)override_reasonstringstart_timestring (time)Responses
created_atstring (date-time)requiredTimestamp when the override was created.
end_timestring (time)idstring (uuid)requiredPublic UUID of the provider schedule override.
is_unavailablebooleanrequiredWhether the provider is fully unavailable for this date.
locationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
notestringrequiredOptional note for this override.
operatoryobjectLightweight reference to a related entity — exposes UUID and optional name.
override_datestring (date)requiredThe specific calendar date being overridden.
override_reasonstringrequiredReason for the override.
providerobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
start_timestring (time)updated_atstring (date-time)requiredTimestamp when the override was last updated.
detailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/schedule/overrides/{override_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"end_time": "string",
"is_unavailable": null,
"note": "string",
"operatory_uuid": "string",
"override_reason": "string"
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/schedule/overrides/{override_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"end_time": "string",
"is_unavailable": null,
"note": "string",
"operatory_uuid": "string",
"override_reason": "string"
}'/api/v1/{org_id}/schedule/patient-preferences/{preference_uuid}Update patient scheduling preference
Update a patient scheduling preference. Requires base_version for optimistic concurrency. Raises 404 if the preference does not exist. Raises 409 if base_version is stale. Raises 422 if validation fails. The patient_id field is immutable and cannot be changed via update.
Parameters
Path Parameters
preference_uuidstringrequiredorg_idstringrequiredRequest Body
base_versionintegerrequiredCurrent version for optimistic concurrency — rejected with 409 if stale.
learned_from_historybooleannotesstringpreferred_contact_methodstringpreferred_daysinteger[]preferred_operatory_uuidstring (uuid)preferred_provider_uuidstring (uuid)preferred_time_endstring (time)preferred_time_startstring (time)Responses
created_atstring (date-time)requiredTimestamp when the preference was created.
idstring (uuid)requiredPublic UUID of the patient scheduling preference.
learned_from_historybooleanrequiredWhether this preference was inferred from appointment history rather than entered manually.
notesstringrequiredFree-text notes about scheduling preferences.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
preferred_contact_methodstringpreferred_daysinteger[]preferred_operatoryobjectLightweight reference to a related entity — exposes UUID and optional name.
preferred_providerobjectLightweight reference to a related entity — exposes UUID and optional name.
preferred_time_endstring (time)preferred_time_startstring (time)updated_atstring (date-time)requiredTimestamp when the preference was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/schedule/patient-preferences/{preference_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"learned_from_history": null,
"notes": "string",
"preferred_contact_method": "string",
"preferred_days": null
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/schedule/patient-preferences/{preference_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"learned_from_history": null,
"notes": "string",
"preferred_contact_method": "string",
"preferred_days": null
}'/api/v1/{org_id}/schedule/production-goals/{goal_uuid}Update production goal
Update the goal_amount of an existing production goal. Raises 404 if the production goal does not exist.
Parameters
Path Parameters
goal_uuidstringrequiredorg_idstringrequiredRequest Body
goal_amountnumberrequiredResponses
created_atstring (date-time)requiredTimestamp when the record was created.
goal_amountstringrequiredTarget production amount in dollars.
goal_datestring (date)requiredCalendar date for this production target.
idstring (uuid)requiredPublic UUID of the production goal.
locationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
providerobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
updated_atstring (date-time)requiredTimestamp of the most recent update.
detailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/schedule/production-goals/{goal_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"goal_amount": null
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/schedule/production-goals/{goal_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"goal_amount": null
}'/api/v1/{org_id}/schedule/saved-searches/{search_uuid}Update saved search
Update a saved search. Requires base_version for optimistic concurrency. If is_default is set to true, the previous default for the same user + search_type is unset. Only updates the search if it belongs to the authenticated user. Raises 404 if the saved search does not exist or belongs to a different user. Raises 409 if base_version is stale. Raises 422 if required fields are missing or invalid.
Parameters
Path Parameters
search_uuidstringrequiredorg_idstringrequiredRequest Body
base_versionintegerrequiredCurrent version for optimistic concurrency — rejected with 409 if stale.
criteriaobjectis_defaultbooleannamestringsearch_typestringResponses
created_atstring (date-time)requiredTimestamp when the saved search was created.
criteriaobjectrequiredSearch criteria parameters as a JSON object. Keys are user-defined and returned as-is.
idstring (uuid)requiredPublic UUID of the saved search.
is_defaultbooleanrequiredWhether this is the user's default search for the given search_type.
namestringrequiredDisplay name of this saved search.
search_typestringrequiredCategory of search this criteria applies to (e.g., 'find_free_time').
updated_atstring (date-time)requiredTimestamp when the saved search was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/schedule/saved-searches/{search_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"criteria": null,
"is_default": null,
"name": "string",
"search_type": "string"
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/schedule/saved-searches/{search_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"criteria": null,
"is_default": null,
"name": "string",
"search_type": "string"
}'/api/v1/{org_id}/schedule/templates/{template_uuid}Update provider schedule template
Update a provider schedule template. Raises 404 if the template or operatory does not exist. Raises 409 if base_version is stale.
Parameters
Path Parameters
template_uuidstringrequiredorg_idstringrequiredRequest Body
base_versionintegerrequiredCurrent version for optimistic concurrency — rejected with 409 if stale.
day_of_weekintegereffective_fromstring (date)effective_tostring (date)end_timestring (time)notestringoperatory_uuidstring (uuid)start_timestring (time)Responses
created_atstring (date-time)requiredTimestamp when the template was created.
day_of_weekintegerrequiredDay of week this template applies to (0=Monday, 6=Sunday).
effective_fromstring (date)requiredDate from which this template is active (inclusive).
effective_tostring (date)end_timestring (time)requiredScheduled end time for the provider (local time).
idstring (uuid)requiredPublic UUID of the provider schedule template.
locationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
notestringrequiredOptional note for this schedule template.
operatoryobjectLightweight reference to a related entity — exposes UUID and optional name.
providerobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
start_timestring (time)requiredScheduled start time for the provider (local time).
updated_atstring (date-time)requiredTimestamp when the template was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/schedule/templates/{template_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"day_of_week": 1,
"effective_from": "string",
"effective_to": "string",
"end_time": "string"
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/schedule/templates/{template_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"day_of_week": 1,
"effective_from": "string",
"effective_to": "string",
"end_time": "string"
}'/api/v1/{org_id}/schedule/views/{view_uuid}Update schedule view
Update a schedule view's configuration. Raises 404 if the view does not exist. Raises 409 if base_version is stale.
Parameters
Path Parameters
view_uuidstringrequiredorg_idstringrequiredRequest Body
auto_scroll_to_current_timebooleanbase_versionintegerrequiredCurrent version for optimistic concurrency — rejected with 409 if stale.
bubble_enabledbooleanbubble_layoutobjectcard_layoutobjectcolor_configobjectcompact_modebooleandynamic_op_filteringbooleanend_timestring (time)font_sizestringmin_operatory_width_pxintegernamestringoperatory_uuidsstring (uuid)[]privacy_modebooleanprovider_uuidsstring (uuid)[]show_business_days_onlybooleanshow_missed_appointmentsbooleanshow_productionbooleanshow_provider_barsbooleanstart_timestring (time)time_incrementintegerview_typestringvisibilitystringResponses
auto_scroll_to_current_timebooleanrequiredWhether the calendar auto-scrolls to current time on load.
bubble_enabledbooleanrequiredWhether appointment bubbles are enabled in weekly view.
bubble_layoutobjectcard_layoutobjectcolor_configobjectcompact_modebooleanrequiredWhether compact appointment block rendering is enabled.
created_atstring (date-time)requiredTimestamp when the view was created.
dynamic_op_filteringbooleanrequiredWhether operatories with no scheduled providers are automatically hidden.
end_timestring (time)requiredLatest time shown on the calendar.
font_sizestringrequiredBase font size for appointment blocks — one of: xs, sm, md, lg.
idstring (uuid)requiredPublic UUID of the schedule view.
is_defaultbooleanrequiredWhether this is the current user's default view for the location. Derived from UserViewPreference — not stored on the view itself.
keyboard_shortcutintegerlocationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
min_operatory_width_pxintegerrequiredMinimum operatory column width in pixels. 0 means no minimum (auto).
namestringrequiredDisplay name of the schedule view.
operatory_uuidsstring (uuid)[]privacy_modebooleanrequiredWhether patient names and details are obscured for privacy.
provider_uuidsstring (uuid)[]show_business_days_onlybooleanrequiredWhether weekend columns are hidden in weekly view.
show_missed_appointmentsbooleanrequiredWhether missed/broken appointment slots are displayed on the schedule.
show_productionbooleanrequiredWhether production amounts are shown on appointment blocks.
show_provider_barsbooleanrequiredWhether provider availability bars are shown.
start_timestring (time)requiredEarliest time shown on the calendar.
time_incrementintegerrequiredTime slot increment in minutes.
updated_atstring (date-time)requiredTimestamp when the view was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
view_typestringrequiredView mode — one of: daily, weekly.
visibilitystringrequiredView visibility — one of: shared, personal.
detailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/schedule/views/{view_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"auto_scroll_to_current_time": null,
"base_version": 1,
"bubble_enabled": null,
"bubble_layout": null,
"card_layout": null
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/schedule/views/{view_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"auto_scroll_to_current_time": null,
"base_version": 1,
"bubble_enabled": null,
"bubble_layout": null,
"card_layout": null
}'/api/v1/{org_id}/schedule/appointment-rules/{rule_uuid}Delete appointment rule
Permanently delete an appointment rule. This is a hard delete — the record is removed from the database. Raises 404 if the appointment rule does not exist.
Parameters
Path Parameters
rule_uuidstringrequiredorg_idstringrequiredResponses
detailobject[]curl -X DELETE "https://api.example.com/api/v1/{org_id}/schedule/appointment-rules/{rule_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X DELETE "https://api.example.com/api/v1/{org_id}/schedule/appointment-rules/{rule_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/flow-statuses/{flow_status_uuid}Delete patient flow status
Delete a patient flow status definition. This is irreversible. Raises 404 if the flow status does not exist.
Parameters
Path Parameters
flow_status_uuidstringrequiredorg_idstringrequiredResponses
detailobject[]curl -X DELETE "https://api.example.com/api/v1/{org_id}/schedule/flow-statuses/{flow_status_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X DELETE "https://api.example.com/api/v1/{org_id}/schedule/flow-statuses/{flow_status_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/notes/{note_uuid}Delete schedule note
Hard-delete a schedule note. This action is irreversible. Raises 404 if the note does not exist.
Parameters
Path Parameters
note_uuidstringrequiredorg_idstringrequiredResponses
detailobject[]curl -X DELETE "https://api.example.com/api/v1/{org_id}/schedule/notes/{note_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X DELETE "https://api.example.com/api/v1/{org_id}/schedule/notes/{note_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/overrides/{override_uuid}Delete provider schedule override
Delete a provider schedule override. This is irreversible. Raises 404 if the override does not exist.
Parameters
Path Parameters
override_uuidstringrequiredorg_idstringrequiredResponses
detailobject[]curl -X DELETE "https://api.example.com/api/v1/{org_id}/schedule/overrides/{override_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X DELETE "https://api.example.com/api/v1/{org_id}/schedule/overrides/{override_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/patient-preferences/{preference_uuid}Delete patient scheduling preference
Hard-delete a patient scheduling preference. This action is irreversible. Raises 404 if the preference does not exist.
Parameters
Path Parameters
preference_uuidstringrequiredorg_idstringrequiredResponses
detailobject[]curl -X DELETE "https://api.example.com/api/v1/{org_id}/schedule/patient-preferences/{preference_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X DELETE "https://api.example.com/api/v1/{org_id}/schedule/patient-preferences/{preference_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/production-goals/{goal_uuid}Delete production goal
Permanently delete a production goal. This is a hard delete — the record is removed from the database. Raises 404 if the production goal does not exist.
Parameters
Path Parameters
goal_uuidstringrequiredorg_idstringrequiredResponses
detailobject[]curl -X DELETE "https://api.example.com/api/v1/{org_id}/schedule/production-goals/{goal_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X DELETE "https://api.example.com/api/v1/{org_id}/schedule/production-goals/{goal_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/saved-searches/{search_uuid}Delete saved search
Hard-delete a saved search. This action is irreversible. Raises 404 if the saved search does not exist.
Parameters
Path Parameters
search_uuidstringrequiredorg_idstringrequiredResponses
detailobject[]curl -X DELETE "https://api.example.com/api/v1/{org_id}/schedule/saved-searches/{search_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X DELETE "https://api.example.com/api/v1/{org_id}/schedule/saved-searches/{search_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/templates/{template_uuid}Delete provider schedule template
Delete a provider schedule template. This is irreversible. Raises 404 if the template does not exist.
Parameters
Path Parameters
template_uuidstringrequiredorg_idstringrequiredResponses
detailobject[]curl -X DELETE "https://api.example.com/api/v1/{org_id}/schedule/templates/{template_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X DELETE "https://api.example.com/api/v1/{org_id}/schedule/templates/{template_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/schedule/views/{view_uuid}Delete schedule view
Delete a schedule view. This is irreversible. Raises 404 if the view does not exist.
Parameters
Path Parameters
view_uuidstringrequiredorg_idstringrequiredResponses
detailobject[]curl -X DELETE "https://api.example.com/api/v1/{org_id}/schedule/views/{view_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X DELETE "https://api.example.com/api/v1/{org_id}/schedule/views/{view_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"Appointments
29 endpoints
/api/v1/{org_id}/appointmentsList appointments
List appointments with optional filters. Returns a paginated list of appointments. Raises 404 if location_uuid or patient_uuid is not found. Date filters are expanded to local-day boundaries when no time component is provided and a location is specified.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
location_uuidstringFilter appointments to this location UUID.
patient_uuidstringFilter appointments to this patient UUID.
statusstringFilter by appointment status. Accepts a single value or comma-separated list (e.g., 'scheduled,complete').
date_fromstringReturn appointments starting at or after this datetime. When a date-only value is given, expands to the start of that day in the location's local timezone.
date_tostringReturn appointments starting before or at this datetime. When a date-only value is given, expands to the end of that day in the location's local timezone.
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of appointments to return per page (max 200).
Default: 50
Responses
itemsobject[]requiredPage of appointment records.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of items per page.
totalintegerrequiredTotal number of appointments matching the query filters.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/appointments" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/appointments" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/appointments/{appointment_uuid}Get appointment
Retrieve a single appointment by UUID. Staff callers (Cognito JWT) get the full ``AppointmentOut`` shape, with location-scoped permission enforcement. Raises 404 if the appointment is not found.
Parameters
Path Parameters
appointment_uuidstringrequiredorg_idstringrequiredResponses
appointment_typeobjectLightweight reference to a related entity — exposes UUID and optional name.
broken_reasonobjectLightweight reference to a related entity — exposes UUID and optional name.
cancel_reasonobjectLightweight reference to a related entity — exposes UUID and optional name.
cancelled_bystringcolor_overridestringconfirmation_statusobjectLightweight reference to a related entity — exposes UUID and optional name.
confirmation_status_labelstringcreated_atstring (date-time)requiredUTC timestamp when this appointment was created.
datetime_ask_to_arrivestring (date-time)end_timestring (date-time)estimated_insurancestringestimated_patient_portionstringflow_statusobjectLightweight reference to a related entity — exposes UUID and optional name.
idstring (uuid)requiredPublic UUID of the appointment.
is_new_patientbooleanrequiredWhether this appointment is for a new patient visit.
is_time_lockedbooleanrequiredWhen true, the appointment time is locked and cannot be automatically adjusted.
item_orderintegerrequiredDisplay order of this appointment within its time slot.
locationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
location_timezonestringIANA timezone identifier for the appointment's location (e.g., 'America/New_York').
notestringrequiredFree-text note or instructions for this appointment.
operatoryobjectLightweight reference to a related entity — exposes UUID and optional name.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
priorityintegerrequiredScheduling priority; higher values indicate higher priority.
production_amountstringrequiredTotal expected production amount for this appointment.
providerobjectLightweight reference to a related entity — exposes UUID and optional name.
providersobject[]References to all assigned providers (id + name), ordered by appointment provider item_order.
recallobjectLightweight reference to a related entity — exposes UUID and optional name.
start_timestring (date-time)statusstringrequiredCurrent appointment status. One of: planned, scheduled, complete, broken, cancelled, unscheduled, pinboard.
tagsobject[]Appointment tags assigned to this appointment.
updated_atstring (date-time)requiredUTC timestamp when this appointment was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/appointments/{appointment_uuid}/historyList appointment history
List the change history for an appointment in reverse chronological order. Returns paginated audit trail entries showing status transitions, moves, and field updates. Raises 404 if the appointment is not found.
Parameters
Path Parameters
appointment_uuidstringrequiredorg_idstringrequiredQuery Parameters
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of history entries to return per page (max 200).
Default: 50
Responses
itemsobject[]requiredPage of history records for the appointment.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of items per page.
totalintegerrequiredTotal number of history entries for the appointment.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/history" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/history" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/appointments/{appointment_uuid}/patient-flow-eventsList patient flow events
List all patient flow events for an appointment in chronological order. Returns a paginated timeline of flow status transitions (e.g., arrived, in_chair, checkout). Raises 404 if the appointment is not found.
Parameters
Path Parameters
appointment_uuidstringrequiredorg_idstringrequiredQuery Parameters
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of flow events to return per page (max 200).
Default: 50
Responses
itemsobject[]requiredPage of patient flow event records.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of items per page.
totalintegerrequiredTotal number of matching records.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/patient-flow-events" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/patient-flow-events" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/appointments/{appointment_uuid}/patient-flow-statsGet patient flow stats
Get patient flow duration statistics for an appointment. Returns time spent in each flow status segment and aggregate totals. Raises 404 if the appointment is not found.
Parameters
Path Parameters
appointment_uuidstringrequiredorg_idstringrequiredQuery Parameters
include_openbooleanWhen true, includes the currently open (in-progress) flow segment in duration calculations.
Default: true
Responses
appointment_uuidstring (uuid)requiredPublic UUID of the appointment these stats belong to.
current_flow_statusobjectLightweight reference to a related entity — exposes UUID and optional name.
segmentsobject[]requiredOrdered list of flow status segments.
totalsobject[]requiredAggregated time totals per flow status.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/patient-flow-stats" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/patient-flow-stats" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/appointments/{appointment_uuid}/proceduresList appointment procedures
List all procedures linked to an appointment ordered by item_order. Raises 404 if the appointment is not found.
Parameters
Path Parameters
appointment_uuidstringrequiredorg_idstringrequiredResponses
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/procedures" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/procedures" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/appointments/{appointment_uuid}/providersList appointment providers
List all providers assigned to an appointment with their roles and scheduled time ranges. Raises 404 if the appointment is not found.
Parameters
Path Parameters
appointment_uuidstringrequiredorg_idstringrequiredResponses
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/providers" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/providers" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/appointments/confirmation-statusesList appointment confirmation statuses
List confirmation-status values configured for the practice. These are the legal target values for ``PATCH /appointments/{id}/confirmation-status``. Reference data — low cardinality, stable. Staff callers receive the full ``DefinitionListOut`` shape (same as ``GET /definitions?category=ApptConfirmed``).
Parameters
Path Parameters
org_idstringrequiredResponses
itemsobject[]requiredpageintegerrequiredpage_sizeintegerrequiredtotalintegerrequireddetailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/appointments/confirmation-statuses" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/appointments/confirmation-statuses" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/appointments/counts/by-locationCount appointments by location
Return location-level appointment counts without exposing appointment rows.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
date_fromstringrequiredInclusive local start date, YYYY-MM-DD.
date_tostringrequiredExclusive local end date, YYYY-MM-DD.
status_setstring[]Appointment statuses to include. Repeat the query param for multiple values. Defaults to scheduled when omitted by Agent-MS.
Responses
date_fromstring (date)requiredInclusive local start date used for every location.
date_tostring (date)requiredExclusive local end date used for every location.
group_bystringAggregate grouping dimension.
itemsobject[]requiredOne count item per active location.
status_setstring[]requiredAppointment statuses included in the count.
totalintegerrequiredSum of all location counts in this response.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/appointments/counts/by-location" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/appointments/counts/by-location" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/appointments/cursorList appointments (cursor-paginated)
List appointments with cursor-based pagination and optional filters. Returns a cursor-paginated list of appointments. Use the ``after`` parameter with the ``end_cursor`` value from the previous response to fetch the next page. This endpoint uses keyset pagination for stable, performant traversal of large result sets. Error conditions: - 404: Referenced location, patient, operatory, or provider not found. - 422: Invalid or malformed cursor value.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
firstintegerMaximum number of records to return per page.
Default: 50
afterstringOpaque cursor from a previous page_info.end_cursor.
sort_by"created_at" | "start_time" | "status" | "updated_at"Sort field. One of: start_time, created_at, updated_at, status. Defaults to start_time when not specified.
sort_dir"asc" | "desc"Sort direction. One of: asc, desc.
ascdescDefault: "asc"
statusstringFilter by appointment status (e.g. 'scheduled', 'complete').
location_uuidstringFilter by location UUID.
patient_uuidstringFilter by patient UUID.
operatory_uuidstringFilter by operatory UUID.
provider_uuidstringFilter by provider UUID (appointments with this provider assigned).
date_fromstringFilter appointments starting at or after this UTC datetime.
date_tostringFilter appointments starting before this UTC datetime.
Responses
dataobject[]requiredPage of records.
org_uuidstring (uuid)requiredOrganisation that owns these appointment records.
page_infoobjectrequiredPagination metadata.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/appointments/cursor" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/appointments/cursor" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/appointments/pinboardList pinboard appointments
List all pinboard (unscheduled) appointments for a location. Returns appointments that have been moved to the pinboard and are awaiting placement on the schedule. Raises 404 if location_uuid is not found.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
location_uuidstringrequiredUUID of the location whose pinboard appointments to list.
Responses
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/appointments/pinboard" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/appointments/pinboard" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/appointments/procedure-frequency-checkCheck procedure frequency
Check when a procedure was last performed for a patient. Returns the most recent completion date and days since for the given procedure code. Useful for frequency validation before scheduling. Raises 404 if patient_uuid is not found or the procedure code does not exist.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
patient_uuidstringrequiredUUID of the patient to check procedure history for.
procedure_codestringrequiredCDT procedure code to look up (e.g., 'D0120').
Responses
days_sinceintegerlast_performed_datestring (date)procedure_codestringrequiredCDT procedure code that was checked (e.g., 'D0120').
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/appointments/procedure-frequency-check" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/appointments/procedure-frequency-check" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/appointmentsCreate appointment
Create a new appointment for a patient at a location. Staff callers send the full ``CreateAppointmentIn`` payload and receive ``AppointmentOut``. Raises 404 if any referenced UUID (patient, location, operatory, appointment_type) is not found. Raises 409 if another appointment occupies the same operatory time slot and allow_overlap is false. Raises 422 if required fields are missing or status is invalid.
Parameters
Path Parameters
org_idstringrequiredRequest Body
allow_overlapbooleanWhen true, bypasses operatory conflict detection and permits overlapping appointments.
appointment_type_uuidstring (uuid)ask_to_arrive_timestring (time)color_overridestringend_timestring (time)is_new_patientbooleanWhether this appointment is for a new patient visit.
location_uuidstring (uuid)requiredUUID of the location where the appointment will take place. References the Location entity.
notestringoperatory_uuidstring (uuid)patient_uuidstring (uuid)requiredUUID of the patient being scheduled. References the Patient entity.
priorityintegerScheduling priority; higher values indicate higher priority.
schedule_datestring (date)start_timestring (time)statusstringInitial appointment status. One of: planned, scheduled, complete, broken, cancelled, unscheduled, pinboard.
Responses
appointment_typeobjectLightweight reference to a related entity — exposes UUID and optional name.
broken_reasonobjectLightweight reference to a related entity — exposes UUID and optional name.
cancel_reasonobjectLightweight reference to a related entity — exposes UUID and optional name.
cancelled_bystringcolor_overridestringconfirmation_statusobjectLightweight reference to a related entity — exposes UUID and optional name.
confirmation_status_labelstringcreated_atstring (date-time)requiredUTC timestamp when this appointment was created.
datetime_ask_to_arrivestring (date-time)end_timestring (date-time)estimated_insurancestringestimated_patient_portionstringflow_statusobjectLightweight reference to a related entity — exposes UUID and optional name.
idstring (uuid)requiredPublic UUID of the appointment.
is_new_patientbooleanrequiredWhether this appointment is for a new patient visit.
is_time_lockedbooleanrequiredWhen true, the appointment time is locked and cannot be automatically adjusted.
item_orderintegerrequiredDisplay order of this appointment within its time slot.
locationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
location_timezonestringIANA timezone identifier for the appointment's location (e.g., 'America/New_York').
notestringrequiredFree-text note or instructions for this appointment.
operatoryobjectLightweight reference to a related entity — exposes UUID and optional name.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
priorityintegerrequiredScheduling priority; higher values indicate higher priority.
production_amountstringrequiredTotal expected production amount for this appointment.
providerobjectLightweight reference to a related entity — exposes UUID and optional name.
providersobject[]References to all assigned providers (id + name), ordered by appointment provider item_order.
recallobjectLightweight reference to a related entity — exposes UUID and optional name.
start_timestring (date-time)statusstringrequiredCurrent appointment status. One of: planned, scheduled, complete, broken, cancelled, unscheduled, pinboard.
tagsobject[]Appointment tags assigned to this appointment.
updated_atstring (date-time)requiredUTC timestamp when this appointment was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/appointments" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"allow_overlap": false,
"appointment_type_uuid": "string",
"ask_to_arrive_time": "string",
"color_override": "string",
"end_time": "string",
"location_uuid": "00000000-0000-0000-0000-000000000000",
"patient_uuid": "00000000-0000-0000-0000-000000000000"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/appointments" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"allow_overlap": false,
"appointment_type_uuid": "string",
"ask_to_arrive_time": "string",
"color_override": "string",
"end_time": "string",
"location_uuid": "00000000-0000-0000-0000-000000000000",
"patient_uuid": "00000000-0000-0000-0000-000000000000"
}'/api/v1/{org_id}/appointments/{appointment_uuid}/breakBreak appointment
Mark an appointment as broken (patient missed without prior notice). Raises 404 if the appointment or broken_reason_uuid is not found. Raises 409 if base_version is stale.
Parameters
Path Parameters
appointment_uuidstringrequiredorg_idstringrequiredRequest Body
base_versionintegerrequiredCurrent version of the appointment for optimistic concurrency — rejected with 409 if stale.
broken_reason_uuidstring (uuid)notestringResponses
appointment_typeobjectLightweight reference to a related entity — exposes UUID and optional name.
broken_reasonobjectLightweight reference to a related entity — exposes UUID and optional name.
cancel_reasonobjectLightweight reference to a related entity — exposes UUID and optional name.
cancelled_bystringcolor_overridestringconfirmation_statusobjectLightweight reference to a related entity — exposes UUID and optional name.
confirmation_status_labelstringcreated_atstring (date-time)requiredUTC timestamp when this appointment was created.
datetime_ask_to_arrivestring (date-time)end_timestring (date-time)estimated_insurancestringestimated_patient_portionstringflow_statusobjectLightweight reference to a related entity — exposes UUID and optional name.
idstring (uuid)requiredPublic UUID of the appointment.
is_new_patientbooleanrequiredWhether this appointment is for a new patient visit.
is_time_lockedbooleanrequiredWhen true, the appointment time is locked and cannot be automatically adjusted.
item_orderintegerrequiredDisplay order of this appointment within its time slot.
locationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
location_timezonestringIANA timezone identifier for the appointment's location (e.g., 'America/New_York').
notestringrequiredFree-text note or instructions for this appointment.
operatoryobjectLightweight reference to a related entity — exposes UUID and optional name.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
priorityintegerrequiredScheduling priority; higher values indicate higher priority.
production_amountstringrequiredTotal expected production amount for this appointment.
providerobjectLightweight reference to a related entity — exposes UUID and optional name.
providersobject[]References to all assigned providers (id + name), ordered by appointment provider item_order.
recallobjectLightweight reference to a related entity — exposes UUID and optional name.
start_timestring (date-time)statusstringrequiredCurrent appointment status. One of: planned, scheduled, complete, broken, cancelled, unscheduled, pinboard.
tagsobject[]Appointment tags assigned to this appointment.
updated_atstring (date-time)requiredUTC timestamp when this appointment was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/break" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"broken_reason_uuid": "string",
"note": "string"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/break" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"broken_reason_uuid": "string",
"note": "string"
}'/api/v1/{org_id}/appointments/{appointment_uuid}/cancelCancel appointment
Cancel an appointment with an optional reason and note. Raises 404 if the appointment or cancel_reason_uuid is not found. Raises 409 if base_version is stale.
Parameters
Path Parameters
appointment_uuidstringrequiredorg_idstringrequiredRequest Body
base_versionintegerrequiredCurrent version of the appointment for optimistic concurrency — rejected with 409 if stale.
cancel_reason_uuidstring (uuid)cancelled_byenumpatientpracticenotestringResponses
appointment_typeobjectLightweight reference to a related entity — exposes UUID and optional name.
broken_reasonobjectLightweight reference to a related entity — exposes UUID and optional name.
cancel_reasonobjectLightweight reference to a related entity — exposes UUID and optional name.
cancelled_bystringcolor_overridestringconfirmation_statusobjectLightweight reference to a related entity — exposes UUID and optional name.
confirmation_status_labelstringcreated_atstring (date-time)requiredUTC timestamp when this appointment was created.
datetime_ask_to_arrivestring (date-time)end_timestring (date-time)estimated_insurancestringestimated_patient_portionstringflow_statusobjectLightweight reference to a related entity — exposes UUID and optional name.
idstring (uuid)requiredPublic UUID of the appointment.
is_new_patientbooleanrequiredWhether this appointment is for a new patient visit.
is_time_lockedbooleanrequiredWhen true, the appointment time is locked and cannot be automatically adjusted.
item_orderintegerrequiredDisplay order of this appointment within its time slot.
locationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
location_timezonestringIANA timezone identifier for the appointment's location (e.g., 'America/New_York').
notestringrequiredFree-text note or instructions for this appointment.
operatoryobjectLightweight reference to a related entity — exposes UUID and optional name.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
priorityintegerrequiredScheduling priority; higher values indicate higher priority.
production_amountstringrequiredTotal expected production amount for this appointment.
providerobjectLightweight reference to a related entity — exposes UUID and optional name.
providersobject[]References to all assigned providers (id + name), ordered by appointment provider item_order.
recallobjectLightweight reference to a related entity — exposes UUID and optional name.
start_timestring (date-time)statusstringrequiredCurrent appointment status. One of: planned, scheduled, complete, broken, cancelled, unscheduled, pinboard.
tagsobject[]Appointment tags assigned to this appointment.
updated_atstring (date-time)requiredUTC timestamp when this appointment was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/cancel" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"cancel_reason_uuid": "string",
"cancelled_by": "string",
"note": "string"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/cancel" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"cancel_reason_uuid": "string",
"cancelled_by": "string",
"note": "string"
}'/api/v1/{org_id}/appointments/{appointment_uuid}/moveMove appointment
Move (reschedule) an appointment to a new date, time, and optionally a different operatory. Raises 404 if the appointment or operatory UUID is not found. Raises 409 if base_version is stale or the target time slot has a conflict and allow_overlap is false. Raises 422 if the time falls in a DST gap.
Parameters
Path Parameters
appointment_uuidstringrequiredorg_idstringrequiredRequest Body
allow_overlapbooleanWhen true, bypasses operatory conflict detection and permits overlapping appointments.
base_versionintegerrequiredCurrent version of the appointment for optimistic concurrency — rejected with 409 if stale.
end_timestring (time)requiredNew local wall-clock end time for the appointment.
notestringoperatory_uuidstring (uuid)schedule_datestring (date)requiredNew local calendar date for the appointment (YYYY-MM-DD).
start_timestring (time)requiredNew local wall-clock start time for the appointment.
Responses
appointment_typeobjectLightweight reference to a related entity — exposes UUID and optional name.
broken_reasonobjectLightweight reference to a related entity — exposes UUID and optional name.
cancel_reasonobjectLightweight reference to a related entity — exposes UUID and optional name.
cancelled_bystringcolor_overridestringconfirmation_statusobjectLightweight reference to a related entity — exposes UUID and optional name.
confirmation_status_labelstringcreated_atstring (date-time)requiredUTC timestamp when this appointment was created.
datetime_ask_to_arrivestring (date-time)end_timestring (date-time)estimated_insurancestringestimated_patient_portionstringflow_statusobjectLightweight reference to a related entity — exposes UUID and optional name.
idstring (uuid)requiredPublic UUID of the appointment.
is_new_patientbooleanrequiredWhether this appointment is for a new patient visit.
is_time_lockedbooleanrequiredWhen true, the appointment time is locked and cannot be automatically adjusted.
item_orderintegerrequiredDisplay order of this appointment within its time slot.
locationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
location_timezonestringIANA timezone identifier for the appointment's location (e.g., 'America/New_York').
notestringrequiredFree-text note or instructions for this appointment.
operatoryobjectLightweight reference to a related entity — exposes UUID and optional name.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
priorityintegerrequiredScheduling priority; higher values indicate higher priority.
production_amountstringrequiredTotal expected production amount for this appointment.
providerobjectLightweight reference to a related entity — exposes UUID and optional name.
providersobject[]References to all assigned providers (id + name), ordered by appointment provider item_order.
recallobjectLightweight reference to a related entity — exposes UUID and optional name.
start_timestring (date-time)statusstringrequiredCurrent appointment status. One of: planned, scheduled, complete, broken, cancelled, unscheduled, pinboard.
tagsobject[]Appointment tags assigned to this appointment.
updated_atstring (date-time)requiredUTC timestamp when this appointment was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/move" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"allow_overlap": false,
"base_version": 1,
"end_time": "09:00:00",
"note": "string",
"operatory_uuid": "string",
"schedule_date": "2025-01-15",
"start_time": "09:00:00"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/move" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"allow_overlap": false,
"base_version": 1,
"end_time": "09:00:00",
"note": "string",
"operatory_uuid": "string",
"schedule_date": "2025-01-15",
"start_time": "09:00:00"
}'/api/v1/{org_id}/appointments/{appointment_uuid}/patient-flow-statusSet patient flow status
Set the current patient flow status for an appointment, creating an audit event. Raises 404 if the appointment or flow_status_uuid is not found. Raises 422 if the appointment is not in a state that allows flow status updates.
Parameters
Path Parameters
appointment_uuidstringrequiredorg_idstringrequiredRequest Body
change_notestringflow_status_uuidstring (uuid)requiredUUID of the flow status to assign to the appointment.
Responses
change_notestringrequiredOptional note attached to this flow status change.
changed_atstring (date-time)requiredTimestamp when the flow status changed.
changed_bystringflow_statusobjectLightweight reference to a related entity — exposes UUID and optional name.
idstring (uuid)requiredPublic UUID of the flow event.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/patient-flow-status" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"change_note": "string",
"flow_status_uuid": "00000000-0000-0000-0000-000000000000"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/patient-flow-status" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"change_note": "string",
"flow_status_uuid": "00000000-0000-0000-0000-000000000000"
}'/api/v1/{org_id}/appointments/{appointment_uuid}/pinboardSend appointment to pinboard
Move a scheduled appointment to the pinboard without cancelling it. The appointment retains all details and procedures but is removed from the calendar grid. Raises 404 if the appointment is not found. Raises 409 if base_version is stale.
Parameters
Path Parameters
appointment_uuidstringrequiredorg_idstringrequiredRequest Body
base_versionintegerrequiredCurrent version of the appointment for optimistic concurrency — rejected with 409 if stale.
notestringResponses
appointment_typeobjectLightweight reference to a related entity — exposes UUID and optional name.
broken_reasonobjectLightweight reference to a related entity — exposes UUID and optional name.
cancel_reasonobjectLightweight reference to a related entity — exposes UUID and optional name.
cancelled_bystringcolor_overridestringconfirmation_statusobjectLightweight reference to a related entity — exposes UUID and optional name.
confirmation_status_labelstringcreated_atstring (date-time)requiredUTC timestamp when this appointment was created.
datetime_ask_to_arrivestring (date-time)end_timestring (date-time)estimated_insurancestringestimated_patient_portionstringflow_statusobjectLightweight reference to a related entity — exposes UUID and optional name.
idstring (uuid)requiredPublic UUID of the appointment.
is_new_patientbooleanrequiredWhether this appointment is for a new patient visit.
is_time_lockedbooleanrequiredWhen true, the appointment time is locked and cannot be automatically adjusted.
item_orderintegerrequiredDisplay order of this appointment within its time slot.
locationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
location_timezonestringIANA timezone identifier for the appointment's location (e.g., 'America/New_York').
notestringrequiredFree-text note or instructions for this appointment.
operatoryobjectLightweight reference to a related entity — exposes UUID and optional name.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
priorityintegerrequiredScheduling priority; higher values indicate higher priority.
production_amountstringrequiredTotal expected production amount for this appointment.
providerobjectLightweight reference to a related entity — exposes UUID and optional name.
providersobject[]References to all assigned providers (id + name), ordered by appointment provider item_order.
recallobjectLightweight reference to a related entity — exposes UUID and optional name.
start_timestring (date-time)statusstringrequiredCurrent appointment status. One of: planned, scheduled, complete, broken, cancelled, unscheduled, pinboard.
tagsobject[]Appointment tags assigned to this appointment.
updated_atstring (date-time)requiredUTC timestamp when this appointment was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/pinboard" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"note": "string"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/pinboard" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"note": "string"
}'/api/v1/{org_id}/appointments/{appointment_uuid}/placePlace appointment from pinboard
Place a pinboard appointment back onto the schedule at the specified time and operatory. Raises 404 if the appointment or operatory_uuid is not found. Raises 409 if base_version is stale or the target time slot has a conflict and allow_overlap is false. Raises 422 if the time falls in a DST gap.
Parameters
Path Parameters
appointment_uuidstringrequiredorg_idstringrequiredRequest Body
allow_overlapbooleanWhen true, bypasses operatory conflict detection and permits overlapping appointments.
base_versionintegerrequiredCurrent version of the appointment for optimistic concurrency — rejected with 409 if stale.
end_timestring (time)requiredLocal wall-clock end time for the placed appointment.
operatory_uuidstring (uuid)requiredUUID of the operatory to assign when placing the appointment. References the Operatory entity.
schedule_datestring (date)requiredLocal calendar date on which to place the appointment (YYYY-MM-DD).
start_timestring (time)requiredLocal wall-clock start time for the placed appointment.
Responses
appointment_typeobjectLightweight reference to a related entity — exposes UUID and optional name.
broken_reasonobjectLightweight reference to a related entity — exposes UUID and optional name.
cancel_reasonobjectLightweight reference to a related entity — exposes UUID and optional name.
cancelled_bystringcolor_overridestringconfirmation_statusobjectLightweight reference to a related entity — exposes UUID and optional name.
confirmation_status_labelstringcreated_atstring (date-time)requiredUTC timestamp when this appointment was created.
datetime_ask_to_arrivestring (date-time)end_timestring (date-time)estimated_insurancestringestimated_patient_portionstringflow_statusobjectLightweight reference to a related entity — exposes UUID and optional name.
idstring (uuid)requiredPublic UUID of the appointment.
is_new_patientbooleanrequiredWhether this appointment is for a new patient visit.
is_time_lockedbooleanrequiredWhen true, the appointment time is locked and cannot be automatically adjusted.
item_orderintegerrequiredDisplay order of this appointment within its time slot.
locationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
location_timezonestringIANA timezone identifier for the appointment's location (e.g., 'America/New_York').
notestringrequiredFree-text note or instructions for this appointment.
operatoryobjectLightweight reference to a related entity — exposes UUID and optional name.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
priorityintegerrequiredScheduling priority; higher values indicate higher priority.
production_amountstringrequiredTotal expected production amount for this appointment.
providerobjectLightweight reference to a related entity — exposes UUID and optional name.
providersobject[]References to all assigned providers (id + name), ordered by appointment provider item_order.
recallobjectLightweight reference to a related entity — exposes UUID and optional name.
start_timestring (date-time)statusstringrequiredCurrent appointment status. One of: planned, scheduled, complete, broken, cancelled, unscheduled, pinboard.
tagsobject[]Appointment tags assigned to this appointment.
updated_atstring (date-time)requiredUTC timestamp when this appointment was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/place" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"allow_overlap": false,
"base_version": 1,
"end_time": "09:00:00",
"operatory_uuid": "00000000-0000-0000-0000-000000000000",
"schedule_date": "2025-01-15",
"start_time": "09:00:00"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/place" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"allow_overlap": false,
"base_version": 1,
"end_time": "09:00:00",
"operatory_uuid": "00000000-0000-0000-0000-000000000000",
"schedule_date": "2025-01-15",
"start_time": "09:00:00"
}'/api/v1/{org_id}/appointments/{appointment_uuid}/proceduresAdd procedure to appointment
Add a procedure to an appointment. Raises 404 if the appointment, procedure_code_uuid, or provider_uuid is not found. Raises 409 if base_version is stale. Raises 422 if the appointment is in a state that does not allow adding procedures.
Parameters
Path Parameters
appointment_uuidstringrequiredorg_idstringrequiredRequest Body
base_versionintegerrequiredCurrent version of the parent appointment for optimistic concurrency — rejected with 409 if stale.
charted_procedure_uuidstring (uuid)feenumberitem_orderintegerDisplay order of this procedure within the appointment's procedure list.
procedure_code_uuidstring (uuid)requiredUUID of the procedure code to link. References the ProcedureCode entity.
provider_uuidstring (uuid)Responses
appointmentobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
charted_procedure_uuidstring (uuid)created_atstring (date-time)requiredUTC timestamp when this procedure record was created.
feestringrequiredFee amount charged for this procedure.
idstring (uuid)requiredPublic UUID of the appointment procedure record.
item_orderintegerrequiredDisplay order of this procedure within the appointment.
procedure_codeobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
procedure_code_descriptionstringShort description of the procedure code.
procedure_code_valuestringADA procedure code string (e.g., 'D0120').
providerobjectLightweight reference to a related entity — exposes UUID and optional name.
statusstringrequiredCurrent status of this procedure (e.g., planned, completed).
updated_atstring (date-time)requiredUTC timestamp when this procedure record was last updated.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/procedures" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"charted_procedure_uuid": "string",
"fee": "0",
"item_order": 0,
"procedure_code_uuid": "00000000-0000-0000-0000-000000000000"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/procedures" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"charted_procedure_uuid": "string",
"fee": "0",
"item_order": 0,
"procedure_code_uuid": "00000000-0000-0000-0000-000000000000"
}'/api/v1/{org_id}/appointments/{appointment_uuid}/transitionTransition appointment status
Transition an appointment to a new status following the allowed status state machine. Staff body (``TransitionStatusIn``) accepts ``auto_generate_claim`` — an internal billing toggle. Valid statuses: planned, scheduled, complete, broken, cancelled, unscheduled, pinboard. Raises 404 if the appointment is not found. Raises 409 if base_version is stale or the transition is not permitted from the current status. Raises 422 if the target status value is invalid.
Parameters
Path Parameters
appointment_uuidstringrequiredorg_idstringrequiredRequest Body
auto_generate_claimbooleanbase_versionintegerrequiredCurrent version of the appointment for optimistic concurrency — rejected with 409 if stale.
statusstringrequiredTarget status to transition to. One of: planned, scheduled, complete, broken, cancelled, unscheduled, pinboard.
Responses
appointment_typeobjectLightweight reference to a related entity — exposes UUID and optional name.
broken_reasonobjectLightweight reference to a related entity — exposes UUID and optional name.
cancel_reasonobjectLightweight reference to a related entity — exposes UUID and optional name.
cancelled_bystringcolor_overridestringconfirmation_statusobjectLightweight reference to a related entity — exposes UUID and optional name.
confirmation_status_labelstringcreated_atstring (date-time)requiredUTC timestamp when this appointment was created.
datetime_ask_to_arrivestring (date-time)end_timestring (date-time)estimated_insurancestringestimated_patient_portionstringflow_statusobjectLightweight reference to a related entity — exposes UUID and optional name.
idstring (uuid)requiredPublic UUID of the appointment.
is_new_patientbooleanrequiredWhether this appointment is for a new patient visit.
is_time_lockedbooleanrequiredWhen true, the appointment time is locked and cannot be automatically adjusted.
item_orderintegerrequiredDisplay order of this appointment within its time slot.
locationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
location_timezonestringIANA timezone identifier for the appointment's location (e.g., 'America/New_York').
notestringrequiredFree-text note or instructions for this appointment.
operatoryobjectLightweight reference to a related entity — exposes UUID and optional name.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
priorityintegerrequiredScheduling priority; higher values indicate higher priority.
production_amountstringrequiredTotal expected production amount for this appointment.
providerobjectLightweight reference to a related entity — exposes UUID and optional name.
providersobject[]References to all assigned providers (id + name), ordered by appointment provider item_order.
recallobjectLightweight reference to a related entity — exposes UUID and optional name.
start_timestring (date-time)statusstringrequiredCurrent appointment status. One of: planned, scheduled, complete, broken, cancelled, unscheduled, pinboard.
tagsobject[]Appointment tags assigned to this appointment.
updated_atstring (date-time)requiredUTC timestamp when this appointment was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/transition" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"auto_generate_claim": null,
"base_version": 1,
"status": "string"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/transition" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"auto_generate_claim": null,
"base_version": 1,
"status": "string"
}'/api/v1/{org_id}/appointments/bulkBulk import appointments
Bulk import multiple appointments in a single request (max 500 rows). Each row is processed independently; failures are reported per-row without aborting the batch. Raises 422 if any row fails schema validation.
Parameters
Path Parameters
org_idstringrequiredRequest Body
metaobjectTop-level execution options for a bulk request.
rowsobject[]requiredResponses
createdintegerfailedintegerresultsobject[]requiredskippedintegertotalintegerrequiredupdatedintegervalidatedintegerdetailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/appointments/bulk" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"meta": {},
"rows": []
}'curl -X POST "https://api.example.com/api/v1/{org_id}/appointments/bulk" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"meta": {},
"rows": []
}'/api/v1/{org_id}/appointments/bulk-confirmBulk confirm appointments
Bulk-confirm multiple appointments with a single confirmation status. Not-found UUIDs are collected in 'skipped' instead of failing the batch. Version conflicts are collected in 'conflicts'. Raises 404 if confirmation_status_uuid is not found.
Parameters
Path Parameters
org_idstringrequiredRequest Body
appointment_uuidsstring (uuid)[]requiredList of appointment UUIDs to confirm in bulk.
confirmation_status_uuidstring (uuid)requiredUUID of the confirmation status definition to apply to all listed appointments. References the Definition entity.
Responses
confirmedobject[]requiredAppointments that were successfully confirmed.
conflictsstring[]UUIDs of appointments that had version conflicts and were not updated.
skippedstring[]UUIDs of appointments that were not found and skipped.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/appointments/bulk-confirm" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"appointment_uuids": [],
"confirmation_status_uuid": "00000000-0000-0000-0000-000000000000"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/appointments/bulk-confirm" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"appointment_uuids": [],
"confirmation_status_uuid": "00000000-0000-0000-0000-000000000000"
}'/api/v1/{org_id}/appointments/check-conflictsCheck scheduling conflicts
Preview scheduling conflicts for a proposed appointment time. Returns list of conflicting appointments and blockouts without making any changes. Useful for inline form validation before creating or moving an appointment. Raises 404 if location_uuid or operatory_uuid is not found. Raises 422 if the proposed time falls in a DST gap.
Parameters
Path Parameters
org_idstringrequiredRequest Body
end_timestring (time)requiredLocal wall-clock end time (HH:MM) for the proposed appointment.
exclude_appointment_uuidstring (uuid)location_uuidstring (uuid)requiredUUID of the location to check conflicts in. References the Location entity.
operatory_uuidstring (uuid)requiredUUID of the operatory to check for conflicts. References the Operatory entity.
schedule_datestring (date)requiredLocal calendar date of the proposed appointment (YYYY-MM-DD).
start_timestring (time)requiredLocal wall-clock start time (HH:MM) for the proposed appointment.
Responses
conflictsobjectConflict details grouped by type: appointments, providers, blockouts.
has_conflictsbooleanrequiredWhether any scheduling conflicts were detected for the proposed time.
reason_codesstring[]List of conflict reason codes. One of: APPOINTMENT_OVERLAP, PROVIDER_OVERLAP, BLOCKED_TIME_CONFLICT.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/appointments/check-conflicts" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"end_time": "09:00:00",
"exclude_appointment_uuid": "string",
"location_uuid": "00000000-0000-0000-0000-000000000000",
"operatory_uuid": "00000000-0000-0000-0000-000000000000",
"schedule_date": "2025-01-15",
"start_time": "09:00:00"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/appointments/check-conflicts" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"end_time": "09:00:00",
"exclude_appointment_uuid": "string",
"location_uuid": "00000000-0000-0000-0000-000000000000",
"operatory_uuid": "00000000-0000-0000-0000-000000000000",
"schedule_date": "2025-01-15",
"start_time": "09:00:00"
}'/api/v1/{org_id}/appointments/{appointment_uuid}/providersReplace appointment providers
Replace all provider assignments on an appointment with a new set. Existing assignments are deleted and replaced atomically. Raises 404 if the appointment or any provider_uuid is not found. Raises 409 if base_version is stale. Raises 422 if a time falls in a DST gap.
Parameters
Path Parameters
appointment_uuidstringrequiredorg_idstringrequiredRequest Body
base_versionintegerrequiredCurrent version of the appointment for optimistic concurrency — rejected with 409 if stale.
providersobject[]requiredComplete list of provider assignments to set; existing assignments are deleted and replaced.
Responses
detailobject[]curl -X PUT "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/providers" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"providers": []
}'curl -X PUT "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/providers" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"providers": []
}'/api/v1/{org_id}/appointments/{appointment_uuid}Update appointment
Update appointment details such as operatory, type, time, notes, and financial estimates. Raises 404 if the appointment or any referenced UUID is not found. Raises 409 if base_version is stale. Raises 422 if a field value is invalid.
Parameters
Path Parameters
appointment_uuidstringrequiredorg_idstringrequiredRequest Body
appointment_type_uuidstring (uuid)ask_to_arrive_timestring (time)base_versionintegerrequiredCurrent version of the appointment for optimistic concurrency — rejected with 409 if stale.
color_overridestringend_timestring (time)estimated_insurancenumberestimated_patient_portionnumberis_time_lockedbooleannotestringoperatory_uuidstring (uuid)priorityintegerproduction_amountnumberschedule_datestring (date)start_timestring (time)Responses
appointment_typeobjectLightweight reference to a related entity — exposes UUID and optional name.
broken_reasonobjectLightweight reference to a related entity — exposes UUID and optional name.
cancel_reasonobjectLightweight reference to a related entity — exposes UUID and optional name.
cancelled_bystringcolor_overridestringconfirmation_statusobjectLightweight reference to a related entity — exposes UUID and optional name.
confirmation_status_labelstringcreated_atstring (date-time)requiredUTC timestamp when this appointment was created.
datetime_ask_to_arrivestring (date-time)end_timestring (date-time)estimated_insurancestringestimated_patient_portionstringflow_statusobjectLightweight reference to a related entity — exposes UUID and optional name.
idstring (uuid)requiredPublic UUID of the appointment.
is_new_patientbooleanrequiredWhether this appointment is for a new patient visit.
is_time_lockedbooleanrequiredWhen true, the appointment time is locked and cannot be automatically adjusted.
item_orderintegerrequiredDisplay order of this appointment within its time slot.
locationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
location_timezonestringIANA timezone identifier for the appointment's location (e.g., 'America/New_York').
notestringrequiredFree-text note or instructions for this appointment.
operatoryobjectLightweight reference to a related entity — exposes UUID and optional name.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
priorityintegerrequiredScheduling priority; higher values indicate higher priority.
production_amountstringrequiredTotal expected production amount for this appointment.
providerobjectLightweight reference to a related entity — exposes UUID and optional name.
providersobject[]References to all assigned providers (id + name), ordered by appointment provider item_order.
recallobjectLightweight reference to a related entity — exposes UUID and optional name.
start_timestring (date-time)statusstringrequiredCurrent appointment status. One of: planned, scheduled, complete, broken, cancelled, unscheduled, pinboard.
tagsobject[]Appointment tags assigned to this appointment.
updated_atstring (date-time)requiredUTC timestamp when this appointment was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"appointment_type_uuid": "string",
"ask_to_arrive_time": "string",
"base_version": 1,
"color_override": "string",
"end_time": "string"
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"appointment_type_uuid": "string",
"ask_to_arrive_time": "string",
"base_version": 1,
"color_override": "string",
"end_time": "string"
}'/api/v1/{org_id}/appointments/{appointment_uuid}/confirmation-statusUpdate confirmation status
Update the confirmation-status (outreach workflow) of an appointment. Distinct from the appointment **lifecycle** status (scheduled → complete / broken / cancelled / unscheduled) — confirmation tracks the front-desk outreach progress: ``Unconfirmed``, ``Not Called``, ``Left Message``, ``Current``, ``Confirmed``. Practices configure their own set; discoverable via ``GET /api/v1/{org_id}/appointments/confirmation-statuses``. Staff callers send the full ``UpdateConfirmationStatusIn`` (with ``confirmation_status_uuid``), carrying ``base_version`` for optimistic concurrency. Raises 404 if the appointment or confirmation status is not found. Raises 409 if base_version is stale.
Parameters
Path Parameters
appointment_uuidstringrequiredorg_idstringrequiredRequest Body
base_versionintegerrequiredCurrent version of the appointment for optimistic concurrency — rejected with 409 if stale.
confirmation_status_uuidstring (uuid)Responses
appointment_typeobjectLightweight reference to a related entity — exposes UUID and optional name.
broken_reasonobjectLightweight reference to a related entity — exposes UUID and optional name.
cancel_reasonobjectLightweight reference to a related entity — exposes UUID and optional name.
cancelled_bystringcolor_overridestringconfirmation_statusobjectLightweight reference to a related entity — exposes UUID and optional name.
confirmation_status_labelstringcreated_atstring (date-time)requiredUTC timestamp when this appointment was created.
datetime_ask_to_arrivestring (date-time)end_timestring (date-time)estimated_insurancestringestimated_patient_portionstringflow_statusobjectLightweight reference to a related entity — exposes UUID and optional name.
idstring (uuid)requiredPublic UUID of the appointment.
is_new_patientbooleanrequiredWhether this appointment is for a new patient visit.
is_time_lockedbooleanrequiredWhen true, the appointment time is locked and cannot be automatically adjusted.
item_orderintegerrequiredDisplay order of this appointment within its time slot.
locationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
location_timezonestringIANA timezone identifier for the appointment's location (e.g., 'America/New_York').
notestringrequiredFree-text note or instructions for this appointment.
operatoryobjectLightweight reference to a related entity — exposes UUID and optional name.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
priorityintegerrequiredScheduling priority; higher values indicate higher priority.
production_amountstringrequiredTotal expected production amount for this appointment.
providerobjectLightweight reference to a related entity — exposes UUID and optional name.
providersobject[]References to all assigned providers (id + name), ordered by appointment provider item_order.
recallobjectLightweight reference to a related entity — exposes UUID and optional name.
start_timestring (date-time)statusstringrequiredCurrent appointment status. One of: planned, scheduled, complete, broken, cancelled, unscheduled, pinboard.
tagsobject[]Appointment tags assigned to this appointment.
updated_atstring (date-time)requiredUTC timestamp when this appointment was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/confirmation-status" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"confirmation_status_uuid": "string"
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/confirmation-status" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"confirmation_status_uuid": "string"
}'/api/v1/{org_id}/appointments/{appointment_uuid}Delete appointment
Permanently delete an appointment. This action is irreversible. Prefer the cancel or break endpoints for normal clinical workflows. Raises 404 if the appointment is not found.
Parameters
Path Parameters
appointment_uuidstringrequiredorg_idstringrequiredResponses
detailobject[]curl -X DELETE "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X DELETE "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/appointments/{appointment_uuid}/procedures/{procedure_uuid}Remove procedure from appointment
Remove a procedure from an appointment. This action is irreversible. Raises 404 if the appointment or procedure is not found. Raises 409 if base_version is stale. Raises 422 if the appointment is in a state that does not allow removing procedures.
Parameters
Path Parameters
appointment_uuidstringrequiredprocedure_uuidstringrequiredorg_idstringrequiredQuery Parameters
base_versionintegerrequiredCurrent version of the parent appointment for optimistic concurrency — rejected with 409 if stale.
Responses
detailobject[]curl -X DELETE "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/procedures/{procedure_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X DELETE "https://api.example.com/api/v1/{org_id}/appointments/{appointment_uuid}/procedures/{procedure_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"Appointment Types
5 endpoints
/api/v1/{org_id}/appointment-typesList appointment types
List appointment types defined by this practice. Staff callers receive the full ``AppointmentTypeListOut`` shape.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
pageintegerDefault: 1
page_sizeintegerDefault: 50
statusstringsearchstringResponses
itemsobject[]requiredpageintegerrequiredpage_sizeintegerrequiredtotalintegerrequireddetailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/appointment-types" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/appointment-types" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/appointment-types/{appointment_type_uuid}Get appointment type
Retrieve a single appointment type by UUID. Staff callers receive the full ``AppointmentTypeOut`` shape.
Parameters
Path Parameters
appointment_type_uuidstringrequiredorg_idstringrequiredResponses
abbrevstringblockout_onlybooleancolorstringcreated_atstring (date-time)requireddeleted_atstring (date-time)duration_minutesintegereffective_time_patternstringidstring (uuid)requiredis_hiddenbooleanitem_orderintegerlocationsobject[]namestringrequiredprocedure_codes_to_addstring[]require_allbooleanrequired_procedure_codesstring[]statusstringtime_patternstringupdated_atstring (date-time)requiredversionintegerrequireddetailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/appointment-types/{appointment_type_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/appointment-types/{appointment_type_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/appointment-typesCreate Appointment Type
Parameters
Path Parameters
org_idstringrequiredRequest Body
abbrevstringblockout_onlybooleancolorstringduration_minutesintegeris_hiddenbooleanitem_orderintegerlocation_uuidsstring (uuid)[]namestringrequiredprocedure_codes_to_addstring[]require_allbooleanrequired_procedure_codesstring[]time_patternstringResponses
abbrevstringblockout_onlybooleancolorstringcreated_atstring (date-time)requireddeleted_atstring (date-time)duration_minutesintegereffective_time_patternstringidstring (uuid)requiredis_hiddenbooleanitem_orderintegerlocationsobject[]namestringrequiredprocedure_codes_to_addstring[]require_allbooleanrequired_procedure_codesstring[]statusstringtime_patternstringupdated_atstring (date-time)requiredversionintegerrequireddetailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/appointment-types" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"abbrev": "",
"blockout_only": false,
"color": "#42A5F5",
"duration_minutes": 30,
"is_hidden": false,
"name": "string"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/appointment-types" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"abbrev": "",
"blockout_only": false,
"color": "#42A5F5",
"duration_minutes": 30,
"is_hidden": false,
"name": "string"
}'/api/v1/{org_id}/appointment-types/{appointment_type_uuid}/archiveArchive Appointment Type
Parameters
Path Parameters
appointment_type_uuidstringrequiredorg_idstringrequiredResponses
abbrevstringblockout_onlybooleancolorstringcreated_atstring (date-time)requireddeleted_atstring (date-time)duration_minutesintegereffective_time_patternstringidstring (uuid)requiredis_hiddenbooleanitem_orderintegerlocationsobject[]namestringrequiredprocedure_codes_to_addstring[]require_allbooleanrequired_procedure_codesstring[]statusstringtime_patternstringupdated_atstring (date-time)requiredversionintegerrequireddetailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/appointment-types/{appointment_type_uuid}/archive" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X POST "https://api.example.com/api/v1/{org_id}/appointment-types/{appointment_type_uuid}/archive" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/appointment-types/{appointment_type_uuid}Update Appointment Type
Parameters
Path Parameters
appointment_type_uuidstringrequiredorg_idstringrequiredRequest Body
abbrevstringbase_versionintegerrequiredblockout_onlybooleancolorstringduration_minutesintegeris_hiddenbooleanitem_orderintegerlocation_uuidsstring (uuid)[]namestringprocedure_codes_to_addstring[]require_allbooleanrequired_procedure_codesstring[]time_patternstringResponses
abbrevstringblockout_onlybooleancolorstringcreated_atstring (date-time)requireddeleted_atstring (date-time)duration_minutesintegereffective_time_patternstringidstring (uuid)requiredis_hiddenbooleanitem_orderintegerlocationsobject[]namestringrequiredprocedure_codes_to_addstring[]require_allbooleanrequired_procedure_codesstring[]statusstringtime_patternstringupdated_atstring (date-time)requiredversionintegerrequireddetailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/appointment-types/{appointment_type_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"abbrev": "string",
"base_version": 1,
"blockout_only": null,
"color": "string",
"duration_minutes": 1
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/appointment-types/{appointment_type_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"abbrev": "string",
"base_version": 1,
"blockout_only": null,
"color": "string",
"duration_minutes": 1
}'Blockouts
22 endpoints
/api/v1/{org_id}/blockouts/instancesList blockouts
List blockout instances with optional date-range and location filtering. Staff callers receive the full ``BlockoutListOut`` shape. Raises 404 if the location does not exist.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
location_uuidstringFilter by location UUID.
date_fromstringFilter to blockouts on or after this date (YYYY-MM-DD).
date_tostringFilter to blockouts on or before this date (YYYY-MM-DD).
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of results per page (max 200).
Default: 50
Responses
itemsobject[]requiredPage of blockout records.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of items per page.
totalintegerrequiredTotal number of matching records.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/blockouts/instances" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/blockouts/instances" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/blockouts/instances/{blockout_uuid}Get blockout
Retrieve a single blockout instance by UUID. Staff callers receive the full ``BlockoutOut`` shape with per-actor location enforcement. Raises 404 if the blockout does not exist.
Parameters
Path Parameters
blockout_uuidstringrequiredorg_idstringrequiredResponses
blockout_group_uuidstring (uuid)blockout_typeobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
created_atstring (date-time)requiredTimestamp when the blockout was created.
end_timestring (time)requiredLocal end time of the blockout.
idstring (uuid)requiredPublic UUID of the blockout.
locationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
notestringrequiredNote attached to the blockout (empty string if none).
operatoryobjectLightweight reference to a related entity — exposes UUID and optional name.
schedule_datestring (date)requiredDate of the blockout (YYYY-MM-DD).
start_timestring (time)requiredLocal start time of the blockout.
statusstringrequiredCurrent status of the blockout — one of: active, cancelled.
updated_atstring (date-time)requiredTimestamp when the blockout was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/blockouts/instances/{blockout_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/blockouts/instances/{blockout_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/blockouts/templatesList block schedule templates
List block schedule templates with optional filtering. Raises 404 if the location does not exist.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
location_uuidstringFilter by location UUID. Returns org-wide templates when omitted.
include_hiddenbooleanWhen true, includes hidden templates in the results.
Default: false
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of results per page (max 200).
Default: 50
Responses
itemsobject[]requiredPage of block schedule template records.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of items per page.
totalintegerrequiredTotal number of matching records.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/blockouts/templates" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/blockouts/templates" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/blockouts/templates/{template_uuid}Get block schedule template
Retrieve a single block schedule template by UUID. Raises 404 if the template does not exist.
Parameters
Path Parameters
template_uuidstringrequiredorg_idstringrequiredResponses
created_atstring (date-time)requiredTimestamp when the template was created.
day_of_weekintegerdescriptionstringrequiredOptional description of the template.
idstring (uuid)requiredPublic UUID of the block schedule template.
is_hiddenbooleanrequiredWhether this template is hidden from the UI.
item_orderintegerrequiredDisplay order among templates.
locationobjectLightweight reference to a related entity — exposes UUID and optional name.
namestringrequiredDisplay name of the template.
statusstringrequiredCurrent status — one of: active, inactive.
updated_atstring (date-time)requiredTimestamp when the template was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/blockouts/templates/{template_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/blockouts/templates/{template_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/blockouts/templates/{template_uuid}/itemsList block schedule template items
List all time slot items within a block schedule template. Raises 404 if the template does not exist.
Parameters
Path Parameters
template_uuidstringrequiredorg_idstringrequiredResponses
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/blockouts/templates/{template_uuid}/items" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/blockouts/templates/{template_uuid}/items" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/blockouts/typesList blockout types
List all blockout type definitions for the organization. Ordered by item_order ascending.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
include_hiddenbooleanWhen true, includes hidden blockout types in the results.
Default: false
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of results per page (max 200).
Default: 50
Responses
itemsobject[]requiredPage of blockout type records.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of items per page.
totalintegerrequiredTotal number of matching records.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/blockouts/types" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/blockouts/types" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/blockouts/types/{blockout_type_uuid}Get blockout type
Retrieve a single blockout type definition by UUID. Raises 404 if the blockout type does not exist.
Parameters
Path Parameters
blockout_type_uuidstringrequiredorg_idstringrequiredResponses
abbreviationstringcolorstringrequiredHex color string for this blockout type.
created_atstring (date-time)requiredTimestamp when the blockout type was created.
idstring (uuid)requiredPublic UUID of the blockout type.
is_do_not_copybooleanrequiredWhether this blockout is excluded from copy operations.
is_hiddenbooleanrequiredWhether this blockout type is hidden from the UI.
is_no_schedulebooleanrequiredWhether no appointments may be scheduled during this blockout.
item_orderintegerrequiredDisplay order among blockout types.
namestringrequiredDisplay name of the blockout type.
statusstringrequiredCurrent status — one of: active, inactive.
updated_atstring (date-time)requiredTimestamp when the blockout type was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/blockouts/types/{blockout_type_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/blockouts/types/{blockout_type_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/blockouts/instancesCreate blockout
Create one or more blockout instances for a date and location. If operatory_uuids is provided, creates one blockout per operatory. Raises 404 if the location, blockout type, or any operatory does not exist.
Parameters
Path Parameters
org_idstringrequiredRequest Body
blockout_type_uuidstring (uuid)requiredUUID of the blockout type to apply.
end_timestring (time)requiredLocal end time of the blockout.
location_uuidstring (uuid)requiredUUID of the location where the blockout applies.
notestringoperatory_uuidsstring (uuid)[]schedule_datestring (date)requiredDate of the blockout (YYYY-MM-DD).
start_timestring (time)requiredLocal start time of the blockout.
Responses
itemsobject[]requiredList of created blockout instances.
warningsstring[]Any non-fatal warnings encountered during creation (e.g., overlap skipped).
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/blockouts/instances" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"blockout_type_uuid": "00000000-0000-0000-0000-000000000000",
"end_time": "09:00:00",
"location_uuid": "00000000-0000-0000-0000-000000000000",
"note": "string",
"operatory_uuids": null,
"schedule_date": "2025-01-15",
"start_time": "09:00:00"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/blockouts/instances" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"blockout_type_uuid": "00000000-0000-0000-0000-000000000000",
"end_time": "09:00:00",
"location_uuid": "00000000-0000-0000-0000-000000000000",
"note": "string",
"operatory_uuids": null,
"schedule_date": "2025-01-15",
"start_time": "09:00:00"
}'/api/v1/{org_id}/blockouts/instances/copy-dayCopy blockouts for a day
Copy all non-do-not-copy blockouts from one day to another. Raises 404 if the location does not exist.
Parameters
Path Parameters
org_idstringrequiredRequest Body
location_uuidstring (uuid)requiredUUID of the location whose blockouts are being copied.
source_datestring (date)requiredThe date to copy blockouts from (YYYY-MM-DD).
target_datestring (date)requiredThe date to copy blockouts to (YYYY-MM-DD).
Responses
countintegerrequiredNumber of blockout instances created.
warningsstring[]Any non-fatal warnings encountered during the operation.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/blockouts/instances/copy-day" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"location_uuid": "00000000-0000-0000-0000-000000000000",
"source_date": "2025-01-15",
"target_date": "2025-01-15"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/blockouts/instances/copy-day" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"location_uuid": "00000000-0000-0000-0000-000000000000",
"source_date": "2025-01-15",
"target_date": "2025-01-15"
}'/api/v1/{org_id}/blockouts/instances/copy-weekCopy blockouts for a week
Copy all non-do-not-copy blockouts from one week to another. Both source_week_start and target_week_start should be Mondays. Returns count and warnings for skipped dates (holidays). Raises 404 if the location does not exist.
Parameters
Path Parameters
org_idstringrequiredRequest Body
location_uuidstring (uuid)requiredUUID of the location whose blockouts are being copied.
source_week_startstring (date)requiredMonday of the source week (YYYY-MM-DD).
target_week_startstring (date)requiredMonday of the target week (YYYY-MM-DD).
Responses
countintegerrequiredNumber of blockout instances created.
warningsstring[]Any non-fatal warnings encountered during the operation.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/blockouts/instances/copy-week" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"location_uuid": "00000000-0000-0000-0000-000000000000",
"source_week_start": "2025-01-15",
"target_week_start": "2025-01-15"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/blockouts/instances/copy-week" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"location_uuid": "00000000-0000-0000-0000-000000000000",
"source_week_start": "2025-01-15",
"target_week_start": "2025-01-15"
}'/api/v1/{org_id}/blockouts/instances/repeat-weeksRepeat blockout week pattern
Repeat a weekly blockout pattern for num_weeks subsequent weeks. Returns count and warnings for skipped dates (holidays). Raises 404 if the location does not exist.
Parameters
Path Parameters
org_idstringrequiredRequest Body
location_uuidstring (uuid)requiredUUID of the location whose blockout pattern is being repeated.
num_weeksintegerrequiredNumber of subsequent weeks to apply the pattern to (1-52).
source_week_startstring (date)requiredMonday of the source week to repeat (YYYY-MM-DD).
Responses
countintegerrequiredNumber of blockout instances created.
warningsstring[]Any non-fatal warnings encountered during the operation.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/blockouts/instances/repeat-weeks" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"location_uuid": "00000000-0000-0000-0000-000000000000",
"num_weeks": 1,
"source_week_start": "2025-01-15"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/blockouts/instances/repeat-weeks" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"location_uuid": "00000000-0000-0000-0000-000000000000",
"num_weeks": 1,
"source_week_start": "2025-01-15"
}'/api/v1/{org_id}/blockouts/templatesCreate block schedule template
Create a new block schedule template. Raises 404 if the location does not exist.
Parameters
Path Parameters
org_idstringrequiredRequest Body
day_of_weekintegerdescriptionstringis_hiddenbooleanWhether this template is hidden from the UI.
item_orderintegerDisplay order among templates (ascending).
location_uuidstring (uuid)namestringrequiredDisplay name for this template.
Responses
created_atstring (date-time)requiredTimestamp when the template was created.
day_of_weekintegerdescriptionstringrequiredOptional description of the template.
idstring (uuid)requiredPublic UUID of the block schedule template.
is_hiddenbooleanrequiredWhether this template is hidden from the UI.
item_orderintegerrequiredDisplay order among templates.
locationobjectLightweight reference to a related entity — exposes UUID and optional name.
namestringrequiredDisplay name of the template.
statusstringrequiredCurrent status — one of: active, inactive.
updated_atstring (date-time)requiredTimestamp when the template was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/blockouts/templates" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"day_of_week": 1,
"description": "string",
"is_hidden": false,
"item_order": 0,
"location_uuid": "string",
"name": "string"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/blockouts/templates" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"day_of_week": 1,
"description": "string",
"is_hidden": false,
"item_order": 0,
"location_uuid": "string",
"name": "string"
}'/api/v1/{org_id}/blockouts/templates/{template_uuid}/applyApply block schedule template to a date
Apply a block schedule template to a specific date. Creates blockout instances for each item in the template at the given location and date. Raises 404 if the template or location does not exist.
Parameters
Path Parameters
template_uuidstringrequiredorg_idstringrequiredRequest Body
location_uuidstring (uuid)requiredUUID of the location to apply the template to.
target_datestring (date)requiredThe date to apply the template to (YYYY-MM-DD).
Responses
countintegerrequiredNumber of blockout instances created.
warningsstring[]Any non-fatal warnings encountered during the operation.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/blockouts/templates/{template_uuid}/apply" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"location_uuid": "00000000-0000-0000-0000-000000000000",
"target_date": "2025-01-15"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/blockouts/templates/{template_uuid}/apply" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"location_uuid": "00000000-0000-0000-0000-000000000000",
"target_date": "2025-01-15"
}'/api/v1/{org_id}/blockouts/templates/{template_uuid}/itemsAdd item to block schedule template
Add a new time slot item to a block schedule template. Raises 404 if the template, blockout type, or operatory does not exist.
Parameters
Path Parameters
template_uuidstringrequiredorg_idstringrequiredRequest Body
blockout_type_uuidstring (uuid)requiredUUID of the blockout type for this item.
end_timestring (time)requiredLocal end time of this blockout item.
item_orderintegerDisplay order of this item within the template (ascending).
operatory_uuidstring (uuid)start_timestring (time)requiredLocal start time of this blockout item.
Responses
blockout_typeobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
end_timestring (time)requiredLocal end time of this blockout item.
idstring (uuid)requiredPublic UUID of the template item.
item_orderintegerrequiredDisplay order within the template.
operatoryobjectLightweight reference to a related entity — exposes UUID and optional name.
start_timestring (time)requiredLocal start time of this blockout item.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/blockouts/templates/{template_uuid}/items" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"blockout_type_uuid": "00000000-0000-0000-0000-000000000000",
"end_time": "09:00:00",
"item_order": 0,
"operatory_uuid": "string",
"start_time": "09:00:00"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/blockouts/templates/{template_uuid}/items" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"blockout_type_uuid": "00000000-0000-0000-0000-000000000000",
"end_time": "09:00:00",
"item_order": 0,
"operatory_uuid": "string",
"start_time": "09:00:00"
}'/api/v1/{org_id}/blockouts/typesCreate blockout type
Create a new blockout type definition. Raises 422 if required fields are missing or invalid.
Parameters
Path Parameters
org_idstringrequiredRequest Body
abbreviationstringcolorstringis_do_not_copybooleanWhen true, this blockout is excluded from copy-day/copy-week operations.
is_hiddenbooleanWhen true, this blockout type is hidden from the UI.
is_no_schedulebooleanWhen true, no appointments may be scheduled during this blockout.
item_orderintegerDisplay order among blockout types (ascending).
namestringrequiredDisplay name for this blockout type (e.g., 'Lunch', 'Staff Meeting').
Responses
abbreviationstringcolorstringrequiredHex color string for this blockout type.
created_atstring (date-time)requiredTimestamp when the blockout type was created.
idstring (uuid)requiredPublic UUID of the blockout type.
is_do_not_copybooleanrequiredWhether this blockout is excluded from copy operations.
is_hiddenbooleanrequiredWhether this blockout type is hidden from the UI.
is_no_schedulebooleanrequiredWhether no appointments may be scheduled during this blockout.
item_orderintegerrequiredDisplay order among blockout types.
namestringrequiredDisplay name of the blockout type.
statusstringrequiredCurrent status — one of: active, inactive.
updated_atstring (date-time)requiredTimestamp when the blockout type was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/blockouts/types" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"abbreviation": "string",
"color": "string",
"is_do_not_copy": false,
"is_hidden": false,
"is_no_schedule": false,
"name": "string"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/blockouts/types" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"abbreviation": "string",
"color": "string",
"is_do_not_copy": false,
"is_hidden": false,
"is_no_schedule": false,
"name": "string"
}'/api/v1/{org_id}/blockouts/instances/{blockout_uuid}Update blockout
Update a blockout instance. Set apply_to_group=true to propagate changes to all blockouts in the same recurrence group. Raises 404 if the blockout, blockout type, or operatory does not exist. Raises 409 if base_version is stale.
Parameters
Path Parameters
blockout_uuidstringrequiredorg_idstringrequiredRequest Body
allow_overlapbooleanWhen true, skips overlap validation for this update.
apply_to_groupbooleanWhen true, applies this update to all blockouts in the same recurrence group.
base_versionintegerrequiredCurrent version for optimistic concurrency — rejected with 409 if stale.
blockout_type_uuidstring (uuid)end_timestring (time)notestringoperatory_uuidstring (uuid)schedule_datestring (date)start_timestring (time)Responses
blockout_group_uuidstring (uuid)blockout_typeobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
created_atstring (date-time)requiredTimestamp when the blockout was created.
end_timestring (time)requiredLocal end time of the blockout.
idstring (uuid)requiredPublic UUID of the blockout.
locationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
notestringrequiredNote attached to the blockout (empty string if none).
operatoryobjectLightweight reference to a related entity — exposes UUID and optional name.
schedule_datestring (date)requiredDate of the blockout (YYYY-MM-DD).
start_timestring (time)requiredLocal start time of the blockout.
statusstringrequiredCurrent status of the blockout — one of: active, cancelled.
updated_atstring (date-time)requiredTimestamp when the blockout was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/blockouts/instances/{blockout_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"allow_overlap": false,
"apply_to_group": false,
"base_version": 1,
"blockout_type_uuid": "string",
"end_time": "string"
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/blockouts/instances/{blockout_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"allow_overlap": false,
"apply_to_group": false,
"base_version": 1,
"blockout_type_uuid": "string",
"end_time": "string"
}'/api/v1/{org_id}/blockouts/templates/{template_uuid}Update block schedule template
Update a block schedule template. Raises 404 if the template or location does not exist. Raises 409 if base_version is stale.
Parameters
Path Parameters
template_uuidstringrequiredorg_idstringrequiredRequest Body
base_versionintegerrequiredCurrent version for optimistic concurrency — rejected with 409 if stale.
day_of_weekintegerdescriptionstringis_hiddenbooleanitem_orderintegerlocation_uuidstring (uuid)namestringstatusstringResponses
created_atstring (date-time)requiredTimestamp when the template was created.
day_of_weekintegerdescriptionstringrequiredOptional description of the template.
idstring (uuid)requiredPublic UUID of the block schedule template.
is_hiddenbooleanrequiredWhether this template is hidden from the UI.
item_orderintegerrequiredDisplay order among templates.
locationobjectLightweight reference to a related entity — exposes UUID and optional name.
namestringrequiredDisplay name of the template.
statusstringrequiredCurrent status — one of: active, inactive.
updated_atstring (date-time)requiredTimestamp when the template was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/blockouts/templates/{template_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"day_of_week": 1,
"description": "string",
"is_hidden": null,
"item_order": 1
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/blockouts/templates/{template_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"day_of_week": 1,
"description": "string",
"is_hidden": null,
"item_order": 1
}'/api/v1/{org_id}/blockouts/types/{blockout_type_uuid}Update blockout type
Update a blockout type definition. Raises 404 if the blockout type does not exist. Raises 409 if base_version is stale.
Parameters
Path Parameters
blockout_type_uuidstringrequiredorg_idstringrequiredRequest Body
abbreviationstringbase_versionintegerrequiredCurrent version for optimistic concurrency — rejected with 409 if stale.
colorstringis_do_not_copybooleanis_hiddenbooleanis_no_schedulebooleanitem_orderintegernamestringstatusstringResponses
abbreviationstringcolorstringrequiredHex color string for this blockout type.
created_atstring (date-time)requiredTimestamp when the blockout type was created.
idstring (uuid)requiredPublic UUID of the blockout type.
is_do_not_copybooleanrequiredWhether this blockout is excluded from copy operations.
is_hiddenbooleanrequiredWhether this blockout type is hidden from the UI.
is_no_schedulebooleanrequiredWhether no appointments may be scheduled during this blockout.
item_orderintegerrequiredDisplay order among blockout types.
namestringrequiredDisplay name of the blockout type.
statusstringrequiredCurrent status — one of: active, inactive.
updated_atstring (date-time)requiredTimestamp when the blockout type was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/blockouts/types/{blockout_type_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"abbreviation": "string",
"base_version": 1,
"color": "string",
"is_do_not_copy": null,
"is_hidden": null
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/blockouts/types/{blockout_type_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"abbreviation": "string",
"base_version": 1,
"color": "string",
"is_do_not_copy": null,
"is_hidden": null
}'/api/v1/{org_id}/blockouts/instances/{blockout_uuid}Delete blockout
Delete a single blockout instance. This is irreversible. Only deletes the targeted instance — other blockouts in the same recurrence group are unaffected. Raises 404 if the blockout does not exist.
Parameters
Path Parameters
blockout_uuidstringrequiredorg_idstringrequiredResponses
detailobject[]curl -X DELETE "https://api.example.com/api/v1/{org_id}/blockouts/instances/{blockout_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X DELETE "https://api.example.com/api/v1/{org_id}/blockouts/instances/{blockout_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/blockouts/templates/{template_uuid}Delete block schedule template
Delete a block schedule template and all its items. This is irreversible. Existing blockouts previously created from this template are not affected. Raises 404 if the template does not exist.
Parameters
Path Parameters
template_uuidstringrequiredorg_idstringrequiredResponses
detailobject[]curl -X DELETE "https://api.example.com/api/v1/{org_id}/blockouts/templates/{template_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X DELETE "https://api.example.com/api/v1/{org_id}/blockouts/templates/{template_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/blockouts/templates/{template_uuid}/items/{item_uuid}Remove item from block schedule template
Remove a time slot item from a block schedule template. This action is irreversible. Raises 404 if the template or item does not exist.
Parameters
Path Parameters
template_uuidstringrequireditem_uuidstringrequiredorg_idstringrequiredResponses
detailobject[]curl -X DELETE "https://api.example.com/api/v1/{org_id}/blockouts/templates/{template_uuid}/items/{item_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X DELETE "https://api.example.com/api/v1/{org_id}/blockouts/templates/{template_uuid}/items/{item_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/blockouts/types/{blockout_type_uuid}Delete blockout type
Delete a blockout type definition. This is irreversible. Raises 404 if the blockout type does not exist.
Parameters
Path Parameters
blockout_type_uuidstringrequiredorg_idstringrequiredResponses
detailobject[]curl -X DELETE "https://api.example.com/api/v1/{org_id}/blockouts/types/{blockout_type_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X DELETE "https://api.example.com/api/v1/{org_id}/blockouts/types/{blockout_type_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"Recalls
13 endpoints
/api/v1/{org_id}/recalls/patient-recallsList patient recalls
List patient recall records with optional filtering. Raises 404 if the patient or recall type does not exist.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
patient_uuidstringFilter by patient UUID.
recall_type_uuidstringFilter by recall type UUID.
statusstringFilter by recall status (e.g., 'due', 'scheduled', 'completed', 'overdue').
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of results per page (max 200).
Default: 50
Responses
itemsobject[]requiredPage of patient recall records.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of items per page.
totalintegerrequiredTotal number of matching records.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/recalls/patient-recalls" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/recalls/patient-recalls" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/recalls/patient-recalls/{recall_uuid}Get patient recall
Retrieve a single patient recall by UUID. Raises 404 if the patient recall does not exist.
Parameters
Path Parameters
recall_uuidstringrequiredorg_idstringrequiredResponses
appointmentobjectLightweight reference to a related entity — exposes UUID and optional name.
created_atstring (date-time)requiredTimestamp when the recall was created.
date_duestring (date)date_previousstring (date)date_scheduledstring (date)idstring (uuid)requiredPublic UUID of the patient recall.
intervalobjectrequiredRecall interval for this patient (e.g., {'months': 6}).
is_disabledbooleanrequiredWhether this recall is disabled.
notestringrequiredOptional note about this patient recall.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
patient_phonestringrecall_typeobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
statusstringrequiredCurrent recall status — one of: due, scheduled, completed, overdue.
updated_atstring (date-time)requiredTimestamp when the recall was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/recalls/patient-recalls/{recall_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/recalls/patient-recalls/{recall_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/recalls/patient-recalls/dueList due patient recalls
List patient recalls that are past their due date and not yet completed. Ordered by date_due ascending (most overdue first).
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of results per page (max 200).
Default: 50
due_onstringReturn recalls due on or before this date. Defaults to today.
Responses
itemsobject[]requiredPage of due patient recall records.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of items per page.
totalintegerrequiredTotal number of matching records.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/recalls/patient-recalls/due" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/recalls/patient-recalls/due" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/recalls/triggersList recall triggers
List all recall triggers for a given recall type. Raises 404 if the recall type does not exist.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
recall_type_uuidstringrequiredUUID of the recall type to list triggers for.
Responses
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/recalls/triggers" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/recalls/triggers" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/recalls/typesList recall types
List recall type definitions for the organization. Ordered by item_order ascending.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
is_activebooleanFilter by active status. Returns all recall types when omitted.
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of results per page (max 200).
Default: 50
Responses
itemsobject[]requiredPage of recall type records.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of items per page.
totalintegerrequiredTotal number of matching records.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/recalls/types" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/recalls/types" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/recalls/types/{recall_type_uuid}Get recall type
Retrieve a single recall type by UUID. Raises 404 if the recall type does not exist.
Parameters
Path Parameters
recall_type_uuidstringrequiredorg_idstringrequiredResponses
appointment_typeobjectLightweight reference to a related entity — exposes UUID and optional name.
created_atstring (date-time)requiredTimestamp when the recall type was created.
default_intervalobjectrequiredDefault recall interval as a duration dict (e.g., {'months': 6}).
descriptionstringrequiredDescription of this recall type.
idstring (uuid)requiredPublic UUID of the recall type.
is_activebooleanrequiredWhether this recall type is active.
item_orderintegerrequiredDisplay order among recall types.
namestringrequiredDisplay name of the recall type.
updated_atstring (date-time)requiredTimestamp when the recall type was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/recalls/types/{recall_type_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/recalls/types/{recall_type_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/recalls/patient-recallsCreate patient recall
Create a new patient recall record. Raises 404 if the patient or recall type does not exist.
Parameters
Path Parameters
org_idstringrequiredRequest Body
date_duestring (date)intervalobjectRecall interval for this patient (e.g., {'months': 6}). Overrides the recall type's default_interval.
notestringOptional note about this patient recall.
patient_uuidstring (uuid)requiredUUID of the patient this recall belongs to.
recall_type_uuidstring (uuid)requiredUUID of the recall type to apply.
Responses
appointmentobjectLightweight reference to a related entity — exposes UUID and optional name.
created_atstring (date-time)requiredTimestamp when the recall was created.
date_duestring (date)date_previousstring (date)date_scheduledstring (date)idstring (uuid)requiredPublic UUID of the patient recall.
intervalobjectrequiredRecall interval for this patient (e.g., {'months': 6}).
is_disabledbooleanrequiredWhether this recall is disabled.
notestringrequiredOptional note about this patient recall.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
patient_phonestringrecall_typeobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
statusstringrequiredCurrent recall status — one of: due, scheduled, completed, overdue.
updated_atstring (date-time)requiredTimestamp when the recall was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/recalls/patient-recalls" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"date_due": "string",
"interval": {
"months": 6
},
"note": "",
"patient_uuid": "00000000-0000-0000-0000-000000000000",
"recall_type_uuid": "00000000-0000-0000-0000-000000000000"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/recalls/patient-recalls" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"date_due": "string",
"interval": {
"months": 6
},
"note": "",
"patient_uuid": "00000000-0000-0000-0000-000000000000",
"recall_type_uuid": "00000000-0000-0000-0000-000000000000"
}'/api/v1/{org_id}/recalls/triggersCreate recall trigger
Create a recall trigger linking a procedure code to a recall type. When the procedure code is performed for a patient, it triggers the associated recall. Raises 404 if the recall type or procedure code does not exist.
Parameters
Path Parameters
org_idstringrequiredRequest Body
procedure_code_uuidstring (uuid)requiredUUID of the procedure code that triggers the recall.
recall_type_uuidstring (uuid)requiredUUID of the recall type this trigger fires.
Responses
created_atstring (date-time)requiredTimestamp when the trigger was created.
idstring (uuid)requiredPublic UUID of the recall trigger.
procedure_codeobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
recall_typeobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/recalls/triggers" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"procedure_code_uuid": "00000000-0000-0000-0000-000000000000",
"recall_type_uuid": "00000000-0000-0000-0000-000000000000"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/recalls/triggers" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"procedure_code_uuid": "00000000-0000-0000-0000-000000000000",
"recall_type_uuid": "00000000-0000-0000-0000-000000000000"
}'/api/v1/{org_id}/recalls/typesCreate recall type
Create a new recall type definition. Raises 404 if the appointment_type_uuid does not exist.
Parameters
Path Parameters
org_idstringrequiredRequest Body
appointment_type_uuidstring (uuid)default_intervalobjectDefault recall interval as a duration dict (e.g., {'months': 6} or {'months': 3}).
descriptionstringOptional description of this recall type.
is_activebooleanWhether this recall type is active and available for use.
item_orderintegerDisplay order among recall types (ascending).
namestringrequiredDisplay name for this recall type (e.g., 'Prophy', 'Perio Maintenance').
Responses
appointment_typeobjectLightweight reference to a related entity — exposes UUID and optional name.
created_atstring (date-time)requiredTimestamp when the recall type was created.
default_intervalobjectrequiredDefault recall interval as a duration dict (e.g., {'months': 6}).
descriptionstringrequiredDescription of this recall type.
idstring (uuid)requiredPublic UUID of the recall type.
is_activebooleanrequiredWhether this recall type is active.
item_orderintegerrequiredDisplay order among recall types.
namestringrequiredDisplay name of the recall type.
updated_atstring (date-time)requiredTimestamp when the recall type was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/recalls/types" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"appointment_type_uuid": "string",
"default_interval": {
"months": 6
},
"description": "",
"is_active": true,
"item_order": 0,
"name": "string"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/recalls/types" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"appointment_type_uuid": "string",
"default_interval": {
"months": 6
},
"description": "",
"is_active": true,
"item_order": 0,
"name": "string"
}'/api/v1/{org_id}/recalls/patient-recalls/{recall_uuid}Update patient recall
Update a patient recall record. Raises 404 if the patient recall does not exist. Raises 409 if base_version is stale.
Parameters
Path Parameters
recall_uuidstringrequiredorg_idstringrequiredRequest Body
base_versionintegerrequiredCurrent version for optimistic concurrency — rejected with 409 if stale.
date_duestring (date)date_scheduledstring (date)intervalobjectis_disabledbooleannotestringstatusstringResponses
appointmentobjectLightweight reference to a related entity — exposes UUID and optional name.
created_atstring (date-time)requiredTimestamp when the recall was created.
date_duestring (date)date_previousstring (date)date_scheduledstring (date)idstring (uuid)requiredPublic UUID of the patient recall.
intervalobjectrequiredRecall interval for this patient (e.g., {'months': 6}).
is_disabledbooleanrequiredWhether this recall is disabled.
notestringrequiredOptional note about this patient recall.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
patient_phonestringrecall_typeobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
statusstringrequiredCurrent recall status — one of: due, scheduled, completed, overdue.
updated_atstring (date-time)requiredTimestamp when the recall was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/recalls/patient-recalls/{recall_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"date_due": "string",
"date_scheduled": "string",
"interval": null,
"is_disabled": null
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/recalls/patient-recalls/{recall_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"date_due": "string",
"date_scheduled": "string",
"interval": null,
"is_disabled": null
}'/api/v1/{org_id}/recalls/types/{recall_type_uuid}Update recall type
Update a recall type definition. Raises 404 if the recall type or appointment type does not exist. Raises 409 if base_version is stale.
Parameters
Path Parameters
recall_type_uuidstringrequiredorg_idstringrequiredRequest Body
appointment_type_uuidstring (uuid)base_versionintegerrequiredCurrent version for optimistic concurrency — rejected with 409 if stale.
default_intervalobjectdescriptionstringis_activebooleanitem_orderintegernamestringResponses
appointment_typeobjectLightweight reference to a related entity — exposes UUID and optional name.
created_atstring (date-time)requiredTimestamp when the recall type was created.
default_intervalobjectrequiredDefault recall interval as a duration dict (e.g., {'months': 6}).
descriptionstringrequiredDescription of this recall type.
idstring (uuid)requiredPublic UUID of the recall type.
is_activebooleanrequiredWhether this recall type is active.
item_orderintegerrequiredDisplay order among recall types.
namestringrequiredDisplay name of the recall type.
updated_atstring (date-time)requiredTimestamp when the recall type was last updated.
versionintegerrequiredCurrent version for optimistic concurrency.
detailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/recalls/types/{recall_type_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"appointment_type_uuid": "string",
"base_version": 1,
"default_interval": null,
"description": "string",
"is_active": null
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/recalls/types/{recall_type_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"appointment_type_uuid": "string",
"base_version": 1,
"default_interval": null,
"description": "string",
"is_active": null
}'/api/v1/{org_id}/recalls/triggers/{trigger_uuid}Delete recall trigger
Delete a recall trigger. This is irreversible. Raises 404 if the trigger does not exist.
Parameters
Path Parameters
trigger_uuidstringrequiredorg_idstringrequiredResponses
detailobject[]curl -X DELETE "https://api.example.com/api/v1/{org_id}/recalls/triggers/{trigger_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X DELETE "https://api.example.com/api/v1/{org_id}/recalls/triggers/{trigger_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/recalls/types/{recall_type_uuid}Delete recall type
Delete a recall type. This is irreversible. Raises 404 if the recall type does not exist.
Parameters
Path Parameters
recall_type_uuidstringrequiredorg_idstringrequiredResponses
detailobject[]curl -X DELETE "https://api.example.com/api/v1/{org_id}/recalls/types/{recall_type_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X DELETE "https://api.example.com/api/v1/{org_id}/recalls/types/{recall_type_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"Waitlist
10 endpoints
/api/v1/{org_id}/waitlist/entriesList ASAP entries
List ASAP entries with filtering, sorting, and pagination. Supports cross-location matching: entries with location_scope='selected' or 'any' that match the given location are included when include_cross_location is true.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
location_uuidstringFilter by location UUID.
patient_uuidstringFilter by patient UUID.
provider_uuidstringFilter by preferred provider UUID.
appointment_type_uuidstringFilter by appointment type UUID.
statusstringComma-separated status filter (e.g., 'waiting,contacted,offered').
urgencystringFilter by urgency: urgent, soon, routine, flexible.
sourcestringFilter by source: manual, appointment_flag, recall, treatment_plan, online.
include_cross_locationbooleanInclude cross-location entries matching this location.
Default: true
sort_bystringSort field: urgency, score, days_waiting, created_at, treatment_value.
Default: "created_at"
sort_dirstringSort direction: asc or desc.
Default: "desc"
pageintegerPage number (1-based).
Default: 1
page_sizeintegerPage size (max 200).
Default: 50
Responses
itemsobject[]requiredList of ASAP entries for the current page.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of entries per page.
totalintegerrequiredTotal number of matching entries.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/waitlist/entries" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/waitlist/entries" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/waitlist/entries/{entry_uuid}Get ASAP entry detail
Get a single ASAP entry with full details. Raises 404 if not found.
Parameters
Path Parameters
entry_uuidstringrequiredorg_idstringrequiredResponses
additional_locationsobject[]Additional locations (when scope='selected').
appointmentobjectLightweight reference to a related entity — exposes UUID and optional name.
appointment_typeobjectLightweight reference to a related entity — exposes UUID and optional name.
contact_attemptsintegerNumber of contact attempts made.
contact_method_usedstringcontacted_atstring (date-time)created_atstring (date-time)requiredWhen the entry was created.
date_range_endstring (date)date_range_startstring (date)days_waitingintegerrequiredComputed: number of days since entry was created.
estimated_duration_minsintegeridstring (uuid)requiredEntry UUID.
last_offered_slotobjectlocationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
location_scopestringrequiredHow broadly to match: home_only, selected, any.
notestringFree-text note.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
patient_responsestringpatient_scoreintegerpreferred_daysinteger[]preferred_time_endstring (time)preferred_time_startstring (time)priorityobjectLightweight reference to a related entity — exposes UUID and optional name.
providerobjectLightweight reference to a related entity — exposes UUID and optional name.
recallobjectLightweight reference to a related entity — exposes UUID and optional name.
responded_atstring (date-time)score_calculated_atstring (date-time)score_detailsobjectsourcestringrequiredHow the entry was created. One of: manual, appointment_flag, recall, treatment_plan, online.
statusstringrequiredOne of: waiting, contacted, offered, scheduled, removed, expired.
treatment_valuestringupdated_atstring (date-time)requiredWhen the entry was last updated.
urgencystringrequiredOne of: urgent, soon, routine, flexible.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/waitlist/entries/{entry_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/waitlist/entries/{entry_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/waitlist/entries/{entry_uuid}/contact-logGet contact history
Get the full contact history for an ASAP entry. Returns contact log entries ordered by most recent first. Raises 404 if entry not found.
Parameters
Path Parameters
entry_uuidstringrequiredorg_idstringrequiredResponses
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/waitlist/entries/{entry_uuid}/contact-log" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/waitlist/entries/{entry_uuid}/contact-log" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/waitlist/entriesCreate ASAP entry
Add a patient to the ASAP list. Raises 404 if patient, location, provider, or appointment type not found. Raises 409 if a duplicate active entry exists (same patient + location + appointment_type). Raises 422 if validation fails (e.g., date_range_start > date_range_end).
Parameters
Path Parameters
org_idstringrequiredRequest Body
additional_location_uuidsstring (uuid)[]appointment_type_uuidstring (uuid)appointment_uuidstring (uuid)date_range_endstring (date)date_range_startstring (date)estimated_duration_minsintegerlocation_scopestringHow broadly to match across locations. One of: home_only, selected, any.
location_uuidstring (uuid)requiredPrimary location for this entry.
notestringFree-text note (e.g., 'mornings only').
patient_uuidstring (uuid)requiredPatient to add to the ASAP list.
preferred_daysinteger[]preferred_time_endstring (time)preferred_time_startstring (time)priority_uuidstring (uuid)provider_uuidstring (uuid)recall_uuidstring (uuid)sourcestringHow the entry was created. One of: manual, appointment_flag, recall, treatment_plan, online.
treatment_valuenumberurgencystringHow quickly the patient needs to be seen. One of: urgent, soon, routine, flexible.
Responses
additional_locationsobject[]Additional locations (when scope='selected').
appointmentobjectLightweight reference to a related entity — exposes UUID and optional name.
appointment_typeobjectLightweight reference to a related entity — exposes UUID and optional name.
contact_attemptsintegerNumber of contact attempts made.
contact_method_usedstringcontacted_atstring (date-time)created_atstring (date-time)requiredWhen the entry was created.
date_range_endstring (date)date_range_startstring (date)days_waitingintegerrequiredComputed: number of days since entry was created.
estimated_duration_minsintegeridstring (uuid)requiredEntry UUID.
last_offered_slotobjectlocationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
location_scopestringrequiredHow broadly to match: home_only, selected, any.
notestringFree-text note.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
patient_responsestringpatient_scoreintegerpreferred_daysinteger[]preferred_time_endstring (time)preferred_time_startstring (time)priorityobjectLightweight reference to a related entity — exposes UUID and optional name.
providerobjectLightweight reference to a related entity — exposes UUID and optional name.
recallobjectLightweight reference to a related entity — exposes UUID and optional name.
responded_atstring (date-time)score_calculated_atstring (date-time)score_detailsobjectsourcestringrequiredHow the entry was created. One of: manual, appointment_flag, recall, treatment_plan, online.
statusstringrequiredOne of: waiting, contacted, offered, scheduled, removed, expired.
treatment_valuestringupdated_atstring (date-time)requiredWhen the entry was last updated.
urgencystringrequiredOne of: urgent, soon, routine, flexible.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/waitlist/entries" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"additional_location_uuids": null,
"appointment_type_uuid": "string",
"appointment_uuid": "string",
"date_range_end": "string",
"date_range_start": "string",
"location_uuid": "00000000-0000-0000-0000-000000000000",
"patient_uuid": "00000000-0000-0000-0000-000000000000"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/waitlist/entries" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"additional_location_uuids": null,
"appointment_type_uuid": "string",
"appointment_uuid": "string",
"date_range_end": "string",
"date_range_start": "string",
"location_uuid": "00000000-0000-0000-0000-000000000000",
"patient_uuid": "00000000-0000-0000-0000-000000000000"
}'/api/v1/{org_id}/waitlist/entries/{entry_uuid}/contactLog a contact attempt
Record that a patient was contacted about an opening. Updates the entry's contact tracking fields and creates a contact log record. Transitions status from 'waiting' to 'contacted' automatically. Raises 404 if entry or slot location not found.
Parameters
Path Parameters
entry_uuidstringrequiredorg_idstringrequiredRequest Body
contact_methodstringrequiredHow the patient was contacted. One of: sms, email, phone, app_notification.
initiated_bystringWho initiated the contact. One of: staff, smart_fill.
message_idstringslot_datestring (date)requiredDate of the opening offered.
slot_location_uuidstring (uuid)requiredLocation of the opening offered.
slot_start_timestring (time)requiredStart time of the opening offered.
Responses
additional_locationsobject[]Additional locations (when scope='selected').
appointmentobjectLightweight reference to a related entity — exposes UUID and optional name.
appointment_typeobjectLightweight reference to a related entity — exposes UUID and optional name.
contact_attemptsintegerNumber of contact attempts made.
contact_method_usedstringcontacted_atstring (date-time)created_atstring (date-time)requiredWhen the entry was created.
date_range_endstring (date)date_range_startstring (date)days_waitingintegerrequiredComputed: number of days since entry was created.
estimated_duration_minsintegeridstring (uuid)requiredEntry UUID.
last_offered_slotobjectlocationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
location_scopestringrequiredHow broadly to match: home_only, selected, any.
notestringFree-text note.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
patient_responsestringpatient_scoreintegerpreferred_daysinteger[]preferred_time_endstring (time)preferred_time_startstring (time)priorityobjectLightweight reference to a related entity — exposes UUID and optional name.
providerobjectLightweight reference to a related entity — exposes UUID and optional name.
recallobjectLightweight reference to a related entity — exposes UUID and optional name.
responded_atstring (date-time)score_calculated_atstring (date-time)score_detailsobjectsourcestringrequiredHow the entry was created. One of: manual, appointment_flag, recall, treatment_plan, online.
statusstringrequiredOne of: waiting, contacted, offered, scheduled, removed, expired.
treatment_valuestringupdated_atstring (date-time)requiredWhen the entry was last updated.
urgencystringrequiredOne of: urgent, soon, routine, flexible.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/waitlist/entries/{entry_uuid}/contact" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"contact_method": "string",
"initiated_by": "staff",
"message_id": "string",
"slot_date": "2025-01-15",
"slot_location_uuid": "00000000-0000-0000-0000-000000000000",
"slot_start_time": "09:00:00"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/waitlist/entries/{entry_uuid}/contact" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"contact_method": "string",
"initiated_by": "staff",
"message_id": "string",
"slot_date": "2025-01-15",
"slot_location_uuid": "00000000-0000-0000-0000-000000000000",
"slot_start_time": "09:00:00"
}'/api/v1/{org_id}/waitlist/entries/{entry_uuid}/responseRecord patient response
Record a patient's response to an outreach attempt. When patient_response='accepted', the entry status transitions to 'scheduled'. When patient_response='declined' or 'expired', the entry returns to 'waiting'. Raises 404 if entry not found.
Parameters
Path Parameters
entry_uuidstringrequiredorg_idstringrequiredRequest Body
contact_methodstringmessage_idstringpatient_responsestringrequiredPatient's response. One of: accepted, declined, no_answer, slot_taken, expired.
Responses
additional_locationsobject[]Additional locations (when scope='selected').
appointmentobjectLightweight reference to a related entity — exposes UUID and optional name.
appointment_typeobjectLightweight reference to a related entity — exposes UUID and optional name.
contact_attemptsintegerNumber of contact attempts made.
contact_method_usedstringcontacted_atstring (date-time)created_atstring (date-time)requiredWhen the entry was created.
date_range_endstring (date)date_range_startstring (date)days_waitingintegerrequiredComputed: number of days since entry was created.
estimated_duration_minsintegeridstring (uuid)requiredEntry UUID.
last_offered_slotobjectlocationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
location_scopestringrequiredHow broadly to match: home_only, selected, any.
notestringFree-text note.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
patient_responsestringpatient_scoreintegerpreferred_daysinteger[]preferred_time_endstring (time)preferred_time_startstring (time)priorityobjectLightweight reference to a related entity — exposes UUID and optional name.
providerobjectLightweight reference to a related entity — exposes UUID and optional name.
recallobjectLightweight reference to a related entity — exposes UUID and optional name.
responded_atstring (date-time)score_calculated_atstring (date-time)score_detailsobjectsourcestringrequiredHow the entry was created. One of: manual, appointment_flag, recall, treatment_plan, online.
statusstringrequiredOne of: waiting, contacted, offered, scheduled, removed, expired.
treatment_valuestringupdated_atstring (date-time)requiredWhen the entry was last updated.
urgencystringrequiredOne of: urgent, soon, routine, flexible.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/waitlist/entries/{entry_uuid}/response" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"contact_method": "string",
"message_id": "string",
"patient_response": "string"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/waitlist/entries/{entry_uuid}/response" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"contact_method": "string",
"message_id": "string",
"patient_response": "string"
}'/api/v1/{org_id}/waitlist/entries/bulk-removeBulk remove ASAP entries
Remove multiple ASAP entries at once. Useful for list cleanup. Sets status to 'removed' for all specified entries.
Parameters
Path Parameters
org_idstringrequiredRequest Body
entry_uuidsstring (uuid)[]requiredEntry UUIDs to remove.
Responses
removed_countintegerrequiredNumber of entries removed.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/waitlist/entries/bulk-remove" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"entry_uuids": []
}'curl -X POST "https://api.example.com/api/v1/{org_id}/waitlist/entries/bulk-remove" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"entry_uuids": []
}'/api/v1/{org_id}/waitlist/quick-fillFind matching ASAP entries for an opening
Given an opening (date, time, location, provider), find matching ASAP entries ranked by urgency, priority, and score. Supports cross-location matching when include_cross_location is true. Returns match metadata (quality, provider_match, location_match, duration_fit) for each result.
Parameters
Path Parameters
org_idstringrequiredRequest Body
appointment_type_uuidstring (uuid)include_cross_locationbooleanInclude entries with 'selected' or 'any' location scope.
location_uuidstring (uuid)requiredLocation of the opening.
max_resultsintegerMaximum number of matches to return.
provider_uuidstring (uuid)slot_datestring (date)requiredDate of the opening.
slot_end_timestring (time)requiredEnd time of the opening.
slot_start_timestring (time)requiredStart time of the opening.
Responses
matchesobject[]requiredRanked list of matching ASAP entries.
total_matchesintegerrequiredTotal number of matches found.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/waitlist/quick-fill" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"appointment_type_uuid": "string",
"include_cross_location": true,
"location_uuid": "00000000-0000-0000-0000-000000000000",
"max_results": 25,
"provider_uuid": "string",
"slot_date": "2025-01-15",
"slot_end_time": "09:00:00",
"slot_start_time": "09:00:00"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/waitlist/quick-fill" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"appointment_type_uuid": "string",
"include_cross_location": true,
"location_uuid": "00000000-0000-0000-0000-000000000000",
"max_results": 25,
"provider_uuid": "string",
"slot_date": "2025-01-15",
"slot_end_time": "09:00:00",
"slot_start_time": "09:00:00"
}'/api/v1/{org_id}/waitlist/entries/{entry_uuid}Update ASAP entry
Update an ASAP entry's preferences, urgency, or status. Raises 404 if entry not found.
Parameters
Path Parameters
entry_uuidstringrequiredorg_idstringrequiredRequest Body
additional_location_uuidsstring (uuid)[]appointment_type_uuidstring (uuid)appointment_uuidstring (uuid)date_range_endstring (date)date_range_startstring (date)estimated_duration_minsintegerlocation_scopestringnotestringpreferred_daysinteger[]preferred_time_endstring (time)preferred_time_startstring (time)priority_uuidstring (uuid)provider_uuidstring (uuid)statusstringtreatment_valuenumberurgencystringResponses
additional_locationsobject[]Additional locations (when scope='selected').
appointmentobjectLightweight reference to a related entity — exposes UUID and optional name.
appointment_typeobjectLightweight reference to a related entity — exposes UUID and optional name.
contact_attemptsintegerNumber of contact attempts made.
contact_method_usedstringcontacted_atstring (date-time)created_atstring (date-time)requiredWhen the entry was created.
date_range_endstring (date)date_range_startstring (date)days_waitingintegerrequiredComputed: number of days since entry was created.
estimated_duration_minsintegeridstring (uuid)requiredEntry UUID.
last_offered_slotobjectlocationobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
location_scopestringrequiredHow broadly to match: home_only, selected, any.
notestringFree-text note.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
patient_responsestringpatient_scoreintegerpreferred_daysinteger[]preferred_time_endstring (time)preferred_time_startstring (time)priorityobjectLightweight reference to a related entity — exposes UUID and optional name.
providerobjectLightweight reference to a related entity — exposes UUID and optional name.
recallobjectLightweight reference to a related entity — exposes UUID and optional name.
responded_atstring (date-time)score_calculated_atstring (date-time)score_detailsobjectsourcestringrequiredHow the entry was created. One of: manual, appointment_flag, recall, treatment_plan, online.
statusstringrequiredOne of: waiting, contacted, offered, scheduled, removed, expired.
treatment_valuestringupdated_atstring (date-time)requiredWhen the entry was last updated.
urgencystringrequiredOne of: urgent, soon, routine, flexible.
detailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/waitlist/entries/{entry_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"additional_location_uuids": null,
"appointment_type_uuid": "string",
"appointment_uuid": "string",
"date_range_end": "string",
"date_range_start": "string"
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/waitlist/entries/{entry_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"additional_location_uuids": null,
"appointment_type_uuid": "string",
"appointment_uuid": "string",
"date_range_end": "string",
"date_range_start": "string"
}'/api/v1/{org_id}/waitlist/entries/{entry_uuid}Remove ASAP entry
Remove a patient from the ASAP list. Raises 404 if entry not found.
Parameters
Path Parameters
entry_uuidstringrequiredorg_idstringrequiredResponses
detailobject[]curl -X DELETE "https://api.example.com/api/v1/{org_id}/waitlist/entries/{entry_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X DELETE "https://api.example.com/api/v1/{org_id}/waitlist/entries/{entry_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"