Healthie · AsyncAPI Specification

Healthie Webhooks

Version 2026-05-30

Best-effort AsyncAPI 2.6 description of the Healthie webhook surface. Healthie delivers webhook notifications as HTTP POST requests with an `application/json` body whenever a subscribed event occurs on a Healthie account. Each delivery is signed using HTTP Message Signatures (RFC 9421-style) with an HMAC-SHA256 signature whose base string covers the HTTP method, target path, query string, content digest, content type, and content length. The payload itself is a "thin" envelope identifying the affected resource and event; consumers must call back into the Healthie GraphQL API to retrieve the full record using `resource_id` and `resource_id_type`. Generated from public documentation at https://docs.gethealthie.com/guides/webhooks and the Event Reference at https://docs.gethealthie.com/guides/webhooks/event-reference/. Not an official spec.

View Spec View on GitHub API-FirstAppointmentsBillingCare PlansChartingClaimsClinicalDigital HealthEHREMRFormsGraphQLHealth TechHealthcareInsuranceIntakeOnline ProgramsPatient EngagementPatient PortalPractice ManagementProgramsSchedulingTelehealthWellnessWebhooksAsyncAPIWebhooksEvents

Channels

healthie/events
publish receiveHealthieEvent
Receive a Healthie webhook event delivery.
Single delivery channel used by Healthie for all webhook notifications. The specific event is identified by the `event_type` field in the JSON body (e.g. `appointment.created`), and the affected record is identified by `resource_id` plus the GraphQL type name in `resource_id_type` (one of `Appointment`, `FormAnswerGroup`, `Entry`, or `Note` per the Healthie docs). Update events also carry a `changed_fields` array enumerating the modified field names.

Messages

AppointmentCreated
appointment.created
An appointment was created.
AppointmentUpdated
appointment.updated
An appointment was updated.
AppointmentDeleted
appointment.deleted
An appointment was deleted.
AppointmentParticipantJoined
appointment.participant_joined
A participant joined an appointment (telehealth).
AppointmentParticipantLeft
appointment.participant_left
A participant left an appointment (telehealth).
AppointmentPatientAdded
appointment.patient_added
A patient was added to an appointment.
AppointmentPatientRemoved
appointment.patient_removed
A patient was removed from an appointment.
AppointmentRecordingStarted
appointment.recording_started
An appointment recording started.
AppointmentRecordingStopped
appointment.recording_stopped
An appointment recording stopped.
AppointmentRecordingCompleted
appointment.recording_completed
An appointment recording finished processing.
AppointmentTranscriptAvailable
appointment.transcript_available
A transcript is available for an appointment recording.
AvailabilityCreated
availability.created
An availability slot was created.
AvailabilityUpdated
availability.updated
An availability slot was updated.
AvailabilityDeleted
availability.deleted
An availability slot was deleted.
PatientCreated
patient.created
A patient (client) record was created.
PatientUpdated
patient.updated
A patient (client) record was updated.
PatientMerged
patient.merged
Two patient (client) records were merged.
AppliedTagCreated
applied_tag.created
A tag was applied to a resource.
AppliedTagDeleted
applied_tag.deleted
A tag was removed from a resource.
CourseMembershipCreated
course_membership.created
A course membership was created.
CourseMembershipUpdated
course_membership.updated
A course membership was updated.
CourseMembershipDeleted
course_membership.deleted
A course membership was deleted.
FeatureToggleCreated
feature_toggle.created
A feature toggle was created.
FeatureToggleUpdated
feature_toggle.updated
A feature toggle was updated.
FeatureToggleDeleted
feature_toggle.deleted
A feature toggle was deleted.
NotificationContactCreated
notification_contact.created
A notification contact was created.
NotificationContactUpdated
notification_contact.updated
A notification contact was updated.
NotificationContactDeleted
notification_contact.deleted
A notification contact was deleted.
NotificationSettingCreated
notification_setting.created
A notification setting was created.
NotificationSettingUpdated
notification_setting.updated
A notification setting was updated.
NotificationSettingDeleted
notification_setting.deleted
A notification setting was deleted.
OtherIdNumberCreated
other_id_number.created
An other ID number was created on a user.
OtherIdNumberUpdated
other_id_number.updated
An other ID number was updated on a user.
OtherIdNumberDeleted
other_id_number.deleted
An other ID number was deleted from a user.
FormAnswerGroupCreated
form_answer_group.created
A form answer group (form submission) was created.
FormAnswerGroupDeleted
form_answer_group.deleted
A form answer group was deleted.
FormAnswerGroupSigned
form_answer_group.signed
A form answer group was signed.
FormAnswerGroupLocked
form_answer_group.locked
A form answer group was locked.
FormAnswerGroupUnlocked
form_answer_group.unlocked
A form answer group was unlocked.
AppointmentFormAnswerGroupConnectionCreated
appointment_form_answer_group_connection.created
A form was linked to an appointment.
AppointmentFormAnswerGroupConnectionUpdated
appointment_form_answer_group_connection.updated
An appointment-to-form linkage was updated.
AppointmentFormAnswerGroupConnectionDeleted
appointment_form_answer_group_connection.deleted
An appointment-to-form linkage was deleted.
RequestedFormCompletionCreated
requested_form_completion.created
A requested form completion was created.
RequestedFormCompletionUpdated
requested_form_completion.updated
A requested form completion was updated.
RequestedFormCompletionDeleted
requested_form_completion.deleted
A requested form completion was deleted.
CompletedOnboardingItemCreated
completed_onboarding_item.created
A completed onboarding item was recorded.
CompletedOnboardingItemUpdated
completed_onboarding_item.updated
A completed onboarding item was updated.
CompletedOnboardingItemDeleted
completed_onboarding_item.deleted
A completed onboarding item was deleted.
CustomModuleFormCreated
custom_module_form.created
A custom module form (template) was created.
CustomModuleFormUpdated
custom_module_form.updated
A custom module form was updated.
CustomModuleFormDeleted
custom_module_form.deleted
A custom module form was deleted.
CustomModuleCreated
custom_module.created
A custom module (form field) was created.
CustomModuleUpdated
custom_module.updated
A custom module was updated.
CustomModuleDeleted
custom_module.deleted
A custom module was deleted.
GeneratedFormAnswerGroupCreated
generated_form_answer_group.created
A generated form answer group was created (e.g. by automation).
ConversationCreated
conversation.created
A messaging conversation was created.
ConversationUpdated
conversation.updated
A messaging conversation was updated.
ConversationMembershipCreated
conversation_membership.created
A user was added to a conversation.
ConversationMembershipDeleted
conversation_membership.deleted
A user was removed from a conversation.
ConversationMembershipViewed
conversation_membership.viewed
A conversation membership was marked viewed (read receipt).
MessageCreated
message.created
A message was created.
MessageDeleted
message.deleted
A message was deleted.
ScheduledMessageSent
scheduled_message.sent
A scheduled message was sent.
BillingItemCreated
billing_item.created
A billing item was created.
BillingItemUpdated
billing_item.updated
A billing item was updated.
BillingItemDeleted
billing_item.deleted
A billing item was deleted.
RequestedPaymentCreated
requested_payment.created
A requested payment was created.
RequestedPaymentUpdated
requested_payment.updated
A requested payment was updated.
RequestedPaymentDeleted
requested_payment.deleted
A requested payment was deleted.
RecurringPaymentCreated
recurring_payment.created
A recurring payment was created.
RecurringPaymentUpdated
recurring_payment.updated
A recurring payment was updated.
ChargeBackCreated
charge_back.created
A chargeback was created.
ChargeBackUpdated
charge_back.updated
A chargeback was updated.
ChargeBackDeleted
charge_back.deleted
A chargeback was deleted.
ClaimSubmissionCreated
claim_submission.created
A claim submission was created.
ClaimSubmissionUpdated
claim_submission.updated
A claim submission was updated.
ClaimSubmissionDeleted
claim_submission.deleted
A claim submission was deleted.
Cms1500Created
cms1500.created
A CMS-1500 claim was created.
Cms1500Updated
cms1500.updated
A CMS-1500 claim was updated.
Cms1500Deleted
cms1500.deleted
A CMS-1500 claim was deleted.
InsuranceAuthorizationCreated
insurance_authorization.created
An insurance authorization was created.
InsuranceAuthorizationUpdated
insurance_authorization.updated
An insurance authorization was updated.
InsuranceAuthorizationDeleted
insurance_authorization.deleted
An insurance authorization was deleted.
PolicyCreated
policy.created
An insurance policy was created.
PolicyUpdated
policy.updated
An insurance policy was updated.
PolicyDeleted
policy.deleted
An insurance policy was deleted.
AcceptedInsurancePlanCreated
accepted_insurance_plan.created
An accepted insurance plan was added.
AcceptedInsurancePlanDeleted
accepted_insurance_plan.deleted
An accepted insurance plan was removed.
SuperBillCreated
super_bill.created
A super bill was created.
SuperBillUpdated
super_bill.updated
A super bill was updated.
SuperBillDeleted
super_bill.deleted
A super bill was deleted.
StripeCustomerDetailCreated
stripe_customer_detail.created
A Stripe customer detail was created.
StripeCustomerDetailUpdated
stripe_customer_detail.updated
A Stripe customer detail was updated.
StripeCustomerDetailDeleted
stripe_customer_detail.deleted
A Stripe customer detail was deleted.
AllergySensitivityCreated
allergy_sensitivity.created
An allergy/sensitivity record was created.
AllergySensitivityUpdated
allergy_sensitivity.updated
An allergy/sensitivity record was updated.
AllergySensitivityDeleted
allergy_sensitivity.deleted
An allergy/sensitivity record was deleted.
CarePlanCreated
care_plan.created
A care plan was created.
CarePlanUpdated
care_plan.updated
A care plan was updated.
CarePlanDeleted
care_plan.deleted
A care plan was deleted.
CarePlanActivated
care_plan.activated
A care plan was activated.
CarePlanDeactivated
care_plan.deactivated
A care plan was deactivated.
ChartingNoteAddendumCreated
charting_note_addendum.created
A charting note addendum was created.
ChartingNoteAddendumUpdated
charting_note_addendum.updated
A charting note addendum was updated.
ChartingNoteAddendumDeleted
charting_note_addendum.deleted
A charting note addendum was deleted.
DiagnosisCreate
diagnosis.create
A diagnosis was created (documented spelling preserves Healthie's `create` verb).
DiagnosisUpdated
diagnosis.updated
A diagnosis was updated.
DiagnosisDeleted
diagnosis.deleted
A diagnosis was deleted.
GoalCreated
goal.created
A goal was created.
GoalUpdated
goal.updated
A goal was updated.
GoalDeleted
goal.deleted
A goal was deleted.
GoalTemplateCreated
goal_template.created
A goal template was created.
GoalTemplateUpdated
goal_template.updated
A goal template was updated.
GoalTemplateDeleted
goal_template.deleted
A goal template was deleted.
GoalHistoryCreated
goal_history.created
A goal history entry was created.
GoalHistoryDeleted
goal_history.deleted
A goal history entry was deleted.
MedicationCreated
medication.created
A medication record was created.
MedicationUpdated
medication.updated
A medication record was updated.
MedicationDeleted
medication.deleted
A medication record was deleted.
LabOrderCreated
lab_order.created
A lab order was created.
LabOrderUpdated
lab_order.updated
A lab order was updated.
LabResultCreated
lab_result.created
A lab result was created.
LabResultUpdated
lab_result.updated
A lab result was updated.
MetricEntryCreated
metric_entry.created
A metric entry was created.
MetricEntryUpdated
metric_entry.updated
A metric entry was updated.
MetricEntryDeleted
metric_entry.deleted
A metric entry was deleted.
ReferralCreated
referral.created
A referral was created.
ReferralUpdated
referral.updated
A referral was updated.
ReferralDeleted
referral.deleted
A referral was deleted.
FamilyHistoryConditionCreated
family_history_condition.created
A family history condition was created.
FamilyHistoryConditionUpdated
family_history_condition.updated
A family history condition was updated.
FamilyHistoryConditionDeleted
family_history_condition.deleted
A family history condition was deleted.
EntryCreated
entry.created
An entry (journal/log) was created.
EntryUpdated
entry.updated
An entry was updated.
EntryDeleted
entry.deleted
An entry was deleted.
PrescriptionUpdated
prescription.updated
A prescription was updated.
ReferringPhysicianCreated
referring_physician.created
A referring physician was created.
ReferringPhysicianUpdated
referring_physician.updated
A referring physician was updated.
ReferringPhysicianDeleted
referring_physician.deleted
A referring physician was deleted.
DosespotNotificationCreated
dosespot_notification.created
A DoseSpot e-prescribing notification was created.
DocumentCreated
document.created
A document was created.
DocumentUpdated
document.updated
A document was updated.
DocumentDeleted
document.deleted
A document was deleted.
SentFaxCreated
sent_fax.created
A sent fax record was created.
SentFaxUpdated
sent_fax.updated
A sent fax record was updated.
SentFaxStatusChanged
sent_fax.status_changed
A sent fax's status changed.
ReceivedFaxCreated
received_fax.created
A received fax record was created.
FolderSharingCreated
folder_sharing.created
A folder sharing entry was created.
FolderSharingDeleted
folder_sharing.deleted
A folder sharing entry was deleted.
TaskCreated
task.created
A task was created.
TaskUpdated
task.updated
A task was updated.
TaskDeleted
task.deleted
A task was deleted.
LocationCreated
location.created
A location was created.
LocationUpdated
location.updated
A location was updated.
LocationDeleted
location.deleted
A location was deleted.
OrganizationInfoCreated
organization_info.created
Organization info was created.
OrganizationInfoUpdated
organization_info.updated
Organization info was updated.
OrganizationInfoDeleted
organization_info.deleted
Organization info was deleted.
OrganizationMemberUpdated
organization_member.updated
An organization member was updated.
OrganizationMembershipCreated
organization_membership.created
An organization membership was created.
OrganizationMembershipUpdated
organization_membership.updated
An organization membership was updated.
CommentCreated
comment.created
A comment was created.
CommentUpdated
comment.updated
A comment was updated.
CommentDeleted
comment.deleted
A comment was deleted.
ExternalCalendarAuthorizationError
external_calendar.authorization_error
An external calendar sync hit an authorization error.
PatientEducationalResourceUpdated
patient_educational_resource.updated
A patient educational resource was updated.
PatientEducationalResourceDeleted
patient_educational_resource.deleted
A patient educational resource was deleted.
SentNotificationRecordCreated
sent_notification_record.created
A sent notification record was created.
SentNotificationRecordUpdated
sent_notification_record.updated
A sent notification record was updated.
TestCreated
test.created
A synthetic test event emitted when validating a webhook endpoint.

Servers

https
subscriber {webhookUrl}
The HTTPS endpoint registered by the subscriber when creating a Healthie webhook subscription. Healthie POSTs event notifications to this URL. Production deliveries originate from the Healthie egress IP allowlist (52.4.158.130, 3.216.152.234, 54.243.233.84, 50.19.211.21). Endpoints that return non-2xx responses are retried with exponential backoff for approximately three days; an email alert is sent after roughly 24 hours of failures and the webhook is auto-disabled after sustained failure.

AsyncAPI Specification

Raw ↑
asyncapi: 2.6.0
info:
  title: Healthie Webhooks
  version: "2026-05-30"
  description: |
    Best-effort AsyncAPI 2.6 description of the Healthie webhook surface.
    Healthie delivers webhook notifications as HTTP POST requests with an
    `application/json` body whenever a subscribed event occurs on a
    Healthie account. Each delivery is signed using HTTP Message
    Signatures (RFC 9421-style) with an HMAC-SHA256 signature whose base
    string covers the HTTP method, target path, query string, content
    digest, content type, and content length. The payload itself is a
    "thin" envelope identifying the affected resource and event; consumers
    must call back into the Healthie GraphQL API to retrieve the full
    record using `resource_id` and `resource_id_type`.

    Generated from public documentation at
    https://docs.gethealthie.com/guides/webhooks and the Event Reference at
    https://docs.gethealthie.com/guides/webhooks/event-reference/. Not an
    official spec.
  contact:
    name: Healthie Developer Documentation
    url: https://docs.gethealthie.com/guides/webhooks
  license:
    name: Proprietary — Healthie Terms of Service
    url: https://www.gethealthie.com/terms
defaultContentType: application/json
servers:
  subscriber:
    url: "{webhookUrl}"
    protocol: https
    description: |
      The HTTPS endpoint registered by the subscriber when creating a
      Healthie webhook subscription. Healthie POSTs event notifications
      to this URL. Production deliveries originate from the Healthie
      egress IP allowlist (52.4.158.130, 3.216.152.234, 54.243.233.84,
      50.19.211.21). Endpoints that return non-2xx responses are retried
      with exponential backoff for approximately three days; an email
      alert is sent after roughly 24 hours of failures and the webhook
      is auto-disabled after sustained failure.
    variables:
      webhookUrl:
        default: https://example.com/webhooks/healthie
        description: Subscriber-controlled HTTPS endpoint registered with Healthie.
channels:
  healthie/events:
    description: |
      Single delivery channel used by Healthie for all webhook
      notifications. The specific event is identified by the
      `event_type` field in the JSON body (e.g. `appointment.created`),
      and the affected record is identified by `resource_id` plus the
      GraphQL type name in `resource_id_type` (one of `Appointment`,
      `FormAnswerGroup`, `Entry`, or `Note` per the Healthie docs).
      Update events also carry a `changed_fields` array enumerating
      the modified field names.
    bindings:
      http:
        type: request
        method: POST
        bindingVersion: 0.3.0
    publish:
      operationId: receiveHealthieEvent
      summary: Receive a Healthie webhook event delivery.
      description: |
        Healthie publishes a single message envelope containing the
        event type and resource identifiers. Subscribers MUST verify
        the HTTP Message Signature (`Signature`, `Signature-Input`,
        and `Content-Digest` headers) before processing.
      message:
        oneOf:
          - $ref: "#/components/messages/AppointmentCreated"
          - $ref: "#/components/messages/AppointmentUpdated"
          - $ref: "#/components/messages/AppointmentDeleted"
          - $ref: "#/components/messages/AppointmentParticipantJoined"
          - $ref: "#/components/messages/AppointmentParticipantLeft"
          - $ref: "#/components/messages/AppointmentPatientAdded"
          - $ref: "#/components/messages/AppointmentPatientRemoved"
          - $ref: "#/components/messages/AppointmentRecordingStarted"
          - $ref: "#/components/messages/AppointmentRecordingStopped"
          - $ref: "#/components/messages/AppointmentRecordingCompleted"
          - $ref: "#/components/messages/AppointmentTranscriptAvailable"
          - $ref: "#/components/messages/AvailabilityCreated"
          - $ref: "#/components/messages/AvailabilityUpdated"
          - $ref: "#/components/messages/AvailabilityDeleted"
          - $ref: "#/components/messages/PatientCreated"
          - $ref: "#/components/messages/PatientUpdated"
          - $ref: "#/components/messages/PatientMerged"
          - $ref: "#/components/messages/AppliedTagCreated"
          - $ref: "#/components/messages/AppliedTagDeleted"
          - $ref: "#/components/messages/CourseMembershipCreated"
          - $ref: "#/components/messages/CourseMembershipUpdated"
          - $ref: "#/components/messages/CourseMembershipDeleted"
          - $ref: "#/components/messages/FeatureToggleCreated"
          - $ref: "#/components/messages/FeatureToggleUpdated"
          - $ref: "#/components/messages/FeatureToggleDeleted"
          - $ref: "#/components/messages/NotificationContactCreated"
          - $ref: "#/components/messages/NotificationContactUpdated"
          - $ref: "#/components/messages/NotificationContactDeleted"
          - $ref: "#/components/messages/NotificationSettingCreated"
          - $ref: "#/components/messages/NotificationSettingUpdated"
          - $ref: "#/components/messages/NotificationSettingDeleted"
          - $ref: "#/components/messages/OtherIdNumberCreated"
          - $ref: "#/components/messages/OtherIdNumberUpdated"
          - $ref: "#/components/messages/OtherIdNumberDeleted"
          - $ref: "#/components/messages/FormAnswerGroupCreated"
          - $ref: "#/components/messages/FormAnswerGroupDeleted"
          - $ref: "#/components/messages/FormAnswerGroupSigned"
          - $ref: "#/components/messages/FormAnswerGroupLocked"
          - $ref: "#/components/messages/FormAnswerGroupUnlocked"
          - $ref: "#/components/messages/AppointmentFormAnswerGroupConnectionCreated"
          - $ref: "#/components/messages/AppointmentFormAnswerGroupConnectionUpdated"
          - $ref: "#/components/messages/AppointmentFormAnswerGroupConnectionDeleted"
          - $ref: "#/components/messages/RequestedFormCompletionCreated"
          - $ref: "#/components/messages/RequestedFormCompletionUpdated"
          - $ref: "#/components/messages/RequestedFormCompletionDeleted"
          - $ref: "#/components/messages/CompletedOnboardingItemCreated"
          - $ref: "#/components/messages/CompletedOnboardingItemUpdated"
          - $ref: "#/components/messages/CompletedOnboardingItemDeleted"
          - $ref: "#/components/messages/CustomModuleFormCreated"
          - $ref: "#/components/messages/CustomModuleFormUpdated"
          - $ref: "#/components/messages/CustomModuleFormDeleted"
          - $ref: "#/components/messages/CustomModuleCreated"
          - $ref: "#/components/messages/CustomModuleUpdated"
          - $ref: "#/components/messages/CustomModuleDeleted"
          - $ref: "#/components/messages/GeneratedFormAnswerGroupCreated"
          - $ref: "#/components/messages/ConversationCreated"
          - $ref: "#/components/messages/ConversationUpdated"
          - $ref: "#/components/messages/ConversationMembershipCreated"
          - $ref: "#/components/messages/ConversationMembershipDeleted"
          - $ref: "#/components/messages/ConversationMembershipViewed"
          - $ref: "#/components/messages/MessageCreated"
          - $ref: "#/components/messages/MessageDeleted"
          - $ref: "#/components/messages/ScheduledMessageSent"
          - $ref: "#/components/messages/BillingItemCreated"
          - $ref: "#/components/messages/BillingItemUpdated"
          - $ref: "#/components/messages/BillingItemDeleted"
          - $ref: "#/components/messages/RequestedPaymentCreated"
          - $ref: "#/components/messages/RequestedPaymentUpdated"
          - $ref: "#/components/messages/RequestedPaymentDeleted"
          - $ref: "#/components/messages/RecurringPaymentCreated"
          - $ref: "#/components/messages/RecurringPaymentUpdated"
          - $ref: "#/components/messages/ChargeBackCreated"
          - $ref: "#/components/messages/ChargeBackUpdated"
          - $ref: "#/components/messages/ChargeBackDeleted"
          - $ref: "#/components/messages/ClaimSubmissionCreated"
          - $ref: "#/components/messages/ClaimSubmissionUpdated"
          - $ref: "#/components/messages/ClaimSubmissionDeleted"
          - $ref: "#/components/messages/Cms1500Created"
          - $ref: "#/components/messages/Cms1500Updated"
          - $ref: "#/components/messages/Cms1500Deleted"
          - $ref: "#/components/messages/InsuranceAuthorizationCreated"
          - $ref: "#/components/messages/InsuranceAuthorizationUpdated"
          - $ref: "#/components/messages/InsuranceAuthorizationDeleted"
          - $ref: "#/components/messages/PolicyCreated"
          - $ref: "#/components/messages/PolicyUpdated"
          - $ref: "#/components/messages/PolicyDeleted"
          - $ref: "#/components/messages/AcceptedInsurancePlanCreated"
          - $ref: "#/components/messages/AcceptedInsurancePlanDeleted"
          - $ref: "#/components/messages/SuperBillCreated"
          - $ref: "#/components/messages/SuperBillUpdated"
          - $ref: "#/components/messages/SuperBillDeleted"
          - $ref: "#/components/messages/StripeCustomerDetailCreated"
          - $ref: "#/components/messages/StripeCustomerDetailUpdated"
          - $ref: "#/components/messages/StripeCustomerDetailDeleted"
          - $ref: "#/components/messages/AllergySensitivityCreated"
          - $ref: "#/components/messages/AllergySensitivityUpdated"
          - $ref: "#/components/messages/AllergySensitivityDeleted"
          - $ref: "#/components/messages/CarePlanCreated"
          - $ref: "#/components/messages/CarePlanUpdated"
          - $ref: "#/components/messages/CarePlanDeleted"
          - $ref: "#/components/messages/CarePlanActivated"
          - $ref: "#/components/messages/CarePlanDeactivated"
          - $ref: "#/components/messages/ChartingNoteAddendumCreated"
          - $ref: "#/components/messages/ChartingNoteAddendumUpdated"
          - $ref: "#/components/messages/ChartingNoteAddendumDeleted"
          - $ref: "#/components/messages/DiagnosisCreate"
          - $ref: "#/components/messages/DiagnosisUpdated"
          - $ref: "#/components/messages/DiagnosisDeleted"
          - $ref: "#/components/messages/GoalCreated"
          - $ref: "#/components/messages/GoalUpdated"
          - $ref: "#/components/messages/GoalDeleted"
          - $ref: "#/components/messages/GoalTemplateCreated"
          - $ref: "#/components/messages/GoalTemplateUpdated"
          - $ref: "#/components/messages/GoalTemplateDeleted"
          - $ref: "#/components/messages/GoalHistoryCreated"
          - $ref: "#/components/messages/GoalHistoryDeleted"
          - $ref: "#/components/messages/MedicationCreated"
          - $ref: "#/components/messages/MedicationUpdated"
          - $ref: "#/components/messages/MedicationDeleted"
          - $ref: "#/components/messages/LabOrderCreated"
          - $ref: "#/components/messages/LabOrderUpdated"
          - $ref: "#/components/messages/LabResultCreated"
          - $ref: "#/components/messages/LabResultUpdated"
          - $ref: "#/components/messages/MetricEntryCreated"
          - $ref: "#/components/messages/MetricEntryUpdated"
          - $ref: "#/components/messages/MetricEntryDeleted"
          - $ref: "#/components/messages/ReferralCreated"
          - $ref: "#/components/messages/ReferralUpdated"
          - $ref: "#/components/messages/ReferralDeleted"
          - $ref: "#/components/messages/FamilyHistoryConditionCreated"
          - $ref: "#/components/messages/FamilyHistoryConditionUpdated"
          - $ref: "#/components/messages/FamilyHistoryConditionDeleted"
          - $ref: "#/components/messages/EntryCreated"
          - $ref: "#/components/messages/EntryUpdated"
          - $ref: "#/components/messages/EntryDeleted"
          - $ref: "#/components/messages/PrescriptionUpdated"
          - $ref: "#/components/messages/ReferringPhysicianCreated"
          - $ref: "#/components/messages/ReferringPhysicianUpdated"
          - $ref: "#/components/messages/ReferringPhysicianDeleted"
          - $ref: "#/components/messages/DosespotNotificationCreated"
          - $ref: "#/components/messages/DocumentCreated"
          - $ref: "#/components/messages/DocumentUpdated"
          - $ref: "#/components/messages/DocumentDeleted"
          - $ref: "#/components/messages/SentFaxCreated"
          - $ref: "#/components/messages/SentFaxUpdated"
          - $ref: "#/components/messages/SentFaxStatusChanged"
          - $ref: "#/components/messages/ReceivedFaxCreated"
          - $ref: "#/components/messages/FolderSharingCreated"
          - $ref: "#/components/messages/FolderSharingDeleted"
          - $ref: "#/components/messages/TaskCreated"
          - $ref: "#/components/messages/TaskUpdated"
          - $ref: "#/components/messages/TaskDeleted"
          - $ref: "#/components/messages/LocationCreated"
          - $ref: "#/components/messages/LocationUpdated"
          - $ref: "#/components/messages/LocationDeleted"
          - $ref: "#/components/messages/OrganizationInfoCreated"
          - $ref: "#/components/messages/OrganizationInfoUpdated"
          - $ref: "#/components/messages/OrganizationInfoDeleted"
          - $ref: "#/components/messages/OrganizationMemberUpdated"
          - $ref: "#/components/messages/OrganizationMembershipCreated"
          - $ref: "#/components/messages/OrganizationMembershipUpdated"
          - $ref: "#/components/messages/CommentCreated"
          - $ref: "#/components/messages/CommentUpdated"
          - $ref: "#/components/messages/CommentDeleted"
          - $ref: "#/components/messages/ExternalCalendarAuthorizationError"
          - $ref: "#/components/messages/PatientEducationalResourceUpdated"
          - $ref: "#/components/messages/PatientEducationalResourceDeleted"
          - $ref: "#/components/messages/SentNotificationRecordCreated"
          - $ref: "#/components/messages/SentNotificationRecordUpdated"
          - $ref: "#/components/messages/TestCreated"
components:
  messageTraits:
    HttpMessageSignedDelivery:
      headers:
        type: object
        required:
          - Content-Type
          - Content-Digest
          - Signature-Input
          - Signature
        properties:
          Content-Type:
            type: string
            enum:
              - application/json
            description: Body content type used by Healthie for webhook deliveries.
          Content-Digest:
            type: string
            description: |
              SHA-256 digest of the request body, encoded per the HTTP
              Message Signatures specification (e.g.
              `sha-256=:<base64-digest>:`). Subscribers MUST recompute
              and compare before trusting the payload.
            example: "sha-256=:X48E9qOokqqrvdts8nOJRJN3OWDUoyWxBf7kbu9DBPE=:"
          Signature-Input:
            type: string
            description: |
              Names the covered components and signature parameters used
              to construct the signature base string. Per Healthie, the
              base string covers the HTTP method, path, query string,
              content digest, content type, and content length.
            example: 'sig1=("@method" "@path" "@query" "content-digest" "content-type" "content-length");created=1748630400;keyid="healthie-webhook";alg="hmac-sha256"'
          Signature:
            type: string
            description: |
              HMAC-SHA256 signature of the signature base string, keyed
              with the shared secret provisioned for the webhook
              subscription. Encoded per the HTTP Message Signatures
              specification (e.g. `sig1=:<base64-signature>:`).
            example: "sig1=:dGVzdC1zaWduYXR1cmUtdmFsdWU=:"
      bindings:
        http:
          bindingVersion: 0.3.0
  schemas:
    EventEnvelope:
      type: object
      description: |
        Thin JSON envelope sent by Healthie for every webhook delivery.
        Consumers identify the affected record via `resource_id` plus
        `resource_id_type` and dispatch on `event_type`. Update events
        also carry a `changed_fields` array.
      required:
        - resource_id
        - resource_id_type
        - event_type
      properties:
        resource_id:
          type: string
          description: Identifier of the Healthie record that triggered the event.
        resource_id_type:
          type: string
          enum:
            - Appointment
            - FormAnswerGroup
            - Entry
            - Note
          description: |
            GraphQL type name of the resource referenced by
            `resource_id`. Per the Healthie webhook documentation, the
            documented values are `Appointment`, `FormAnswerGroup`,
            `Entry`, and `Note`.
        event_type:
          type: string
          description: Event identifier in `<resource>.<verb>` form (e.g. `appointment.created`).
        changed_fields:
          type: array
          items:
            type: string
          description: |
            For update events, the list of field names that changed
            relative to the prior version of the resource. Empty or
            omitted for create/delete events.
      example:
        resource_id: "12345"
        resource_id_type: Appointment
        event_type: appointment.updated
        changed_fields:
          - date
          - location_id
  messages:
    AppointmentCreated:
      name: AppointmentCreated
      title: appointment.created
      summary: An appointment was created.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: appointment.created
    AppointmentUpdated:
      name: AppointmentUpdated
      title: appointment.updated
      summary: An appointment was updated.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: appointment.updated
    AppointmentDeleted:
      name: AppointmentDeleted
      title: appointment.deleted
      summary: An appointment was deleted.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: appointment.deleted
    AppointmentParticipantJoined:
      name: AppointmentParticipantJoined
      title: appointment.participant_joined
      summary: A participant joined an appointment (telehealth).
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: appointment.participant_joined
    AppointmentParticipantLeft:
      name: AppointmentParticipantLeft
      title: appointment.participant_left
      summary: A participant left an appointment (telehealth).
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: appointment.participant_left
    AppointmentPatientAdded:
      name: AppointmentPatientAdded
      title: appointment.patient_added
      summary: A patient was added to an appointment.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: appointment.patient_added
    AppointmentPatientRemoved:
      name: AppointmentPatientRemoved
      title: appointment.patient_removed
      summary: A patient was removed from an appointment.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: appointment.patient_removed
    AppointmentRecordingStarted:
      name: AppointmentRecordingStarted
      title: appointment.recording_started
      summary: An appointment recording started.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: appointment.recording_started
    AppointmentRecordingStopped:
      name: AppointmentRecordingStopped
      title: appointment.recording_stopped
      summary: An appointment recording stopped.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: appointment.recording_stopped
    AppointmentRecordingCompleted:
      name: AppointmentRecordingCompleted
      title: appointment.recording_completed
      summary: An appointment recording finished processing.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: appointment.recording_completed
    AppointmentTranscriptAvailable:
      name: AppointmentTranscriptAvailable
      title: appointment.transcript_available
      summary: A transcript is available for an appointment recording.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: appointment.transcript_available
    AvailabilityCreated:
      name: AvailabilityCreated
      title: availability.created
      summary: An availability slot was created.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: availability.created
    AvailabilityUpdated:
      name: AvailabilityUpdated
      title: availability.updated
      summary: An availability slot was updated.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: availability.updated
    AvailabilityDeleted:
      name: AvailabilityDeleted
      title: availability.deleted
      summary: An availability slot was deleted.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: availability.deleted
    PatientCreated:
      name: PatientCreated
      title: patient.created
      summary: A patient (client) record was created.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: patient.created
    PatientUpdated:
      name: PatientUpdated
      title: patient.updated
      summary: A patient (client) record was updated.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: patient.updated
    PatientMerged:
      name: PatientMerged
      title: patient.merged
      summary: Two patient (client) records were merged.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: patient.merged
    AppliedTagCreated:
      name: AppliedTagCreated
      title: applied_tag.created
      summary: A tag was applied to a resource.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: applied_tag.created
    AppliedTagDeleted:
      name: AppliedTagDeleted
      title: applied_tag.deleted
      summary: A tag was removed from a resource.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: applied_tag.deleted
    CourseMembershipCreated:
      name: CourseMembershipCreated
      title: course_membership.created
      summary: A course membership was created.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: course_membership.created
    CourseMembershipUpdated:
      name: CourseMembershipUpdated
      title: course_membership.updated
      summary: A course membership was updated.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: course_membership.updated
    CourseMembershipDeleted:
      name: CourseMembershipDeleted
      title: course_membership.deleted
      summary: A course membership was deleted.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: course_membership.deleted
    FeatureToggleCreated:
      name: FeatureToggleCreated
      title: feature_toggle.created
      summary: A feature toggle was created.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: feature_toggle.created
    FeatureToggleUpdated:
      name: FeatureToggleUpdated
      title: feature_toggle.updated
      summary: A feature toggle was updated.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: feature_toggle.updated
    FeatureToggleDeleted:
      name: FeatureToggleDeleted
      title: feature_toggle.deleted
      summary: A feature toggle was deleted.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: feature_toggle.deleted
    NotificationContactCreated:
      name: NotificationContactCreated
      title: notification_contact.created
      summary: A notification contact was created.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: notification_contact.created
    NotificationContactUpdated:
      name: NotificationContactUpdated
      title: notification_contact.updated
      summary: A notification contact was updated.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: notification_contact.updated
    NotificationContactDeleted:
      name: NotificationContactDeleted
      title: notification_contact.deleted
      summary: A notification contact was deleted.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: notification_contact.deleted
    NotificationSettingCreated:
      name: NotificationSettingCreated
      title: notification_setting.created
      summary: A notification setting was created.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: notification_setting.created
    NotificationSettingUpdated:
      name: NotificationSettingUpdated
      title: notification_setting.updated
      summary: A notification setting was updated.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: notification_setting.updated
    NotificationSettingDeleted:
      name: NotificationSettingDeleted
      title: notification_setting.deleted
      summary: A notification setting was deleted.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            properties:
              event_type:
                const: notification_setting.deleted
    OtherIdNumberCreated:
      name: OtherIdNumberCreated
      title: other_id_number.created
      summary: An other ID number was created on a user.
      contentType: application/json
      traits:
        - $ref: "#/components/messageTraits/HttpMessageSignedDelivery"
      payload:
        allOf:
          - $ref: "#/components/schemas/EventEnvelope"
          - type: object
            

# --- truncated at 32 KB (95 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/healthie/refs/heads/main/asyncapi/healthie-webhooks-asyncapi.yml