This functionality is available starting from version 2410 and requires FHIR Schema validation engine to be enabled.

This page describes an AidboxTopicDestination, which allows sending events described by an AidboxSubscriptionTopic to a specific HTTP endpoint.

The webhook AidboxTopicDestination works in the following way:

  • Aidbox stores events in the database within the same transaction as the CRUD operation.
  • After the CRUD operation, Aidbox collects unsent messages (refer to the maxEventNumberInBatch parameter) from the database and sends them to the specified endpoint via a POST request.
  • If an error occurs during sending, Aidbox will continue retrying until the message is successfully delivered.

Configuration

To use Webhook with #aidboxsubscriptiontopic you have to create #aidboxtopicdestination resource.

You need to specify the following profile:

http://aidbox.app/StructureDefinition/aidboxtopicdestination-webhook-at-least-once

Available Parameters

Parameter nameValue typeDescription
endpoint *valueUrlWebhook URL.
timeoutvalueUnsignedIntTimeout in seconds to attempt notification delivery (default: 30).
keepAlivevalueIntegerThe time in seconds that the host will allow an idle connection to remain open before it is closed (default: 120, -1 - disable).
maxMessagesInBatchvalueUnsignedIntMaximum number of events that can be combined in a single notification (default: 20).
headervalueStringHTTP header for webhook request in the following format: <Name>: <Value>. Zero or many.

* required parameter.

Examples

POST /fhir/AidboxTopicDestination
content-type: application/json
accept: application/json

{
  "resourceType": "AidboxTopicDestination",
  "meta": {
    "profile": [
      "http://aidbox.app/StructureDefinition/aidboxtopicdestination-webhook-at-least-once"
    ]
  },
  "kind": "webhook-at-least-once",
  "id": "webhook-destination",
  "topic": "http://example.org/FHIR/R5/SubscriptionTopic/QuestionnaireResponse-topic",
  "parameter": [
    {
      "name": "endpoint",
      "valueUrl": "https://aidbox.requestcatcher.com/test"
    },
    {
      "name": "timeout",
      "valueUnsignedInt": 30
    },
    {
      "name": "maxMessagesInBatch",
      "valueUnsignedInt": 20
    },
    {
      "name": "header",
      "valueString": "User-Agent: Aidbox Server"
    }
  ]
}

Status Introspection

Aidbox provides $status operation which provides short status information of the integration status:

GET /fhir/AidboxTopicDestination/<topic-destination-id>/$status
content-type: application/json
accept: application/json

Response format:

PropertyTypeDescription
messageBatchesDeliveredvalueDecimalTotal number of batches that have been successfully delivered.
messageBatchesDeliveryAttemptsvalueDecimal

Number of batch delivery attempts that failed.

It represents the overall failed delivery attempts.

messagesDeliveredvalueDecimalTotal number of events that have been successfully delivered.
messagesDeliveryAttemptsvalueDecimal

Number of delivery attempts that failed.

It represents the overall failed delivery attempts.

messagesInProcessvalueDecimalCurrent number of events in the buffer being processed for delivery.
messagesQueuedvalueDecimalNumber of events pending in the queue for send.
startTimestampvalueDateTimeAidboxTopicDestination start time in UTC.
statusvalueStringAidboxTopicDestination status is always active, which means that AidboxTopicDestination will try to send all received notifications.
lastErrorDetailpartInformation about errors of the latest failed attempt to send an event. This parameter can be repeated up to 5 times. Includes the following parameters.

lastErrorDetail

.message

valueStringError message of the given error.

lastErrorDetail

.timestamp

valueDateTimeTimestamp of the given error.

Last updated 2025-08-19T16:42:17Z