Halo Connect · AsyncAPI Specification

Halo Connect Webhooks

Version 1.0.0

Halo Cloud delivers HTTPS POST webhook notifications when an async or a registered query completes. The payload does NOT include the query result; the integrator retrieves results via the REST API using the provided queryId. Each request is HMAC-SHA256 signed and carries replay-prevention headers. Webhooks are configured by Halo support per subscription.

View Spec View on GitHub HealthcareAustraliaFHIRHL7InteroperabilityEHRPractice ManagementPrimary CareAU BaseHealth DataAsyncAPIWebhooksEvents

Channels

queryCompleted
Delivered as an HTTPS POST when a query completes.

Messages

QueryCompletedNotification
Query completed notification

Servers

https
integrator-endpoint
The integrator-hosted HTTPS endpoint (configured by Halo support). Optionally separate URLs may be configured for async vs registered sources. URLs support {siteId}, {queryId}, {source} template variables.

AsyncAPI Specification

Raw ↑
generated: '2026-07-24'
method: generated
source: https://docs.haloconnect.io/halo-cloud/webhooks/
spec_type: AsyncAPI
note: >-
  Halo Connect publishes no AsyncAPI document; this 3.0 spec is a faithful
  generation of the documented webhook surface (query-completion notifications
  for async and registered queries) captured verbatim from the webhooks docs.
asyncapi: 3.0.0
info:
  title: Halo Connect Webhooks
  version: '1.0.0'
  description: >-
    Halo Cloud delivers HTTPS POST webhook notifications when an async or a
    registered query completes. The payload does NOT include the query result;
    the integrator retrieves results via the REST API using the provided
    queryId. Each request is HMAC-SHA256 signed and carries replay-prevention
    headers. Webhooks are configured by Halo support per subscription.
  contact:
    name: Halo Connect Support
    url: https://docs.haloconnect.io/halo-cloud/webhooks/
servers:
  integrator-endpoint:
    host: your-endpoint.example.com
    protocol: https
    description: >-
      The integrator-hosted HTTPS endpoint (configured by Halo support).
      Optionally separate URLs may be configured for async vs registered
      sources. URLs support {siteId}, {queryId}, {source} template variables.
channels:
  queryCompleted:
    address: /
    description: Delivered as an HTTPS POST when a query completes.
    messages:
      QueryCompletedNotification:
        $ref: '#/components/messages/QueryCompletedNotification'
operations:
  onQueryCompleted:
    action: receive
    channel:
      $ref: '#/channels/queryCompleted'
    summary: Handle a query-completion webhook notification.
    messages:
      - $ref: '#/channels/queryCompleted/messages/QueryCompletedNotification'
components:
  messages:
    QueryCompletedNotification:
      name: QueryCompletedNotification
      title: Query completed notification
      contentType: application/json
      headers:
        type: object
        properties:
          X-Halo-Id:
            type: string
            description: Webhook notification UUID (mirrors payload id).
          X-Halo-Timestamp:
            type: string
            description: ISO 8601 timestamp; used for replay prevention (reject if >5 minutes old).
          X-Halo-Signature-256:
            type: string
            description: >-
              HMAC-SHA256 of (raw JSON body + "." + timestamp) using the
              integrator-specific secret, lowercase hex, 64 chars.
      payload:
        $ref: '#/components/schemas/QueryCompletedPayload'
      examples:
        - name: asyncCompleted
          payload:
            id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
            occurredAt: '2026-03-05T14:30:00.0000000+00:00'
            siteId: 12345678-abcd-ef01-2345-6789abcdef01
            queryId: abcdef01-2345-6789-abcd-ef0123456789
            webhookSource: async
  schemas:
    QueryCompletedPayload:
      type: object
      required: [id, occurredAt, siteId, queryId, webhookSource]
      properties:
        id:
          type: string
          format: uuid
          description: Unique webhook notification identifier.
        occurredAt:
          type: string
          format: date-time
          description: Query completion timestamp (ISO 8601).
        siteId:
          type: string
          format: uuid
          description: Halo site identifier.
        queryId:
          type: string
          format: uuid
          description: Completed query identifier; use to retrieve results via REST.
        webhookSource:
          type: string
          enum: [async, registered]
          description: Which query surface produced the event.
x-delivery:
  method: HTTPS POST
  content_type: application/json
  retry: decorrelated jitter exponential backoff, up to 10 attempts (~5s first, ~90min max window)
  per_attempt_timeout_seconds: 5
  success: any 2xx halts retries
  no_retry: 4xx except 408/429
  retry_on: 5xx, 408, 429
x-verification:
  signature_header: X-Halo-Signature-256
  algorithm: HMAC-SHA256
  signed_content: raw JSON body + "." + X-Halo-Timestamp value
  encoding: lowercase hex (64 chars)
  replay_window_minutes: 5