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

davsclaus pushed a commit to branch CAMEL-26245-api-signature-substitution
in repository https://gitbox.apache.org/repos/asf/camel.git

commit f6ec5e999dac15a09f7f07bc8d13185527f0b4ba
Author: Claus Ibsen <[email protected]>
AuthorDate: Tue Nov 3 15:28:54 2026 +0100

    CAMEL-26245: camel-api-component-maven-plugin - use the substituted 
argument names in the method signatures
    
    The method signatures in @ApiMethod (and so in the catalog) kept the 
argument
    names of the parsed source, while the endpoint expects the names after the
    <substitution> in the pom.xml. For example google-mail showed
    modify(String userId, String id, ModifyMessageRequest content), but the 
option
    is modifyMessageRequest, so inBody=content failed with "No matching method".
    
    The generator now writes each signature with the argument names of the 
method
    model after substitution. Regenerated braintree, google-calendar, 
google-drive,
    google-mail, google-sheets and zendesk (the components that use 
substitutions)
    and their catalog JSON.
    
    Co-Authored-By: Claude Opus 5.5 <[email protected]>
    Signed-off-by: Claus Ibsen <[email protected]>
---
 .../apache/camel/catalog/components/braintree.json |  8 +--
 .../camel/catalog/components/google-calendar.json  | 10 +--
 .../camel/catalog/components/google-drive.json     |  6 +-
 .../camel/catalog/components/google-mail.json      |  2 +-
 .../camel/catalog/components/google-sheets.json    |  4 +-
 .../apache/camel/catalog/components/zendesk.json   |  2 +-
 ...erchantAccountGatewayEndpointConfiguration.java |  2 +-
 .../OAuthGatewayEndpointConfiguration.java         |  2 +-
 .../PaymentMethodGatewayEndpointConfiguration.java |  2 +-
 .../TransactionGatewayEndpointConfiguration.java   |  2 +-
 .../camel/component/braintree/braintree.json       |  8 +--
 .../calendar/CalendarAclEndpointConfiguration.java |  2 +-
 .../CalendarCalendarListEndpointConfiguration.java |  2 +-
 .../CalendarChannelsEndpointConfiguration.java     |  2 +-
 .../CalendarEventsEndpointConfiguration.java       |  2 +-
 .../CalendarSettingsEndpointConfiguration.java     |  2 +-
 .../component/google/calendar/google-calendar.json | 10 +--
 .../drive/DriveChangesEndpointConfiguration.java   |  2 +-
 .../drive/DriveChannelsEndpointConfiguration.java  |  2 +-
 .../drive/DriveFilesEndpointConfiguration.java     |  2 +-
 .../camel/component/google/drive/google-drive.json |  6 +-
 .../GmailUsersMessagesEndpointConfiguration.java   |  2 +-
 .../camel/component/google/mail/google-mail.json   |  2 +-
 .../SheetsSpreadsheetsEndpointConfiguration.java   |  2 +-
 ...etsSpreadsheetsValuesEndpointConfiguration.java |  2 +-
 .../component/google/sheets/google-sheets.json     |  4 +-
 .../zendesk/ZendeskEndpointConfiguration.java      |  2 +-
 .../apache/camel/component/zendesk/zendesk.json    |  2 +-
 .../maven/AbstractApiMethodGeneratorMojo.java      | 59 +++++++++++++++++-
 .../ApiJavaSourceComponentGeneratorMojoTest.java   | 29 +++++++++
 .../maven/SignatureWithArgumentNamesTest.java      | 72 ++++++++++++++++++++++
 31 files changed, 207 insertions(+), 49 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/braintree.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/braintree.json
index 87b5f7f9b91c..8a92624218ca 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/braintree.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/braintree.json
@@ -57,15 +57,15 @@
     "customer": { "consumerOnly": false, "producerOnly": true, "description": 
"Provides methods to create, delete, find, and update Customer objects", 
"methods": { "all": { "description": "Finds all Customers and returns a 
ResourceCollection", "signatures": [ 
"com.braintreegateway.ResourceCollection<com.braintreegateway.Customer> all()" 
] }, "create": { "description": "Creates a Customer", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.Customer> 
create(com.braintreegat [...]
     "dispute": { "consumerOnly": false, "producerOnly": true, "description": 
"Provides methods to interact with Dispute objects", "methods": { "accept": { 
"description": "Accept a Dispute, given a dispute ID", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.Dispute> accept(String id)" ] 
}, "addFileEvidence": { "description": "Add File Evidence to a Dispute, given 
an ID and a FileEvidenceRequest File evidence request", "signatures": [ 
"com.braintreegateway.Result<com.bra [...]
     "documentUpload": { "consumerOnly": false, "producerOnly": true, 
"description": "API to upload evidence documents", "methods": { "create": { 
"description": "", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.DocumentUpload> 
create(com.braintreegateway.DocumentUploadRequest request)" ] } } },
-    "merchantAccount": { "consumerOnly": false, "producerOnly": true, 
"description": "Provides methods to create, find, and update MerchantAccount 
objects", "methods": { "all": { "description": "", "signatures": [ 
"com.braintreegateway.PaginatedCollection<com.braintreegateway.MerchantAccount> 
all()" ] }, "createForCurrency": { "description": "", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.MerchantAccount> 
createForCurrency(com.braintreegateway.MerchantAccountCreateF [...]
-    "oauth": { "consumerOnly": false, "producerOnly": true, "description": "", 
"methods": { "connectUrl": { "description": "", "signatures": [ "String 
connectUrl(com.braintreegateway.OAuthConnectUrlRequest request)" ] }, 
"createTokenFromCode": { "description": "", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.OAuthCredentials> 
createTokenFromCode(com.braintreegateway.OAuthCredentialsRequest request)" ] }, 
"createTokenFromRefreshToken": { "description": "", "signatures [...]
-    "paymentMethod": { "consumerOnly": false, "producerOnly": true, 
"description": "Provides methods to interact with payments", "methods": { 
"create": { "description": "", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.? extends PaymentMethod> 
create(com.braintreegateway.PaymentMethodRequest request)" ] }, "delete": { 
"description": "", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.? extends PaymentMethod> 
delete(String token)", "com.braintreegatew [...]
+    "merchantAccount": { "consumerOnly": false, "producerOnly": true, 
"description": "Provides methods to create, find, and update MerchantAccount 
objects", "methods": { "all": { "description": "", "signatures": [ 
"com.braintreegateway.PaginatedCollection<com.braintreegateway.MerchantAccount> 
all()" ] }, "createForCurrency": { "description": "", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.MerchantAccount> 
createForCurrency(com.braintreegateway.MerchantAccountCreateF [...]
+    "oauth": { "consumerOnly": false, "producerOnly": true, "description": "", 
"methods": { "connectUrl": { "description": "", "signatures": [ "String 
connectUrl(com.braintreegateway.OAuthConnectUrlRequest connectRequest)" ] }, 
"createTokenFromCode": { "description": "", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.OAuthCredentials> 
createTokenFromCode(com.braintreegateway.OAuthCredentialsRequest request)" ] }, 
"createTokenFromRefreshToken": { "description": "", "sig [...]
+    "paymentMethod": { "consumerOnly": false, "producerOnly": true, 
"description": "Provides methods to interact with payments", "methods": { 
"create": { "description": "", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.? extends PaymentMethod> 
create(com.braintreegateway.PaymentMethodRequest request)" ] }, "delete": { 
"description": "", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.? extends PaymentMethod> 
delete(String token)", "com.braintreegatew [...]
     "paymentMethodNonce": { "consumerOnly": false, "producerOnly": true, 
"description": "Provides methods to interact with nonce payments", "methods": { 
"create": { "description": "", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.PaymentMethodNonce> 
create(String paymentMethodToken)", 
"com.braintreegateway.Result<com.braintreegateway.PaymentMethodNonce> 
create(com.braintreegateway.PaymentMethodNonceRequest request)" ] }, "find": { 
"description": "", "signatures": [ "c [...]
     "plan": { "consumerOnly": false, "producerOnly": true, "description": "", 
"methods": { "all": { "description": "", "signatures": [ 
"java.util.List<com.braintreegateway.Plan> all()" ] }, "create": { 
"description": "", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.Plan> 
create(com.braintreegateway.PlanRequest request)" ] }, "find": { "description": 
"", "signatures": [ "com.braintreegateway.Plan find(String id)" ] }, "update": 
{ "description": "", "signatures": [ "co [...]
     "report": { "consumerOnly": false, "producerOnly": true, "description": 
"Provides methods to interact with reports", "methods": { 
"transactionLevelFees": { "description": "Retrieves a Transaction-Level Fee 
Report", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.TransactionLevelFeeReport> 
transactionLevelFees(com.braintreegateway.TransactionLevelFeeReportRequest 
request)" ] } } },
     "settlementBatchSummary": { "consumerOnly": false, "producerOnly": true, 
"description": "Provides methods to interact wit settlement summaries", 
"methods": { "generate": { "description": "", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.SettlementBatchSummary> 
generate(java.util.Calendar settlementDate)", 
"com.braintreegateway.Result<com.braintreegateway.SettlementBatchSummary> 
generate(java.util.Calendar settlementDate, String groupByCustomField)" ] } } },
     "subscription": { "consumerOnly": false, "producerOnly": true, 
"description": "Provides methods to interact with Subscriptions", "methods": { 
"cancel": { "description": "Cancels the Subscription with the given id", 
"signatures": [ "com.braintreegateway.Result<com.braintreegateway.Subscription> 
cancel(String id)" ] }, "create": { "description": "Creates a Subscription", 
"signatures": [ "com.braintreegateway.Result<com.braintreegateway.Subscription> 
create(com.braintreegateway.Subscrip [...]
-    "transaction": { "consumerOnly": false, "producerOnly": true, 
"description": "Provides methods to interact with Transactions", "methods": { 
"adjustAuthorization": { "description": "Submits the transaction with the given 
id to be adjusted for the given amount which must be less than or equal to the 
authorization amount", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.Transaction> 
adjustAuthorization(String id, com.braintreegateway.TransactionRequest 
request)", "com. [...]
+    "transaction": { "consumerOnly": false, "producerOnly": true, 
"description": "Provides methods to interact with Transactions", "methods": { 
"adjustAuthorization": { "description": "Submits the transaction with the given 
id to be adjusted for the given amount which must be less than or equal to the 
authorization amount", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.Transaction> 
adjustAuthorization(String id, com.braintreegateway.TransactionRequest 
request)", "com. [...]
     "usBankAccount": { "consumerOnly": false, "producerOnly": true, 
"description": "", "methods": { "find": { "description": "", "signatures": [ 
"com.braintreegateway.UsBankAccount find(String token)" ] }, "sale": { 
"description": "", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.Transaction> sale(String 
token, com.braintreegateway.TransactionRequest transactionRequest)" ] } } },
     "webhookNotification": { "consumerOnly": false, "producerOnly": true, 
"description": "To retrieve notifications via webhooks", "methods": { "parse": 
{ "description": "", "signatures": [ "com.braintreegateway.WebhookNotification 
parse(String signature, String payload)" ] }, 
"parseWithoutSignatureVerification": { "description": "", "signatures": [ 
"com.braintreegateway.WebhookNotification 
parseWithoutSignatureVerification(String payload)" ] }, "verify": { 
"description": "", "signatures [...]
   },
diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-calendar.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-calendar.json
index 65d7649f4ca1..1fcd8a654413 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-calendar.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-calendar.json
@@ -84,13 +84,13 @@
     "user": { "index": 33, "kind": "parameter", "displayName": "User", 
"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.google.calendar.GoogleCalendarConfiguration", 
"configurationField": "configuration", "description": "The email address of the 
user the application is trying to impersonate in the se [...]
   },
   "apis": {
-    "acl": { "consumerOnly": false, "producerOnly": false, "description": "The 
acl collection of methods", "methods": { "delete": { "description": "Deletes an 
access control rule", "signatures": [ 
"com.google.api.services.calendar.Calendar$Acl$Delete delete(String calendarId, 
String ruleId)" ] }, "get": { "description": "Returns an access control rule", 
"signatures": [ "com.google.api.services.calendar.Calendar$Acl$Get get(String 
calendarId, String ruleId)" ] }, "insert": { "description" [...]
+    "acl": { "consumerOnly": false, "producerOnly": false, "description": "The 
acl collection of methods", "methods": { "delete": { "description": "Deletes an 
access control rule", "signatures": [ 
"com.google.api.services.calendar.Calendar$Acl$Delete delete(String calendarId, 
String ruleId)" ] }, "get": { "description": "Returns an access control rule", 
"signatures": [ "com.google.api.services.calendar.Calendar$Acl$Get get(String 
calendarId, String ruleId)" ] }, "insert": { "description" [...]
     "calendars": { "consumerOnly": false, "producerOnly": false, 
"description": "The calendars collection of methods", "methods": { "clear": { 
"description": "Clears a primary calendar", "signatures": [ 
"com.google.api.services.calendar.Calendar$Calendars$Clear clear(String 
calendarId)" ] }, "delete": { "description": "Deletes a secondary calendar", 
"signatures": [ "com.google.api.services.calendar.Calendar$Calendars$Delete 
delete(String calendarId)" ] }, "get": { "description": "Returns [...]
-    "channels": { "consumerOnly": false, "producerOnly": false, "description": 
"The channels collection of methods", "methods": { "stop": { "description": 
"Stop watching resources through this channel", "signatures": [ 
"com.google.api.services.calendar.Calendar$Channels$Stop 
stop(com.google.api.services.calendar.model.Channel content)" ] } } },
-    "events": { "consumerOnly": false, "producerOnly": false, "description": 
"The events collection of methods", "methods": { "calendarImport": { 
"description": "Imports an event", "signatures": [ 
"com.google.api.services.calendar.Calendar$Events$CalendarImport 
calendarImport(String calendarId, com.google.api.services.calendar.model.Event 
content)" ] }, "delete": { "description": "Deletes an event", "signatures": [ 
"com.google.api.services.calendar.Calendar$Events$Delete delete(String ca [...]
+    "channels": { "consumerOnly": false, "producerOnly": false, "description": 
"The channels collection of methods", "methods": { "stop": { "description": 
"Stop watching resources through this channel", "signatures": [ 
"com.google.api.services.calendar.Calendar$Channels$Stop 
stop(com.google.api.services.calendar.model.Channel contentChannel)" ] } } },
+    "events": { "consumerOnly": false, "producerOnly": false, "description": 
"The events collection of methods", "methods": { "calendarImport": { 
"description": "Imports an event", "signatures": [ 
"com.google.api.services.calendar.Calendar$Events$CalendarImport 
calendarImport(String calendarId, com.google.api.services.calendar.model.Event 
content)" ] }, "delete": { "description": "Deletes an event", "signatures": [ 
"com.google.api.services.calendar.Calendar$Events$Delete delete(String ca [...]
     "freebusy": { "consumerOnly": false, "producerOnly": false, "description": 
"The freebusy collection of methods", "methods": { "query": { "description": 
"Returns free\/busy information for a set of calendars", "signatures": [ 
"com.google.api.services.calendar.Calendar$Freebusy$Query 
query(com.google.api.services.calendar.model.FreeBusyRequest content)" ] } } },
-    "list": { "consumerOnly": false, "producerOnly": false, "description": 
"The calendarList collection of methods", "methods": { "delete": { 
"description": "Removes a calendar from the user's calendar list", 
"signatures": [ "com.google.api.services.calendar.Calendar$CalendarList$Delete 
delete(String calendarId)" ] }, "get": { "description": "Returns a calendar 
from the user's calendar list", "signatures": [ 
"com.google.api.services.calendar.Calendar$CalendarList$Get get(String 
calendarI [...]
-    "settings": { "consumerOnly": false, "producerOnly": false, "description": 
"The settings collection of methods", "methods": { "get": { "description": 
"Returns a single user setting", "signatures": [ 
"com.google.api.services.calendar.Calendar$Settings$Get get(String setting)" ] 
}, "list": { "description": "Returns all user settings for the authenticated 
user", "signatures": [ "com.google.api.services.calendar.Calendar$Settings$List 
list()" ] }, "watch": { "description": "Watch for cha [...]
+    "list": { "consumerOnly": false, "producerOnly": false, "description": 
"The calendarList collection of methods", "methods": { "delete": { 
"description": "Removes a calendar from the user's calendar list", 
"signatures": [ "com.google.api.services.calendar.Calendar$CalendarList$Delete 
delete(String calendarId)" ] }, "get": { "description": "Returns a calendar 
from the user's calendar list", "signatures": [ 
"com.google.api.services.calendar.Calendar$CalendarList$Get get(String 
calendarI [...]
+    "settings": { "consumerOnly": false, "producerOnly": false, "description": 
"The settings collection of methods", "methods": { "get": { "description": 
"Returns a single user setting", "signatures": [ 
"com.google.api.services.calendar.Calendar$Settings$Get get(String setting)" ] 
}, "list": { "description": "Returns all user settings for the authenticated 
user", "signatures": [ "com.google.api.services.calendar.Calendar$Settings$List 
list()" ] }, "watch": { "description": "Watch for cha [...]
   },
   "apiProperties": {
     "acl": { "methods": { "delete": { "properties": { "calendarId": { "index": 
0, "kind": "parameter", "displayName": "Calendar Id", "group": "common", 
"label": "", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Calendar identifier. To retrieve calendar IDs call the 
calendarList.list method. If you want to access the primary calendar of the 
currently logged in user, use the primary keyword.",  [...]
diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-drive.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-drive.json
index 968c32aff9db..cefe90c6d0f9 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-drive.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-drive.json
@@ -84,11 +84,11 @@
     "serviceAccountKey": { "index": 31, "kind": "parameter", "displayName": 
"Service Account Key", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.drive.GoogleDriveConfiguration", 
"configurationField": "configuration", "description": "Service account key in 
json format to authenticate an application as a service  [...]
   },
   "apis": {
-    "drive-changes": { "consumerOnly": false, "producerOnly": false, 
"description": "The changes collection of methods", "methods": { 
"getStartPageToken": { "description": "Gets the starting pageToken for listing 
future changes", "signatures": [ 
"com.google.api.services.drive.Drive$Changes$GetStartPageToken 
getStartPageToken()" ] }, "list": { "description": "Lists the changes for a 
user or shared drive", "signatures": [ 
"com.google.api.services.drive.Drive$Changes$List list(String pageTo [...]
-    "drive-channels": { "consumerOnly": false, "producerOnly": false, 
"description": "The channels collection of methods", "methods": { "stop": { 
"description": "Stops watching resources through this channel", "signatures": [ 
"com.google.api.services.drive.Drive$Channels$Stop 
stop(com.google.api.services.drive.model.Channel content)" ] } } },
+    "drive-changes": { "consumerOnly": false, "producerOnly": false, 
"description": "The changes collection of methods", "methods": { 
"getStartPageToken": { "description": "Gets the starting pageToken for listing 
future changes", "signatures": [ 
"com.google.api.services.drive.Drive$Changes$GetStartPageToken 
getStartPageToken()" ] }, "list": { "description": "Lists the changes for a 
user or shared drive", "signatures": [ 
"com.google.api.services.drive.Drive$Changes$List list(String pageTo [...]
+    "drive-channels": { "consumerOnly": false, "producerOnly": false, 
"description": "The channels collection of methods", "methods": { "stop": { 
"description": "Stops watching resources through this channel", "signatures": [ 
"com.google.api.services.drive.Drive$Channels$Stop 
stop(com.google.api.services.drive.model.Channel contentChannel)" ] } } },
     "drive-comments": { "consumerOnly": false, "producerOnly": false, 
"description": "The comments collection of methods", "methods": { "create": { 
"description": "Creates a comment on a file", "signatures": [ 
"com.google.api.services.drive.Drive$Comments$Create create(String fileId, 
com.google.api.services.drive.model.Comment content)" ] }, "delete": { 
"description": "Deletes a comment", "signatures": [ 
"com.google.api.services.drive.Drive$Comments$Delete delete(String fileId, 
String co [...]
     "drive-drives": { "consumerOnly": false, "producerOnly": false, 
"description": "The drives collection of methods", "methods": { "create": { 
"description": "Creates a shared drive", "signatures": [ 
"com.google.api.services.drive.Drive$Drives$Create create(String requestId, 
com.google.api.services.drive.model.Drive content)" ] }, "delete": { 
"description": "Permanently deletes a shared drive for which the user is an 
organizer", "signatures": [ "com.google.api.services.drive.Drive$Drive [...]
-    "drive-files": { "consumerOnly": false, "producerOnly": false, 
"description": "The files collection of methods", "methods": { "copy": { 
"description": "Creates a copy of a file and applies any requested updates with 
patch semantics", "signatures": [ 
"com.google.api.services.drive.Drive$Files$Copy copy(String fileId, 
com.google.api.services.drive.model.File content)" ] }, "create": { 
"description": "Creates a file", "signatures": [ 
"com.google.api.services.drive.Drive$Files$Create cre [...]
+    "drive-files": { "consumerOnly": false, "producerOnly": false, 
"description": "The files collection of methods", "methods": { "copy": { 
"description": "Creates a copy of a file and applies any requested updates with 
patch semantics", "signatures": [ 
"com.google.api.services.drive.Drive$Files$Copy copy(String fileId, 
com.google.api.services.drive.model.File file)" ] }, "create": { "description": 
"Creates a file", "signatures": [ 
"com.google.api.services.drive.Drive$Files$Create create [...]
     "drive-permissions": { "consumerOnly": false, "producerOnly": false, 
"description": "The permissions collection of methods", "methods": { "create": 
{ "description": "Creates a permission for a file or shared drive", 
"signatures": [ "com.google.api.services.drive.Drive$Permissions$Create 
create(String fileId, com.google.api.services.drive.model.Permission content)" 
] }, "delete": { "description": "Deletes a permission", "signatures": [ 
"com.google.api.services.drive.Drive$Permissions$ [...]
     "drive-replies": { "consumerOnly": false, "producerOnly": false, 
"description": "The replies collection of methods", "methods": { "create": { 
"description": "Creates a reply to a comment", "signatures": [ 
"com.google.api.services.drive.Drive$Replies$Create create(String fileId, 
String commentId, com.google.api.services.drive.model.Reply content)" ] }, 
"delete": { "description": "Deletes a reply", "signatures": [ 
"com.google.api.services.drive.Drive$Replies$Delete delete(String fileId [...]
     "drive-revisions": { "consumerOnly": false, "producerOnly": false, 
"description": "The revisions collection of methods", "methods": { "delete": { 
"description": "Permanently deletes a file version", "signatures": [ 
"com.google.api.services.drive.Drive$Revisions$Delete delete(String fileId, 
String revisionId)" ] }, "get": { "description": "Gets a revision's metadata or 
content by ID", "signatures": [ 
"com.google.api.services.drive.Drive$Revisions$Get get(String fileId, String 
revision [...]
diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-mail.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-mail.json
index dfa81dabdf9d..96395b1f0451 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-mail.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-mail.json
@@ -82,7 +82,7 @@
     "drafts": { "consumerOnly": false, "producerOnly": false, "description": 
"The drafts collection of methods", "methods": { "create": { "description": 
"Creates a new draft with the DRAFT label", "signatures": [ 
"com.google.api.services.gmail.Gmail$Users$Drafts$Create create(String userId, 
com.google.api.services.gmail.model.Draft content)", 
"com.google.api.services.gmail.Gmail$Users$Drafts$Create create(String userId, 
com.google.api.services.gmail.model.Draft content, com.google.api.cl [...]
     "history": { "consumerOnly": false, "producerOnly": false, "description": 
"The history collection of methods", "methods": { "list": { "description": 
"Lists the history of all changes to the given mailbox", "signatures": [ 
"com.google.api.services.gmail.Gmail$Users$History$List list(String userId)" ] 
} } },
     "labels": { "consumerOnly": false, "producerOnly": false, "description": 
"The labels collection of methods", "methods": { "create": { "description": 
"Creates a new label", "signatures": [ 
"com.google.api.services.gmail.Gmail$Users$Labels$Create create(String userId, 
com.google.api.services.gmail.model.Label content)" ] }, "delete": { 
"description": "Immediately and permanently deletes the specified label and 
removes it from any messages and threads that it is applied to", "signatures 
[...]
-    "messages": { "consumerOnly": false, "producerOnly": false, "description": 
"The messages collection of methods", "methods": { "batchDelete": { 
"description": "Deletes many messages by message ID", "signatures": [ 
"com.google.api.services.gmail.Gmail$Users$Messages$BatchDelete 
batchDelete(String userId, 
com.google.api.services.gmail.model.BatchDeleteMessagesRequest content)" ] }, 
"batchModify": { "description": "Modifies the labels on the specified 
messages", "signatures": [ "com.goog [...]
+    "messages": { "consumerOnly": false, "producerOnly": false, "description": 
"The messages collection of methods", "methods": { "batchDelete": { 
"description": "Deletes many messages by message ID", "signatures": [ 
"com.google.api.services.gmail.Gmail$Users$Messages$BatchDelete 
batchDelete(String userId, 
com.google.api.services.gmail.model.BatchDeleteMessagesRequest 
batchDeleteMessagesRequest)" ] }, "batchModify": { "description": "Modifies the 
labels on the specified messages", "signa [...]
     "threads": { "consumerOnly": false, "producerOnly": false, "description": 
"The threads collection of methods", "methods": { "delete": { "description": 
"Immediately and permanently deletes the specified thread", "signatures": [ 
"com.google.api.services.gmail.Gmail$Users$Threads$Delete delete(String userId, 
String id)" ] }, "get": { "description": "Gets the specified thread", 
"signatures": [ "com.google.api.services.gmail.Gmail$Users$Threads$Get 
get(String userId, String id)" ] }, "lis [...]
     "users": { "consumerOnly": false, "producerOnly": false, "description": 
"The users collection of methods", "methods": { "getProfile": { "description": 
"Gets the current user's Gmail profile", "signatures": [ 
"com.google.api.services.gmail.Gmail$Users$GetProfile getProfile(String 
userId)" ] }, "stop": { "description": "Stop receiving push notifications for 
the given user mailbox", "signatures": [ 
"com.google.api.services.gmail.Gmail$Users$Stop stop(String userId)" ] }, 
"watch": { "des [...]
   },
diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-sheets.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-sheets.json
index d228cb2fa04d..3f4188b2479f 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-sheets.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-sheets.json
@@ -81,8 +81,8 @@
     "serviceAccountKey": { "index": 31, "kind": "parameter", "displayName": 
"Service Account Key", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.sheets.GoogleSheetsConfiguration", 
"configurationField": "configuration", "description": "Sets .json file with 
credentials for Service account" }
   },
   "apis": {
-    "data": { "consumerOnly": false, "producerOnly": false, "description": 
"The values collection of methods", "methods": { "append": { "description": 
"Appends values to a spreadsheet", "signatures": [ 
"com.google.api.services.sheets.v4.Sheets$Spreadsheets$Values$Append 
append(String spreadsheetId, String range, 
com.google.api.services.sheets.v4.model.ValueRange content)" ] }, "batchClear": 
{ "description": "Clears one or more ranges of values from a spreadsheet", 
"signatures": [ "com.go [...]
-    "spreadsheets": { "consumerOnly": false, "producerOnly": false, 
"description": "The spreadsheets collection of methods", "methods": { 
"batchUpdate": { "description": "Applies one or more updates to the 
spreadsheet", "signatures": [ 
"com.google.api.services.sheets.v4.Sheets$Spreadsheets$BatchUpdate 
batchUpdate(String spreadsheetId, 
com.google.api.services.sheets.v4.model.BatchUpdateSpreadsheetRequest content)" 
] }, "create": { "description": "Creates a spreadsheet, returning the newly 
[...]
+    "data": { "consumerOnly": false, "producerOnly": false, "description": 
"The values collection of methods", "methods": { "append": { "description": 
"Appends values to a spreadsheet", "signatures": [ 
"com.google.api.services.sheets.v4.Sheets$Spreadsheets$Values$Append 
append(String spreadsheetId, String range, 
com.google.api.services.sheets.v4.model.ValueRange values)" ] }, "batchClear": 
{ "description": "Clears one or more ranges of values from a spreadsheet", 
"signatures": [ "com.goo [...]
+    "spreadsheets": { "consumerOnly": false, "producerOnly": false, 
"description": "The spreadsheets collection of methods", "methods": { 
"batchUpdate": { "description": "Applies one or more updates to the 
spreadsheet", "signatures": [ 
"com.google.api.services.sheets.v4.Sheets$Spreadsheets$BatchUpdate 
batchUpdate(String spreadsheetId, 
com.google.api.services.sheets.v4.model.BatchUpdateSpreadsheetRequest 
batchUpdateSpreadsheetRequest)" ] }, "create": { "description": "Creates a 
spreadshee [...]
   },
   "apiProperties": {
     "data": { "methods": { "append": { "properties": { 
"includeValuesInResponse": { "index": 0, "kind": "parameter", "displayName": 
"Include Values In Response", "group": "common", "label": "", "required": 
false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Determines if the update response should include the values of the cells that 
were appended", "optional": true }, "insertDataOptio [...]
diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/zendesk.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/zendesk.json
index e9856b162293..648bc35c9a21 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/zendesk.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/zendesk.json
@@ -71,7 +71,7 @@
     "username": { "index": 26, "kind": "parameter", "displayName": "Username", 
"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.zendesk.ZendeskConfiguration", 
"configurationField": "configuration", "description": "The user name." }
   },
   "apis": {
-    "DEFAULT": { "consumerOnly": false, "producerOnly": false, "description": 
"", "methods": { "addTagToOrganisations": { "description": "", "signatures": [ 
"java.util.List<String> addTagToOrganisations(long id, String[] tags)" ] }, 
"addTagToTicket": { "description": "", "signatures": [ "java.util.List<String> 
addTagToTicket(long id, String[] tags)" ] }, "addTagToTopics": { "description": 
"", "signatures": [ "java.util.List<String> addTagToTopics(long id, String[] 
tags)" ] }, "associateA [...]
+    "DEFAULT": { "consumerOnly": false, "producerOnly": false, "description": 
"", "methods": { "addTagToOrganisations": { "description": "", "signatures": [ 
"java.util.List<String> addTagToOrganisations(long id, String[] tags)" ] }, 
"addTagToTicket": { "description": "", "signatures": [ "java.util.List<String> 
addTagToTicket(long id, String[] tags)" ] }, "addTagToTopics": { "description": 
"", "signatures": [ "java.util.List<String> addTagToTopics(long id, String[] 
tags)" ] }, "associateA [...]
   },
   "apiProperties": {
     "DEFAULT": { "methods": { "addTagToOrganisations": { "properties": { "id": 
{ "index": 0, "kind": "parameter", "displayName": "Id", "group": "common", 
"label": "", "required": false, "type": "integer", "javaType": 
"java.lang.Long", "deprecated": false, "autowired": false, "secret": false, 
"description": "", "optional": false }, "tags": { "index": 1, "kind": 
"parameter", "displayName": "Tags", "group": "common", "label": "", "required": 
false, "type": "array", "javaType": "java.lang.St [...]
diff --git 
a/components/camel-braintree/src/generated/java/org/apache/camel/component/braintree/MerchantAccountGatewayEndpointConfiguration.java
 
b/components/camel-braintree/src/generated/java/org/apache/camel/component/braintree/MerchantAccountGatewayEndpointConfiguration.java
index f59d36f056d5..59c5609da165 100644
--- 
a/components/camel-braintree/src/generated/java/org/apache/camel/component/braintree/MerchantAccountGatewayEndpointConfiguration.java
+++ 
b/components/camel-braintree/src/generated/java/org/apache/camel/component/braintree/MerchantAccountGatewayEndpointConfiguration.java
@@ -17,7 +17,7 @@ import org.apache.camel.spi.UriParams;
  */
 @ApiParams(apiName = "merchantAccount", 
            description = "Provides methods to create, find, and update 
MerchantAccount objects",
-           apiMethods = {@ApiMethod(methodName = "all", 
signatures={"com.braintreegateway.PaginatedCollection<com.braintreegateway.MerchantAccount>
 all()"}), @ApiMethod(methodName = "createForCurrency", 
signatures={"com.braintreegateway.Result<com.braintreegateway.MerchantAccount> 
createForCurrency(com.braintreegateway.MerchantAccountCreateForCurrencyRequest 
request)"}), @ApiMethod(methodName = "fetchMerchantAccounts", 
signatures={"com.braintreegateway.PaginatedResult<com.braintreegatewa [...]
+           apiMethods = {@ApiMethod(methodName = "all", 
signatures={"com.braintreegateway.PaginatedCollection<com.braintreegateway.MerchantAccount>
 all()"}), @ApiMethod(methodName = "createForCurrency", 
signatures={"com.braintreegateway.Result<com.braintreegateway.MerchantAccount> 
createForCurrency(com.braintreegateway.MerchantAccountCreateForCurrencyRequest 
currencyRequest)"}), @ApiMethod(methodName = "fetchMerchantAccounts", 
signatures={"com.braintreegateway.PaginatedResult<com.braintr [...]
 @UriParams
 @Configurer(extended = true)
 @Generated("org.apache.camel.maven.ApiComponentGeneratorMojo")
diff --git 
a/components/camel-braintree/src/generated/java/org/apache/camel/component/braintree/OAuthGatewayEndpointConfiguration.java
 
b/components/camel-braintree/src/generated/java/org/apache/camel/component/braintree/OAuthGatewayEndpointConfiguration.java
index 38768b80c027..548742220dfb 100644
--- 
a/components/camel-braintree/src/generated/java/org/apache/camel/component/braintree/OAuthGatewayEndpointConfiguration.java
+++ 
b/components/camel-braintree/src/generated/java/org/apache/camel/component/braintree/OAuthGatewayEndpointConfiguration.java
@@ -17,7 +17,7 @@ import org.apache.camel.spi.UriParams;
  */
 @ApiParams(apiName = "oauth", 
            description = "",
-           apiMethods = {@ApiMethod(methodName = "connectUrl", 
signatures={"String connectUrl(com.braintreegateway.OAuthConnectUrlRequest 
request)"}), @ApiMethod(methodName = "createTokenFromCode", 
signatures={"com.braintreegateway.Result<com.braintreegateway.OAuthCredentials> 
createTokenFromCode(com.braintreegateway.OAuthCredentialsRequest request)"}), 
@ApiMethod(methodName = "createTokenFromRefreshToken", 
signatures={"com.braintreegateway.Result<com.braintreegateway.OAuthCredentials> 
c [...]
+           apiMethods = {@ApiMethod(methodName = "connectUrl", 
signatures={"String connectUrl(com.braintreegateway.OAuthConnectUrlRequest 
connectRequest)"}), @ApiMethod(methodName = "createTokenFromCode", 
signatures={"com.braintreegateway.Result<com.braintreegateway.OAuthCredentials> 
createTokenFromCode(com.braintreegateway.OAuthCredentialsRequest request)"}), 
@ApiMethod(methodName = "createTokenFromRefreshToken", 
signatures={"com.braintreegateway.Result<com.braintreegateway.OAuthCredent [...]
 @UriParams
 @Configurer(extended = true)
 @Generated("org.apache.camel.maven.ApiComponentGeneratorMojo")
diff --git 
a/components/camel-braintree/src/generated/java/org/apache/camel/component/braintree/PaymentMethodGatewayEndpointConfiguration.java
 
b/components/camel-braintree/src/generated/java/org/apache/camel/component/braintree/PaymentMethodGatewayEndpointConfiguration.java
index f12a50f64d3d..2d2cbed6545e 100644
--- 
a/components/camel-braintree/src/generated/java/org/apache/camel/component/braintree/PaymentMethodGatewayEndpointConfiguration.java
+++ 
b/components/camel-braintree/src/generated/java/org/apache/camel/component/braintree/PaymentMethodGatewayEndpointConfiguration.java
@@ -17,7 +17,7 @@ import org.apache.camel.spi.UriParams;
  */
 @ApiParams(apiName = "paymentMethod", 
            description = "Provides methods to interact with payments",
-           apiMethods = {@ApiMethod(methodName = "create", 
signatures={"com.braintreegateway.Result<com.braintreegateway.? extends 
PaymentMethod> create(com.braintreegateway.PaymentMethodRequest request)"}), 
@ApiMethod(methodName = "delete", 
signatures={"com.braintreegateway.Result<com.braintreegateway.? extends 
PaymentMethod> delete(String token)", 
"com.braintreegateway.Result<com.braintreegateway.? extends PaymentMethod> 
delete(String token, com.braintreegateway.PaymentMethodDeleteRequ [...]
+           apiMethods = {@ApiMethod(methodName = "create", 
signatures={"com.braintreegateway.Result<com.braintreegateway.? extends 
PaymentMethod> create(com.braintreegateway.PaymentMethodRequest request)"}), 
@ApiMethod(methodName = "delete", 
signatures={"com.braintreegateway.Result<com.braintreegateway.? extends 
PaymentMethod> delete(String token)", 
"com.braintreegateway.Result<com.braintreegateway.? extends PaymentMethod> 
delete(String token, com.braintreegateway.PaymentMethodDeleteRequ [...]
 @UriParams
 @Configurer(extended = true)
 @Generated("org.apache.camel.maven.ApiComponentGeneratorMojo")
diff --git 
a/components/camel-braintree/src/generated/java/org/apache/camel/component/braintree/TransactionGatewayEndpointConfiguration.java
 
b/components/camel-braintree/src/generated/java/org/apache/camel/component/braintree/TransactionGatewayEndpointConfiguration.java
index 8dfad3e022f0..f813c123589e 100644
--- 
a/components/camel-braintree/src/generated/java/org/apache/camel/component/braintree/TransactionGatewayEndpointConfiguration.java
+++ 
b/components/camel-braintree/src/generated/java/org/apache/camel/component/braintree/TransactionGatewayEndpointConfiguration.java
@@ -17,7 +17,7 @@ import org.apache.camel.spi.UriParams;
  */
 @ApiParams(apiName = "transaction", 
            description = "Provides methods to interact with Transactions",
-           apiMethods = {@ApiMethod(methodName = "adjustAuthorization", 
description="Submits the transaction with the given id to be adjusted for the 
given amount which must be less than or equal to the authorization amount", 
signatures={"com.braintreegateway.Result<com.braintreegateway.Transaction> 
adjustAuthorization(String id, java.math.BigDecimal amount)", 
"com.braintreegateway.Result<com.braintreegateway.Transaction> 
adjustAuthorization(String id, com.braintreegateway.TransactionReq [...]
+           apiMethods = {@ApiMethod(methodName = "adjustAuthorization", 
description="Submits the transaction with the given id to be adjusted for the 
given amount which must be less than or equal to the authorization amount", 
signatures={"com.braintreegateway.Result<com.braintreegateway.Transaction> 
adjustAuthorization(String id, java.math.BigDecimal amount)", 
"com.braintreegateway.Result<com.braintreegateway.Transaction> 
adjustAuthorization(String id, com.braintreegateway.TransactionReq [...]
 @UriParams
 @Configurer(extended = true)
 @Generated("org.apache.camel.maven.ApiComponentGeneratorMojo")
diff --git 
a/components/camel-braintree/src/generated/resources/META-INF/org/apache/camel/component/braintree/braintree.json
 
b/components/camel-braintree/src/generated/resources/META-INF/org/apache/camel/component/braintree/braintree.json
index 87b5f7f9b91c..8a92624218ca 100644
--- 
a/components/camel-braintree/src/generated/resources/META-INF/org/apache/camel/component/braintree/braintree.json
+++ 
b/components/camel-braintree/src/generated/resources/META-INF/org/apache/camel/component/braintree/braintree.json
@@ -57,15 +57,15 @@
     "customer": { "consumerOnly": false, "producerOnly": true, "description": 
"Provides methods to create, delete, find, and update Customer objects", 
"methods": { "all": { "description": "Finds all Customers and returns a 
ResourceCollection", "signatures": [ 
"com.braintreegateway.ResourceCollection<com.braintreegateway.Customer> all()" 
] }, "create": { "description": "Creates a Customer", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.Customer> 
create(com.braintreegat [...]
     "dispute": { "consumerOnly": false, "producerOnly": true, "description": 
"Provides methods to interact with Dispute objects", "methods": { "accept": { 
"description": "Accept a Dispute, given a dispute ID", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.Dispute> accept(String id)" ] 
}, "addFileEvidence": { "description": "Add File Evidence to a Dispute, given 
an ID and a FileEvidenceRequest File evidence request", "signatures": [ 
"com.braintreegateway.Result<com.bra [...]
     "documentUpload": { "consumerOnly": false, "producerOnly": true, 
"description": "API to upload evidence documents", "methods": { "create": { 
"description": "", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.DocumentUpload> 
create(com.braintreegateway.DocumentUploadRequest request)" ] } } },
-    "merchantAccount": { "consumerOnly": false, "producerOnly": true, 
"description": "Provides methods to create, find, and update MerchantAccount 
objects", "methods": { "all": { "description": "", "signatures": [ 
"com.braintreegateway.PaginatedCollection<com.braintreegateway.MerchantAccount> 
all()" ] }, "createForCurrency": { "description": "", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.MerchantAccount> 
createForCurrency(com.braintreegateway.MerchantAccountCreateF [...]
-    "oauth": { "consumerOnly": false, "producerOnly": true, "description": "", 
"methods": { "connectUrl": { "description": "", "signatures": [ "String 
connectUrl(com.braintreegateway.OAuthConnectUrlRequest request)" ] }, 
"createTokenFromCode": { "description": "", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.OAuthCredentials> 
createTokenFromCode(com.braintreegateway.OAuthCredentialsRequest request)" ] }, 
"createTokenFromRefreshToken": { "description": "", "signatures [...]
-    "paymentMethod": { "consumerOnly": false, "producerOnly": true, 
"description": "Provides methods to interact with payments", "methods": { 
"create": { "description": "", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.? extends PaymentMethod> 
create(com.braintreegateway.PaymentMethodRequest request)" ] }, "delete": { 
"description": "", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.? extends PaymentMethod> 
delete(String token)", "com.braintreegatew [...]
+    "merchantAccount": { "consumerOnly": false, "producerOnly": true, 
"description": "Provides methods to create, find, and update MerchantAccount 
objects", "methods": { "all": { "description": "", "signatures": [ 
"com.braintreegateway.PaginatedCollection<com.braintreegateway.MerchantAccount> 
all()" ] }, "createForCurrency": { "description": "", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.MerchantAccount> 
createForCurrency(com.braintreegateway.MerchantAccountCreateF [...]
+    "oauth": { "consumerOnly": false, "producerOnly": true, "description": "", 
"methods": { "connectUrl": { "description": "", "signatures": [ "String 
connectUrl(com.braintreegateway.OAuthConnectUrlRequest connectRequest)" ] }, 
"createTokenFromCode": { "description": "", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.OAuthCredentials> 
createTokenFromCode(com.braintreegateway.OAuthCredentialsRequest request)" ] }, 
"createTokenFromRefreshToken": { "description": "", "sig [...]
+    "paymentMethod": { "consumerOnly": false, "producerOnly": true, 
"description": "Provides methods to interact with payments", "methods": { 
"create": { "description": "", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.? extends PaymentMethod> 
create(com.braintreegateway.PaymentMethodRequest request)" ] }, "delete": { 
"description": "", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.? extends PaymentMethod> 
delete(String token)", "com.braintreegatew [...]
     "paymentMethodNonce": { "consumerOnly": false, "producerOnly": true, 
"description": "Provides methods to interact with nonce payments", "methods": { 
"create": { "description": "", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.PaymentMethodNonce> 
create(String paymentMethodToken)", 
"com.braintreegateway.Result<com.braintreegateway.PaymentMethodNonce> 
create(com.braintreegateway.PaymentMethodNonceRequest request)" ] }, "find": { 
"description": "", "signatures": [ "c [...]
     "plan": { "consumerOnly": false, "producerOnly": true, "description": "", 
"methods": { "all": { "description": "", "signatures": [ 
"java.util.List<com.braintreegateway.Plan> all()" ] }, "create": { 
"description": "", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.Plan> 
create(com.braintreegateway.PlanRequest request)" ] }, "find": { "description": 
"", "signatures": [ "com.braintreegateway.Plan find(String id)" ] }, "update": 
{ "description": "", "signatures": [ "co [...]
     "report": { "consumerOnly": false, "producerOnly": true, "description": 
"Provides methods to interact with reports", "methods": { 
"transactionLevelFees": { "description": "Retrieves a Transaction-Level Fee 
Report", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.TransactionLevelFeeReport> 
transactionLevelFees(com.braintreegateway.TransactionLevelFeeReportRequest 
request)" ] } } },
     "settlementBatchSummary": { "consumerOnly": false, "producerOnly": true, 
"description": "Provides methods to interact wit settlement summaries", 
"methods": { "generate": { "description": "", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.SettlementBatchSummary> 
generate(java.util.Calendar settlementDate)", 
"com.braintreegateway.Result<com.braintreegateway.SettlementBatchSummary> 
generate(java.util.Calendar settlementDate, String groupByCustomField)" ] } } },
     "subscription": { "consumerOnly": false, "producerOnly": true, 
"description": "Provides methods to interact with Subscriptions", "methods": { 
"cancel": { "description": "Cancels the Subscription with the given id", 
"signatures": [ "com.braintreegateway.Result<com.braintreegateway.Subscription> 
cancel(String id)" ] }, "create": { "description": "Creates a Subscription", 
"signatures": [ "com.braintreegateway.Result<com.braintreegateway.Subscription> 
create(com.braintreegateway.Subscrip [...]
-    "transaction": { "consumerOnly": false, "producerOnly": true, 
"description": "Provides methods to interact with Transactions", "methods": { 
"adjustAuthorization": { "description": "Submits the transaction with the given 
id to be adjusted for the given amount which must be less than or equal to the 
authorization amount", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.Transaction> 
adjustAuthorization(String id, com.braintreegateway.TransactionRequest 
request)", "com. [...]
+    "transaction": { "consumerOnly": false, "producerOnly": true, 
"description": "Provides methods to interact with Transactions", "methods": { 
"adjustAuthorization": { "description": "Submits the transaction with the given 
id to be adjusted for the given amount which must be less than or equal to the 
authorization amount", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.Transaction> 
adjustAuthorization(String id, com.braintreegateway.TransactionRequest 
request)", "com. [...]
     "usBankAccount": { "consumerOnly": false, "producerOnly": true, 
"description": "", "methods": { "find": { "description": "", "signatures": [ 
"com.braintreegateway.UsBankAccount find(String token)" ] }, "sale": { 
"description": "", "signatures": [ 
"com.braintreegateway.Result<com.braintreegateway.Transaction> sale(String 
token, com.braintreegateway.TransactionRequest transactionRequest)" ] } } },
     "webhookNotification": { "consumerOnly": false, "producerOnly": true, 
"description": "To retrieve notifications via webhooks", "methods": { "parse": 
{ "description": "", "signatures": [ "com.braintreegateway.WebhookNotification 
parse(String signature, String payload)" ] }, 
"parseWithoutSignatureVerification": { "description": "", "signatures": [ 
"com.braintreegateway.WebhookNotification 
parseWithoutSignatureVerification(String payload)" ] }, "verify": { 
"description": "", "signatures [...]
   },
diff --git 
a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarAclEndpointConfiguration.java
 
b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarAclEndpointConfiguration.java
index 7cbed5e6086f..accccc64190f 100644
--- 
a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarAclEndpointConfiguration.java
+++ 
b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarAclEndpointConfiguration.java
@@ -17,7 +17,7 @@ import org.apache.camel.spi.UriParams;
  */
 @ApiParams(apiName = "acl", 
            description = "The acl collection of methods",
-           apiMethods = {@ApiMethod(methodName = "delete", 
description="Deletes an access control rule", 
signatures={"com.google.api.services.calendar.Calendar$Acl$Delete delete(String 
calendarId, String ruleId)"}), @ApiMethod(methodName = "get", 
description="Returns an access control rule", 
signatures={"com.google.api.services.calendar.Calendar$Acl$Get get(String 
calendarId, String ruleId)"}), @ApiMethod(methodName = "insert", 
description="Creates an access control rule", signatures={"c [...]
+           apiMethods = {@ApiMethod(methodName = "delete", 
description="Deletes an access control rule", 
signatures={"com.google.api.services.calendar.Calendar$Acl$Delete delete(String 
calendarId, String ruleId)"}), @ApiMethod(methodName = "get", 
description="Returns an access control rule", 
signatures={"com.google.api.services.calendar.Calendar$Acl$Get get(String 
calendarId, String ruleId)"}), @ApiMethod(methodName = "insert", 
description="Creates an access control rule", signatures={"c [...]
 @UriParams
 @Configurer(extended = true)
 @Generated("org.apache.camel.maven.ApiComponentGeneratorMojo")
diff --git 
a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarListEndpointConfiguration.java
 
b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarListEndpointConfiguration.java
index 5bc03c82feb4..49da2e5376a2 100644
--- 
a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarListEndpointConfiguration.java
+++ 
b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarListEndpointConfiguration.java
@@ -17,7 +17,7 @@ import org.apache.camel.spi.UriParams;
  */
 @ApiParams(apiName = "list", 
            description = "The calendarList collection of methods",
-           apiMethods = {@ApiMethod(methodName = "delete", 
description="Removes a calendar from the user's calendar list", 
signatures={"com.google.api.services.calendar.Calendar$CalendarList$Delete 
delete(String calendarId)"}), @ApiMethod(methodName = "get", 
description="Returns a calendar from the user's calendar list", 
signatures={"com.google.api.services.calendar.Calendar$CalendarList$Get 
get(String calendarId)"}), @ApiMethod(methodName = "insert", 
description="Inserts an existing cal [...]
+           apiMethods = {@ApiMethod(methodName = "delete", 
description="Removes a calendar from the user's calendar list", 
signatures={"com.google.api.services.calendar.Calendar$CalendarList$Delete 
delete(String calendarId)"}), @ApiMethod(methodName = "get", 
description="Returns a calendar from the user's calendar list", 
signatures={"com.google.api.services.calendar.Calendar$CalendarList$Get 
get(String calendarId)"}), @ApiMethod(methodName = "insert", 
description="Inserts an existing cal [...]
 @UriParams
 @Configurer(extended = true)
 @Generated("org.apache.camel.maven.ApiComponentGeneratorMojo")
diff --git 
a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarChannelsEndpointConfiguration.java
 
b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarChannelsEndpointConfiguration.java
index b5218aed1f8d..99872cdcedff 100644
--- 
a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarChannelsEndpointConfiguration.java
+++ 
b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarChannelsEndpointConfiguration.java
@@ -17,7 +17,7 @@ import org.apache.camel.spi.UriParams;
  */
 @ApiParams(apiName = "channels", 
            description = "The channels collection of methods",
-           apiMethods = {@ApiMethod(methodName = "stop", description="Stop 
watching resources through this channel", 
signatures={"com.google.api.services.calendar.Calendar$Channels$Stop 
stop(com.google.api.services.calendar.model.Channel content)"})}, aliases = {})
+           apiMethods = {@ApiMethod(methodName = "stop", description="Stop 
watching resources through this channel", 
signatures={"com.google.api.services.calendar.Calendar$Channels$Stop 
stop(com.google.api.services.calendar.model.Channel contentChannel)"})}, 
aliases = {})
 @UriParams
 @Configurer(extended = true)
 @Generated("org.apache.camel.maven.ApiComponentGeneratorMojo")
diff --git 
a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarEventsEndpointConfiguration.java
 
b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarEventsEndpointConfiguration.java
index 15d2536671ce..fdc651181195 100644
--- 
a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarEventsEndpointConfiguration.java
+++ 
b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarEventsEndpointConfiguration.java
@@ -17,7 +17,7 @@ import org.apache.camel.spi.UriParams;
  */
 @ApiParams(apiName = "events", 
            description = "The events collection of methods",
-           apiMethods = {@ApiMethod(methodName = "calendarImport", 
description="Imports an event", 
signatures={"com.google.api.services.calendar.Calendar$Events$CalendarImport 
calendarImport(String calendarId, com.google.api.services.calendar.model.Event 
content)"}), @ApiMethod(methodName = "delete", description="Deletes an event", 
signatures={"com.google.api.services.calendar.Calendar$Events$Delete 
delete(String calendarId, String eventId)"}), @ApiMethod(methodName = "get", 
description= [...]
+           apiMethods = {@ApiMethod(methodName = "calendarImport", 
description="Imports an event", 
signatures={"com.google.api.services.calendar.Calendar$Events$CalendarImport 
calendarImport(String calendarId, com.google.api.services.calendar.model.Event 
content)"}), @ApiMethod(methodName = "delete", description="Deletes an event", 
signatures={"com.google.api.services.calendar.Calendar$Events$Delete 
delete(String calendarId, String eventId)"}), @ApiMethod(methodName = "get", 
description= [...]
 @UriParams
 @Configurer(extended = true)
 @Generated("org.apache.camel.maven.ApiComponentGeneratorMojo")
diff --git 
a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarSettingsEndpointConfiguration.java
 
b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarSettingsEndpointConfiguration.java
index 6dbb916e988d..6d97c7625440 100644
--- 
a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarSettingsEndpointConfiguration.java
+++ 
b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarSettingsEndpointConfiguration.java
@@ -17,7 +17,7 @@ import org.apache.camel.spi.UriParams;
  */
 @ApiParams(apiName = "settings", 
            description = "The settings collection of methods",
-           apiMethods = {@ApiMethod(methodName = "get", description="Returns a 
single user setting", 
signatures={"com.google.api.services.calendar.Calendar$Settings$Get get(String 
setting)"}), @ApiMethod(methodName = "list", description="Returns all user 
settings for the authenticated user", 
signatures={"com.google.api.services.calendar.Calendar$Settings$List list()"}), 
@ApiMethod(methodName = "watch", description="Watch for changes to Settings 
resources", signatures={"com.google.api.ser [...]
+           apiMethods = {@ApiMethod(methodName = "get", description="Returns a 
single user setting", 
signatures={"com.google.api.services.calendar.Calendar$Settings$Get get(String 
setting)"}), @ApiMethod(methodName = "list", description="Returns all user 
settings for the authenticated user", 
signatures={"com.google.api.services.calendar.Calendar$Settings$List list()"}), 
@ApiMethod(methodName = "watch", description="Watch for changes to Settings 
resources", signatures={"com.google.api.ser [...]
 @UriParams
 @Configurer(extended = true)
 @Generated("org.apache.camel.maven.ApiComponentGeneratorMojo")
diff --git 
a/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/org/apache/camel/component/google/calendar/google-calendar.json
 
b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/org/apache/camel/component/google/calendar/google-calendar.json
index 65d7649f4ca1..1fcd8a654413 100644
--- 
a/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/org/apache/camel/component/google/calendar/google-calendar.json
+++ 
b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/org/apache/camel/component/google/calendar/google-calendar.json
@@ -84,13 +84,13 @@
     "user": { "index": 33, "kind": "parameter", "displayName": "User", 
"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.google.calendar.GoogleCalendarConfiguration", 
"configurationField": "configuration", "description": "The email address of the 
user the application is trying to impersonate in the se [...]
   },
   "apis": {
-    "acl": { "consumerOnly": false, "producerOnly": false, "description": "The 
acl collection of methods", "methods": { "delete": { "description": "Deletes an 
access control rule", "signatures": [ 
"com.google.api.services.calendar.Calendar$Acl$Delete delete(String calendarId, 
String ruleId)" ] }, "get": { "description": "Returns an access control rule", 
"signatures": [ "com.google.api.services.calendar.Calendar$Acl$Get get(String 
calendarId, String ruleId)" ] }, "insert": { "description" [...]
+    "acl": { "consumerOnly": false, "producerOnly": false, "description": "The 
acl collection of methods", "methods": { "delete": { "description": "Deletes an 
access control rule", "signatures": [ 
"com.google.api.services.calendar.Calendar$Acl$Delete delete(String calendarId, 
String ruleId)" ] }, "get": { "description": "Returns an access control rule", 
"signatures": [ "com.google.api.services.calendar.Calendar$Acl$Get get(String 
calendarId, String ruleId)" ] }, "insert": { "description" [...]
     "calendars": { "consumerOnly": false, "producerOnly": false, 
"description": "The calendars collection of methods", "methods": { "clear": { 
"description": "Clears a primary calendar", "signatures": [ 
"com.google.api.services.calendar.Calendar$Calendars$Clear clear(String 
calendarId)" ] }, "delete": { "description": "Deletes a secondary calendar", 
"signatures": [ "com.google.api.services.calendar.Calendar$Calendars$Delete 
delete(String calendarId)" ] }, "get": { "description": "Returns [...]
-    "channels": { "consumerOnly": false, "producerOnly": false, "description": 
"The channels collection of methods", "methods": { "stop": { "description": 
"Stop watching resources through this channel", "signatures": [ 
"com.google.api.services.calendar.Calendar$Channels$Stop 
stop(com.google.api.services.calendar.model.Channel content)" ] } } },
-    "events": { "consumerOnly": false, "producerOnly": false, "description": 
"The events collection of methods", "methods": { "calendarImport": { 
"description": "Imports an event", "signatures": [ 
"com.google.api.services.calendar.Calendar$Events$CalendarImport 
calendarImport(String calendarId, com.google.api.services.calendar.model.Event 
content)" ] }, "delete": { "description": "Deletes an event", "signatures": [ 
"com.google.api.services.calendar.Calendar$Events$Delete delete(String ca [...]
+    "channels": { "consumerOnly": false, "producerOnly": false, "description": 
"The channels collection of methods", "methods": { "stop": { "description": 
"Stop watching resources through this channel", "signatures": [ 
"com.google.api.services.calendar.Calendar$Channels$Stop 
stop(com.google.api.services.calendar.model.Channel contentChannel)" ] } } },
+    "events": { "consumerOnly": false, "producerOnly": false, "description": 
"The events collection of methods", "methods": { "calendarImport": { 
"description": "Imports an event", "signatures": [ 
"com.google.api.services.calendar.Calendar$Events$CalendarImport 
calendarImport(String calendarId, com.google.api.services.calendar.model.Event 
content)" ] }, "delete": { "description": "Deletes an event", "signatures": [ 
"com.google.api.services.calendar.Calendar$Events$Delete delete(String ca [...]
     "freebusy": { "consumerOnly": false, "producerOnly": false, "description": 
"The freebusy collection of methods", "methods": { "query": { "description": 
"Returns free\/busy information for a set of calendars", "signatures": [ 
"com.google.api.services.calendar.Calendar$Freebusy$Query 
query(com.google.api.services.calendar.model.FreeBusyRequest content)" ] } } },
-    "list": { "consumerOnly": false, "producerOnly": false, "description": 
"The calendarList collection of methods", "methods": { "delete": { 
"description": "Removes a calendar from the user's calendar list", 
"signatures": [ "com.google.api.services.calendar.Calendar$CalendarList$Delete 
delete(String calendarId)" ] }, "get": { "description": "Returns a calendar 
from the user's calendar list", "signatures": [ 
"com.google.api.services.calendar.Calendar$CalendarList$Get get(String 
calendarI [...]
-    "settings": { "consumerOnly": false, "producerOnly": false, "description": 
"The settings collection of methods", "methods": { "get": { "description": 
"Returns a single user setting", "signatures": [ 
"com.google.api.services.calendar.Calendar$Settings$Get get(String setting)" ] 
}, "list": { "description": "Returns all user settings for the authenticated 
user", "signatures": [ "com.google.api.services.calendar.Calendar$Settings$List 
list()" ] }, "watch": { "description": "Watch for cha [...]
+    "list": { "consumerOnly": false, "producerOnly": false, "description": 
"The calendarList collection of methods", "methods": { "delete": { 
"description": "Removes a calendar from the user's calendar list", 
"signatures": [ "com.google.api.services.calendar.Calendar$CalendarList$Delete 
delete(String calendarId)" ] }, "get": { "description": "Returns a calendar 
from the user's calendar list", "signatures": [ 
"com.google.api.services.calendar.Calendar$CalendarList$Get get(String 
calendarI [...]
+    "settings": { "consumerOnly": false, "producerOnly": false, "description": 
"The settings collection of methods", "methods": { "get": { "description": 
"Returns a single user setting", "signatures": [ 
"com.google.api.services.calendar.Calendar$Settings$Get get(String setting)" ] 
}, "list": { "description": "Returns all user settings for the authenticated 
user", "signatures": [ "com.google.api.services.calendar.Calendar$Settings$List 
list()" ] }, "watch": { "description": "Watch for cha [...]
   },
   "apiProperties": {
     "acl": { "methods": { "delete": { "properties": { "calendarId": { "index": 
0, "kind": "parameter", "displayName": "Calendar Id", "group": "common", 
"label": "", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Calendar identifier. To retrieve calendar IDs call the 
calendarList.list method. If you want to access the primary calendar of the 
currently logged in user, use the primary keyword.",  [...]
diff --git 
a/components/camel-google/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveChangesEndpointConfiguration.java
 
b/components/camel-google/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveChangesEndpointConfiguration.java
index 7a65d2433358..c4a931cea922 100644
--- 
a/components/camel-google/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveChangesEndpointConfiguration.java
+++ 
b/components/camel-google/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveChangesEndpointConfiguration.java
@@ -17,7 +17,7 @@ import org.apache.camel.spi.UriParams;
  */
 @ApiParams(apiName = "drive-changes", 
            description = "The changes collection of methods",
-           apiMethods = {@ApiMethod(methodName = "getStartPageToken", 
description="Gets the starting pageToken for listing future changes", 
signatures={"com.google.api.services.drive.Drive$Changes$GetStartPageToken 
getStartPageToken()"}), @ApiMethod(methodName = "list", description="Lists the 
changes for a user or shared drive", 
signatures={"com.google.api.services.drive.Drive$Changes$List list(String 
pageToken)"}), @ApiMethod(methodName = "watch", description="Subscribes to 
changes for  [...]
+           apiMethods = {@ApiMethod(methodName = "getStartPageToken", 
description="Gets the starting pageToken for listing future changes", 
signatures={"com.google.api.services.drive.Drive$Changes$GetStartPageToken 
getStartPageToken()"}), @ApiMethod(methodName = "list", description="Lists the 
changes for a user or shared drive", 
signatures={"com.google.api.services.drive.Drive$Changes$List list(String 
pageToken)"}), @ApiMethod(methodName = "watch", description="Subscribes to 
changes for  [...]
 @UriParams
 @Configurer(extended = true)
 @Generated("org.apache.camel.maven.ApiComponentGeneratorMojo")
diff --git 
a/components/camel-google/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveChannelsEndpointConfiguration.java
 
b/components/camel-google/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveChannelsEndpointConfiguration.java
index e54d02e68ca3..0d7e7a9c882c 100644
--- 
a/components/camel-google/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveChannelsEndpointConfiguration.java
+++ 
b/components/camel-google/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveChannelsEndpointConfiguration.java
@@ -17,7 +17,7 @@ import org.apache.camel.spi.UriParams;
  */
 @ApiParams(apiName = "drive-channels", 
            description = "The channels collection of methods",
-           apiMethods = {@ApiMethod(methodName = "stop", description="Stops 
watching resources through this channel", 
signatures={"com.google.api.services.drive.Drive$Channels$Stop 
stop(com.google.api.services.drive.model.Channel content)"})}, aliases = {})
+           apiMethods = {@ApiMethod(methodName = "stop", description="Stops 
watching resources through this channel", 
signatures={"com.google.api.services.drive.Drive$Channels$Stop 
stop(com.google.api.services.drive.model.Channel contentChannel)"})}, aliases = 
{})
 @UriParams
 @Configurer(extended = true)
 @Generated("org.apache.camel.maven.ApiComponentGeneratorMojo")
diff --git 
a/components/camel-google/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveFilesEndpointConfiguration.java
 
b/components/camel-google/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveFilesEndpointConfiguration.java
index 9bed57932ffa..10ab417574f1 100644
--- 
a/components/camel-google/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveFilesEndpointConfiguration.java
+++ 
b/components/camel-google/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveFilesEndpointConfiguration.java
@@ -17,7 +17,7 @@ import org.apache.camel.spi.UriParams;
  */
 @ApiParams(apiName = "drive-files", 
            description = "The files collection of methods",
-           apiMethods = {@ApiMethod(methodName = "copy", description="Creates 
a copy of a file and applies any requested updates with patch semantics", 
signatures={"com.google.api.services.drive.Drive$Files$Copy copy(String fileId, 
com.google.api.services.drive.model.File content)"}), @ApiMethod(methodName = 
"create", description="Creates a file", 
signatures={"com.google.api.services.drive.Drive$Files$Create 
create(com.google.api.services.drive.model.File content)", 
"com.google.api.servi [...]
+           apiMethods = {@ApiMethod(methodName = "copy", description="Creates 
a copy of a file and applies any requested updates with patch semantics", 
signatures={"com.google.api.services.drive.Drive$Files$Copy copy(String fileId, 
com.google.api.services.drive.model.File file)"}), @ApiMethod(methodName = 
"create", description="Creates a file", 
signatures={"com.google.api.services.drive.Drive$Files$Create 
create(com.google.api.services.drive.model.File content)", 
"com.google.api.services [...]
 @UriParams
 @Configurer(extended = true)
 @Generated("org.apache.camel.maven.ApiComponentGeneratorMojo")
diff --git 
a/components/camel-google/camel-google-drive/src/generated/resources/META-INF/org/apache/camel/component/google/drive/google-drive.json
 
b/components/camel-google/camel-google-drive/src/generated/resources/META-INF/org/apache/camel/component/google/drive/google-drive.json
index 968c32aff9db..cefe90c6d0f9 100644
--- 
a/components/camel-google/camel-google-drive/src/generated/resources/META-INF/org/apache/camel/component/google/drive/google-drive.json
+++ 
b/components/camel-google/camel-google-drive/src/generated/resources/META-INF/org/apache/camel/component/google/drive/google-drive.json
@@ -84,11 +84,11 @@
     "serviceAccountKey": { "index": 31, "kind": "parameter", "displayName": 
"Service Account Key", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.drive.GoogleDriveConfiguration", 
"configurationField": "configuration", "description": "Service account key in 
json format to authenticate an application as a service  [...]
   },
   "apis": {
-    "drive-changes": { "consumerOnly": false, "producerOnly": false, 
"description": "The changes collection of methods", "methods": { 
"getStartPageToken": { "description": "Gets the starting pageToken for listing 
future changes", "signatures": [ 
"com.google.api.services.drive.Drive$Changes$GetStartPageToken 
getStartPageToken()" ] }, "list": { "description": "Lists the changes for a 
user or shared drive", "signatures": [ 
"com.google.api.services.drive.Drive$Changes$List list(String pageTo [...]
-    "drive-channels": { "consumerOnly": false, "producerOnly": false, 
"description": "The channels collection of methods", "methods": { "stop": { 
"description": "Stops watching resources through this channel", "signatures": [ 
"com.google.api.services.drive.Drive$Channels$Stop 
stop(com.google.api.services.drive.model.Channel content)" ] } } },
+    "drive-changes": { "consumerOnly": false, "producerOnly": false, 
"description": "The changes collection of methods", "methods": { 
"getStartPageToken": { "description": "Gets the starting pageToken for listing 
future changes", "signatures": [ 
"com.google.api.services.drive.Drive$Changes$GetStartPageToken 
getStartPageToken()" ] }, "list": { "description": "Lists the changes for a 
user or shared drive", "signatures": [ 
"com.google.api.services.drive.Drive$Changes$List list(String pageTo [...]
+    "drive-channels": { "consumerOnly": false, "producerOnly": false, 
"description": "The channels collection of methods", "methods": { "stop": { 
"description": "Stops watching resources through this channel", "signatures": [ 
"com.google.api.services.drive.Drive$Channels$Stop 
stop(com.google.api.services.drive.model.Channel contentChannel)" ] } } },
     "drive-comments": { "consumerOnly": false, "producerOnly": false, 
"description": "The comments collection of methods", "methods": { "create": { 
"description": "Creates a comment on a file", "signatures": [ 
"com.google.api.services.drive.Drive$Comments$Create create(String fileId, 
com.google.api.services.drive.model.Comment content)" ] }, "delete": { 
"description": "Deletes a comment", "signatures": [ 
"com.google.api.services.drive.Drive$Comments$Delete delete(String fileId, 
String co [...]
     "drive-drives": { "consumerOnly": false, "producerOnly": false, 
"description": "The drives collection of methods", "methods": { "create": { 
"description": "Creates a shared drive", "signatures": [ 
"com.google.api.services.drive.Drive$Drives$Create create(String requestId, 
com.google.api.services.drive.model.Drive content)" ] }, "delete": { 
"description": "Permanently deletes a shared drive for which the user is an 
organizer", "signatures": [ "com.google.api.services.drive.Drive$Drive [...]
-    "drive-files": { "consumerOnly": false, "producerOnly": false, 
"description": "The files collection of methods", "methods": { "copy": { 
"description": "Creates a copy of a file and applies any requested updates with 
patch semantics", "signatures": [ 
"com.google.api.services.drive.Drive$Files$Copy copy(String fileId, 
com.google.api.services.drive.model.File content)" ] }, "create": { 
"description": "Creates a file", "signatures": [ 
"com.google.api.services.drive.Drive$Files$Create cre [...]
+    "drive-files": { "consumerOnly": false, "producerOnly": false, 
"description": "The files collection of methods", "methods": { "copy": { 
"description": "Creates a copy of a file and applies any requested updates with 
patch semantics", "signatures": [ 
"com.google.api.services.drive.Drive$Files$Copy copy(String fileId, 
com.google.api.services.drive.model.File file)" ] }, "create": { "description": 
"Creates a file", "signatures": [ 
"com.google.api.services.drive.Drive$Files$Create create [...]
     "drive-permissions": { "consumerOnly": false, "producerOnly": false, 
"description": "The permissions collection of methods", "methods": { "create": 
{ "description": "Creates a permission for a file or shared drive", 
"signatures": [ "com.google.api.services.drive.Drive$Permissions$Create 
create(String fileId, com.google.api.services.drive.model.Permission content)" 
] }, "delete": { "description": "Deletes a permission", "signatures": [ 
"com.google.api.services.drive.Drive$Permissions$ [...]
     "drive-replies": { "consumerOnly": false, "producerOnly": false, 
"description": "The replies collection of methods", "methods": { "create": { 
"description": "Creates a reply to a comment", "signatures": [ 
"com.google.api.services.drive.Drive$Replies$Create create(String fileId, 
String commentId, com.google.api.services.drive.model.Reply content)" ] }, 
"delete": { "description": "Deletes a reply", "signatures": [ 
"com.google.api.services.drive.Drive$Replies$Delete delete(String fileId [...]
     "drive-revisions": { "consumerOnly": false, "producerOnly": false, 
"description": "The revisions collection of methods", "methods": { "delete": { 
"description": "Permanently deletes a file version", "signatures": [ 
"com.google.api.services.drive.Drive$Revisions$Delete delete(String fileId, 
String revisionId)" ] }, "get": { "description": "Gets a revision's metadata or 
content by ID", "signatures": [ 
"com.google.api.services.drive.Drive$Revisions$Get get(String fileId, String 
revision [...]
diff --git 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesEndpointConfiguration.java
 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesEndpointConfiguration.java
index 658d1140cc87..488d582999e8 100644
--- 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesEndpointConfiguration.java
+++ 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesEndpointConfiguration.java
@@ -17,7 +17,7 @@ import org.apache.camel.spi.UriParams;
  */
 @ApiParams(apiName = "messages", 
            description = "The messages collection of methods",
-           apiMethods = {@ApiMethod(methodName = "batchDelete", 
description="Deletes many messages by message ID", 
signatures={"com.google.api.services.gmail.Gmail$Users$Messages$BatchDelete 
batchDelete(String userId, 
com.google.api.services.gmail.model.BatchDeleteMessagesRequest content)"}), 
@ApiMethod(methodName = "batchModify", description="Modifies the labels on the 
specified messages", 
signatures={"com.google.api.services.gmail.Gmail$Users$Messages$BatchModify 
batchModify(String use [...]
+           apiMethods = {@ApiMethod(methodName = "batchDelete", 
description="Deletes many messages by message ID", 
signatures={"com.google.api.services.gmail.Gmail$Users$Messages$BatchDelete 
batchDelete(String userId, 
com.google.api.services.gmail.model.BatchDeleteMessagesRequest 
batchDeleteMessagesRequest)"}), @ApiMethod(methodName = "batchModify", 
description="Modifies the labels on the specified messages", 
signatures={"com.google.api.services.gmail.Gmail$Users$Messages$BatchModify bat 
[...]
 @UriParams
 @Configurer(extended = true)
 @Generated("org.apache.camel.maven.ApiComponentGeneratorMojo")
diff --git 
a/components/camel-google/camel-google-mail/src/generated/resources/META-INF/org/apache/camel/component/google/mail/google-mail.json
 
b/components/camel-google/camel-google-mail/src/generated/resources/META-INF/org/apache/camel/component/google/mail/google-mail.json
index dfa81dabdf9d..96395b1f0451 100644
--- 
a/components/camel-google/camel-google-mail/src/generated/resources/META-INF/org/apache/camel/component/google/mail/google-mail.json
+++ 
b/components/camel-google/camel-google-mail/src/generated/resources/META-INF/org/apache/camel/component/google/mail/google-mail.json
@@ -82,7 +82,7 @@
     "drafts": { "consumerOnly": false, "producerOnly": false, "description": 
"The drafts collection of methods", "methods": { "create": { "description": 
"Creates a new draft with the DRAFT label", "signatures": [ 
"com.google.api.services.gmail.Gmail$Users$Drafts$Create create(String userId, 
com.google.api.services.gmail.model.Draft content)", 
"com.google.api.services.gmail.Gmail$Users$Drafts$Create create(String userId, 
com.google.api.services.gmail.model.Draft content, com.google.api.cl [...]
     "history": { "consumerOnly": false, "producerOnly": false, "description": 
"The history collection of methods", "methods": { "list": { "description": 
"Lists the history of all changes to the given mailbox", "signatures": [ 
"com.google.api.services.gmail.Gmail$Users$History$List list(String userId)" ] 
} } },
     "labels": { "consumerOnly": false, "producerOnly": false, "description": 
"The labels collection of methods", "methods": { "create": { "description": 
"Creates a new label", "signatures": [ 
"com.google.api.services.gmail.Gmail$Users$Labels$Create create(String userId, 
com.google.api.services.gmail.model.Label content)" ] }, "delete": { 
"description": "Immediately and permanently deletes the specified label and 
removes it from any messages and threads that it is applied to", "signatures 
[...]
-    "messages": { "consumerOnly": false, "producerOnly": false, "description": 
"The messages collection of methods", "methods": { "batchDelete": { 
"description": "Deletes many messages by message ID", "signatures": [ 
"com.google.api.services.gmail.Gmail$Users$Messages$BatchDelete 
batchDelete(String userId, 
com.google.api.services.gmail.model.BatchDeleteMessagesRequest content)" ] }, 
"batchModify": { "description": "Modifies the labels on the specified 
messages", "signatures": [ "com.goog [...]
+    "messages": { "consumerOnly": false, "producerOnly": false, "description": 
"The messages collection of methods", "methods": { "batchDelete": { 
"description": "Deletes many messages by message ID", "signatures": [ 
"com.google.api.services.gmail.Gmail$Users$Messages$BatchDelete 
batchDelete(String userId, 
com.google.api.services.gmail.model.BatchDeleteMessagesRequest 
batchDeleteMessagesRequest)" ] }, "batchModify": { "description": "Modifies the 
labels on the specified messages", "signa [...]
     "threads": { "consumerOnly": false, "producerOnly": false, "description": 
"The threads collection of methods", "methods": { "delete": { "description": 
"Immediately and permanently deletes the specified thread", "signatures": [ 
"com.google.api.services.gmail.Gmail$Users$Threads$Delete delete(String userId, 
String id)" ] }, "get": { "description": "Gets the specified thread", 
"signatures": [ "com.google.api.services.gmail.Gmail$Users$Threads$Get 
get(String userId, String id)" ] }, "lis [...]
     "users": { "consumerOnly": false, "producerOnly": false, "description": 
"The users collection of methods", "methods": { "getProfile": { "description": 
"Gets the current user's Gmail profile", "signatures": [ 
"com.google.api.services.gmail.Gmail$Users$GetProfile getProfile(String 
userId)" ] }, "stop": { "description": "Stop receiving push notifications for 
the given user mailbox", "signatures": [ 
"com.google.api.services.gmail.Gmail$Users$Stop stop(String userId)" ] }, 
"watch": { "des [...]
   },
diff --git 
a/components/camel-google/camel-google-sheets/src/generated/java/org/apache/camel/component/google/sheets/SheetsSpreadsheetsEndpointConfiguration.java
 
b/components/camel-google/camel-google-sheets/src/generated/java/org/apache/camel/component/google/sheets/SheetsSpreadsheetsEndpointConfiguration.java
index 91cd455b4dbf..d1a5b38da915 100644
--- 
a/components/camel-google/camel-google-sheets/src/generated/java/org/apache/camel/component/google/sheets/SheetsSpreadsheetsEndpointConfiguration.java
+++ 
b/components/camel-google/camel-google-sheets/src/generated/java/org/apache/camel/component/google/sheets/SheetsSpreadsheetsEndpointConfiguration.java
@@ -17,7 +17,7 @@ import org.apache.camel.spi.UriParams;
  */
 @ApiParams(apiName = "spreadsheets", 
            description = "The spreadsheets collection of methods",
-           apiMethods = {@ApiMethod(methodName = "batchUpdate", 
description="Applies one or more updates to the spreadsheet", 
signatures={"com.google.api.services.sheets.v4.Sheets$Spreadsheets$BatchUpdate 
batchUpdate(String spreadsheetId, 
com.google.api.services.sheets.v4.model.BatchUpdateSpreadsheetRequest 
content)"}), @ApiMethod(methodName = "create", description="Creates a 
spreadsheet, returning the newly created spreadsheet", 
signatures={"com.google.api.services.sheets.v4.Sheets$Spre [...]
+           apiMethods = {@ApiMethod(methodName = "batchUpdate", 
description="Applies one or more updates to the spreadsheet", 
signatures={"com.google.api.services.sheets.v4.Sheets$Spreadsheets$BatchUpdate 
batchUpdate(String spreadsheetId, 
com.google.api.services.sheets.v4.model.BatchUpdateSpreadsheetRequest 
batchUpdateSpreadsheetRequest)"}), @ApiMethod(methodName = "create", 
description="Creates a spreadsheet, returning the newly created spreadsheet", 
signatures={"com.google.api.services [...]
 @UriParams
 @Configurer(extended = true)
 @Generated("org.apache.camel.maven.ApiComponentGeneratorMojo")
diff --git 
a/components/camel-google/camel-google-sheets/src/generated/java/org/apache/camel/component/google/sheets/SheetsSpreadsheetsValuesEndpointConfiguration.java
 
b/components/camel-google/camel-google-sheets/src/generated/java/org/apache/camel/component/google/sheets/SheetsSpreadsheetsValuesEndpointConfiguration.java
index e7bb6c435cbc..f333fa9fc360 100644
--- 
a/components/camel-google/camel-google-sheets/src/generated/java/org/apache/camel/component/google/sheets/SheetsSpreadsheetsValuesEndpointConfiguration.java
+++ 
b/components/camel-google/camel-google-sheets/src/generated/java/org/apache/camel/component/google/sheets/SheetsSpreadsheetsValuesEndpointConfiguration.java
@@ -17,7 +17,7 @@ import org.apache.camel.spi.UriParams;
  */
 @ApiParams(apiName = "data", 
            description = "The values collection of methods",
-           apiMethods = {@ApiMethod(methodName = "append", 
description="Appends values to a spreadsheet", 
signatures={"com.google.api.services.sheets.v4.Sheets$Spreadsheets$Values$Append
 append(String spreadsheetId, String range, 
com.google.api.services.sheets.v4.model.ValueRange content)"}), 
@ApiMethod(methodName = "batchClear", description="Clears one or more ranges of 
values from a spreadsheet", 
signatures={"com.google.api.services.sheets.v4.Sheets$Spreadsheets$Values$BatchClear
 batch [...]
+           apiMethods = {@ApiMethod(methodName = "append", 
description="Appends values to a spreadsheet", 
signatures={"com.google.api.services.sheets.v4.Sheets$Spreadsheets$Values$Append
 append(String spreadsheetId, String range, 
com.google.api.services.sheets.v4.model.ValueRange values)"}), 
@ApiMethod(methodName = "batchClear", description="Clears one or more ranges of 
values from a spreadsheet", 
signatures={"com.google.api.services.sheets.v4.Sheets$Spreadsheets$Values$BatchClear
 batchC [...]
 @UriParams
 @Configurer(extended = true)
 @Generated("org.apache.camel.maven.ApiComponentGeneratorMojo")
diff --git 
a/components/camel-google/camel-google-sheets/src/generated/resources/META-INF/org/apache/camel/component/google/sheets/google-sheets.json
 
b/components/camel-google/camel-google-sheets/src/generated/resources/META-INF/org/apache/camel/component/google/sheets/google-sheets.json
index d228cb2fa04d..3f4188b2479f 100644
--- 
a/components/camel-google/camel-google-sheets/src/generated/resources/META-INF/org/apache/camel/component/google/sheets/google-sheets.json
+++ 
b/components/camel-google/camel-google-sheets/src/generated/resources/META-INF/org/apache/camel/component/google/sheets/google-sheets.json
@@ -81,8 +81,8 @@
     "serviceAccountKey": { "index": 31, "kind": "parameter", "displayName": 
"Service Account Key", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.sheets.GoogleSheetsConfiguration", 
"configurationField": "configuration", "description": "Sets .json file with 
credentials for Service account" }
   },
   "apis": {
-    "data": { "consumerOnly": false, "producerOnly": false, "description": 
"The values collection of methods", "methods": { "append": { "description": 
"Appends values to a spreadsheet", "signatures": [ 
"com.google.api.services.sheets.v4.Sheets$Spreadsheets$Values$Append 
append(String spreadsheetId, String range, 
com.google.api.services.sheets.v4.model.ValueRange content)" ] }, "batchClear": 
{ "description": "Clears one or more ranges of values from a spreadsheet", 
"signatures": [ "com.go [...]
-    "spreadsheets": { "consumerOnly": false, "producerOnly": false, 
"description": "The spreadsheets collection of methods", "methods": { 
"batchUpdate": { "description": "Applies one or more updates to the 
spreadsheet", "signatures": [ 
"com.google.api.services.sheets.v4.Sheets$Spreadsheets$BatchUpdate 
batchUpdate(String spreadsheetId, 
com.google.api.services.sheets.v4.model.BatchUpdateSpreadsheetRequest content)" 
] }, "create": { "description": "Creates a spreadsheet, returning the newly 
[...]
+    "data": { "consumerOnly": false, "producerOnly": false, "description": 
"The values collection of methods", "methods": { "append": { "description": 
"Appends values to a spreadsheet", "signatures": [ 
"com.google.api.services.sheets.v4.Sheets$Spreadsheets$Values$Append 
append(String spreadsheetId, String range, 
com.google.api.services.sheets.v4.model.ValueRange values)" ] }, "batchClear": 
{ "description": "Clears one or more ranges of values from a spreadsheet", 
"signatures": [ "com.goo [...]
+    "spreadsheets": { "consumerOnly": false, "producerOnly": false, 
"description": "The spreadsheets collection of methods", "methods": { 
"batchUpdate": { "description": "Applies one or more updates to the 
spreadsheet", "signatures": [ 
"com.google.api.services.sheets.v4.Sheets$Spreadsheets$BatchUpdate 
batchUpdate(String spreadsheetId, 
com.google.api.services.sheets.v4.model.BatchUpdateSpreadsheetRequest 
batchUpdateSpreadsheetRequest)" ] }, "create": { "description": "Creates a 
spreadshee [...]
   },
   "apiProperties": {
     "data": { "methods": { "append": { "properties": { 
"includeValuesInResponse": { "index": 0, "kind": "parameter", "displayName": 
"Include Values In Response", "group": "common", "label": "", "required": 
false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Determines if the update response should include the values of the cells that 
were appended", "optional": true }, "insertDataOptio [...]
diff --git 
a/components/camel-zendesk/src/generated/java/org/apache/camel/component/zendesk/ZendeskEndpointConfiguration.java
 
b/components/camel-zendesk/src/generated/java/org/apache/camel/component/zendesk/ZendeskEndpointConfiguration.java
index 2bb54151b626..3f9be98e1d71 100644
--- 
a/components/camel-zendesk/src/generated/java/org/apache/camel/component/zendesk/ZendeskEndpointConfiguration.java
+++ 
b/components/camel-zendesk/src/generated/java/org/apache/camel/component/zendesk/ZendeskEndpointConfiguration.java
@@ -17,7 +17,7 @@ import org.apache.camel.spi.UriParams;
  */
 @ApiParams(apiName = "DEFAULT", 
            description = "",
-           apiMethods = {@ApiMethod(methodName = "addTagToOrganisations", 
signatures={"java.util.List<String> addTagToOrganisations(long id, String[] 
tags)"}), @ApiMethod(methodName = "addTagToTicket", 
signatures={"java.util.List<String> addTagToTicket(long id, String[] tags)"}), 
@ApiMethod(methodName = "addTagToTopics", signatures={"java.util.List<String> 
addTagToTopics(long id, String[] tags)"}), @ApiMethod(methodName = 
"associateAttachmentsToArticle", signatures={"void associateAttach [...]
+           apiMethods = {@ApiMethod(methodName = "addTagToOrganisations", 
signatures={"java.util.List<String> addTagToOrganisations(long id, String[] 
tags)"}), @ApiMethod(methodName = "addTagToTicket", 
signatures={"java.util.List<String> addTagToTicket(long id, String[] tags)"}), 
@ApiMethod(methodName = "addTagToTopics", signatures={"java.util.List<String> 
addTagToTopics(long id, String[] tags)"}), @ApiMethod(methodName = 
"associateAttachmentsToArticle", signatures={"void associateAttach [...]
 @UriParams
 @Configurer(extended = true)
 @Generated("org.apache.camel.maven.ApiComponentGeneratorMojo")
diff --git 
a/components/camel-zendesk/src/generated/resources/META-INF/org/apache/camel/component/zendesk/zendesk.json
 
b/components/camel-zendesk/src/generated/resources/META-INF/org/apache/camel/component/zendesk/zendesk.json
index e9856b162293..648bc35c9a21 100644
--- 
a/components/camel-zendesk/src/generated/resources/META-INF/org/apache/camel/component/zendesk/zendesk.json
+++ 
b/components/camel-zendesk/src/generated/resources/META-INF/org/apache/camel/component/zendesk/zendesk.json
@@ -71,7 +71,7 @@
     "username": { "index": 26, "kind": "parameter", "displayName": "Username", 
"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.zendesk.ZendeskConfiguration", 
"configurationField": "configuration", "description": "The user name." }
   },
   "apis": {
-    "DEFAULT": { "consumerOnly": false, "producerOnly": false, "description": 
"", "methods": { "addTagToOrganisations": { "description": "", "signatures": [ 
"java.util.List<String> addTagToOrganisations(long id, String[] tags)" ] }, 
"addTagToTicket": { "description": "", "signatures": [ "java.util.List<String> 
addTagToTicket(long id, String[] tags)" ] }, "addTagToTopics": { "description": 
"", "signatures": [ "java.util.List<String> addTagToTopics(long id, String[] 
tags)" ] }, "associateA [...]
+    "DEFAULT": { "consumerOnly": false, "producerOnly": false, "description": 
"", "methods": { "addTagToOrganisations": { "description": "", "signatures": [ 
"java.util.List<String> addTagToOrganisations(long id, String[] tags)" ] }, 
"addTagToTicket": { "description": "", "signatures": [ "java.util.List<String> 
addTagToTicket(long id, String[] tags)" ] }, "addTagToTopics": { "description": 
"", "signatures": [ "java.util.List<String> addTagToTopics(long id, String[] 
tags)" ] }, "associateA [...]
   },
   "apiProperties": {
     "DEFAULT": { "methods": { "addTagToOrganisations": { "properties": { "id": 
{ "index": 0, "kind": "parameter", "displayName": "Id", "group": "common", 
"label": "", "required": false, "type": "integer", "javaType": 
"java.lang.Long", "deprecated": false, "autowired": false, "secret": false, 
"description": "", "optional": false }, "tags": { "index": 1, "kind": 
"parameter", "displayName": "Tags", "group": "common", "label": "", "required": 
false, "type": "array", "javaType": "java.lang.St [...]
diff --git 
a/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/AbstractApiMethodGeneratorMojo.java
 
b/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/AbstractApiMethodGeneratorMojo.java
index ad78b7bd513e..d8fa442776ab 100644
--- 
a/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/AbstractApiMethodGeneratorMojo.java
+++ 
b/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/AbstractApiMethodGeneratorMojo.java
@@ -594,13 +594,70 @@ public abstract class AbstractApiMethodGeneratorMojo 
extends AbstractApiMethodBa
         for (ApiMethodParser.ApiMethodModel model : models) {
             if (model.getName().equals(methodName)) {
                 if (model.getSignature() != null) {
-                    list.add(model.getSignature());
+                    
list.add(getSignatureWithArgumentNames(model.getSignature(), 
model.getArguments()));
                 }
             }
         }
         return list;
     }
 
+    /**
+     * Returns the signature with the argument names of the given arguments, 
so the signature shows the names after
+     * substitution, as those are the names the endpoint expects (such as with 
inBody).
+     *
+     * @param  signature the method signature as parsed from the source, with 
the original argument names
+     * @param  arguments the method arguments (after substitution) in the 
order of the signature
+     * @return           the signature with the argument names replaced, or 
the signature as-is if the arguments do not
+     *                   match the signature
+     */
+    static String getSignatureWithArgumentNames(String signature, 
List<ApiMethodArg> arguments) {
+        final int start = signature.indexOf('(');
+        final int end = signature.lastIndexOf(')');
+        if (start == -1 || end < start) {
+            return signature;
+        }
+
+        // find the start and end of each argument name, the last identifier 
before a top level comma (not inside generics)
+        final List<int[]> names = new ArrayList<>();
+        int depth = 0;
+        int segmentStart = start + 1;
+        for (int i = start + 1; i <= end; i++) {
+            char ch = signature.charAt(i);
+            if (ch == '<') {
+                depth++;
+            } else if (ch == '>') {
+                depth--;
+            } else if (i == end || ch == ',' && depth == 0) {
+                int nameEnd = i;
+                while (nameEnd > segmentStart && 
Character.isWhitespace(signature.charAt(nameEnd - 1))) {
+                    nameEnd--;
+                }
+                int nameStart = nameEnd;
+                while (nameStart > segmentStart && 
Character.isJavaIdentifierPart(signature.charAt(nameStart - 1))) {
+                    nameStart--;
+                }
+                if (nameStart < nameEnd) {
+                    names.add(new int[] { nameStart, nameEnd });
+                }
+                segmentStart = i + 1;
+            }
+        }
+        // extra options can be added to the arguments, but they come after 
the arguments of the signature
+        if (names.isEmpty() || names.size() > arguments.size()) {
+            return signature;
+        }
+
+        final StringBuilder sb = new StringBuilder();
+        int pos = 0;
+        for (int i = 0; i < names.size(); i++) {
+            int[] name = names.get(i);
+            sb.append(signature, pos, 
name[0]).append(arguments.get(i).getName());
+            pos = name[1];
+        }
+        sb.append(signature, pos, signature.length());
+        return sb.toString();
+    }
+
     /*
      * This is used when configuring the plugin instead of directly, which is 
why it reports as unused
      * without the annotation
diff --git 
a/tooling/maven/camel-api-component-maven-plugin/src/test/java/org/apache/camel/maven/ApiJavaSourceComponentGeneratorMojoTest.java
 
b/tooling/maven/camel-api-component-maven-plugin/src/test/java/org/apache/camel/maven/ApiJavaSourceComponentGeneratorMojoTest.java
index 22275a8f2f91..d9fdf32ec161 100644
--- 
a/tooling/maven/camel-api-component-maven-plugin/src/test/java/org/apache/camel/maven/ApiJavaSourceComponentGeneratorMojoTest.java
+++ 
b/tooling/maven/camel-api-component-maven-plugin/src/test/java/org/apache/camel/maven/ApiJavaSourceComponentGeneratorMojoTest.java
@@ -17,10 +17,14 @@
 package org.apache.camel.maven;
 
 import java.io.File;
+import java.nio.file.Files;
 
 import org.apache.camel.component.test.TestProxy;
 import org.junit.jupiter.api.Test;
 
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 /**
  * Tests {@link ApiComponentGeneratorMojo} for javasource parser
  */
@@ -42,6 +46,31 @@ public class ApiJavaSourceComponentGeneratorMojoTest extends 
AbstractGeneratorMo
         assertExists(collectionFile);
     }
 
+    @Test
+    public void testSignaturesUseSubstitutedArgumentNames() throws Exception {
+        final File configFile = new File(OUT_DIR, COMPONENT_PACKAGE_PATH + 
"TestProxyEndpointConfiguration.java");
+        configFile.delete();
+
+        final ApiComponentGeneratorMojo mojo = createGeneratorMojo();
+        mojo.apis[0].setSubstitutions(new Substitution[] {
+                new Substitution("^greetUs$", "name1", null, "firstName", 
false),
+                new Substitution("^greetAll$", "names", "java.util.List", 
"nameList", false),
+                new Substitution("^greetWildcard$", "wildcardNames", null, 
"wildcards", false) });
+
+        mojo.execute();
+
+        assertExists(configFile);
+        final String config = Files.readString(configFile.toPath());
+        // the signatures in @ApiMethod (which goes into the catalog) must use 
the names the endpoint expects
+        assertTrue(config.contains("greetUs(String firstName, String name2)"), 
config);
+        assertTrue(config.contains("greetAll(java.util.List<String> 
nameList)"), config);
+        assertTrue(config.contains("greetAll(java.util.Map peopleMap)"), 
config);
+        assertTrue(config.contains("greetWildcard(String[] wildcards)"), 
config);
+        assertTrue(config.contains("greetTimes(String name, int times)"), 
config);
+        assertFalse(config.contains("String name1"), config);
+        assertFalse(config.contains("List<String> names)"), config);
+    }
+
     @Override
     protected ApiComponentGeneratorMojo createGeneratorMojo() {
         final ApiComponentGeneratorMojo mojo = new ApiComponentGeneratorMojo();
diff --git 
a/tooling/maven/camel-api-component-maven-plugin/src/test/java/org/apache/camel/maven/SignatureWithArgumentNamesTest.java
 
b/tooling/maven/camel-api-component-maven-plugin/src/test/java/org/apache/camel/maven/SignatureWithArgumentNamesTest.java
new file mode 100644
index 000000000000..c1e41fd69116
--- /dev/null
+++ 
b/tooling/maven/camel-api-component-maven-plugin/src/test/java/org/apache/camel/maven/SignatureWithArgumentNamesTest.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.maven;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.camel.support.component.ApiMethodArg;
+import org.junit.jupiter.api.Test;
+
+import static 
org.apache.camel.maven.AbstractApiMethodGeneratorMojo.getSignatureWithArgumentNames;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+/**
+ * Tests the argument names in the signatures written to the catalog are the 
names after substitution.
+ */
+public class SignatureWithArgumentNamesTest {
+
+    @Test
+    public void testSubstitutedName() {
+        assertEquals("Modify modify(String userId, String id, 
ModifyMessageRequest modifyMessageRequest)",
+                getSignatureWithArgumentNames("Modify modify(String userId, 
String id, ModifyMessageRequest content)",
+                        List.of(arg("userId", String.class), arg("id", 
String.class),
+                                arg("modifyMessageRequest", Object.class))));
+    }
+
+    @Test
+    public void testGenericsWithComma() {
+        assertEquals("Map<String, Object> put(java.util.Map<String, 
java.util.List<Object>> values, int count)",
+                getSignatureWithArgumentNames(
+                        "Map<String, Object> put(java.util.Map<String, 
java.util.List<Object>> content, int size)",
+                        List.of(arg("values", Map.class), arg("count", 
int.class))));
+    }
+
+    @Test
+    public void testExtraOptionsAfterSignatureArguments() {
+        // an extra option included for the method is added after the 
arguments of the signature
+        assertEquals("Get get(String fileId)",
+                getSignatureWithArgumentNames("Get get(String fileId)",
+                        List.of(arg("fileId", String.class), 
arg("extraOption", String.class))));
+    }
+
+    @Test
+    public void testUnchanged() {
+        assertEquals("String sayHi()", getSignatureWithArgumentNames("String 
sayHi()", List.of()));
+        assertEquals("String[] greetTimes(String name, int times)",
+                getSignatureWithArgumentNames("String[] greetTimes(String 
name, int times)",
+                        List.of(arg("name", String.class), arg("times", 
int.class))));
+        // does not match the arguments so keep the signature as-is
+        assertEquals("String greetUs(String name1, String name2)",
+                getSignatureWithArgumentNames("String greetUs(String name1, 
String name2)",
+                        List.of(arg("firstName", String.class))));
+    }
+
+    private static ApiMethodArg arg(String name, Class<?> type) {
+        return new ApiMethodArg(name, type, null, type.getName(), null);
+    }
+}

Reply via email to