This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new baf74aac22a4 CAMEL-24961: camel-whatsapp - describe the body of the 
webhook consumer, and do not mark the component producer only (#28422)
baf74aac22a4 is described below

commit baf74aac22a401e62ce0622abf56f5899b13fc74
Author: Claus Ibsen <[email protected]>
AuthorDate: Sun Oct 25 12:44:07 2026 +0100

    CAMEL-24961: camel-whatsapp - describe the body of the webhook consumer, 
and do not mark the component producer only (#28422)
    
    camel-whatsapp receives events in webhook mode, but was marked producer 
only, so the catalog could not describe the body of the webhook route. 
WhatsAppEndpoint is no longer producerOnly and extends DefaultEndpoint instead 
of ScheduledPollEndpoint, as it never polls; createConsumer points to the 
webhook component, as camel-clickup does. Add consumerOut and consumerReply 
body types, an upgrade guide entry, and regenerate the catalog and the Endpoint 
and Component DSL.
    
    Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
---
 .../apache/camel/catalog/components/whatsapp.json  |  46 +-
 .../camel/catalog/docs/whatsapp-component.adoc     |   4 +-
 .../whatsapp/WhatsAppComponentConfigurer.java      |   6 +
 .../whatsapp/WhatsAppEndpointConfigurer.java       |  18 +
 .../whatsapp/WhatsAppEndpointUriFactory.java       |   5 +-
 .../apache/camel/component/whatsapp/whatsapp.json  |  46 +-
 .../src/main/docs/whatsapp-component.adoc          |   4 +-
 .../camel/component/whatsapp/WhatsAppEndpoint.java |  21 +-
 .../ROOT/pages/camel-4x-upgrade-guide-4_24.adoc    |   8 +
 .../component/ComponentsBuilderFactory.java        |   2 +-
 .../dsl/WhatsappComponentBuilderFactory.java       |  65 ++-
 .../builder/endpoint/EndpointHeaderBuilders.java   |   2 +-
 .../builder/endpoint/StaticEndpointBuilders.java   |   4 +-
 .../dsl/WhatsAppEndpointBuilderFactory.java        | 507 ++++++++++++++++++++-
 14 files changed, 646 insertions(+), 92 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/whatsapp.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/whatsapp.json
index ed03ad118418..5bd925642ec9 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/whatsapp.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/whatsapp.json
@@ -3,7 +3,7 @@
     "kind": "component",
     "name": "whatsapp",
     "title": "WhatsApp",
-    "description": "Send messages to WhatsApp.",
+    "description": "Send messages to WhatsApp, and receive its events in 
webhook mode.",
     "deprecated": false,
     "firstVersion": "3.19.0",
     "label": "cloud,api,chat",
@@ -18,39 +18,45 @@
     "async": false,
     "api": false,
     "consumerOnly": false,
-    "producerOnly": true,
+    "producerOnly": false,
     "lenientProperties": false,
     "browsable": false,
     "remote": true
   },
   "componentProperties": {
-    "lazyStartProducer": { "index": 0, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Whether the producer should be started lazy (on the first message). By 
starting lazy you can use this to allow CamelContext and routes to startup in 
situations where a producer may otherwise fail [...]
-    "phoneNumberId": { "index": 1, "kind": "property", "displayName": "Phone 
Number Id", "group": "producer", "label": "", "required": true, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "description": "Phone Number ID taken from WhatsApp 
Meta for Developers Dashboard" },
-    "apiVersion": { "index": 2, "kind": "property", "displayName": "Api 
Version", "group": "advanced", "label": "advanced", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": "v13.0", "description": "WhatsApp Cloud 
API version" },
-    "autowiredEnabled": { "index": 3, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching t [...]
-    "baseUri": { "index": 4, "kind": "property", "displayName": "Base Uri", 
"group": "advanced", "label": "advanced", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": "https:\/\/graph.facebook.com", "description": 
"Can be used to set an alternative base URI, e.g. when you want to test the 
component against a mock WhatsApp API" },
-    "client": { "index": 5, "kind": "property", "displayName": "Client", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": "java.net.http.HttpClient", "deprecated": false, "autowired": 
false, "secret": false, "description": "Java 11 HttpClient implementation" },
-    "webhookVerifyToken": { "index": 6, "kind": "property", "displayName": 
"Webhook Verify Token", "group": "advanced", "label": "advanced", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "description": 
"Webhook verify token" },
-    "authorizationToken": { "index": 7, "kind": "property", "displayName": 
"Authorization Token", "group": "security", "label": "security", "required": 
true, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "description": 
"Authorization Token taken from WhatsApp Meta for Developers Dashboard" }
+    "phoneNumberId": { "index": 0, "kind": "property", "displayName": "Phone 
Number Id", "group": "common", "label": "", "required": true, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "Phone Number ID taken from WhatsApp Meta for 
Developers Dashboard" },
+    "bridgeErrorHandler": { "index": 1, "kind": "property", "displayName": 
"Bridge Error Handler", "group": "consumer", "label": "consumer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Allows for bridging the consumer to the Camel routing Error Handler, which 
mean any exceptions (if possible) occurred while the Camel consumer is trying 
to pickup incoming messages, or the like [...]
+    "lazyStartProducer": { "index": 2, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Whether the producer should be started lazy (on the first message). By 
starting lazy you can use this to allow CamelContext and routes to startup in 
situations where a producer may otherwise fail [...]
+    "apiVersion": { "index": 3, "kind": "property", "displayName": "Api 
Version", "group": "advanced", "label": "advanced", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": "v13.0", "description": "WhatsApp Cloud 
API version" },
+    "autowiredEnabled": { "index": 4, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching t [...]
+    "baseUri": { "index": 5, "kind": "property", "displayName": "Base Uri", 
"group": "advanced", "label": "advanced", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": "https:\/\/graph.facebook.com", "description": 
"Can be used to set an alternative base URI, e.g. when you want to test the 
component against a mock WhatsApp API" },
+    "client": { "index": 6, "kind": "property", "displayName": "Client", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": "java.net.http.HttpClient", "deprecated": false, "autowired": 
false, "secret": false, "description": "Java 11 HttpClient implementation" },
+    "webhookVerifyToken": { "index": 7, "kind": "property", "displayName": 
"Webhook Verify Token", "group": "advanced", "label": "advanced", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "description": 
"Webhook verify token" },
+    "authorizationToken": { "index": 8, "kind": "property", "displayName": 
"Authorization Token", "group": "security", "label": "security", "required": 
true, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "description": 
"Authorization Token taken from WhatsApp Meta for Developers Dashboard" }
   },
   "headers": {
     "CamelWhatsAppPhoneNumberId": { "index": 0, "kind": "header", 
"displayName": "", "group": "producer", "label": "producer", "required": false, 
"javaType": "Object", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Phone Number ID taken from WhatsApp 
Meta for Developers Dashboard", "constantName": 
"org.apache.camel.component.whatsapp.WhatsAppConstants#WHATSAPP_PHONE_NUMBER_ID"
 },
     "CamelWhatsAppRecipientPhoneNumberId": { "index": 1, "kind": "header", 
"displayName": "", "group": "producer", "label": "producer", "required": false, 
"javaType": "Object", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Recipient phone number associated with 
Phone Number ID", "constantName": 
"org.apache.camel.component.whatsapp.WhatsAppConstants#WHATSAPP_RECIPIENT_PHONE_NUMBER_ID"
 }
   },
   "bodyTypes": {
+    "consumerOut": { "carriers": [ "text", "null" ], "description": "In 
webhook mode (webhook:whatsapp:...), the event that WhatsApp posts, as JSON 
text. The verification request of WhatsApp (a GET) also reaches the route, with 
the hub.challenge as the body when hub.mode is subscribe and hub.verify_token 
matches webhookVerifyToken, else with no body (403, or 400 when the parameters 
are missing). With webhookSecret, an event without a valid X-Hub-Signature-256 
is answered with 403 and doe [...]
+    "consumerReply": { "carriers": [ "any" ], "description": "The body at the 
end of the route is not sent: the reply is the body the route got, the event or 
the hub.challenge" },
     "producerIn": { "carriers": [ "pojo", "null" ], "description": "A request 
of org.apache.camel.component.whatsapp.model: a TextMessageRequest, 
MediaMessageRequest, LocationMessageRequest, ContactMessageRequest, 
InteractiveMessageRequest or TemplateMessageRequest to send a message, or an 
UploadMediaRequest to upload a media file. Text, bytes, a Map or another POJO 
fails: build the request. No body sends nothing" },
     "producerOut": { "carriers": [ "pojo", "unchanged" ], "description": "The 
org.apache.camel.component.whatsapp.model.MessageResponse of WhatsApp, with the 
ids of the messages sent, or the id of the media uploaded. No body is left as 
it is" }
   },
   "properties": {
-    "phoneNumberId": { "index": 0, "kind": "path", "displayName": "Phone 
Number Id", "group": "producer", "label": "", "required": true, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "The phone number ID 
taken from whatsapp-business dashboard." },
-    "lazyStartProducer": { "index": 1, "kind": "parameter", "displayName": 
"Lazy Start Producer", "group": "producer (advanced)", "label": 
"producer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a produc [...]
-    "apiVersion": { "index": 2, "kind": "parameter", "displayName": "Api 
Version", "group": "advanced", "label": "advanced", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "Facebook graph api 
version." },
-    "baseUri": { "index": 3, "kind": "parameter", "displayName": "Base Uri", 
"group": "advanced", "label": "advanced", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "Can be used to set an 
alternative base URI, e.g. when you want to test the component against a mock 
WhatsApp [...]
-    "httpClient": { "index": 4, "kind": "parameter", "displayName": "Http 
Client", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "java.net.http.HttpClient", "deprecated": false, 
"autowired": false, "secret": false, "description": "HttpClient implementation" 
},
-    "webhookPath": { "index": 5, "kind": "parameter", "displayName": "Webhook 
Path", "group": "advanced", "label": "advanced", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": "webhook", "configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "Webhook path" },
-    "whatsappService": { "index": 6, "kind": "parameter", "displayName": 
"Whatsapp Service", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.whatsapp.WhatsAppService", "deprecated": false, 
"autowired": false, "secret": false, "description": "WhatsApp service 
implementation" },
-    "authorizationToken": { "index": 7, "kind": "parameter", "displayName": 
"Authorization Token", "group": "security", "label": "security", "required": 
true, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": true, "security": 
"secret", "configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "The authorization access 
token taken from w [...]
-    "webhookSecret": { "index": 8, "kind": "parameter", "displayName": 
"Webhook Secret", "group": "security", "label": "security", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "The app secret used to 
verify the X-Hub-Signature-256 signature of inbound  [...]
-    "webhookVerifyToken": { "index": 9, "kind": "parameter", "displayName": 
"Webhook Verify Token", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "Webhook verify token" }
+    "phoneNumberId": { "index": 0, "kind": "path", "displayName": "Phone 
Number Id", "group": "common", "label": "", "required": true, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "The phone number ID 
taken from whatsapp-business dashboard." },
+    "bridgeErrorHandler": { "index": 1, "kind": "parameter", "displayName": 
"Bridge Error Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Allows for bridging the consumer to the 
Camel routing Error Handler, which mean any exceptions (if possible) occurred 
while the Camel consumer is trying to pickup incoming  [...]
+    "exceptionHandler": { "index": 2, "kind": "parameter", "displayName": 
"Exception Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
let the consumer use a custom ExceptionHandler. Notice if the option 
bridgeErrorHandler is enabled then this option is not in use. By def [...]
+    "exchangePattern": { "index": 3, "kind": "parameter", "displayName": 
"Exchange Pattern", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "enum", "javaType": 
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], 
"deprecated": false, "autowired": false, "secret": false, "description": "Sets 
the exchange pattern when the consumer creates an exchange." },
+    "lazyStartProducer": { "index": 4, "kind": "parameter", "displayName": 
"Lazy Start Producer", "group": "producer (advanced)", "label": 
"producer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a produc [...]
+    "apiVersion": { "index": 5, "kind": "parameter", "displayName": "Api 
Version", "group": "advanced", "label": "advanced", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "Facebook graph api 
version." },
+    "baseUri": { "index": 6, "kind": "parameter", "displayName": "Base Uri", 
"group": "advanced", "label": "advanced", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "Can be used to set an 
alternative base URI, e.g. when you want to test the component against a mock 
WhatsApp [...]
+    "httpClient": { "index": 7, "kind": "parameter", "displayName": "Http 
Client", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "java.net.http.HttpClient", "deprecated": false, 
"autowired": false, "secret": false, "description": "HttpClient implementation" 
},
+    "webhookPath": { "index": 8, "kind": "parameter", "displayName": "Webhook 
Path", "group": "advanced", "label": "advanced", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": "webhook", "configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "Webhook path" },
+    "whatsappService": { "index": 9, "kind": "parameter", "displayName": 
"Whatsapp Service", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.whatsapp.WhatsAppService", "deprecated": false, 
"autowired": false, "secret": false, "description": "WhatsApp service 
implementation" },
+    "authorizationToken": { "index": 10, "kind": "parameter", "displayName": 
"Authorization Token", "group": "security", "label": "security", "required": 
true, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": true, "security": 
"secret", "configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "The authorization access 
token taken from  [...]
+    "webhookSecret": { "index": 11, "kind": "parameter", "displayName": 
"Webhook Secret", "group": "security", "label": "security", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "The app secret used to 
verify the X-Hub-Signature-256 signature of inbound [...]
+    "webhookVerifyToken": { "index": 12, "kind": "parameter", "displayName": 
"Webhook Verify Token", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "Webhook verify token" }
   }
 }
diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/whatsapp-component.adoc
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/whatsapp-component.adoc
index 0ea8f5c8845a..1da15a25c2c2 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/whatsapp-component.adoc
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/whatsapp-component.adoc
@@ -2,11 +2,11 @@
 :doctitle: WhatsApp
 :shortname: whatsapp
 :artifactid: camel-whatsapp
-:description: Send messages to WhatsApp.
+:description: Send messages to WhatsApp, and receive its events in webhook 
mode.
 :since: 3.19
 :supportlevel: Stable
 :tabs-sync-option:
-:component-header: Only producer is supported
+:component-header: Both producer and consumer are supported
 
 *Since Camel {since}*
 
diff --git 
a/components/camel-whatsapp/src/generated/java/org/apache/camel/component/whatsapp/WhatsAppComponentConfigurer.java
 
b/components/camel-whatsapp/src/generated/java/org/apache/camel/component/whatsapp/WhatsAppComponentConfigurer.java
index c7893e5970b2..b85cb6d7f5b8 100644
--- 
a/components/camel-whatsapp/src/generated/java/org/apache/camel/component/whatsapp/WhatsAppComponentConfigurer.java
+++ 
b/components/camel-whatsapp/src/generated/java/org/apache/camel/component/whatsapp/WhatsAppComponentConfigurer.java
@@ -31,6 +31,8 @@ public class WhatsAppComponentConfigurer extends 
PropertyConfigurerSupport imple
         case "autowiredEnabled": 
target.setAutowiredEnabled(property(camelContext, boolean.class, value)); 
return true;
         case "baseuri":
         case "baseUri": target.setBaseUri(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": 
target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); 
return true;
         case "client": target.setClient(property(camelContext, 
java.net.http.HttpClient.class, value)); return true;
         case "lazystartproducer":
         case "lazyStartProducer": 
target.setLazyStartProducer(property(camelContext, boolean.class, value)); 
return true;
@@ -53,6 +55,8 @@ public class WhatsAppComponentConfigurer extends 
PropertyConfigurerSupport imple
         case "autowiredEnabled": return boolean.class;
         case "baseuri":
         case "baseUri": return java.lang.String.class;
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": return boolean.class;
         case "client": return java.net.http.HttpClient.class;
         case "lazystartproducer":
         case "lazyStartProducer": return boolean.class;
@@ -76,6 +80,8 @@ public class WhatsAppComponentConfigurer extends 
PropertyConfigurerSupport imple
         case "autowiredEnabled": return target.isAutowiredEnabled();
         case "baseuri":
         case "baseUri": return target.getBaseUri();
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
         case "client": return target.getClient();
         case "lazystartproducer":
         case "lazyStartProducer": return target.isLazyStartProducer();
diff --git 
a/components/camel-whatsapp/src/generated/java/org/apache/camel/component/whatsapp/WhatsAppEndpointConfigurer.java
 
b/components/camel-whatsapp/src/generated/java/org/apache/camel/component/whatsapp/WhatsAppEndpointConfigurer.java
index d4d2aee025a5..50ef1370de04 100644
--- 
a/components/camel-whatsapp/src/generated/java/org/apache/camel/component/whatsapp/WhatsAppEndpointConfigurer.java
+++ 
b/components/camel-whatsapp/src/generated/java/org/apache/camel/component/whatsapp/WhatsAppEndpointConfigurer.java
@@ -29,6 +29,12 @@ public class WhatsAppEndpointConfigurer extends 
PropertyConfigurerSupport implem
         case "authorizationToken": 
target.getConfiguration().setAuthorizationToken(property(camelContext, 
java.lang.String.class, value)); return true;
         case "baseuri":
         case "baseUri": 
target.getConfiguration().setBaseUri(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": 
target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); 
return true;
+        case "exceptionhandler":
+        case "exceptionHandler": 
target.setExceptionHandler(property(camelContext, 
org.apache.camel.spi.ExceptionHandler.class, value)); return true;
+        case "exchangepattern":
+        case "exchangePattern": 
target.setExchangePattern(property(camelContext, 
org.apache.camel.ExchangePattern.class, value)); return true;
         case "httpclient":
         case "httpClient": target.setHttpClient(property(camelContext, 
java.net.http.HttpClient.class, value)); return true;
         case "lazystartproducer":
@@ -54,6 +60,12 @@ public class WhatsAppEndpointConfigurer extends 
PropertyConfigurerSupport implem
         case "authorizationToken": return java.lang.String.class;
         case "baseuri":
         case "baseUri": return java.lang.String.class;
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": return boolean.class;
+        case "exceptionhandler":
+        case "exceptionHandler": return 
org.apache.camel.spi.ExceptionHandler.class;
+        case "exchangepattern":
+        case "exchangePattern": return org.apache.camel.ExchangePattern.class;
         case "httpclient":
         case "httpClient": return java.net.http.HttpClient.class;
         case "lazystartproducer":
@@ -80,6 +92,12 @@ public class WhatsAppEndpointConfigurer extends 
PropertyConfigurerSupport implem
         case "authorizationToken": return 
target.getConfiguration().getAuthorizationToken();
         case "baseuri":
         case "baseUri": return target.getConfiguration().getBaseUri();
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
+        case "exceptionhandler":
+        case "exceptionHandler": return target.getExceptionHandler();
+        case "exchangepattern":
+        case "exchangePattern": return target.getExchangePattern();
         case "httpclient":
         case "httpClient": return target.getHttpClient();
         case "lazystartproducer":
diff --git 
a/components/camel-whatsapp/src/generated/java/org/apache/camel/component/whatsapp/WhatsAppEndpointUriFactory.java
 
b/components/camel-whatsapp/src/generated/java/org/apache/camel/component/whatsapp/WhatsAppEndpointUriFactory.java
index 46e8ff59126a..63ab2f0d1ad4 100644
--- 
a/components/camel-whatsapp/src/generated/java/org/apache/camel/component/whatsapp/WhatsAppEndpointUriFactory.java
+++ 
b/components/camel-whatsapp/src/generated/java/org/apache/camel/component/whatsapp/WhatsAppEndpointUriFactory.java
@@ -24,10 +24,13 @@ public class WhatsAppEndpointUriFactory extends 
org.apache.camel.support.compone
     private static final Set<String> ENDPOINT_IDENTITY_PROPERTY_NAMES;
     private static final Map<String, String> MULTI_VALUE_PREFIXES;
     static {
-        Set<String> props = new HashSet<>(10);
+        Set<String> props = new HashSet<>(13);
         props.add("apiVersion");
         props.add("authorizationToken");
         props.add("baseUri");
+        props.add("bridgeErrorHandler");
+        props.add("exceptionHandler");
+        props.add("exchangePattern");
         props.add("httpClient");
         props.add("lazyStartProducer");
         props.add("phoneNumberId");
diff --git 
a/components/camel-whatsapp/src/generated/resources/META-INF/org/apache/camel/component/whatsapp/whatsapp.json
 
b/components/camel-whatsapp/src/generated/resources/META-INF/org/apache/camel/component/whatsapp/whatsapp.json
index ed03ad118418..5bd925642ec9 100644
--- 
a/components/camel-whatsapp/src/generated/resources/META-INF/org/apache/camel/component/whatsapp/whatsapp.json
+++ 
b/components/camel-whatsapp/src/generated/resources/META-INF/org/apache/camel/component/whatsapp/whatsapp.json
@@ -3,7 +3,7 @@
     "kind": "component",
     "name": "whatsapp",
     "title": "WhatsApp",
-    "description": "Send messages to WhatsApp.",
+    "description": "Send messages to WhatsApp, and receive its events in 
webhook mode.",
     "deprecated": false,
     "firstVersion": "3.19.0",
     "label": "cloud,api,chat",
@@ -18,39 +18,45 @@
     "async": false,
     "api": false,
     "consumerOnly": false,
-    "producerOnly": true,
+    "producerOnly": false,
     "lenientProperties": false,
     "browsable": false,
     "remote": true
   },
   "componentProperties": {
-    "lazyStartProducer": { "index": 0, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Whether the producer should be started lazy (on the first message). By 
starting lazy you can use this to allow CamelContext and routes to startup in 
situations where a producer may otherwise fail [...]
-    "phoneNumberId": { "index": 1, "kind": "property", "displayName": "Phone 
Number Id", "group": "producer", "label": "", "required": true, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "description": "Phone Number ID taken from WhatsApp 
Meta for Developers Dashboard" },
-    "apiVersion": { "index": 2, "kind": "property", "displayName": "Api 
Version", "group": "advanced", "label": "advanced", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": "v13.0", "description": "WhatsApp Cloud 
API version" },
-    "autowiredEnabled": { "index": 3, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching t [...]
-    "baseUri": { "index": 4, "kind": "property", "displayName": "Base Uri", 
"group": "advanced", "label": "advanced", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": "https:\/\/graph.facebook.com", "description": 
"Can be used to set an alternative base URI, e.g. when you want to test the 
component against a mock WhatsApp API" },
-    "client": { "index": 5, "kind": "property", "displayName": "Client", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": "java.net.http.HttpClient", "deprecated": false, "autowired": 
false, "secret": false, "description": "Java 11 HttpClient implementation" },
-    "webhookVerifyToken": { "index": 6, "kind": "property", "displayName": 
"Webhook Verify Token", "group": "advanced", "label": "advanced", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "description": 
"Webhook verify token" },
-    "authorizationToken": { "index": 7, "kind": "property", "displayName": 
"Authorization Token", "group": "security", "label": "security", "required": 
true, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "description": 
"Authorization Token taken from WhatsApp Meta for Developers Dashboard" }
+    "phoneNumberId": { "index": 0, "kind": "property", "displayName": "Phone 
Number Id", "group": "common", "label": "", "required": true, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "Phone Number ID taken from WhatsApp Meta for 
Developers Dashboard" },
+    "bridgeErrorHandler": { "index": 1, "kind": "property", "displayName": 
"Bridge Error Handler", "group": "consumer", "label": "consumer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Allows for bridging the consumer to the Camel routing Error Handler, which 
mean any exceptions (if possible) occurred while the Camel consumer is trying 
to pickup incoming messages, or the like [...]
+    "lazyStartProducer": { "index": 2, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Whether the producer should be started lazy (on the first message). By 
starting lazy you can use this to allow CamelContext and routes to startup in 
situations where a producer may otherwise fail [...]
+    "apiVersion": { "index": 3, "kind": "property", "displayName": "Api 
Version", "group": "advanced", "label": "advanced", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": "v13.0", "description": "WhatsApp Cloud 
API version" },
+    "autowiredEnabled": { "index": 4, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching t [...]
+    "baseUri": { "index": 5, "kind": "property", "displayName": "Base Uri", 
"group": "advanced", "label": "advanced", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": "https:\/\/graph.facebook.com", "description": 
"Can be used to set an alternative base URI, e.g. when you want to test the 
component against a mock WhatsApp API" },
+    "client": { "index": 6, "kind": "property", "displayName": "Client", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": "java.net.http.HttpClient", "deprecated": false, "autowired": 
false, "secret": false, "description": "Java 11 HttpClient implementation" },
+    "webhookVerifyToken": { "index": 7, "kind": "property", "displayName": 
"Webhook Verify Token", "group": "advanced", "label": "advanced", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "description": 
"Webhook verify token" },
+    "authorizationToken": { "index": 8, "kind": "property", "displayName": 
"Authorization Token", "group": "security", "label": "security", "required": 
true, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "description": 
"Authorization Token taken from WhatsApp Meta for Developers Dashboard" }
   },
   "headers": {
     "CamelWhatsAppPhoneNumberId": { "index": 0, "kind": "header", 
"displayName": "", "group": "producer", "label": "producer", "required": false, 
"javaType": "Object", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Phone Number ID taken from WhatsApp 
Meta for Developers Dashboard", "constantName": 
"org.apache.camel.component.whatsapp.WhatsAppConstants#WHATSAPP_PHONE_NUMBER_ID"
 },
     "CamelWhatsAppRecipientPhoneNumberId": { "index": 1, "kind": "header", 
"displayName": "", "group": "producer", "label": "producer", "required": false, 
"javaType": "Object", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Recipient phone number associated with 
Phone Number ID", "constantName": 
"org.apache.camel.component.whatsapp.WhatsAppConstants#WHATSAPP_RECIPIENT_PHONE_NUMBER_ID"
 }
   },
   "bodyTypes": {
+    "consumerOut": { "carriers": [ "text", "null" ], "description": "In 
webhook mode (webhook:whatsapp:...), the event that WhatsApp posts, as JSON 
text. The verification request of WhatsApp (a GET) also reaches the route, with 
the hub.challenge as the body when hub.mode is subscribe and hub.verify_token 
matches webhookVerifyToken, else with no body (403, or 400 when the parameters 
are missing). With webhookSecret, an event without a valid X-Hub-Signature-256 
is answered with 403 and doe [...]
+    "consumerReply": { "carriers": [ "any" ], "description": "The body at the 
end of the route is not sent: the reply is the body the route got, the event or 
the hub.challenge" },
     "producerIn": { "carriers": [ "pojo", "null" ], "description": "A request 
of org.apache.camel.component.whatsapp.model: a TextMessageRequest, 
MediaMessageRequest, LocationMessageRequest, ContactMessageRequest, 
InteractiveMessageRequest or TemplateMessageRequest to send a message, or an 
UploadMediaRequest to upload a media file. Text, bytes, a Map or another POJO 
fails: build the request. No body sends nothing" },
     "producerOut": { "carriers": [ "pojo", "unchanged" ], "description": "The 
org.apache.camel.component.whatsapp.model.MessageResponse of WhatsApp, with the 
ids of the messages sent, or the id of the media uploaded. No body is left as 
it is" }
   },
   "properties": {
-    "phoneNumberId": { "index": 0, "kind": "path", "displayName": "Phone 
Number Id", "group": "producer", "label": "", "required": true, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "The phone number ID 
taken from whatsapp-business dashboard." },
-    "lazyStartProducer": { "index": 1, "kind": "parameter", "displayName": 
"Lazy Start Producer", "group": "producer (advanced)", "label": 
"producer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a produc [...]
-    "apiVersion": { "index": 2, "kind": "parameter", "displayName": "Api 
Version", "group": "advanced", "label": "advanced", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "Facebook graph api 
version." },
-    "baseUri": { "index": 3, "kind": "parameter", "displayName": "Base Uri", 
"group": "advanced", "label": "advanced", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "Can be used to set an 
alternative base URI, e.g. when you want to test the component against a mock 
WhatsApp [...]
-    "httpClient": { "index": 4, "kind": "parameter", "displayName": "Http 
Client", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "java.net.http.HttpClient", "deprecated": false, 
"autowired": false, "secret": false, "description": "HttpClient implementation" 
},
-    "webhookPath": { "index": 5, "kind": "parameter", "displayName": "Webhook 
Path", "group": "advanced", "label": "advanced", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": "webhook", "configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "Webhook path" },
-    "whatsappService": { "index": 6, "kind": "parameter", "displayName": 
"Whatsapp Service", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.whatsapp.WhatsAppService", "deprecated": false, 
"autowired": false, "secret": false, "description": "WhatsApp service 
implementation" },
-    "authorizationToken": { "index": 7, "kind": "parameter", "displayName": 
"Authorization Token", "group": "security", "label": "security", "required": 
true, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": true, "security": 
"secret", "configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "The authorization access 
token taken from w [...]
-    "webhookSecret": { "index": 8, "kind": "parameter", "displayName": 
"Webhook Secret", "group": "security", "label": "security", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "The app secret used to 
verify the X-Hub-Signature-256 signature of inbound  [...]
-    "webhookVerifyToken": { "index": 9, "kind": "parameter", "displayName": 
"Webhook Verify Token", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "Webhook verify token" }
+    "phoneNumberId": { "index": 0, "kind": "path", "displayName": "Phone 
Number Id", "group": "common", "label": "", "required": true, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "The phone number ID 
taken from whatsapp-business dashboard." },
+    "bridgeErrorHandler": { "index": 1, "kind": "parameter", "displayName": 
"Bridge Error Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Allows for bridging the consumer to the 
Camel routing Error Handler, which mean any exceptions (if possible) occurred 
while the Camel consumer is trying to pickup incoming  [...]
+    "exceptionHandler": { "index": 2, "kind": "parameter", "displayName": 
"Exception Handler", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
let the consumer use a custom ExceptionHandler. Notice if the option 
bridgeErrorHandler is enabled then this option is not in use. By def [...]
+    "exchangePattern": { "index": 3, "kind": "parameter", "displayName": 
"Exchange Pattern", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "enum", "javaType": 
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], 
"deprecated": false, "autowired": false, "secret": false, "description": "Sets 
the exchange pattern when the consumer creates an exchange." },
+    "lazyStartProducer": { "index": 4, "kind": "parameter", "displayName": 
"Lazy Start Producer", "group": "producer (advanced)", "label": 
"producer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a produc [...]
+    "apiVersion": { "index": 5, "kind": "parameter", "displayName": "Api 
Version", "group": "advanced", "label": "advanced", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "Facebook graph api 
version." },
+    "baseUri": { "index": 6, "kind": "parameter", "displayName": "Base Uri", 
"group": "advanced", "label": "advanced", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "Can be used to set an 
alternative base URI, e.g. when you want to test the component against a mock 
WhatsApp [...]
+    "httpClient": { "index": 7, "kind": "parameter", "displayName": "Http 
Client", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "java.net.http.HttpClient", "deprecated": false, 
"autowired": false, "secret": false, "description": "HttpClient implementation" 
},
+    "webhookPath": { "index": 8, "kind": "parameter", "displayName": "Webhook 
Path", "group": "advanced", "label": "advanced", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": "webhook", "configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "Webhook path" },
+    "whatsappService": { "index": 9, "kind": "parameter", "displayName": 
"Whatsapp Service", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.whatsapp.WhatsAppService", "deprecated": false, 
"autowired": false, "secret": false, "description": "WhatsApp service 
implementation" },
+    "authorizationToken": { "index": 10, "kind": "parameter", "displayName": 
"Authorization Token", "group": "security", "label": "security", "required": 
true, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": true, "security": 
"secret", "configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "The authorization access 
token taken from  [...]
+    "webhookSecret": { "index": 11, "kind": "parameter", "displayName": 
"Webhook Secret", "group": "security", "label": "security", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "The app secret used to 
verify the X-Hub-Signature-256 signature of inbound [...]
+    "webhookVerifyToken": { "index": 12, "kind": "parameter", "displayName": 
"Webhook Verify Token", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "configurationClass": 
"org.apache.camel.component.whatsapp.WhatsAppConfiguration", 
"configurationField": "configuration", "description": "Webhook verify token" }
   }
 }
diff --git a/components/camel-whatsapp/src/main/docs/whatsapp-component.adoc 
b/components/camel-whatsapp/src/main/docs/whatsapp-component.adoc
index 0ea8f5c8845a..1da15a25c2c2 100644
--- a/components/camel-whatsapp/src/main/docs/whatsapp-component.adoc
+++ b/components/camel-whatsapp/src/main/docs/whatsapp-component.adoc
@@ -2,11 +2,11 @@
 :doctitle: WhatsApp
 :shortname: whatsapp
 :artifactid: camel-whatsapp
-:description: Send messages to WhatsApp.
+:description: Send messages to WhatsApp, and receive its events in webhook 
mode.
 :since: 3.19
 :supportlevel: Stable
 :tabs-sync-option:
-:component-header: Only producer is supported
+:component-header: Both producer and consumer are supported
 
 *Since Camel {since}*
 
diff --git 
a/components/camel-whatsapp/src/main/java/org/apache/camel/component/whatsapp/WhatsAppEndpoint.java
 
b/components/camel-whatsapp/src/main/java/org/apache/camel/component/whatsapp/WhatsAppEndpoint.java
index 17f3ed125acf..85b84efdcb20 100644
--- 
a/components/camel-whatsapp/src/main/java/org/apache/camel/component/whatsapp/WhatsAppEndpoint.java
+++ 
b/components/camel-whatsapp/src/main/java/org/apache/camel/component/whatsapp/WhatsAppEndpoint.java
@@ -33,20 +33,29 @@ import org.apache.camel.spi.BodyType.Carrier;
 import org.apache.camel.spi.BodyTypes;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
-import org.apache.camel.support.ScheduledPollEndpoint;
+import org.apache.camel.support.DefaultEndpoint;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * Send messages to WhatsApp.
+ * Send messages to WhatsApp, and receive its events in webhook mode.
  */
 @UriEndpoint(firstVersion = "3.19.0", scheme = "whatsapp", title = "WhatsApp", 
syntax = "whatsapp:phoneNumberId",
-             producerOnly = true,
              category = {
                      Category.CLOUD, Category.API,
                      Category.CHAT },
              headersClass = WhatsAppConstants.class)
-@BodyTypes(producerIn = @BodyType(value = { Carrier.POJO, Carrier.NULL },
+@BodyTypes(consumerOut = @BodyType(value = { Carrier.TEXT, Carrier.NULL },
+                                   description = "In webhook mode 
(webhook:whatsapp:...), the event that WhatsApp posts, as JSON"
+                                                 + " text. The verification 
request of WhatsApp (a GET) also reaches the route,"
+                                                 + " with the hub.challenge as 
the body when hub.mode is subscribe and"
+                                                 + " hub.verify_token matches 
webhookVerifyToken, else with no body (403, or 400"
+                                                 + " when the parameters are 
missing). With webhookSecret, an event without a"
+                                                 + " valid X-Hub-Signature-256 
is answered with 403 and does not reach the route"),
+           consumerReply = @BodyType(value = Carrier.ANY,
+                                     description = "The body at the end of the 
route is not sent: the reply is the body the route"
+                                                   + " got, the event or the 
hub.challenge"),
+           producerIn = @BodyType(value = { Carrier.POJO, Carrier.NULL },
                                   description = "A request of 
org.apache.camel.component.whatsapp.model: a TextMessageRequest,"
                                                 + " MediaMessageRequest, 
LocationMessageRequest, ContactMessageRequest,"
                                                 + " InteractiveMessageRequest 
or TemplateMessageRequest to send a message, or an"
@@ -55,7 +64,7 @@ import org.slf4j.LoggerFactory;
            producerOut = @BodyType(value = { Carrier.POJO, Carrier.UNCHANGED },
                                    description = "The 
org.apache.camel.component.whatsapp.model.MessageResponse of WhatsApp, with the 
ids of the messages sent, or the id"
                                                  + " of the media uploaded. No 
body is left as it is"))
-public class WhatsAppEndpoint extends ScheduledPollEndpoint implements 
WebhookCapableEndpoint {
+public class WhatsAppEndpoint extends DefaultEndpoint implements 
WebhookCapableEndpoint {
     private static final Logger LOG = 
LoggerFactory.getLogger(WhatsAppEndpoint.class);
 
     @UriParam
@@ -104,7 +113,7 @@ public class WhatsAppEndpoint extends ScheduledPollEndpoint 
implements WebhookCa
 
     @Override
     public Consumer createConsumer(Processor processor) throws Exception {
-        throw new UnsupportedOperationException("consumer not supported");
+        throw new UnsupportedOperationException("Use webhook component to wrap 
this endpoint");
     }
 
     @Override
diff --git 
a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_24.adoc 
b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_24.adoc
index 03d6b720f8fe..43c92b42a230 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_24.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_24.adoc
@@ -3530,3 +3530,11 @@ exception as before.
 The `CamelFileLastModified` header is now the last modified time of the file, 
as its documentation says.
 Before, it was the time of the event. The header is not set when the file no 
longer exists, for example for a `DELETE` event.
 The time of the event is in the `CamelMessageTimestamp` header.
+
+=== camel-whatsapp - the component is no longer marked producer only
+
+The whatsapp component receives events in webhook mode 
(`webhook:whatsapp:...`), so its metadata no longer marks it as
+producer only, and the catalog now describes the body that the webhook route 
gets. Tools that read the catalog, such as
+the YAML DSL validator and the Endpoint DSL, now accept a whatsapp endpoint as 
a consumer, and the Endpoint DSL builder
+of whatsapp gets the consumer options `bridgeErrorHandler`, `exceptionHandler` 
and `exchangePattern`. A whatsapp
+endpoint used directly in `from` still fails at startup: wrap it with the 
webhook component, as before.
diff --git 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
index fc1463da7851..87ac634b964a 100644
--- 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
+++ 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
@@ -5381,7 +5381,7 @@ public interface ComponentsBuilderFactory {
     }
     /**
      * WhatsApp (camel-whatsapp)
-     * Send messages to WhatsApp.
+     * Send messages to WhatsApp, and receive its events in webhook mode.
      * 
      * Category: cloud,api,chat
      * Since: 3.19
diff --git 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/WhatsappComponentBuilderFactory.java
 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/WhatsappComponentBuilderFactory.java
index 5061d458da9a..5f3f0fbeca94 100644
--- 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/WhatsappComponentBuilderFactory.java
+++ 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/WhatsappComponentBuilderFactory.java
@@ -24,7 +24,7 @@ import org.apache.camel.builder.component.ComponentBuilder;
 import org.apache.camel.component.whatsapp.WhatsAppComponent;
 
 /**
- * Send messages to WhatsApp.
+ * Send messages to WhatsApp, and receive its events in webhook mode.
  * 
  * Generated by camel build tools - do NOT edit this file!
  */
@@ -33,7 +33,7 @@ public interface WhatsappComponentBuilderFactory {
 
     /**
      * WhatsApp (camel-whatsapp)
-     * Send messages to WhatsApp.
+     * Send messages to WhatsApp, and receive its events in webhook mode.
      * 
      * Category: cloud,api,chat
      * Since: 3.19
@@ -50,6 +50,49 @@ public interface WhatsappComponentBuilderFactory {
      */
     interface WhatsappComponentBuilder extends 
ComponentBuilder<WhatsAppComponent> {
     
+        /**
+         * Phone Number ID taken from WhatsApp Meta for Developers Dashboard.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param phoneNumberId the value to set
+         * @return the dsl builder
+         */
+        default WhatsappComponentBuilder phoneNumberId(java.lang.String 
phoneNumberId) {
+            doSetProperty("phoneNumberId", phoneNumberId);
+            return this;
+        }
+    
+        
+        /**
+         * Allows for bridging the consumer to the Camel routing Error Handler,
+         * which mean any exceptions (if possible) occurred while the Camel
+         * consumer is trying to pickup incoming messages, or the likes, will
+         * now be processed as a message and handled by the routing Error
+         * Handler. Important: This is only possible if the 3rd party component
+         * allows Camel to be alerted if an exception was thrown. Some
+         * components handle this internally only, and therefore
+         * bridgeErrorHandler is not possible. In other situations we may
+         * improve the Camel component to hook into the 3rd party component and
+         * make this possible for future releases. 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.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: consumer
+         * 
+         * @param bridgeErrorHandler the value to set
+         * @return the dsl builder
+         */
+        default WhatsappComponentBuilder bridgeErrorHandler(boolean 
bridgeErrorHandler) {
+            doSetProperty("bridgeErrorHandler", bridgeErrorHandler);
+            return this;
+        }
+    
         
         /**
          * Whether the producer should be started lazy (on the first message).
@@ -75,21 +118,6 @@ public interface WhatsappComponentBuilderFactory {
             return this;
         }
     
-        /**
-         * Phone Number ID taken from WhatsApp Meta for Developers Dashboard.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: producer
-         * 
-         * @param phoneNumberId the value to set
-         * @return the dsl builder
-         */
-        default WhatsappComponentBuilder phoneNumberId(java.lang.String 
phoneNumberId) {
-            doSetProperty("phoneNumberId", phoneNumberId);
-            return this;
-        }
-    
         
         /**
          * WhatsApp Cloud API version.
@@ -208,8 +236,9 @@ public interface WhatsappComponentBuilderFactory {
                 String name,
                 Object value) {
             switch (name) {
-            case "lazyStartProducer": ((WhatsAppComponent) 
component).setLazyStartProducer((boolean) value); return true;
             case "phoneNumberId": ((WhatsAppComponent) 
component).setPhoneNumberId((java.lang.String) value); return true;
+            case "bridgeErrorHandler": ((WhatsAppComponent) 
component).setBridgeErrorHandler((boolean) value); return true;
+            case "lazyStartProducer": ((WhatsAppComponent) 
component).setLazyStartProducer((boolean) value); return true;
             case "apiVersion": ((WhatsAppComponent) 
component).setApiVersion((java.lang.String) value); return true;
             case "autowiredEnabled": ((WhatsAppComponent) 
component).setAutowiredEnabled((boolean) value); return true;
             case "baseUri": ((WhatsAppComponent) 
component).setBaseUri((java.lang.String) value); return true;
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointHeaderBuilders.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointHeaderBuilders.java
index 31f9bdb1dbed..17701d19c82b 100644
--- 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointHeaderBuilders.java
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointHeaderBuilders.java
@@ -4164,7 +4164,7 @@ public class EndpointHeaderBuilders {
     }
     /**
      * WhatsApp (camel-whatsapp)
-     * Send messages to WhatsApp.
+     * Send messages to WhatsApp, and receive its events in webhook mode.
      * 
      * Category: cloud,api,chat
      * Since: 3.19
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
index 386324e2c118..86cec6a45108 100644
--- 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
@@ -18039,7 +18039,7 @@ public class StaticEndpointBuilders {
     }
     /**
      * WhatsApp (camel-whatsapp)
-     * Send messages to WhatsApp.
+     * Send messages to WhatsApp, and receive its events in webhook mode.
      * 
      * Category: cloud,api,chat
      * Since: 3.19
@@ -18058,7 +18058,7 @@ public class StaticEndpointBuilders {
     }
     /**
      * WhatsApp (camel-whatsapp)
-     * Send messages to WhatsApp.
+     * Send messages to WhatsApp, and receive its events in webhook mode.
      * 
      * Category: cloud,api,chat
      * Since: 3.19
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/WhatsAppEndpointBuilderFactory.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/WhatsAppEndpointBuilderFactory.java
index 5964e997483f..4f211a19d822 100644
--- 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/WhatsAppEndpointBuilderFactory.java
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/WhatsAppEndpointBuilderFactory.java
@@ -27,7 +27,7 @@ import org.apache.camel.builder.EndpointProducerBuilder;
 import org.apache.camel.builder.endpoint.AbstractEndpointBuilder;
 
 /**
- * Send messages to WhatsApp.
+ * Send messages to WhatsApp, and receive its events in webhook mode.
  * 
  * Generated by camel build tools - do NOT edit this file!
  */
@@ -35,15 +35,14 @@ import 
org.apache.camel.builder.endpoint.AbstractEndpointBuilder;
 public interface WhatsAppEndpointBuilderFactory {
 
     /**
-     * Builder for endpoint for the WhatsApp component.
+     * Builder for endpoint consumers for the WhatsApp component.
      */
-    public interface WhatsAppEndpointBuilder
+    public interface WhatsAppEndpointConsumerBuilder
             extends
-                EndpointProducerBuilder {
-        default AdvancedWhatsAppEndpointBuilder advanced() {
-            return (AdvancedWhatsAppEndpointBuilder) this;
+                EndpointConsumerBuilder {
+        default AdvancedWhatsAppEndpointConsumerBuilder advanced() {
+            return (AdvancedWhatsAppEndpointConsumerBuilder) this;
         }
-
         /**
          * The authorization access token taken from whatsapp-business
          * dashboard.
@@ -56,7 +55,7 @@ public interface WhatsAppEndpointBuilderFactory {
          * @param authorizationToken the value to set
          * @return the dsl builder
          */
-        default WhatsAppEndpointBuilder authorizationToken(String 
authorizationToken) {
+        default WhatsAppEndpointConsumerBuilder authorizationToken(String 
authorizationToken) {
             doSetProperty("authorizationToken", authorizationToken);
             return this;
         }
@@ -74,7 +73,7 @@ public interface WhatsAppEndpointBuilderFactory {
          * @param webhookSecret the value to set
          * @return the dsl builder
          */
-        default WhatsAppEndpointBuilder webhookSecret(String webhookSecret) {
+        default WhatsAppEndpointConsumerBuilder webhookSecret(String 
webhookSecret) {
             doSetProperty("webhookSecret", webhookSecret);
             return this;
         }
@@ -88,20 +87,311 @@ public interface WhatsAppEndpointBuilderFactory {
          * @param webhookVerifyToken the value to set
          * @return the dsl builder
          */
-        default WhatsAppEndpointBuilder webhookVerifyToken(String 
webhookVerifyToken) {
+        default WhatsAppEndpointConsumerBuilder webhookVerifyToken(String 
webhookVerifyToken) {
             doSetProperty("webhookVerifyToken", webhookVerifyToken);
             return this;
         }
     }
 
     /**
-     * Advanced builder for endpoint for the WhatsApp component.
+     * Advanced builder for endpoint consumers for the WhatsApp component.
      */
-    public interface AdvancedWhatsAppEndpointBuilder
+    public interface AdvancedWhatsAppEndpointConsumerBuilder
+            extends
+                EndpointConsumerBuilder {
+        default WhatsAppEndpointConsumerBuilder basic() {
+            return (WhatsAppEndpointConsumerBuilder) this;
+        }
+        /**
+         * Allows for bridging the consumer to the Camel routing Error Handler,
+         * which mean any exceptions (if possible) occurred while the Camel
+         * consumer is trying to pickup incoming messages, or the likes, will
+         * now be processed as a message and handled by the routing Error
+         * Handler. Important: This is only possible if the 3rd party component
+         * allows Camel to be alerted if an exception was thrown. Some
+         * components handle this internally only, and therefore
+         * bridgeErrorHandler is not possible. In other situations we may
+         * improve the Camel component to hook into the 3rd party component and
+         * make this possible for future releases. 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.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: consumer (advanced)
+         * 
+         * @param bridgeErrorHandler the value to set
+         * @return the dsl builder
+         */
+        default AdvancedWhatsAppEndpointConsumerBuilder 
bridgeErrorHandler(boolean bridgeErrorHandler) {
+            doSetProperty("bridgeErrorHandler", bridgeErrorHandler);
+            return this;
+        }
+        /**
+         * Allows for bridging the consumer to the Camel routing Error Handler,
+         * which mean any exceptions (if possible) occurred while the Camel
+         * consumer is trying to pickup incoming messages, or the likes, will
+         * now be processed as a message and handled by the routing Error
+         * Handler. Important: This is only possible if the 3rd party component
+         * allows Camel to be alerted if an exception was thrown. Some
+         * components handle this internally only, and therefore
+         * bridgeErrorHandler is not possible. In other situations we may
+         * improve the Camel component to hook into the 3rd party component and
+         * make this possible for future releases. 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.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: consumer (advanced)
+         * 
+         * @param bridgeErrorHandler the value to set
+         * @return the dsl builder
+         */
+        default AdvancedWhatsAppEndpointConsumerBuilder 
bridgeErrorHandler(String bridgeErrorHandler) {
+            doSetProperty("bridgeErrorHandler", bridgeErrorHandler);
+            return this;
+        }
+        /**
+         * 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.
+         * 
+         * The option is a: <code>org.apache.camel.spi.ExceptionHandler</code>
+         * type.
+         * 
+         * Group: consumer (advanced)
+         * 
+         * @param exceptionHandler the value to set
+         * @return the dsl builder
+         */
+        default AdvancedWhatsAppEndpointConsumerBuilder 
exceptionHandler(org.apache.camel.spi.ExceptionHandler exceptionHandler) {
+            doSetProperty("exceptionHandler", exceptionHandler);
+            return this;
+        }
+        /**
+         * 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.
+         * 
+         * The option will be converted to a
+         * <code>org.apache.camel.spi.ExceptionHandler</code> type.
+         * 
+         * Group: consumer (advanced)
+         * 
+         * @param exceptionHandler the value to set
+         * @return the dsl builder
+         */
+        default AdvancedWhatsAppEndpointConsumerBuilder 
exceptionHandler(String exceptionHandler) {
+            doSetProperty("exceptionHandler", exceptionHandler);
+            return this;
+        }
+        /**
+         * Sets the exchange pattern when the consumer creates an exchange.
+         * 
+         * The option is a: <code>org.apache.camel.ExchangePattern</code> type.
+         * 
+         * Group: consumer (advanced)
+         * 
+         * @param exchangePattern the value to set
+         * @return the dsl builder
+         */
+        default AdvancedWhatsAppEndpointConsumerBuilder 
exchangePattern(org.apache.camel.ExchangePattern exchangePattern) {
+            doSetProperty("exchangePattern", exchangePattern);
+            return this;
+        }
+        /**
+         * Sets the exchange pattern when the consumer creates an exchange.
+         * 
+         * The option will be converted to a
+         * <code>org.apache.camel.ExchangePattern</code> type.
+         * 
+         * Group: consumer (advanced)
+         * 
+         * @param exchangePattern the value to set
+         * @return the dsl builder
+         */
+        default AdvancedWhatsAppEndpointConsumerBuilder exchangePattern(String 
exchangePattern) {
+            doSetProperty("exchangePattern", exchangePattern);
+            return this;
+        }
+        /**
+         * Facebook graph api version.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: advanced
+         * 
+         * @param apiVersion the value to set
+         * @return the dsl builder
+         */
+        default AdvancedWhatsAppEndpointConsumerBuilder apiVersion(String 
apiVersion) {
+            doSetProperty("apiVersion", apiVersion);
+            return this;
+        }
+        /**
+         * Can be used to set an alternative base URI, e.g. when you want to
+         * test the component against a mock WhatsApp API.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: advanced
+         * 
+         * @param baseUri the value to set
+         * @return the dsl builder
+         */
+        default AdvancedWhatsAppEndpointConsumerBuilder baseUri(String 
baseUri) {
+            doSetProperty("baseUri", baseUri);
+            return this;
+        }
+        /**
+         * HttpClient implementation.
+         * 
+         * The option is a: <code>java.net.http.HttpClient</code> type.
+         * 
+         * Group: advanced
+         * 
+         * @param httpClient the value to set
+         * @return the dsl builder
+         */
+        default AdvancedWhatsAppEndpointConsumerBuilder 
httpClient(java.net.http.HttpClient httpClient) {
+            doSetProperty("httpClient", httpClient);
+            return this;
+        }
+        /**
+         * HttpClient implementation.
+         * 
+         * The option will be converted to a
+         * <code>java.net.http.HttpClient</code> type.
+         * 
+         * Group: advanced
+         * 
+         * @param httpClient the value to set
+         * @return the dsl builder
+         */
+        default AdvancedWhatsAppEndpointConsumerBuilder httpClient(String 
httpClient) {
+            doSetProperty("httpClient", httpClient);
+            return this;
+        }
+        /**
+         * Webhook path.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Default: webhook
+         * Group: advanced
+         * 
+         * @param webhookPath the value to set
+         * @return the dsl builder
+         */
+        default AdvancedWhatsAppEndpointConsumerBuilder webhookPath(String 
webhookPath) {
+            doSetProperty("webhookPath", webhookPath);
+            return this;
+        }
+        /**
+         * WhatsApp service implementation.
+         * 
+         * The option is a:
+         * <code>org.apache.camel.component.whatsapp.WhatsAppService</code>
+         * type.
+         * 
+         * Group: advanced
+         * 
+         * @param whatsappService the value to set
+         * @return the dsl builder
+         */
+        default AdvancedWhatsAppEndpointConsumerBuilder 
whatsappService(org.apache.camel.component.whatsapp.WhatsAppService 
whatsappService) {
+            doSetProperty("whatsappService", whatsappService);
+            return this;
+        }
+        /**
+         * WhatsApp service implementation.
+         * 
+         * The option will be converted to a
+         * <code>org.apache.camel.component.whatsapp.WhatsAppService</code>
+         * type.
+         * 
+         * Group: advanced
+         * 
+         * @param whatsappService the value to set
+         * @return the dsl builder
+         */
+        default AdvancedWhatsAppEndpointConsumerBuilder whatsappService(String 
whatsappService) {
+            doSetProperty("whatsappService", whatsappService);
+            return this;
+        }
+    }
+
+    /**
+     * Builder for endpoint producers for the WhatsApp component.
+     */
+    public interface WhatsAppEndpointProducerBuilder
             extends
                 EndpointProducerBuilder {
-        default WhatsAppEndpointBuilder basic() {
-            return (WhatsAppEndpointBuilder) this;
+        default AdvancedWhatsAppEndpointProducerBuilder advanced() {
+            return (AdvancedWhatsAppEndpointProducerBuilder) this;
+        }
+
+        /**
+         * The authorization access token taken from whatsapp-business
+         * dashboard.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Required: true
+         * Group: security
+         * 
+         * @param authorizationToken the value to set
+         * @return the dsl builder
+         */
+        default WhatsAppEndpointProducerBuilder authorizationToken(String 
authorizationToken) {
+            doSetProperty("authorizationToken", authorizationToken);
+            return this;
+        }
+        /**
+         * The app secret used to verify the X-Hub-Signature-256 signature of
+         * inbound webhook event payloads (from the Meta/WhatsApp app
+         * dashboard). When set, event callbacks with a missing or invalid
+         * signature are rejected with HTTP 403; when not set, no signature
+         * verification is performed.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         * 
+         * @param webhookSecret the value to set
+         * @return the dsl builder
+         */
+        default WhatsAppEndpointProducerBuilder webhookSecret(String 
webhookSecret) {
+            doSetProperty("webhookSecret", webhookSecret);
+            return this;
+        }
+        /**
+         * Webhook verify token.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         * 
+         * @param webhookVerifyToken the value to set
+         * @return the dsl builder
+         */
+        default WhatsAppEndpointProducerBuilder webhookVerifyToken(String 
webhookVerifyToken) {
+            doSetProperty("webhookVerifyToken", webhookVerifyToken);
+            return this;
+        }
+    }
+
+    /**
+     * Advanced builder for endpoint producers for the WhatsApp component.
+     */
+    public interface AdvancedWhatsAppEndpointProducerBuilder extends 
EndpointProducerBuilder {
+        default WhatsAppEndpointProducerBuilder basic() {
+            return (WhatsAppEndpointProducerBuilder) this;
         }
 
         /**
@@ -123,7 +413,7 @@ public interface WhatsAppEndpointBuilderFactory {
          * @param lazyStartProducer the value to set
          * @return the dsl builder
          */
-        default AdvancedWhatsAppEndpointBuilder lazyStartProducer(boolean 
lazyStartProducer) {
+        default AdvancedWhatsAppEndpointProducerBuilder 
lazyStartProducer(boolean lazyStartProducer) {
             doSetProperty("lazyStartProducer", lazyStartProducer);
             return this;
         }
@@ -146,10 +436,189 @@ public interface WhatsAppEndpointBuilderFactory {
          * @param lazyStartProducer the value to set
          * @return the dsl builder
          */
-        default AdvancedWhatsAppEndpointBuilder lazyStartProducer(String 
lazyStartProducer) {
+        default AdvancedWhatsAppEndpointProducerBuilder 
lazyStartProducer(String lazyStartProducer) {
             doSetProperty("lazyStartProducer", lazyStartProducer);
             return this;
         }
+        /**
+         * Facebook graph api version.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: advanced
+         * 
+         * @param apiVersion the value to set
+         * @return the dsl builder
+         */
+        default AdvancedWhatsAppEndpointProducerBuilder apiVersion(String 
apiVersion) {
+            doSetProperty("apiVersion", apiVersion);
+            return this;
+        }
+        /**
+         * Can be used to set an alternative base URI, e.g. when you want to
+         * test the component against a mock WhatsApp API.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: advanced
+         * 
+         * @param baseUri the value to set
+         * @return the dsl builder
+         */
+        default AdvancedWhatsAppEndpointProducerBuilder baseUri(String 
baseUri) {
+            doSetProperty("baseUri", baseUri);
+            return this;
+        }
+        /**
+         * HttpClient implementation.
+         * 
+         * The option is a: <code>java.net.http.HttpClient</code> type.
+         * 
+         * Group: advanced
+         * 
+         * @param httpClient the value to set
+         * @return the dsl builder
+         */
+        default AdvancedWhatsAppEndpointProducerBuilder 
httpClient(java.net.http.HttpClient httpClient) {
+            doSetProperty("httpClient", httpClient);
+            return this;
+        }
+        /**
+         * HttpClient implementation.
+         * 
+         * The option will be converted to a
+         * <code>java.net.http.HttpClient</code> type.
+         * 
+         * Group: advanced
+         * 
+         * @param httpClient the value to set
+         * @return the dsl builder
+         */
+        default AdvancedWhatsAppEndpointProducerBuilder httpClient(String 
httpClient) {
+            doSetProperty("httpClient", httpClient);
+            return this;
+        }
+        /**
+         * Webhook path.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Default: webhook
+         * Group: advanced
+         * 
+         * @param webhookPath the value to set
+         * @return the dsl builder
+         */
+        default AdvancedWhatsAppEndpointProducerBuilder webhookPath(String 
webhookPath) {
+            doSetProperty("webhookPath", webhookPath);
+            return this;
+        }
+        /**
+         * WhatsApp service implementation.
+         * 
+         * The option is a:
+         * <code>org.apache.camel.component.whatsapp.WhatsAppService</code>
+         * type.
+         * 
+         * Group: advanced
+         * 
+         * @param whatsappService the value to set
+         * @return the dsl builder
+         */
+        default AdvancedWhatsAppEndpointProducerBuilder 
whatsappService(org.apache.camel.component.whatsapp.WhatsAppService 
whatsappService) {
+            doSetProperty("whatsappService", whatsappService);
+            return this;
+        }
+        /**
+         * WhatsApp service implementation.
+         * 
+         * The option will be converted to a
+         * <code>org.apache.camel.component.whatsapp.WhatsAppService</code>
+         * type.
+         * 
+         * Group: advanced
+         * 
+         * @param whatsappService the value to set
+         * @return the dsl builder
+         */
+        default AdvancedWhatsAppEndpointProducerBuilder whatsappService(String 
whatsappService) {
+            doSetProperty("whatsappService", whatsappService);
+            return this;
+        }
+    }
+
+    /**
+     * Builder for endpoint for the WhatsApp component.
+     */
+    public interface WhatsAppEndpointBuilder
+            extends
+                WhatsAppEndpointConsumerBuilder,
+                WhatsAppEndpointProducerBuilder {
+        default AdvancedWhatsAppEndpointBuilder advanced() {
+            return (AdvancedWhatsAppEndpointBuilder) this;
+        }
+
+        /**
+         * The authorization access token taken from whatsapp-business
+         * dashboard.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Required: true
+         * Group: security
+         * 
+         * @param authorizationToken the value to set
+         * @return the dsl builder
+         */
+        default WhatsAppEndpointBuilder authorizationToken(String 
authorizationToken) {
+            doSetProperty("authorizationToken", authorizationToken);
+            return this;
+        }
+        /**
+         * The app secret used to verify the X-Hub-Signature-256 signature of
+         * inbound webhook event payloads (from the Meta/WhatsApp app
+         * dashboard). When set, event callbacks with a missing or invalid
+         * signature are rejected with HTTP 403; when not set, no signature
+         * verification is performed.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         * 
+         * @param webhookSecret the value to set
+         * @return the dsl builder
+         */
+        default WhatsAppEndpointBuilder webhookSecret(String webhookSecret) {
+            doSetProperty("webhookSecret", webhookSecret);
+            return this;
+        }
+        /**
+         * Webhook verify token.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         * 
+         * @param webhookVerifyToken the value to set
+         * @return the dsl builder
+         */
+        default WhatsAppEndpointBuilder webhookVerifyToken(String 
webhookVerifyToken) {
+            doSetProperty("webhookVerifyToken", webhookVerifyToken);
+            return this;
+        }
+    }
+
+    /**
+     * Advanced builder for endpoint for the WhatsApp component.
+     */
+    public interface AdvancedWhatsAppEndpointBuilder
+            extends
+                AdvancedWhatsAppEndpointConsumerBuilder,
+                AdvancedWhatsAppEndpointProducerBuilder {
+        default WhatsAppEndpointBuilder basic() {
+            return (WhatsAppEndpointBuilder) this;
+        }
+
         /**
          * Facebook graph api version.
          * 
@@ -260,7 +729,7 @@ public interface WhatsAppEndpointBuilderFactory {
     public interface WhatsAppBuilders {
         /**
          * WhatsApp (camel-whatsapp)
-         * Send messages to WhatsApp.
+         * Send messages to WhatsApp, and receive its events in webhook mode.
          * 
          * Category: cloud,api,chat
          * Since: 3.19
@@ -273,7 +742,7 @@ public interface WhatsAppEndpointBuilderFactory {
         }
         /**
          * WhatsApp (camel-whatsapp)
-         * Send messages to WhatsApp.
+         * Send messages to WhatsApp, and receive its events in webhook mode.
          * 
          * Category: cloud,api,chat
          * Since: 3.19
@@ -292,7 +761,7 @@ public interface WhatsAppEndpointBuilderFactory {
         }
         /**
          * WhatsApp (camel-whatsapp)
-         * Send messages to WhatsApp.
+         * Send messages to WhatsApp, and receive its events in webhook mode.
          * 
          * Category: cloud,api,chat
          * Since: 3.19

Reply via email to