HeyDonto API Documentation (1.0)

API documentation for HeyDonto API

Overview
Languages
Servers
Mock server

https://docs.heydonto.com/_mock/apis/heydonto/openapi/

Sandbox

https://api-staging.heydonto.com/

Production

https://api.heydonto.com/

Site Appointment Types

Operations

Appointment Type

Operations

Brands

Operations

Dental Practices

Operations

Dental Services

Operations

Organizations

Operations

Practice Management Systems

Operations

Sites

Operations

Retrieve all sites based on the user role

Request

Query
clientAccountIdArray of stringsrequired
curl -i -X GET \
  'https://docs.heydonto.com/_mock/apis/heydonto/openapi/site?clientAccountId=string' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

List of sites retrieved successfully.

Bodyapplication/jsonArray [
namestringrequired

The name of the site

Example: "Downtown Clinic"
addressobjectrequired

The address of the site

Example: {"street":"123 Main St","city":"New York","zipCode":"10001"}
googlePlaceIdstringrequired

The Google Place ID of the site

Example: "ChIJN1t_tDeuEmsRUsoyG83frY4"
organizationTitlestring

The title of the organization the site belongs to

Example: "HealthCorp"
organizationIdnumber

The ID of the organization the site belongs to

Example: 1
isAddingNewOrganizationboolean

Indicates if a new organization is being added

Example: true
brandTitlestring

The title of the brand the site belongs to

Example: "BrandCorp"
brandIdnumber

The ID of the brand the site belongs to

Example: 2
isAddingNewBrandboolean

Indicates if a new brand is being added

Example: false
phoneNumberstring

The phone number of the site

Example: "+1-555-555-5555"
websitestring

The website of the site

Example: "https://www.downtownclinic.com"
anyDeskIpstring

The AnyDesk IP of the site for remote access

Example: "192.168.1.1"
practiceManagementSystemIdnumberrequired

The practice management system ID for the site

Example: 123
isEnabledboolean

Indicates if the site is enabled

Example: true
isAddingDecisionMakerUserboolean

Indicates if a decision-maker user is being added

Example: false
decisionMakerUserIdnumber

The ID of the decision-maker user

Example: 45
decisionMakerUserEmailstring

The email of the decision-maker user

Example: "decisionmaker@example.com"
decisionMakerUserPasswordstring

The password of the decision-maker user

Example: "StrongPassword123"
decisionMakerUserFirstNamestring

The first name of the decision-maker user

Example: "Jane"
decisionMakerUserLastNamestring

The last name of the decision-maker user

Example: "Doe"
dentalServiceIdsArray of stringsrequired

Array of dental service IDs associated with the site

Example: [1,2,3]
dentalPracticeIdsArray of stringsrequired

Array of dental practice IDs associated with the site

Example: [10,11,12]
idnumberrequired

The ID of the site to be updated

Example: 100
createdAtstringrequired

The date and time the site was created

Example: "2021-08-01T00:00:00.000Z"
updatedAtstringrequired

The date and time the site was last updated

Example: "2021-08-01T00:00:00.000Z"
]
Response
application/json
[ { "name": "Downtown Clinic", "address": { … }, "googlePlaceId": "ChIJN1t_tDeuEmsRUsoyG83frY4", "organizationTitle": "HealthCorp", "organizationId": 1, "isAddingNewOrganization": true, "brandTitle": "BrandCorp", "brandId": 2, "isAddingNewBrand": false, "phoneNumber": "+1-555-555-5555", "website": "https://www.downtownclinic.com", "anyDeskIp": "192.168.1.1", "practiceManagementSystemId": 123, "isEnabled": true, "isAddingDecisionMakerUser": false, "decisionMakerUserId": 45, "decisionMakerUserEmail": "decisionmaker@example.com", "decisionMakerUserPassword": "StrongPassword123", "decisionMakerUserFirstName": "Jane", "decisionMakerUserLastName": "Doe", "dentalServiceIds": [ … ], "dentalPracticeIds": [ … ], "id": 100, "createdAt": "2021-08-01T00:00:00.000Z", "updatedAt": "2021-08-01T00:00:00.000Z" } ]

Create a new site

Request

Bodyapplication/jsonrequired
namestringrequired

The name of the site

Example: "Downtown Clinic"
addressobjectrequired

The address of the site

Example: {"street":"123 Main St","city":"New York","zipCode":"10001"}
googlePlaceIdstringrequired

The Google Place ID of the site

Example: "ChIJN1t_tDeuEmsRUsoyG83frY4"
organizationTitlestring

The title of the organization the site belongs to

Example: "HealthCorp"
organizationIdnumber

The ID of the organization the site belongs to

Example: 1
isAddingNewOrganizationboolean

Indicates if a new organization is being added

Example: true
brandTitlestring

The title of the brand the site belongs to

Example: "BrandCorp"
brandIdnumber

The ID of the brand the site belongs to

Example: 2
isAddingNewBrandboolean

Indicates if a new brand is being added

Example: false
phoneNumberstring

The phone number of the site

Example: "+1-555-555-5555"
websitestring

The website of the site

Example: "https://www.downtownclinic.com"
anyDeskIpstring

The AnyDesk IP of the site for remote access

Example: "192.168.1.1"
practiceManagementSystemIdnumberrequired

The practice management system ID for the site

Example: 123
isEnabledboolean

Indicates if the site is enabled

Example: true
isAddingDecisionMakerUserboolean

Indicates if a decision-maker user is being added

Example: false
decisionMakerUserIdnumber

The ID of the decision-maker user

Example: 45
decisionMakerUserEmailstring

The email of the decision-maker user

Example: "decisionmaker@example.com"
decisionMakerUserPasswordstring

The password of the decision-maker user

Example: "StrongPassword123"
decisionMakerUserFirstNamestring

The first name of the decision-maker user

Example: "Jane"
decisionMakerUserLastNamestring

The last name of the decision-maker user

Example: "Doe"
dentalServiceIdsArray of stringsrequired

Array of dental service IDs associated with the site

Example: [1,2,3]
dentalPracticeIdsArray of stringsrequired

Array of dental practice IDs associated with the site

Example: [10,11,12]
curl -i -X POST \
  https://docs.heydonto.com/_mock/apis/heydonto/openapi/site \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Downtown Clinic",
    "address": {
      "street": "123 Main St",
      "city": "New York",
      "zipCode": "10001"
    },
    "googlePlaceId": "ChIJN1t_tDeuEmsRUsoyG83frY4",
    "organizationTitle": "HealthCorp",
    "organizationId": 1,
    "isAddingNewOrganization": true,
    "brandTitle": "BrandCorp",
    "brandId": 2,
    "isAddingNewBrand": false,
    "phoneNumber": "+1-555-555-5555",
    "website": "https://www.downtownclinic.com",
    "anyDeskIp": "192.168.1.1",
    "practiceManagementSystemId": 123,
    "isEnabled": true,
    "isAddingDecisionMakerUser": false,
    "decisionMakerUserId": 45,
    "decisionMakerUserEmail": "decisionmaker@example.com",
    "decisionMakerUserPassword": "StrongPassword123",
    "decisionMakerUserFirstName": "Jane",
    "decisionMakerUserLastName": "Doe",
    "dentalServiceIds": [
      1,
      2,
      3
    ],
    "dentalPracticeIds": [
      10,
      11,
      12
    ]
  }'

Responses

Site created successfully.

Bodyapplication/json
namestringrequired

The name of the site

Example: "Downtown Clinic"
addressobjectrequired

The address of the site

Example: {"street":"123 Main St","city":"New York","zipCode":"10001"}
googlePlaceIdstringrequired

The Google Place ID of the site

Example: "ChIJN1t_tDeuEmsRUsoyG83frY4"
organizationTitlestring

The title of the organization the site belongs to

Example: "HealthCorp"
organizationIdnumber

The ID of the organization the site belongs to

Example: 1
isAddingNewOrganizationboolean

Indicates if a new organization is being added

Example: true
brandTitlestring

The title of the brand the site belongs to

Example: "BrandCorp"
brandIdnumber

The ID of the brand the site belongs to

Example: 2
isAddingNewBrandboolean

Indicates if a new brand is being added

Example: false
phoneNumberstring

The phone number of the site

Example: "+1-555-555-5555"
websitestring

The website of the site

Example: "https://www.downtownclinic.com"
anyDeskIpstring

The AnyDesk IP of the site for remote access

Example: "192.168.1.1"
practiceManagementSystemIdnumberrequired

The practice management system ID for the site

Example: 123
isEnabledboolean

Indicates if the site is enabled

Example: true
isAddingDecisionMakerUserboolean

Indicates if a decision-maker user is being added

Example: false
decisionMakerUserIdnumber

The ID of the decision-maker user

Example: 45
decisionMakerUserEmailstring

The email of the decision-maker user

Example: "decisionmaker@example.com"
decisionMakerUserPasswordstring

The password of the decision-maker user

Example: "StrongPassword123"
decisionMakerUserFirstNamestring

The first name of the decision-maker user

Example: "Jane"
decisionMakerUserLastNamestring

The last name of the decision-maker user

Example: "Doe"
dentalServiceIdsArray of stringsrequired

Array of dental service IDs associated with the site

Example: [1,2,3]
dentalPracticeIdsArray of stringsrequired

Array of dental practice IDs associated with the site

Example: [10,11,12]
idnumberrequired

The ID of the site to be updated

Example: 100
createdAtstringrequired

The date and time the site was created

Example: "2021-08-01T00:00:00.000Z"
updatedAtstringrequired

The date and time the site was last updated

Example: "2021-08-01T00:00:00.000Z"
Response
application/json
{ "name": "Downtown Clinic", "address": { "street": "123 Main St", "city": "New York", "zipCode": "10001" }, "googlePlaceId": "ChIJN1t_tDeuEmsRUsoyG83frY4", "organizationTitle": "HealthCorp", "organizationId": 1, "isAddingNewOrganization": true, "brandTitle": "BrandCorp", "brandId": 2, "isAddingNewBrand": false, "phoneNumber": "+1-555-555-5555", "website": "https://www.downtownclinic.com", "anyDeskIp": "192.168.1.1", "practiceManagementSystemId": 123, "isEnabled": true, "isAddingDecisionMakerUser": false, "decisionMakerUserId": 45, "decisionMakerUserEmail": "decisionmaker@example.com", "decisionMakerUserPassword": "StrongPassword123", "decisionMakerUserFirstName": "Jane", "decisionMakerUserLastName": "Doe", "dentalServiceIds": [ 1, 2, 3 ], "dentalPracticeIds": [ 10, 11, 12 ], "id": 100, "createdAt": "2021-08-01T00:00:00.000Z", "updatedAt": "2021-08-01T00:00:00.000Z" }

Retrieve active site analytics (Admin only)

Request

Returns sites grouped by clientAccountId with optional date filters.

Query
startDatestring(date-time)

Filter sites by start date (inclusive). Format: YYYY-MM-DD

Example: startDate=2023-01-01
endDatestring(date-time)

Filter sites by end date (inclusive). Format: YYYY-MM-DD

Example: endDate=2023-01-31
clientAccountIdsArray of numbers

Filter by one or multiple ClientAccount IDs (optional). Example usage for multiple IDs: ?clientAccountIds=10&clientAccountIds=20

curl -i -X GET \
  'https://docs.heydonto.com/_mock/apis/heydonto/openapi/site/billing-analytics-admin?clientAccountIds=0&endDate=2023-01-31&startDate=2023-01-01' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

Array of { clientAccountId, sites[], activeSiteCount }

Bodyapplication/jsonArray [
clientAccountIdnumberrequired

Client Account ID

Example: 10
sitesArray of stringsrequired

List of sites

Example: [{"id":1,"name":"Site One"}]
activeSiteCountnumberrequired

Active site count

Example: 5
]
Response
application/json
[ { "clientAccountId": 10, "sites": [ … ], "activeSiteCount": 5 } ]

Retrieve active site analytics for ClientAccount users (or Admin)

Request

If the user is a ClientAccount user, returns only the clientAccountIds they have access to. An Admin can also use this endpoint, seeing all data if no clientAccountIds is provided.

Query
startDatestring(date-time)

Filter sites by start date (inclusive). Format: YYYY-MM-DD

Example: startDate=2023-01-01
endDatestring(date-time)

Filter sites by end date (inclusive). Format: YYYY-MM-DD

Example: endDate=2023-01-31
clientAccountIdsArray of numbers

Filter by one or multiple ClientAccount IDs (optional). Example usage for multiple IDs: ?clientAccountIds=10&clientAccountIds=20

curl -i -X GET \
  'https://docs.heydonto.com/_mock/apis/heydonto/openapi/site/billing-analytics-client-account?clientAccountIds=0&endDate=2023-01-31&startDate=2023-01-01' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

Array of { clientAccountId, sites[], activeSiteCount }

Bodyapplication/jsonArray [
clientAccountIdnumberrequired

Client Account ID

Example: 10
sitesArray of stringsrequired

List of sites

Example: [{"id":1,"name":"Site One"}]
activeSiteCountnumberrequired

Active site count

Example: 5
]
Response
application/json
[ { "clientAccountId": 10, "sites": [ … ], "activeSiteCount": 5 } ]

Retrieve a site by its ID

Request

Path
siteIdnumberrequired
curl -i -X GET \
  'https://docs.heydonto.com/_mock/apis/heydonto/openapi/site/{siteId}' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

Site retrieved successfully.

Bodyapplication/json
namestringrequired

The name of the site

Example: "Downtown Clinic"
addressobjectrequired

The address of the site

Example: {"street":"123 Main St","city":"New York","zipCode":"10001"}
googlePlaceIdstringrequired

The Google Place ID of the site

Example: "ChIJN1t_tDeuEmsRUsoyG83frY4"
organizationTitlestring

The title of the organization the site belongs to

Example: "HealthCorp"
organizationIdnumber

The ID of the organization the site belongs to

Example: 1
isAddingNewOrganizationboolean

Indicates if a new organization is being added

Example: true
brandTitlestring

The title of the brand the site belongs to

Example: "BrandCorp"
brandIdnumber

The ID of the brand the site belongs to

Example: 2
isAddingNewBrandboolean

Indicates if a new brand is being added

Example: false
phoneNumberstring

The phone number of the site

Example: "+1-555-555-5555"
websitestring

The website of the site

Example: "https://www.downtownclinic.com"
anyDeskIpstring

The AnyDesk IP of the site for remote access

Example: "192.168.1.1"
practiceManagementSystemIdnumberrequired

The practice management system ID for the site

Example: 123
isEnabledboolean

Indicates if the site is enabled

Example: true
isAddingDecisionMakerUserboolean

Indicates if a decision-maker user is being added

Example: false
decisionMakerUserIdnumber

The ID of the decision-maker user

Example: 45
decisionMakerUserEmailstring

The email of the decision-maker user

Example: "decisionmaker@example.com"
decisionMakerUserPasswordstring

The password of the decision-maker user

Example: "StrongPassword123"
decisionMakerUserFirstNamestring

The first name of the decision-maker user

Example: "Jane"
decisionMakerUserLastNamestring

The last name of the decision-maker user

Example: "Doe"
dentalServiceIdsArray of stringsrequired

Array of dental service IDs associated with the site

Example: [1,2,3]
dentalPracticeIdsArray of stringsrequired

Array of dental practice IDs associated with the site

Example: [10,11,12]
idnumberrequired

The ID of the site to be updated

Example: 100
createdAtstringrequired

The date and time the site was created

Example: "2021-08-01T00:00:00.000Z"
updatedAtstringrequired

The date and time the site was last updated

Example: "2021-08-01T00:00:00.000Z"
Response
application/json
{ "name": "Downtown Clinic", "address": { "street": "123 Main St", "city": "New York", "zipCode": "10001" }, "googlePlaceId": "ChIJN1t_tDeuEmsRUsoyG83frY4", "organizationTitle": "HealthCorp", "organizationId": 1, "isAddingNewOrganization": true, "brandTitle": "BrandCorp", "brandId": 2, "isAddingNewBrand": false, "phoneNumber": "+1-555-555-5555", "website": "https://www.downtownclinic.com", "anyDeskIp": "192.168.1.1", "practiceManagementSystemId": 123, "isEnabled": true, "isAddingDecisionMakerUser": false, "decisionMakerUserId": 45, "decisionMakerUserEmail": "decisionmaker@example.com", "decisionMakerUserPassword": "StrongPassword123", "decisionMakerUserFirstName": "Jane", "decisionMakerUserLastName": "Doe", "dentalServiceIds": [ 1, 2, 3 ], "dentalPracticeIds": [ 10, 11, 12 ], "id": 100, "createdAt": "2021-08-01T00:00:00.000Z", "updatedAt": "2021-08-01T00:00:00.000Z" }

Update an existing site

Request

Path
siteIdnumberrequired
Bodyapplication/jsonrequired
namestringrequired

The name of the site

Example: "Downtown Clinic"
addressobjectrequired

The address of the site

Example: {"street":"123 Main St","city":"New York","zipCode":"10001"}
googlePlaceIdstringrequired

The Google Place ID of the site

Example: "ChIJN1t_tDeuEmsRUsoyG83frY4"
organizationTitlestring

The title of the organization the site belongs to

Example: "HealthCorp"
organizationIdnumber

The ID of the organization the site belongs to

Example: 1
isAddingNewOrganizationboolean

Indicates if a new organization is being added

Example: true
brandTitlestring

The title of the brand the site belongs to

Example: "BrandCorp"
brandIdnumber

The ID of the brand the site belongs to

Example: 2
isAddingNewBrandboolean

Indicates if a new brand is being added

Example: false
phoneNumberstring

The phone number of the site

Example: "+1-555-555-5555"
websitestring

The website of the site

Example: "https://www.downtownclinic.com"
anyDeskIpstring

The AnyDesk IP of the site for remote access

Example: "192.168.1.1"
practiceManagementSystemIdnumberrequired

The practice management system ID for the site

Example: 123
isEnabledboolean

Indicates if the site is enabled

Example: true
isAddingDecisionMakerUserboolean

Indicates if a decision-maker user is being added

Example: false
decisionMakerUserIdnumber

The ID of the decision-maker user

Example: 45
decisionMakerUserEmailstring

The email of the decision-maker user

Example: "decisionmaker@example.com"
decisionMakerUserPasswordstring

The password of the decision-maker user

Example: "StrongPassword123"
decisionMakerUserFirstNamestring

The first name of the decision-maker user

Example: "Jane"
decisionMakerUserLastNamestring

The last name of the decision-maker user

Example: "Doe"
dentalServiceIdsArray of stringsrequired

Array of dental service IDs associated with the site

Example: [1,2,3]
dentalPracticeIdsArray of stringsrequired

Array of dental practice IDs associated with the site

Example: [10,11,12]
idnumberrequired

The ID of the site to be updated

Example: 100
curl -i -X PUT \
  'https://docs.heydonto.com/_mock/apis/heydonto/openapi/site/{siteId}' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Downtown Clinic",
    "address": {
      "street": "123 Main St",
      "city": "New York",
      "zipCode": "10001"
    },
    "googlePlaceId": "ChIJN1t_tDeuEmsRUsoyG83frY4",
    "organizationTitle": "HealthCorp",
    "organizationId": 1,
    "isAddingNewOrganization": true,
    "brandTitle": "BrandCorp",
    "brandId": 2,
    "isAddingNewBrand": false,
    "phoneNumber": "+1-555-555-5555",
    "website": "https://www.downtownclinic.com",
    "anyDeskIp": "192.168.1.1",
    "practiceManagementSystemId": 123,
    "isEnabled": true,
    "isAddingDecisionMakerUser": false,
    "decisionMakerUserId": 45,
    "decisionMakerUserEmail": "decisionmaker@example.com",
    "decisionMakerUserPassword": "StrongPassword123",
    "decisionMakerUserFirstName": "Jane",
    "decisionMakerUserLastName": "Doe",
    "dentalServiceIds": [
      1,
      2,
      3
    ],
    "dentalPracticeIds": [
      10,
      11,
      12
    ],
    "id": 100
  }'

Responses

Site updated successfully.

Bodyapplication/json
namestringrequired

The name of the site

Example: "Downtown Clinic"
addressobjectrequired

The address of the site

Example: {"street":"123 Main St","city":"New York","zipCode":"10001"}
googlePlaceIdstringrequired

The Google Place ID of the site

Example: "ChIJN1t_tDeuEmsRUsoyG83frY4"
organizationTitlestring

The title of the organization the site belongs to

Example: "HealthCorp"
organizationIdnumber

The ID of the organization the site belongs to

Example: 1
isAddingNewOrganizationboolean

Indicates if a new organization is being added

Example: true
brandTitlestring

The title of the brand the site belongs to

Example: "BrandCorp"
brandIdnumber

The ID of the brand the site belongs to

Example: 2
isAddingNewBrandboolean

Indicates if a new brand is being added

Example: false
phoneNumberstring

The phone number of the site

Example: "+1-555-555-5555"
websitestring

The website of the site

Example: "https://www.downtownclinic.com"
anyDeskIpstring

The AnyDesk IP of the site for remote access

Example: "192.168.1.1"
practiceManagementSystemIdnumberrequired

The practice management system ID for the site

Example: 123
isEnabledboolean

Indicates if the site is enabled

Example: true
isAddingDecisionMakerUserboolean

Indicates if a decision-maker user is being added

Example: false
decisionMakerUserIdnumber

The ID of the decision-maker user

Example: 45
decisionMakerUserEmailstring

The email of the decision-maker user

Example: "decisionmaker@example.com"
decisionMakerUserPasswordstring

The password of the decision-maker user

Example: "StrongPassword123"
decisionMakerUserFirstNamestring

The first name of the decision-maker user

Example: "Jane"
decisionMakerUserLastNamestring

The last name of the decision-maker user

Example: "Doe"
dentalServiceIdsArray of stringsrequired

Array of dental service IDs associated with the site

Example: [1,2,3]
dentalPracticeIdsArray of stringsrequired

Array of dental practice IDs associated with the site

Example: [10,11,12]
idnumberrequired

The ID of the site to be updated

Example: 100
createdAtstringrequired

The date and time the site was created

Example: "2021-08-01T00:00:00.000Z"
updatedAtstringrequired

The date and time the site was last updated

Example: "2021-08-01T00:00:00.000Z"
Response
application/json
{ "name": "Downtown Clinic", "address": { "street": "123 Main St", "city": "New York", "zipCode": "10001" }, "googlePlaceId": "ChIJN1t_tDeuEmsRUsoyG83frY4", "organizationTitle": "HealthCorp", "organizationId": 1, "isAddingNewOrganization": true, "brandTitle": "BrandCorp", "brandId": 2, "isAddingNewBrand": false, "phoneNumber": "+1-555-555-5555", "website": "https://www.downtownclinic.com", "anyDeskIp": "192.168.1.1", "practiceManagementSystemId": 123, "isEnabled": true, "isAddingDecisionMakerUser": false, "decisionMakerUserId": 45, "decisionMakerUserEmail": "decisionmaker@example.com", "decisionMakerUserPassword": "StrongPassword123", "decisionMakerUserFirstName": "Jane", "decisionMakerUserLastName": "Doe", "dentalServiceIds": [ 1, 2, 3 ], "dentalPracticeIds": [ 10, 11, 12 ], "id": 100, "createdAt": "2021-08-01T00:00:00.000Z", "updatedAt": "2021-08-01T00:00:00.000Z" }

Delete a site by its ID

Request

Path
siteIdnumberrequired
curl -i -X DELETE \
  'https://docs.heydonto.com/_mock/apis/heydonto/openapi/site/{siteId}' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

Site deleted successfully.

Response
No content

Reset the FHIR store for a site

Request

Path
siteIdnumberrequired
Bodyapplication/jsonrequired
forcebooleanrequired

Force reset flag (if true, perform forced reset)

Example: true
curl -i -X POST \
  'https://docs.heydonto.com/_mock/apis/heydonto/openapi/site/{siteId}/fhir-reset' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "force": true
  }'

Responses

FHIR reset command queued for processing

Response
No content

Codes

Operations

Site Assistants

Operations

Periomeasure

Operations

Availability

Operations