# Webhook AidboxTopicDestination {% hint style="info" %} This functionality is available starting from version 2410 and requires [FHIR Schema](../../modules/profiling-and-validation/fhir-schema-validator/) validation engine to be [enabled](../../modules/profiling-and-validation/fhir-schema-validator/). {% endhint %} 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. {% content-ref url="./" %} [.](./) {% endcontent-ref %} ## Configuration To use Webhook with [#aidboxsubscriptiontopic](webhook-aidboxtopicdestination.md#aidboxsubscriptiontopic) you have to create [#aidboxtopicdestination](webhook-aidboxtopicdestination.md#aidboxtopicdestination) resource. You need to specify the following profile: ``` http://aidbox.app/StructureDefinition/aidboxtopicdestination-webhook-at-least-once ``` ### Available Parameters
| Parameter name | Value type | Description |
|---|---|---|
endpoint * | valueUrl | Webhook URL. |
timeout | valueUnsignedInt | Timeout in seconds to attempt notification delivery (default: 30). |
keepAlive | valueInteger | The time in seconds that the host will allow an idle connection to remain open before it is closed (default: 120, -1 - disable). |
maxMessagesInBatch | valueUnsignedInt | Maximum number of events that can be combined in a single notification (default: 20). |
header | valueString | HTTP header for webhook request in the following format: <Name>: <Value>. Zero or many. |
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:
{% tabs %}
{% tab title="Request" %}
```yaml
GET /fhir/AidboxTopicDestination/| Property | Type | Description |
|---|---|---|
messageBatchesDelivered | valueDecimal | Total number of batches that have been successfully delivered. |
messageBatchesDeliveryAttempts | valueDecimal | Number of batch delivery attempts that failed. It represents the overall failed delivery attempts. |
messagesDelivered | valueDecimal | Total number of events that have been successfully delivered. |
messagesDeliveryAttempts | valueDecimal | Number of delivery attempts that failed. It represents the overall failed delivery attempts. |
messagesInProcess | valueDecimal | Current number of events in the buffer being processed for delivery. |
messagesQueued | valueDecimal | Number of events pending in the queue for send. |
startTimestamp | valueDateTime | AidboxTopicDestination start time in UTC. |
status | valueString | AidboxTopicDestination status is always active, which means that AidboxTopicDestination will try to send all received notifications. |
lastErrorDetail | part | Information about errors of the latest failed attempt to send an event. This parameter can be repeated up to 5 times. Includes the following parameters. |
| valueString | Error message of the given error. |
| valueDateTime | Timestamp of the given error. |