[[webhook-component]]
= Webhook Component
:page-source: components/camel-webhook/src/main/docs/webhook-component.adoc

*Available as of Camel version 3.0*


The Webhook meta component allows other Camel components to configure webhooks on a remote webhook provider and
listening for them.

.The following components currently provide webhook endpoints:
* *Telegram*

Maven users can add the following dependency to their `pom.xml`
for this component:

[source,xml]
------------------------------------------------------------
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-webhook</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
------------------------------------------------------------

Typically other components that support webhook will bring this dependency transitively.

== URI Format

[source,text]
----
webhook:endpoint[?options]
----

== Webhook Options


// component options: START
The Webhook component supports 2 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *configuration* (advanced) | Set the default configuration for the webhook meta-component. |  | WebhookConfiguration
| *basicPropertyBinding* (advanced) | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
|===
// component options: END


// endpoint options: START
The Webhook endpoint is configured using URI syntax:

----
webhook:endpointUri
----

with the following path and query parameters:

=== Path Parameters (1 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *endpointUri* | The delegate uri. Must belong to a component that supports webhooks. |  | String
|===


=== Query Parameters (10 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *webhookAutoRegister* (common) | Automatically register the webhook at startup and unregister it on shutdown. | true | boolean
| *webhookBasePath* (common) | The first (base) path element where the webhook will be exposed. It's a good practice to set it to a random string, so that it cannot be guessed by unauthorized parties. |  | String
| *webhookComponentName* (common) | The Camel Rest component to use for the REST transport, such as netty-http. |  | String
| *webhookExternalUrl* (common) | The URL of the current service as seen by the webhook provider |  | String
| *webhookPath* (common) | The path where the webhook endpoint will be exposed (relative to basePath, if any) |  | String
| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
| *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
|===
// endpoint options: END


You can append query options to the URI in the following format,
?options=value&option2=value&...



// spring-boot-auto-configure options: START
== Spring Boot Auto-Configuration

When using Spring Boot make sure to use the following Maven dependency to have support for auto configuration:

[source,xml]
----
<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-webhook-starter</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel core version -->
</dependency>
----


The component supports 9 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *camel.component.webhook.basic-property-binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | Boolean
| *camel.component.webhook.configuration.endpoint-uri* | The delegate uri. Must belong to a component that supports webhooks. |  | String
| *camel.component.webhook.configuration.rest-configuration* | The Camel Rest Configuration used by the webhook. |  | RestConfiguration
| *camel.component.webhook.configuration.webhook-auto-register* | Automatically register the webhook at startup and unregister it on shutdown. | true | Boolean
| *camel.component.webhook.configuration.webhook-base-path* | The first (base) path element where the webhook will be exposed. It's a good practice to set it to a random string, so that it cannot be guessed by unauthorized parties. |  | String
| *camel.component.webhook.configuration.webhook-component-name* | The Camel Rest component to use for the REST transport, such as netty-http. |  | String
| *camel.component.webhook.configuration.webhook-external-url* | The URL of the current service as seen by the webhook provider |  | String
| *camel.component.webhook.configuration.webhook-path* | The path where the webhook endpoint will be exposed (relative to basePath, if any) |  | String
| *camel.component.webhook.enabled* | Whether to enable auto configuration of the webhook component. This is enabled by default. |  | Boolean
|===
// spring-boot-auto-configure options: END

== Examples

Examples of webhook component are provided in the documentation of the delegate components that support it.
