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

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


The following commit(s) were added to refs/heads/main by this push:
     new 076341b  Google OAuth2 with service account scenario (2LO OAuth2) 
(#6726)
076341b is described below

commit 076341bd04d759f868d9d6f13ca3d1798fa3914d
Author: Vladimir V. Bychkov <[email protected]>
AuthorDate: Thu Jan 13 16:28:36 2022 +0100

    Google OAuth2 with service account scenario (2LO OAuth2) (#6726)
    
    * CAMEL-17476: Google OAuth2 for service account
    
    * CAMEL-17476: "Google OAuth2 for service account" - used variable 
google-mail-guava-version
    
    * CAMEL-17476: "Google OAuth2 for service account" - variables moved to 
parent module
    
    * CAMEL-17476: "Google OAuth2 for service account" - endpoint uri parameter 
filename replaced with keyResource
    
    Co-authored-by: Vladimir V. Bychkov <[email protected]>
---
 components/camel-google/camel-google-mail/pom.xml  |  11 +-
 ...UsersDraftsEndpointConfigurationConfigurer.java |  30 ++
 .../GmailUsersEndpointConfigurationConfigurer.java |  30 ++
 ...sersHistoryEndpointConfigurationConfigurer.java |  30 ++
 .../GmailUsersLabelsEndpointConfiguration.java     |   2 +-
 ...UsersLabelsEndpointConfigurationConfigurer.java |  30 ++
 ...AttachmentsEndpointConfigurationConfigurer.java |  30 ++
 .../GmailUsersMessagesEndpointConfiguration.java   |   2 +-
 ...ersMessagesEndpointConfigurationConfigurer.java |  30 ++
 ...sersThreadsEndpointConfigurationConfigurer.java |  30 ++
 .../google/mail/GoogleMailComponentConfigurer.java |  23 ++
 .../mail/GoogleMailConfigurationConfigurer.java    |  30 ++
 .../google/mail/GoogleMailEndpointConfigurer.java  |  16 +
 .../google/mail/GoogleMailEndpointUriFactory.java  |   5 +-
 .../camel/component/google/mail/google-mail.json   |  10 +-
 .../google/mail/BatchGoogleMailClientFactory.java  | 164 ++++----
 .../google/mail/GoogleMailClientFactory.java       |   5 +
 .../component/google/mail/GoogleMailComponent.java |  14 +-
 .../mail/GoogleMailComponentVerifierExtension.java |  13 +-
 .../google/mail/GoogleMailConfiguration.java       |  45 +++
 .../google/mail/GmailUsersMessagesIT.java          | 432 ++++++++++-----------
 .../component/google/mail/GmailUsersThreadsIT.java | 272 ++++++-------
 .../dsl/GoogleMailComponentBuilderFactory.java     |  47 +++
 parent/pom.xml                                     |   5 +-
 24 files changed, 872 insertions(+), 434 deletions(-)

diff --git a/components/camel-google/camel-google-mail/pom.xml 
b/components/camel-google/camel-google-mail/pom.xml
index e41538b..48b07b0 100644
--- a/components/camel-google/camel-google-mail/pom.xml
+++ b/components/camel-google/camel-google-mail/pom.xml
@@ -48,7 +48,7 @@
         <dependency>
             <groupId>com.google.api-client</groupId>
             <artifactId>google-api-client</artifactId>
-            <version>${google-api-client-version}</version>
+            <version>${google-mail-api-client-version}</version>
             <exclusions>
                 <exclusion>
                     <groupId>com.google.code.findbugs</groupId>
@@ -59,7 +59,7 @@
         <dependency>
             <groupId>com.google.oauth-client</groupId>
             <artifactId>google-oauth-client-jetty</artifactId>
-            <version>${google-api-client-version}</version>
+            <version>${google-mail-api-client-version}</version>
             <exclusions>
                 <exclusion>
                     <groupId>org.mortbay.jetty</groupId>
@@ -70,7 +70,7 @@
         <dependency>
             <groupId>com.google.http-client</groupId>
             <artifactId>google-http-client-jackson2</artifactId>
-            <version>${google-api-client-version}</version>
+            <version>${google-mail-api-client-version}</version>
             <exclusions>
                 <exclusion>
                     <groupId>com.google.code.findbugs</groupId>
@@ -83,6 +83,11 @@
             <artifactId>google-api-services-gmail</artifactId>
             <version>${google-api-services-mail-version}</version>
         </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <version>${google-mail-guava-version}</version>
+        </dependency>
 
         <dependency>
             <groupId>com.sun.mail</groupId>
diff --git 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersDraftsEndpointConfigurationConfigurer.java
 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersDraftsEndpointConfigurationConfigurer.java
index d2de446..33a8281 100644
--- 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersDraftsEndpointConfigurationConfigurer.java
+++ 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersDraftsEndpointConfigurationConfigurer.java
@@ -26,10 +26,13 @@ public class 
GmailUsersDraftsEndpointConfigurationConfigurer extends org.apache.
         map.put("ClientId", java.lang.String.class);
         map.put("ClientSecret", java.lang.String.class);
         map.put("Content", com.google.api.services.gmail.model.Draft.class);
+        map.put("Delegate", java.lang.String.class);
         map.put("Id", java.lang.String.class);
+        map.put("KeyResource", java.lang.String.class);
         map.put("MediaContent", 
com.google.api.client.http.AbstractInputStreamContent.class);
         map.put("MethodName", java.lang.String.class);
         map.put("RefreshToken", java.lang.String.class);
+        map.put("Scopes", java.util.List.class);
         map.put("UserId", java.lang.String.class);
         ALL_OPTIONS = map;
     }
@@ -50,14 +53,20 @@ public class 
GmailUsersDraftsEndpointConfigurationConfigurer extends org.apache.
         case "ClientSecret": target.setClientSecret(property(camelContext, 
java.lang.String.class, value)); return true;
         case "content":
         case "Content": target.setContent(property(camelContext, 
com.google.api.services.gmail.model.Draft.class, value)); return true;
+        case "delegate":
+        case "Delegate": target.setDelegate(property(camelContext, 
java.lang.String.class, value)); return true;
         case "id":
         case "Id": target.setId(property(camelContext, java.lang.String.class, 
value)); return true;
+        case "keyresource":
+        case "KeyResource": target.setKeyResource(property(camelContext, 
java.lang.String.class, value)); return true;
         case "mediacontent":
         case "MediaContent": target.setMediaContent(property(camelContext, 
com.google.api.client.http.AbstractInputStreamContent.class, value)); return 
true;
         case "methodname":
         case "MethodName": target.setMethodName(property(camelContext, 
java.lang.String.class, value)); return true;
         case "refreshtoken":
         case "RefreshToken": target.setRefreshToken(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "scopes":
+        case "Scopes": target.setScopes(property(camelContext, 
java.util.List.class, value)); return true;
         case "userid":
         case "UserId": target.setUserId(property(camelContext, 
java.lang.String.class, value)); return true;
         default: return false;
@@ -84,14 +93,20 @@ public class 
GmailUsersDraftsEndpointConfigurationConfigurer extends org.apache.
         case "ClientSecret": return java.lang.String.class;
         case "content":
         case "Content": return com.google.api.services.gmail.model.Draft.class;
+        case "delegate":
+        case "Delegate": return java.lang.String.class;
         case "id":
         case "Id": return java.lang.String.class;
+        case "keyresource":
+        case "KeyResource": return java.lang.String.class;
         case "mediacontent":
         case "MediaContent": return 
com.google.api.client.http.AbstractInputStreamContent.class;
         case "methodname":
         case "MethodName": return java.lang.String.class;
         case "refreshtoken":
         case "RefreshToken": return java.lang.String.class;
+        case "scopes":
+        case "Scopes": return java.util.List.class;
         case "userid":
         case "UserId": return java.lang.String.class;
         default: return null;
@@ -114,18 +129,33 @@ public class 
GmailUsersDraftsEndpointConfigurationConfigurer extends org.apache.
         case "ClientSecret": return target.getClientSecret();
         case "content":
         case "Content": return target.getContent();
+        case "delegate":
+        case "Delegate": return target.getDelegate();
         case "id":
         case "Id": return target.getId();
+        case "keyresource":
+        case "KeyResource": return target.getKeyResource();
         case "mediacontent":
         case "MediaContent": return target.getMediaContent();
         case "methodname":
         case "MethodName": return target.getMethodName();
         case "refreshtoken":
         case "RefreshToken": return target.getRefreshToken();
+        case "scopes":
+        case "Scopes": return target.getScopes();
         case "userid":
         case "UserId": return target.getUserId();
         default: return null;
         }
     }
+
+    @Override
+    public Object getCollectionValueType(Object target, String name, boolean 
ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "scopes":
+        case "Scopes": return java.lang.String.class;
+        default: return null;
+        }
+    }
 }
 
diff --git 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersEndpointConfigurationConfigurer.java
 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersEndpointConfigurationConfigurer.java
index 8d3b4ec..deaf323 100644
--- 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersEndpointConfigurationConfigurer.java
+++ 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersEndpointConfigurationConfigurer.java
@@ -26,8 +26,11 @@ public class GmailUsersEndpointConfigurationConfigurer 
extends org.apache.camel.
         map.put("ClientId", java.lang.String.class);
         map.put("ClientSecret", java.lang.String.class);
         map.put("Content", 
com.google.api.services.gmail.model.WatchRequest.class);
+        map.put("Delegate", java.lang.String.class);
+        map.put("KeyResource", java.lang.String.class);
         map.put("MethodName", java.lang.String.class);
         map.put("RefreshToken", java.lang.String.class);
+        map.put("Scopes", java.util.List.class);
         map.put("UserId", java.lang.String.class);
         ALL_OPTIONS = map;
     }
@@ -48,10 +51,16 @@ public class GmailUsersEndpointConfigurationConfigurer 
extends org.apache.camel.
         case "ClientSecret": target.setClientSecret(property(camelContext, 
java.lang.String.class, value)); return true;
         case "content":
         case "Content": target.setContent(property(camelContext, 
com.google.api.services.gmail.model.WatchRequest.class, value)); return true;
+        case "delegate":
+        case "Delegate": target.setDelegate(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "keyresource":
+        case "KeyResource": target.setKeyResource(property(camelContext, 
java.lang.String.class, value)); return true;
         case "methodname":
         case "MethodName": target.setMethodName(property(camelContext, 
java.lang.String.class, value)); return true;
         case "refreshtoken":
         case "RefreshToken": target.setRefreshToken(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "scopes":
+        case "Scopes": target.setScopes(property(camelContext, 
java.util.List.class, value)); return true;
         case "userid":
         case "UserId": target.setUserId(property(camelContext, 
java.lang.String.class, value)); return true;
         default: return false;
@@ -78,10 +87,16 @@ public class GmailUsersEndpointConfigurationConfigurer 
extends org.apache.camel.
         case "ClientSecret": return java.lang.String.class;
         case "content":
         case "Content": return 
com.google.api.services.gmail.model.WatchRequest.class;
+        case "delegate":
+        case "Delegate": return java.lang.String.class;
+        case "keyresource":
+        case "KeyResource": return java.lang.String.class;
         case "methodname":
         case "MethodName": return java.lang.String.class;
         case "refreshtoken":
         case "RefreshToken": return java.lang.String.class;
+        case "scopes":
+        case "Scopes": return java.util.List.class;
         case "userid":
         case "UserId": return java.lang.String.class;
         default: return null;
@@ -104,14 +119,29 @@ public class GmailUsersEndpointConfigurationConfigurer 
extends org.apache.camel.
         case "ClientSecret": return target.getClientSecret();
         case "content":
         case "Content": return target.getContent();
+        case "delegate":
+        case "Delegate": return target.getDelegate();
+        case "keyresource":
+        case "KeyResource": return target.getKeyResource();
         case "methodname":
         case "MethodName": return target.getMethodName();
         case "refreshtoken":
         case "RefreshToken": return target.getRefreshToken();
+        case "scopes":
+        case "Scopes": return target.getScopes();
         case "userid":
         case "UserId": return target.getUserId();
         default: return null;
         }
     }
+
+    @Override
+    public Object getCollectionValueType(Object target, String name, boolean 
ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "scopes":
+        case "Scopes": return java.lang.String.class;
+        default: return null;
+        }
+    }
 }
 
diff --git 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersHistoryEndpointConfigurationConfigurer.java
 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersHistoryEndpointConfigurationConfigurer.java
index 858e4b7..d72de2f 100644
--- 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersHistoryEndpointConfigurationConfigurer.java
+++ 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersHistoryEndpointConfigurationConfigurer.java
@@ -25,8 +25,11 @@ public class 
GmailUsersHistoryEndpointConfigurationConfigurer extends org.apache
         map.put("ApplicationName", java.lang.String.class);
         map.put("ClientId", java.lang.String.class);
         map.put("ClientSecret", java.lang.String.class);
+        map.put("Delegate", java.lang.String.class);
+        map.put("KeyResource", java.lang.String.class);
         map.put("MethodName", java.lang.String.class);
         map.put("RefreshToken", java.lang.String.class);
+        map.put("Scopes", java.util.List.class);
         map.put("UserId", java.lang.String.class);
         ALL_OPTIONS = map;
     }
@@ -45,10 +48,16 @@ public class 
GmailUsersHistoryEndpointConfigurationConfigurer extends org.apache
         case "ClientId": target.setClientId(property(camelContext, 
java.lang.String.class, value)); return true;
         case "clientsecret":
         case "ClientSecret": target.setClientSecret(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "delegate":
+        case "Delegate": target.setDelegate(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "keyresource":
+        case "KeyResource": target.setKeyResource(property(camelContext, 
java.lang.String.class, value)); return true;
         case "methodname":
         case "MethodName": target.setMethodName(property(camelContext, 
java.lang.String.class, value)); return true;
         case "refreshtoken":
         case "RefreshToken": target.setRefreshToken(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "scopes":
+        case "Scopes": target.setScopes(property(camelContext, 
java.util.List.class, value)); return true;
         case "userid":
         case "UserId": target.setUserId(property(camelContext, 
java.lang.String.class, value)); return true;
         default: return false;
@@ -73,10 +82,16 @@ public class 
GmailUsersHistoryEndpointConfigurationConfigurer extends org.apache
         case "ClientId": return java.lang.String.class;
         case "clientsecret":
         case "ClientSecret": return java.lang.String.class;
+        case "delegate":
+        case "Delegate": return java.lang.String.class;
+        case "keyresource":
+        case "KeyResource": return java.lang.String.class;
         case "methodname":
         case "MethodName": return java.lang.String.class;
         case "refreshtoken":
         case "RefreshToken": return java.lang.String.class;
+        case "scopes":
+        case "Scopes": return java.util.List.class;
         case "userid":
         case "UserId": return java.lang.String.class;
         default: return null;
@@ -97,14 +112,29 @@ public class 
GmailUsersHistoryEndpointConfigurationConfigurer extends org.apache
         case "ClientId": return target.getClientId();
         case "clientsecret":
         case "ClientSecret": return target.getClientSecret();
+        case "delegate":
+        case "Delegate": return target.getDelegate();
+        case "keyresource":
+        case "KeyResource": return target.getKeyResource();
         case "methodname":
         case "MethodName": return target.getMethodName();
         case "refreshtoken":
         case "RefreshToken": return target.getRefreshToken();
+        case "scopes":
+        case "Scopes": return target.getScopes();
         case "userid":
         case "UserId": return target.getUserId();
         default: return null;
         }
     }
+
+    @Override
+    public Object getCollectionValueType(Object target, String name, boolean 
ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "scopes":
+        case "Scopes": return java.lang.String.class;
+        default: return null;
+        }
+    }
 }
 
diff --git 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersLabelsEndpointConfiguration.java
 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersLabelsEndpointConfiguration.java
index c90a0af..f175d15 100644
--- 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersLabelsEndpointConfiguration.java
+++ 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersLabelsEndpointConfiguration.java
@@ -16,7 +16,7 @@ import org.apache.camel.spi.UriParams;
  */
 @ApiParams(apiName = "labels", 
            description = "The labels collection of methods",
-           apiMethods = {@ApiMethod(methodName = "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)"}), 
@ApiMethod(methodName = "delete", description="Immediately and permanently 
deletes the specified label and removes it from any messages and threads that 
it is applied to", 
signatures={"com.google.api.services.gmail.Gmail$Users$Labels$Delete 
delete(Stri [...]
+           apiMethods = {@ApiMethod(methodName = "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)"}), 
@ApiMethod(methodName = "delete", description="Immediately and permanently 
deletes the specified label and removes it from any messages and threads that 
it is applied to", 
signatures={"com.google.api.services.gmail.Gmail$Users$Labels$Delete 
delete(Stri [...]
 @UriParams
 @Configurer(extended = true)
 public final class GmailUsersLabelsEndpointConfiguration extends 
GoogleMailConfiguration {
diff --git 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersLabelsEndpointConfigurationConfigurer.java
 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersLabelsEndpointConfigurationConfigurer.java
index 4763529..676ba83 100644
--- 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersLabelsEndpointConfigurationConfigurer.java
+++ 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersLabelsEndpointConfigurationConfigurer.java
@@ -26,9 +26,12 @@ public class GmailUsersLabelsEndpointConfigurationConfigurer 
extends org.apache.
         map.put("ClientId", java.lang.String.class);
         map.put("ClientSecret", java.lang.String.class);
         map.put("Content", com.google.api.services.gmail.model.Label.class);
+        map.put("Delegate", java.lang.String.class);
         map.put("Id", java.lang.String.class);
+        map.put("KeyResource", java.lang.String.class);
         map.put("MethodName", java.lang.String.class);
         map.put("RefreshToken", java.lang.String.class);
+        map.put("Scopes", java.util.List.class);
         map.put("UserId", java.lang.String.class);
         ALL_OPTIONS = map;
     }
@@ -49,12 +52,18 @@ public class 
GmailUsersLabelsEndpointConfigurationConfigurer extends org.apache.
         case "ClientSecret": target.setClientSecret(property(camelContext, 
java.lang.String.class, value)); return true;
         case "content":
         case "Content": target.setContent(property(camelContext, 
com.google.api.services.gmail.model.Label.class, value)); return true;
+        case "delegate":
+        case "Delegate": target.setDelegate(property(camelContext, 
java.lang.String.class, value)); return true;
         case "id":
         case "Id": target.setId(property(camelContext, java.lang.String.class, 
value)); return true;
+        case "keyresource":
+        case "KeyResource": target.setKeyResource(property(camelContext, 
java.lang.String.class, value)); return true;
         case "methodname":
         case "MethodName": target.setMethodName(property(camelContext, 
java.lang.String.class, value)); return true;
         case "refreshtoken":
         case "RefreshToken": target.setRefreshToken(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "scopes":
+        case "Scopes": target.setScopes(property(camelContext, 
java.util.List.class, value)); return true;
         case "userid":
         case "UserId": target.setUserId(property(camelContext, 
java.lang.String.class, value)); return true;
         default: return false;
@@ -81,12 +90,18 @@ public class 
GmailUsersLabelsEndpointConfigurationConfigurer extends org.apache.
         case "ClientSecret": return java.lang.String.class;
         case "content":
         case "Content": return com.google.api.services.gmail.model.Label.class;
+        case "delegate":
+        case "Delegate": return java.lang.String.class;
         case "id":
         case "Id": return java.lang.String.class;
+        case "keyresource":
+        case "KeyResource": return java.lang.String.class;
         case "methodname":
         case "MethodName": return java.lang.String.class;
         case "refreshtoken":
         case "RefreshToken": return java.lang.String.class;
+        case "scopes":
+        case "Scopes": return java.util.List.class;
         case "userid":
         case "UserId": return java.lang.String.class;
         default: return null;
@@ -109,16 +124,31 @@ public class 
GmailUsersLabelsEndpointConfigurationConfigurer extends org.apache.
         case "ClientSecret": return target.getClientSecret();
         case "content":
         case "Content": return target.getContent();
+        case "delegate":
+        case "Delegate": return target.getDelegate();
         case "id":
         case "Id": return target.getId();
+        case "keyresource":
+        case "KeyResource": return target.getKeyResource();
         case "methodname":
         case "MethodName": return target.getMethodName();
         case "refreshtoken":
         case "RefreshToken": return target.getRefreshToken();
+        case "scopes":
+        case "Scopes": return target.getScopes();
         case "userid":
         case "UserId": return target.getUserId();
         default: return null;
         }
     }
+
+    @Override
+    public Object getCollectionValueType(Object target, String name, boolean 
ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "scopes":
+        case "Scopes": return java.lang.String.class;
+        default: return null;
+        }
+    }
 }
 
diff --git 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesAttachmentsEndpointConfigurationConfigurer.java
 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesAttachmentsEndpointConfigurationConfigurer.java
index 6fac1b0..b800cc2 100644
--- 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesAttachmentsEndpointConfigurationConfigurer.java
+++ 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesAttachmentsEndpointConfigurationConfigurer.java
@@ -25,10 +25,13 @@ public class 
GmailUsersMessagesAttachmentsEndpointConfigurationConfigurer extend
         map.put("ApplicationName", java.lang.String.class);
         map.put("ClientId", java.lang.String.class);
         map.put("ClientSecret", java.lang.String.class);
+        map.put("Delegate", java.lang.String.class);
         map.put("Id", java.lang.String.class);
+        map.put("KeyResource", java.lang.String.class);
         map.put("MessageId", java.lang.String.class);
         map.put("MethodName", java.lang.String.class);
         map.put("RefreshToken", java.lang.String.class);
+        map.put("Scopes", java.util.List.class);
         map.put("UserId", java.lang.String.class);
         ALL_OPTIONS = map;
     }
@@ -47,14 +50,20 @@ public class 
GmailUsersMessagesAttachmentsEndpointConfigurationConfigurer extend
         case "ClientId": target.setClientId(property(camelContext, 
java.lang.String.class, value)); return true;
         case "clientsecret":
         case "ClientSecret": target.setClientSecret(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "delegate":
+        case "Delegate": target.setDelegate(property(camelContext, 
java.lang.String.class, value)); return true;
         case "id":
         case "Id": target.setId(property(camelContext, java.lang.String.class, 
value)); return true;
+        case "keyresource":
+        case "KeyResource": target.setKeyResource(property(camelContext, 
java.lang.String.class, value)); return true;
         case "messageid":
         case "MessageId": target.setMessageId(property(camelContext, 
java.lang.String.class, value)); return true;
         case "methodname":
         case "MethodName": target.setMethodName(property(camelContext, 
java.lang.String.class, value)); return true;
         case "refreshtoken":
         case "RefreshToken": target.setRefreshToken(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "scopes":
+        case "Scopes": target.setScopes(property(camelContext, 
java.util.List.class, value)); return true;
         case "userid":
         case "UserId": target.setUserId(property(camelContext, 
java.lang.String.class, value)); return true;
         default: return false;
@@ -79,14 +88,20 @@ public class 
GmailUsersMessagesAttachmentsEndpointConfigurationConfigurer extend
         case "ClientId": return java.lang.String.class;
         case "clientsecret":
         case "ClientSecret": return java.lang.String.class;
+        case "delegate":
+        case "Delegate": return java.lang.String.class;
         case "id":
         case "Id": return java.lang.String.class;
+        case "keyresource":
+        case "KeyResource": return java.lang.String.class;
         case "messageid":
         case "MessageId": return java.lang.String.class;
         case "methodname":
         case "MethodName": return java.lang.String.class;
         case "refreshtoken":
         case "RefreshToken": return java.lang.String.class;
+        case "scopes":
+        case "Scopes": return java.util.List.class;
         case "userid":
         case "UserId": return java.lang.String.class;
         default: return null;
@@ -107,18 +122,33 @@ public class 
GmailUsersMessagesAttachmentsEndpointConfigurationConfigurer extend
         case "ClientId": return target.getClientId();
         case "clientsecret":
         case "ClientSecret": return target.getClientSecret();
+        case "delegate":
+        case "Delegate": return target.getDelegate();
         case "id":
         case "Id": return target.getId();
+        case "keyresource":
+        case "KeyResource": return target.getKeyResource();
         case "messageid":
         case "MessageId": return target.getMessageId();
         case "methodname":
         case "MethodName": return target.getMethodName();
         case "refreshtoken":
         case "RefreshToken": return target.getRefreshToken();
+        case "scopes":
+        case "Scopes": return target.getScopes();
         case "userid":
         case "UserId": return target.getUserId();
         default: return null;
         }
     }
+
+    @Override
+    public Object getCollectionValueType(Object target, String name, boolean 
ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "scopes":
+        case "Scopes": return java.lang.String.class;
+        default: return null;
+        }
+    }
 }
 
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 0155d8c..cd1cd41 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
@@ -30,7 +30,7 @@ public final class GmailUsersMessagesEndpointConfiguration 
extends GoogleMailCon
     @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = 
"gmailImport", description="The com.google.api.services.gmail.model.Message 
media metadata or null if none"), @ApiMethod(methodName = "insert", 
description="The com.google.api.services.gmail.model.Message media metadata or 
null if none"), @ApiMethod(methodName = "send", description="The 
com.google.api.services.gmail.model.Message media metadata or null if none")})
     private com.google.api.services.gmail.model.Message content;
     @UriParam
-    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = 
"delete", description="The ID of the message to delete"), @ApiMethod(methodName 
= "get", description="The ID of the message to retrieve"), 
@ApiMethod(methodName = "modify", description="The ID of the message to 
modify"), @ApiMethod(methodName = "trash", description="The ID of the message 
to Trash"), @ApiMethod(methodName = "untrash", description="The ID of the 
message to remove from Trash")})
+    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = 
"delete", description="The ID of the message to delete"), @ApiMethod(methodName 
= "get", description="The ID of the message to retrieve. This ID is usually 
retrieved using messages.list. The ID is also contained in the result when a 
message is inserted (messages.insert) or imported (messages.import)."), 
@ApiMethod(methodName = "modify", description="The ID of the message to 
modify"), @ApiMethod(methodName = "trash", de [...]
     private String id;
     @UriParam
     @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = 
"gmailImport", description="The media HTTP content or null if none"), 
@ApiMethod(methodName = "insert", description="The media HTTP content or null 
if none"), @ApiMethod(methodName = "send", description="The media HTTP content 
or null if none")})
diff --git 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesEndpointConfigurationConfigurer.java
 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesEndpointConfigurationConfigurer.java
index 7f96166..bdcd6b7 100644
--- 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesEndpointConfigurationConfigurer.java
+++ 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesEndpointConfigurationConfigurer.java
@@ -28,11 +28,14 @@ public class 
GmailUsersMessagesEndpointConfigurationConfigurer extends org.apach
         map.put("ClientId", java.lang.String.class);
         map.put("ClientSecret", java.lang.String.class);
         map.put("Content", com.google.api.services.gmail.model.Message.class);
+        map.put("Delegate", java.lang.String.class);
         map.put("Id", java.lang.String.class);
+        map.put("KeyResource", java.lang.String.class);
         map.put("MediaContent", 
com.google.api.client.http.AbstractInputStreamContent.class);
         map.put("MethodName", java.lang.String.class);
         map.put("ModifyMessageRequest", 
com.google.api.services.gmail.model.ModifyMessageRequest.class);
         map.put("RefreshToken", java.lang.String.class);
+        map.put("Scopes", java.util.List.class);
         map.put("UserId", java.lang.String.class);
         ALL_OPTIONS = map;
     }
@@ -57,8 +60,12 @@ public class 
GmailUsersMessagesEndpointConfigurationConfigurer extends org.apach
         case "ClientSecret": target.setClientSecret(property(camelContext, 
java.lang.String.class, value)); return true;
         case "content":
         case "Content": target.setContent(property(camelContext, 
com.google.api.services.gmail.model.Message.class, value)); return true;
+        case "delegate":
+        case "Delegate": target.setDelegate(property(camelContext, 
java.lang.String.class, value)); return true;
         case "id":
         case "Id": target.setId(property(camelContext, java.lang.String.class, 
value)); return true;
+        case "keyresource":
+        case "KeyResource": target.setKeyResource(property(camelContext, 
java.lang.String.class, value)); return true;
         case "mediacontent":
         case "MediaContent": target.setMediaContent(property(camelContext, 
com.google.api.client.http.AbstractInputStreamContent.class, value)); return 
true;
         case "methodname":
@@ -67,6 +74,8 @@ public class 
GmailUsersMessagesEndpointConfigurationConfigurer extends org.apach
         case "ModifyMessageRequest": 
target.setModifyMessageRequest(property(camelContext, 
com.google.api.services.gmail.model.ModifyMessageRequest.class, value)); return 
true;
         case "refreshtoken":
         case "RefreshToken": target.setRefreshToken(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "scopes":
+        case "Scopes": target.setScopes(property(camelContext, 
java.util.List.class, value)); return true;
         case "userid":
         case "UserId": target.setUserId(property(camelContext, 
java.lang.String.class, value)); return true;
         default: return false;
@@ -97,8 +106,12 @@ public class 
GmailUsersMessagesEndpointConfigurationConfigurer extends org.apach
         case "ClientSecret": return java.lang.String.class;
         case "content":
         case "Content": return 
com.google.api.services.gmail.model.Message.class;
+        case "delegate":
+        case "Delegate": return java.lang.String.class;
         case "id":
         case "Id": return java.lang.String.class;
+        case "keyresource":
+        case "KeyResource": return java.lang.String.class;
         case "mediacontent":
         case "MediaContent": return 
com.google.api.client.http.AbstractInputStreamContent.class;
         case "methodname":
@@ -107,6 +120,8 @@ public class 
GmailUsersMessagesEndpointConfigurationConfigurer extends org.apach
         case "ModifyMessageRequest": return 
com.google.api.services.gmail.model.ModifyMessageRequest.class;
         case "refreshtoken":
         case "RefreshToken": return java.lang.String.class;
+        case "scopes":
+        case "Scopes": return java.util.List.class;
         case "userid":
         case "UserId": return java.lang.String.class;
         default: return null;
@@ -133,8 +148,12 @@ public class 
GmailUsersMessagesEndpointConfigurationConfigurer extends org.apach
         case "ClientSecret": return target.getClientSecret();
         case "content":
         case "Content": return target.getContent();
+        case "delegate":
+        case "Delegate": return target.getDelegate();
         case "id":
         case "Id": return target.getId();
+        case "keyresource":
+        case "KeyResource": return target.getKeyResource();
         case "mediacontent":
         case "MediaContent": return target.getMediaContent();
         case "methodname":
@@ -143,10 +162,21 @@ public class 
GmailUsersMessagesEndpointConfigurationConfigurer extends org.apach
         case "ModifyMessageRequest": return target.getModifyMessageRequest();
         case "refreshtoken":
         case "RefreshToken": return target.getRefreshToken();
+        case "scopes":
+        case "Scopes": return target.getScopes();
         case "userid":
         case "UserId": return target.getUserId();
         default: return null;
         }
     }
+
+    @Override
+    public Object getCollectionValueType(Object target, String name, boolean 
ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "scopes":
+        case "Scopes": return java.lang.String.class;
+        default: return null;
+        }
+    }
 }
 
diff --git 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersThreadsEndpointConfigurationConfigurer.java
 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersThreadsEndpointConfigurationConfigurer.java
index f76fa3c..a91a9af 100644
--- 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersThreadsEndpointConfigurationConfigurer.java
+++ 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersThreadsEndpointConfigurationConfigurer.java
@@ -26,9 +26,12 @@ public class 
GmailUsersThreadsEndpointConfigurationConfigurer extends org.apache
         map.put("ClientId", java.lang.String.class);
         map.put("ClientSecret", java.lang.String.class);
         map.put("Content", 
com.google.api.services.gmail.model.ModifyThreadRequest.class);
+        map.put("Delegate", java.lang.String.class);
         map.put("Id", java.lang.String.class);
+        map.put("KeyResource", java.lang.String.class);
         map.put("MethodName", java.lang.String.class);
         map.put("RefreshToken", java.lang.String.class);
+        map.put("Scopes", java.util.List.class);
         map.put("UserId", java.lang.String.class);
         ALL_OPTIONS = map;
     }
@@ -49,12 +52,18 @@ public class 
GmailUsersThreadsEndpointConfigurationConfigurer extends org.apache
         case "ClientSecret": target.setClientSecret(property(camelContext, 
java.lang.String.class, value)); return true;
         case "content":
         case "Content": target.setContent(property(camelContext, 
com.google.api.services.gmail.model.ModifyThreadRequest.class, value)); return 
true;
+        case "delegate":
+        case "Delegate": target.setDelegate(property(camelContext, 
java.lang.String.class, value)); return true;
         case "id":
         case "Id": target.setId(property(camelContext, java.lang.String.class, 
value)); return true;
+        case "keyresource":
+        case "KeyResource": target.setKeyResource(property(camelContext, 
java.lang.String.class, value)); return true;
         case "methodname":
         case "MethodName": target.setMethodName(property(camelContext, 
java.lang.String.class, value)); return true;
         case "refreshtoken":
         case "RefreshToken": target.setRefreshToken(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "scopes":
+        case "Scopes": target.setScopes(property(camelContext, 
java.util.List.class, value)); return true;
         case "userid":
         case "UserId": target.setUserId(property(camelContext, 
java.lang.String.class, value)); return true;
         default: return false;
@@ -81,12 +90,18 @@ public class 
GmailUsersThreadsEndpointConfigurationConfigurer extends org.apache
         case "ClientSecret": return java.lang.String.class;
         case "content":
         case "Content": return 
com.google.api.services.gmail.model.ModifyThreadRequest.class;
+        case "delegate":
+        case "Delegate": return java.lang.String.class;
         case "id":
         case "Id": return java.lang.String.class;
+        case "keyresource":
+        case "KeyResource": return java.lang.String.class;
         case "methodname":
         case "MethodName": return java.lang.String.class;
         case "refreshtoken":
         case "RefreshToken": return java.lang.String.class;
+        case "scopes":
+        case "Scopes": return java.util.List.class;
         case "userid":
         case "UserId": return java.lang.String.class;
         default: return null;
@@ -109,16 +124,31 @@ public class 
GmailUsersThreadsEndpointConfigurationConfigurer extends org.apache
         case "ClientSecret": return target.getClientSecret();
         case "content":
         case "Content": return target.getContent();
+        case "delegate":
+        case "Delegate": return target.getDelegate();
         case "id":
         case "Id": return target.getId();
+        case "keyresource":
+        case "KeyResource": return target.getKeyResource();
         case "methodname":
         case "MethodName": return target.getMethodName();
         case "refreshtoken":
         case "RefreshToken": return target.getRefreshToken();
+        case "scopes":
+        case "Scopes": return target.getScopes();
         case "userid":
         case "UserId": return target.getUserId();
         default: return null;
         }
     }
+
+    @Override
+    public Object getCollectionValueType(Object target, String name, boolean 
ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "scopes":
+        case "Scopes": return java.lang.String.class;
+        default: return null;
+        }
+    }
 }
 
diff --git 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailComponentConfigurer.java
 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailComponentConfigurer.java
index eea3a2f..4177bbf 100644
--- 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailComponentConfigurer.java
+++ 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailComponentConfigurer.java
@@ -23,12 +23,15 @@ public class GoogleMailComponentConfigurer extends 
PropertyConfigurerSupport imp
         map.put("applicationName", java.lang.String.class);
         map.put("clientId", java.lang.String.class);
         map.put("configuration", 
org.apache.camel.component.google.mail.GoogleMailConfiguration.class);
+        map.put("delegate", java.lang.String.class);
+        map.put("scopes", java.util.List.class);
         map.put("bridgeErrorHandler", boolean.class);
         map.put("lazyStartProducer", boolean.class);
         map.put("autowiredEnabled", boolean.class);
         map.put("clientFactory", 
org.apache.camel.component.google.mail.GoogleMailClientFactory.class);
         map.put("accessToken", java.lang.String.class);
         map.put("clientSecret", java.lang.String.class);
+        map.put("keyResource", java.lang.String.class);
         map.put("refreshToken", java.lang.String.class);
         ALL_OPTIONS = map;
     }
@@ -59,10 +62,14 @@ public class GoogleMailComponentConfigurer extends 
PropertyConfigurerSupport imp
         case "clientsecret":
         case "clientSecret": 
getOrCreateConfiguration(target).setClientSecret(property(camelContext, 
java.lang.String.class, value)); return true;
         case "configuration": target.setConfiguration(property(camelContext, 
org.apache.camel.component.google.mail.GoogleMailConfiguration.class, value)); 
return true;
+        case "delegate": 
getOrCreateConfiguration(target).setDelegate(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "keyresource":
+        case "keyResource": 
getOrCreateConfiguration(target).setKeyResource(property(camelContext, 
java.lang.String.class, value)); return true;
         case "lazystartproducer":
         case "lazyStartProducer": 
target.setLazyStartProducer(property(camelContext, boolean.class, value)); 
return true;
         case "refreshtoken":
         case "refreshToken": 
getOrCreateConfiguration(target).setRefreshToken(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "scopes": 
getOrCreateConfiguration(target).setScopes(property(camelContext, 
java.util.List.class, value)); return true;
         default: return false;
         }
     }
@@ -90,10 +97,14 @@ public class GoogleMailComponentConfigurer extends 
PropertyConfigurerSupport imp
         case "clientsecret":
         case "clientSecret": return java.lang.String.class;
         case "configuration": return 
org.apache.camel.component.google.mail.GoogleMailConfiguration.class;
+        case "delegate": return java.lang.String.class;
+        case "keyresource":
+        case "keyResource": return java.lang.String.class;
         case "lazystartproducer":
         case "lazyStartProducer": return boolean.class;
         case "refreshtoken":
         case "refreshToken": return java.lang.String.class;
+        case "scopes": return java.util.List.class;
         default: return null;
         }
     }
@@ -117,10 +128,22 @@ public class GoogleMailComponentConfigurer extends 
PropertyConfigurerSupport imp
         case "clientsecret":
         case "clientSecret": return 
getOrCreateConfiguration(target).getClientSecret();
         case "configuration": return target.getConfiguration();
+        case "delegate": return getOrCreateConfiguration(target).getDelegate();
+        case "keyresource":
+        case "keyResource": return 
getOrCreateConfiguration(target).getKeyResource();
         case "lazystartproducer":
         case "lazyStartProducer": return target.isLazyStartProducer();
         case "refreshtoken":
         case "refreshToken": return 
getOrCreateConfiguration(target).getRefreshToken();
+        case "scopes": return getOrCreateConfiguration(target).getScopes();
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getCollectionValueType(Object target, String name, boolean 
ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "scopes": return java.lang.String.class;
         default: return null;
         }
     }
diff --git 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailConfigurationConfigurer.java
 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailConfigurationConfigurer.java
index 02709d4..e1157f7 100644
--- 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailConfigurationConfigurer.java
+++ 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailConfigurationConfigurer.java
@@ -25,8 +25,11 @@ public class GoogleMailConfigurationConfigurer extends 
org.apache.camel.support.
         map.put("ApplicationName", java.lang.String.class);
         map.put("ClientId", java.lang.String.class);
         map.put("ClientSecret", java.lang.String.class);
+        map.put("Delegate", java.lang.String.class);
+        map.put("KeyResource", java.lang.String.class);
         map.put("MethodName", java.lang.String.class);
         map.put("RefreshToken", java.lang.String.class);
+        map.put("Scopes", java.util.List.class);
         ALL_OPTIONS = map;
     }
 
@@ -44,10 +47,16 @@ public class GoogleMailConfigurationConfigurer extends 
org.apache.camel.support.
         case "ClientId": target.setClientId(property(camelContext, 
java.lang.String.class, value)); return true;
         case "clientsecret":
         case "ClientSecret": target.setClientSecret(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "delegate":
+        case "Delegate": target.setDelegate(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "keyresource":
+        case "KeyResource": target.setKeyResource(property(camelContext, 
java.lang.String.class, value)); return true;
         case "methodname":
         case "MethodName": target.setMethodName(property(camelContext, 
java.lang.String.class, value)); return true;
         case "refreshtoken":
         case "RefreshToken": target.setRefreshToken(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "scopes":
+        case "Scopes": target.setScopes(property(camelContext, 
java.util.List.class, value)); return true;
         default: return false;
         }
     }
@@ -70,10 +79,16 @@ public class GoogleMailConfigurationConfigurer extends 
org.apache.camel.support.
         case "ClientId": return java.lang.String.class;
         case "clientsecret":
         case "ClientSecret": return java.lang.String.class;
+        case "delegate":
+        case "Delegate": return java.lang.String.class;
+        case "keyresource":
+        case "KeyResource": return java.lang.String.class;
         case "methodname":
         case "MethodName": return java.lang.String.class;
         case "refreshtoken":
         case "RefreshToken": return java.lang.String.class;
+        case "scopes":
+        case "Scopes": return java.util.List.class;
         default: return null;
         }
     }
@@ -92,10 +107,25 @@ public class GoogleMailConfigurationConfigurer extends 
org.apache.camel.support.
         case "ClientId": return target.getClientId();
         case "clientsecret":
         case "ClientSecret": return target.getClientSecret();
+        case "delegate":
+        case "Delegate": return target.getDelegate();
+        case "keyresource":
+        case "KeyResource": return target.getKeyResource();
         case "methodname":
         case "MethodName": return target.getMethodName();
         case "refreshtoken":
         case "RefreshToken": return target.getRefreshToken();
+        case "scopes":
+        case "Scopes": return target.getScopes();
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getCollectionValueType(Object target, String name, boolean 
ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "scopes":
+        case "Scopes": return java.lang.String.class;
         default: return null;
         }
     }
diff --git 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailEndpointConfigurer.java
 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailEndpointConfigurer.java
index 2b0f6a9..bf18167 100644
--- 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailEndpointConfigurer.java
+++ 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailEndpointConfigurer.java
@@ -24,7 +24,9 @@ public class GoogleMailEndpointConfigurer extends 
PropertyConfigurerSupport impl
         map.put("methodName", java.lang.String.class);
         map.put("applicationName", java.lang.String.class);
         map.put("clientId", java.lang.String.class);
+        map.put("delegate", java.lang.String.class);
         map.put("inBody", java.lang.String.class);
+        map.put("scopes", java.util.List.class);
         map.put("bridgeErrorHandler", boolean.class);
         map.put("sendEmptyMessageWhenIdle", boolean.class);
         map.put("exceptionHandler", 
org.apache.camel.spi.ExceptionHandler.class);
@@ -47,6 +49,7 @@ public class GoogleMailEndpointConfigurer extends 
PropertyConfigurerSupport impl
         map.put("useFixedDelay", boolean.class);
         map.put("accessToken", java.lang.String.class);
         map.put("clientSecret", java.lang.String.class);
+        map.put("keyResource", java.lang.String.class);
         map.put("refreshToken", java.lang.String.class);
         ALL_OPTIONS = map;
     }
@@ -72,6 +75,7 @@ public class GoogleMailEndpointConfigurer extends 
PropertyConfigurerSupport impl
         case "clientsecret":
         case "clientSecret": 
target.getConfiguration().setClientSecret(property(camelContext, 
java.lang.String.class, value)); return true;
         case "delay": target.setDelay(property(camelContext, long.class, 
value)); return true;
+        case "delegate": 
target.getConfiguration().setDelegate(property(camelContext, 
java.lang.String.class, value)); return true;
         case "exceptionhandler":
         case "exceptionHandler": 
target.setExceptionHandler(property(camelContext, 
org.apache.camel.spi.ExceptionHandler.class, value)); return true;
         case "exchangepattern":
@@ -81,6 +85,8 @@ public class GoogleMailEndpointConfigurer extends 
PropertyConfigurerSupport impl
         case "inBody": target.setInBody(property(camelContext, 
java.lang.String.class, value)); return true;
         case "initialdelay":
         case "initialDelay": target.setInitialDelay(property(camelContext, 
long.class, value)); return true;
+        case "keyresource":
+        case "keyResource": 
target.getConfiguration().setKeyResource(property(camelContext, 
java.lang.String.class, value)); return true;
         case "lazystartproducer":
         case "lazyStartProducer": 
target.setLazyStartProducer(property(camelContext, boolean.class, value)); 
return true;
         case "pollstrategy":
@@ -96,6 +102,7 @@ public class GoogleMailEndpointConfigurer extends 
PropertyConfigurerSupport impl
         case "scheduler": target.setScheduler(property(camelContext, 
java.lang.Object.class, value)); return true;
         case "schedulerproperties":
         case "schedulerProperties": 
target.setSchedulerProperties(property(camelContext, java.util.Map.class, 
value)); return true;
+        case "scopes": 
target.getConfiguration().setScopes(property(camelContext, 
java.util.List.class, value)); return true;
         case "sendemptymessagewhenidle":
         case "sendEmptyMessageWhenIdle": 
target.setSendEmptyMessageWhenIdle(property(camelContext, boolean.class, 
value)); return true;
         case "startscheduler":
@@ -133,6 +140,7 @@ public class GoogleMailEndpointConfigurer extends 
PropertyConfigurerSupport impl
         case "clientsecret":
         case "clientSecret": return java.lang.String.class;
         case "delay": return long.class;
+        case "delegate": return java.lang.String.class;
         case "exceptionhandler":
         case "exceptionHandler": return 
org.apache.camel.spi.ExceptionHandler.class;
         case "exchangepattern":
@@ -142,6 +150,8 @@ public class GoogleMailEndpointConfigurer extends 
PropertyConfigurerSupport impl
         case "inBody": return java.lang.String.class;
         case "initialdelay":
         case "initialDelay": return long.class;
+        case "keyresource":
+        case "keyResource": return java.lang.String.class;
         case "lazystartproducer":
         case "lazyStartProducer": return boolean.class;
         case "pollstrategy":
@@ -157,6 +167,7 @@ public class GoogleMailEndpointConfigurer extends 
PropertyConfigurerSupport impl
         case "scheduler": return java.lang.Object.class;
         case "schedulerproperties":
         case "schedulerProperties": return java.util.Map.class;
+        case "scopes": return java.util.List.class;
         case "sendemptymessagewhenidle":
         case "sendEmptyMessageWhenIdle": return boolean.class;
         case "startscheduler":
@@ -190,6 +201,7 @@ public class GoogleMailEndpointConfigurer extends 
PropertyConfigurerSupport impl
         case "clientsecret":
         case "clientSecret": return 
target.getConfiguration().getClientSecret();
         case "delay": return target.getDelay();
+        case "delegate": return target.getConfiguration().getDelegate();
         case "exceptionhandler":
         case "exceptionHandler": return target.getExceptionHandler();
         case "exchangepattern":
@@ -199,6 +211,8 @@ public class GoogleMailEndpointConfigurer extends 
PropertyConfigurerSupport impl
         case "inBody": return target.getInBody();
         case "initialdelay":
         case "initialDelay": return target.getInitialDelay();
+        case "keyresource":
+        case "keyResource": return target.getConfiguration().getKeyResource();
         case "lazystartproducer":
         case "lazyStartProducer": return target.isLazyStartProducer();
         case "pollstrategy":
@@ -214,6 +228,7 @@ public class GoogleMailEndpointConfigurer extends 
PropertyConfigurerSupport impl
         case "scheduler": return target.getScheduler();
         case "schedulerproperties":
         case "schedulerProperties": return target.getSchedulerProperties();
+        case "scopes": return target.getConfiguration().getScopes();
         case "sendemptymessagewhenidle":
         case "sendEmptyMessageWhenIdle": return 
target.isSendEmptyMessageWhenIdle();
         case "startscheduler":
@@ -231,6 +246,7 @@ public class GoogleMailEndpointConfigurer extends 
PropertyConfigurerSupport impl
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "schedulerproperties":
         case "schedulerProperties": return java.lang.Object.class;
+        case "scopes": return java.lang.String.class;
         default: return null;
         }
     }
diff --git 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailEndpointUriFactory.java
 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailEndpointUriFactory.java
index 4c1ac76..48c704e 100644
--- 
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailEndpointUriFactory.java
+++ 
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailEndpointUriFactory.java
@@ -20,11 +20,12 @@ public class GoogleMailEndpointUriFactory extends 
org.apache.camel.support.compo
     private static final Set<String> PROPERTY_NAMES;
     private static final Set<String> SECRET_PROPERTY_NAMES;
     static {
-        Set<String> props = new HashSet<>(36);
+        Set<String> props = new HashSet<>(39);
         props.add("backoffMultiplier");
         props.add("apiName");
         props.add("initialDelay");
         props.add("content");
+        props.add("delegate");
         props.add("scheduler");
         props.add("modifyMessageRequest");
         props.add("bridgeErrorHandler");
@@ -41,6 +42,7 @@ public class GoogleMailEndpointUriFactory extends 
org.apache.camel.support.compo
         props.add("repeatCount");
         props.add("timeUnit");
         props.add("clientId");
+        props.add("keyResource");
         props.add("sendEmptyMessageWhenIdle");
         props.add("schedulerProperties");
         props.add("exchangePattern");
@@ -54,6 +56,7 @@ public class GoogleMailEndpointUriFactory extends 
org.apache.camel.support.compo
         props.add("delay");
         props.add("pollStrategy");
         props.add("startScheduler");
+        props.add("scopes");
         props.add("inBody");
         props.add("exceptionHandler");
         props.add("refreshToken");
diff --git 
a/components/camel-google/camel-google-mail/src/generated/resources/org/apache/camel/component/google/mail/google-mail.json
 
b/components/camel-google/camel-google-mail/src/generated/resources/org/apache/camel/component/google/mail/google-mail.json
index 16da11a..7c666e5 100644
--- 
a/components/camel-google/camel-google-mail/src/generated/resources/org/apache/camel/component/google/mail/google-mail.json
+++ 
b/components/camel-google/camel-google-mail/src/generated/resources/org/apache/camel/component/google/mail/google-mail.json
@@ -26,12 +26,15 @@
     "applicationName": { "kind": "property", "displayName": "Application 
Name", "group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.google.mail.GoogleMailConfiguration", 
"configurationField": "configuration", "description": "Google mail application 
name. Example would be camel-google-mail\/1.0" },
     "clientId": { "kind": "property", "displayName": "Client Id", "group": 
"common", "label": "", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.google.mail.GoogleMailConfiguration", 
"configurationField": "configuration", "description": "Client ID of the mail 
application" },
     "configuration": { "kind": "property", "displayName": "Configuration", 
"group": "common", "label": "", "required": false, "type": "object", 
"javaType": "org.apache.camel.component.google.mail.GoogleMailConfiguration", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
use the shared configuration" },
+    "delegate": { "kind": "property", "displayName": "Delegate", "group": 
"common", "label": "", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.google.mail.GoogleMailConfiguration", 
"configurationField": "configuration", "description": "Delegate for wide-domain 
service account" },
+    "scopes": { "kind": "property", "displayName": "Scopes", "group": 
"common", "label": "", "required": false, "type": "array", "javaType": 
"java.util.List<java.lang.String>", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.google.mail.GoogleMailConfiguration", 
"configurationField": "configuration", "description": "GMail scopes" },
     "bridgeErrorHandler": { "kind": "property", "displayName": "Bridge Error 
Handler", "group": "consumer", "label": "consumer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "Allows for bridging the 
consumer to the Camel routing Error Handler, which mean any exceptions occurred 
while the consumer is trying to pickup incoming messages, or the likes, will 
now be processed as a me [...]
     "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start 
Producer", "group": "producer", "label": "producer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "Whether the producer 
should be started lazy (on the first message). By starting lazy you can use 
this to allow CamelContext and routes to startup in situations where a producer 
may otherwise fail during star [...]
     "autowiredEnabled": { "kind": "property", "displayName": "Autowired 
Enabled", "group": "advanced", "label": "advanced", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": true, "description": "Whether autowiring is 
enabled. This is used for automatic autowiring options (the option must be 
marked as autowired) by looking up in the registry to find if there is a single 
instance of matching type, which t [...]
     "clientFactory": { "kind": "property", "displayName": "Client Factory", 
"group": "advanced", "label": "advanced", "required": false, "type": "object", 
"javaType": "org.apache.camel.component.google.mail.GoogleMailClientFactory", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
use the GoogleCalendarClientFactory as factory for creating the client. Will by 
default use BatchGoogleMailClientFactory" },
     "accessToken": { "kind": "property", "displayName": "Access Token", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.GoogleMailConfiguration", 
"configurationField": "configuration", "description": "OAuth 2 access token. 
This typically expires after an hour so refreshToken is recommended for long 
term usage." },
     "clientSecret": { "kind": "property", "displayName": "Client Secret", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.GoogleMailConfiguration", 
"configurationField": "configuration", "description": "Client secret of the 
mail application" },
+    "keyResource": { "kind": "property", "displayName": "Key Resource", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.google.mail.GoogleMailConfiguration", 
"configurationField": "configuration", "description": "Sets .json file with 
credentials for Service account" },
     "refreshToken": { "kind": "property", "displayName": "Refresh Token", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.GoogleMailConfiguration", 
"configurationField": "configuration", "description": "OAuth 2 refresh token. 
Using this, the Google Calendar component can obtain a new accessToken whenever 
the  [...]
   },
   "properties": {
@@ -39,7 +42,9 @@
     "methodName": { "kind": "path", "displayName": "Method Name", "group": 
"common", "label": "", "required": true, "type": "string", "javaType": 
"java.lang.String", "enum": [ "attachments", "create", "delete", "get", 
"getProfile", "gmailImport", "insert", "list", "modify", "patch", "send", 
"stop", "trash", "untrash", "update", "watch" ], "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, 
"configurationClass": "org.apache.camel.component.google.mail.GoogleMa [...]
     "applicationName": { "kind": "parameter", "displayName": "Application 
Name", "group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.google.mail.GoogleMailConfiguration", 
"configurationField": "configuration", "description": "Google mail application 
name. Example would be camel-google-mail\/1.0" },
     "clientId": { "kind": "parameter", "displayName": "Client Id", "group": 
"common", "label": "", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.google.mail.GoogleMailConfiguration", 
"configurationField": "configuration", "description": "Client ID of the mail 
application" },
+    "delegate": { "kind": "parameter", "displayName": "Delegate", "group": 
"common", "label": "", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.google.mail.GoogleMailConfiguration", 
"configurationField": "configuration", "description": "Delegate for wide-domain 
service account" },
     "inBody": { "kind": "parameter", "displayName": "In Body", "group": 
"common", "label": "", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Sets the name of a parameter to be passed in the exchange In 
Body" },
+    "scopes": { "kind": "parameter", "displayName": "Scopes", "group": 
"common", "label": "", "required": false, "type": "array", "javaType": 
"java.util.List<java.lang.String>", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.google.mail.GoogleMailConfiguration", 
"configurationField": "configuration", "description": "GMail scopes" },
     "bridgeErrorHandler": { "kind": "parameter", "displayName": "Bridge Error 
Handler", "group": "consumer", "label": "consumer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "Allows for bridging the 
consumer to the Camel routing Error Handler, which mean any exceptions occurred 
while the consumer is trying to pickup incoming messages, or the likes, will 
now be processed as a m [...]
     "sendEmptyMessageWhenIdle": { "kind": "parameter", "displayName": "Send 
Empty Message When Idle", "group": "consumer", "label": "consumer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": "If 
the polling consumer did not poll any files, you can enable this option to send 
an empty message (no body) instead." },
     "exceptionHandler": { "kind": "parameter", "displayName": "Exception 
Handler", "group": "consumer (advanced)", "label": "consumer,advanced", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
let the consumer use a custom ExceptionHandler. Notice if the option 
bridgeErrorHandler is enabled then this option is not in use. By default the 
con [...]
@@ -62,13 +67,14 @@
     "useFixedDelay": { "kind": "parameter", "displayName": "Use Fixed Delay", 
"group": "scheduler", "label": "consumer,scheduler", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": true, "description": "Controls if fixed delay 
or fixed rate is used. See ScheduledExecutorService in JDK for details." },
     "accessToken": { "kind": "parameter", "displayName": "Access Token", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.GoogleMailConfiguration", 
"configurationField": "configuration", "description": "OAuth 2 access token. 
This typically expires after an hour so refreshToken is recommended for long 
term usage." },
     "clientSecret": { "kind": "parameter", "displayName": "Client Secret", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.GoogleMailConfiguration", 
"configurationField": "configuration", "description": "Client secret of the 
mail application" },
+    "keyResource": { "kind": "parameter", "displayName": "Key Resource", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.google.mail.GoogleMailConfiguration", 
"configurationField": "configuration", "description": "Sets .json file with 
credentials for Service account" },
     "refreshToken": { "kind": "parameter", "displayName": "Refresh Token", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": true, "configurationClass": 
"org.apache.camel.component.google.mail.GoogleMailConfiguration", 
"configurationField": "configuration", "description": "OAuth 2 refresh token. 
Using this, the Google Calendar component can obtain a new accessToken whenever 
the [...]
   },
   "apis": {
     "attachments": { "consumerOnly": false, "producerOnly": false, 
"description": "The attachments collection of methods", "methods": { "get": { 
"description": "Gets the specified message attachment", "signatures": [ 
"com.google.api.services.gmail.Gmail$Users$Messages$Attachments$Get get(String 
userId, String messageId, String id)" ] } } },
     "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 
[...]
+    "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 [...]
     "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 [...]
@@ -78,7 +84,7 @@
     "drafts": { "methods": { "create": { "properties": { "content": { "kind": 
"parameter", "displayName": "Content", "group": "common", "label": "", 
"required": false, "type": "object", "javaType": 
"com.google.api.services.gmail.model.Draft", "deprecated": false, "autowired": 
false, "secret": false, "description": "The 
com.google.api.services.gmail.model.Draft media metadata or null if none", 
"optional": false }, "mediaContent": { "kind": "parameter", "displayName": 
"Media Content", "gro [...]
     "history": { "methods": { "list": { "properties": { "userId": { "kind": 
"parameter", "displayName": "User Id", "group": "common", "label": "", 
"required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "The 
user's email address. The special value me can be used to indicate the 
authenticated user. default: me", "optional": false } } } } },
     "labels": { "methods": { "create": { "properties": { "content": { "kind": 
"parameter", "displayName": "Content", "group": "common", "label": "", 
"required": false, "type": "object", "javaType": 
"com.google.api.services.gmail.model.Label", "deprecated": false, "autowired": 
false, "secret": false, "description": "The 
com.google.api.services.gmail.model.Label", "optional": false }, "userId": { 
"kind": "parameter", "displayName": "User Id", "group": "common", "label": "", 
"required": fal [...]
-    "messages": { "methods": { "batchDelete": { "properties": { 
"batchDeleteMessagesRequest": { "kind": "parameter", "displayName": "Batch 
Delete Messages Request", "group": "common", "label": "", "required": false, 
"type": "object", "javaType": 
"com.google.api.services.gmail.model.BatchDeleteMessagesRequest", "deprecated": 
false, "autowired": false, "secret": false, "description": "The 
com.google.api.services.gmail.model.BatchDeleteMessagesRequest", "optional": 
false }, "userId": { "kin [...]
+    "messages": { "methods": { "batchDelete": { "properties": { 
"batchDeleteMessagesRequest": { "kind": "parameter", "displayName": "Batch 
Delete Messages Request", "group": "common", "label": "", "required": false, 
"type": "object", "javaType": 
"com.google.api.services.gmail.model.BatchDeleteMessagesRequest", "deprecated": 
false, "autowired": false, "secret": false, "description": "The 
com.google.api.services.gmail.model.BatchDeleteMessagesRequest", "optional": 
false }, "userId": { "kin [...]
     "threads": { "methods": { "delete": { "properties": { "id": { "kind": 
"parameter", "displayName": "Id", "group": "common", "label": "", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "description": "ID of the Thread to 
delete", "optional": false }, "userId": { "kind": "parameter", "displayName": 
"User Id", "group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", [...]
     "users": { "methods": { "getProfile": { "properties": { "userId": { 
"kind": "parameter", "displayName": "User Id", "group": "common", "label": "", 
"required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "The 
user's email address. The special value me can be used to indicate the 
authenticated user. default: me", "optional": false } } }, "stop": { 
"properties": { "userId": { "kind": "parameter", "disp [...]
   }
diff --git 
a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/BatchGoogleMailClientFactory.java
 
b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/BatchGoogleMailClientFactory.java
index fe29e86..5fe1f1b 100644
--- 
a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/BatchGoogleMailClientFactory.java
+++ 
b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/BatchGoogleMailClientFactory.java
@@ -1,65 +1,99 @@
-/*
- * 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.component.google.mail;
-
-import com.google.api.client.auth.oauth2.Credential;
-import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
-import com.google.api.client.http.javanet.NetHttpTransport;
-import com.google.api.client.json.jackson2.JacksonFactory;
-import com.google.api.services.gmail.Gmail;
-import org.apache.camel.RuntimeCamelException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class BatchGoogleMailClientFactory implements GoogleMailClientFactory {
-    private static final Logger LOG = 
LoggerFactory.getLogger(BatchGoogleMailClientFactory.class);
-    private NetHttpTransport transport;
-    private JacksonFactory jsonFactory;
-
-    public BatchGoogleMailClientFactory() {
-        this.transport = new NetHttpTransport();
-        this.jsonFactory = new JacksonFactory();
-    }
-
-    @Override
-    public Gmail makeClient(
-            String clientId, String clientSecret, String applicationName, 
String refreshToken, String accessToken) {
-        if (clientId == null || clientSecret == null) {
-            throw new IllegalArgumentException("clientId and clientSecret are 
required to create Gmail client.");
-        }
-        try {
-            Credential credential = authorize(clientId, clientSecret);
-
-            if (refreshToken != null && !"".equals(refreshToken)) {
-                credential.setRefreshToken(refreshToken);
-            }
-            if (accessToken != null && !"".equals(accessToken)) {
-                credential.setAccessToken(accessToken);
-            }
-            return new Gmail.Builder(transport, jsonFactory, 
credential).setApplicationName(applicationName).build();
-        } catch (Exception e) {
-            throw new RuntimeCamelException("Could not create Gmail client.", 
e);
-        }
-    }
-
-    // Authorizes the installed application to access user's protected data.
-    private Credential authorize(String clientId, String clientSecret) {
-        // authorize
-        return new 
GoogleCredential.Builder().setJsonFactory(jsonFactory).setTransport(transport)
-                .setClientSecrets(clientId, clientSecret).build();
-    }
-}
+/*
+ * 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.component.google.mail;
+
+import java.io.IOException;
+import java.util.List;
+
+import com.google.api.client.auth.oauth2.Credential;
+import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
+import com.google.api.client.http.javanet.NetHttpTransport;
+import com.google.api.client.json.jackson2.JacksonFactory;
+import com.google.api.services.gmail.Gmail;
+import org.apache.camel.CamelContext;
+import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.support.ResourceHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class BatchGoogleMailClientFactory implements GoogleMailClientFactory {
+    private static final Logger LOG = 
LoggerFactory.getLogger(BatchGoogleMailClientFactory.class);
+    private NetHttpTransport transport;
+    private JacksonFactory jsonFactory;
+
+    public BatchGoogleMailClientFactory() {
+        this.transport = new NetHttpTransport();
+        this.jsonFactory = new JacksonFactory();
+    }
+
+    @Override
+    public Gmail makeClient(
+            String clientId, String clientSecret, String applicationName, 
String refreshToken, String accessToken) {
+        if (clientId == null || clientSecret == null) {
+            throw new IllegalArgumentException("clientId and clientSecret are 
required to create Gmail client.");
+        }
+        try {
+            Credential credential = authorize(clientId, clientSecret);
+
+            if (refreshToken != null && !"".equals(refreshToken)) {
+                credential.setRefreshToken(refreshToken);
+            }
+            if (accessToken != null && !"".equals(accessToken)) {
+                credential.setAccessToken(accessToken);
+            }
+            return new Gmail.Builder(transport, jsonFactory, 
credential).setApplicationName(applicationName).build();
+        } catch (Exception e) {
+            throw new RuntimeCamelException("Could not create Gmail client.", 
e);
+        }
+    }
+
+    // Authorizes the installed application to access user's protected data.
+    private Credential authorize(String clientId, String clientSecret) {
+        // authorize
+        return new 
GoogleCredential.Builder().setJsonFactory(jsonFactory).setTransport(transport)
+                .setClientSecrets(clientId, clientSecret).build();
+    }
+
+    @Override
+    public Gmail makeClient(
+            CamelContext camelContext, String keyResource, String 
applicationName, String delegate, List<String> gmailScopes) {
+        if (keyResource == null) {
+            throw new IllegalArgumentException("keyResource is required to 
create Gmail client.");
+        }
+        try {
+            Credential credential = authorizeServiceAccount(camelContext, 
keyResource, delegate, gmailScopes);
+            return new Gmail.Builder(transport, jsonFactory, 
credential).setApplicationName(applicationName).build();
+        } catch (Exception e) {
+            throw new RuntimeCamelException("Could not create Gmail client.", 
e);
+        }
+    }
+
+    private Credential authorizeServiceAccount(
+            CamelContext camelContext, String keyResource, String delegate, 
List<String> gmailScopes) {
+        // authorize
+        try {
+            GoogleCredential cred = GoogleCredential
+                    
.fromStream(ResourceHelper.resolveMandatoryResourceAsInputStream(camelContext, 
keyResource))
+                    .createScoped(gmailScopes != null && gmailScopes.size() != 
0 ? gmailScopes : null)
+                    .createDelegated(delegate);
+            cred.refreshToken();
+            return cred;
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+}
diff --git 
a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailClientFactory.java
 
b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailClientFactory.java
index 2b79d66..ecee7ed 100644
--- 
a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailClientFactory.java
+++ 
b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailClientFactory.java
@@ -16,10 +16,15 @@
  */
 package org.apache.camel.component.google.mail;
 
+import java.util.List;
+
 import com.google.api.services.gmail.Gmail;
+import org.apache.camel.CamelContext;
 
 public interface GoogleMailClientFactory {
 
     Gmail makeClient(String clientId, String clientSecret, String 
applicationName, String refreshToken, String accessToken);
 
+    Gmail makeClient(
+            CamelContext camelContext, String keyResource, String 
applicationName, String delegate, List<String> gmailScopes);
 }
diff --git 
a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailComponent.java
 
b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailComponent.java
index 40aafc3..d1efa7f 100644
--- 
a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailComponent.java
+++ 
b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailComponent.java
@@ -53,10 +53,16 @@ public class GoogleMailComponent
 
     public Gmail getClient(GoogleMailConfiguration googleMailConfiguration) {
         if (client == null) {
-            client = 
getClientFactory().makeClient(googleMailConfiguration.getClientId(),
-                    googleMailConfiguration.getClientSecret(),
-                    googleMailConfiguration.getApplicationName(),
-                    googleMailConfiguration.getRefreshToken(), 
googleMailConfiguration.getAccessToken());
+            if (googleMailConfiguration.getClientSecret() != null) {
+                client = 
getClientFactory().makeClient(googleMailConfiguration.getClientId(),
+                        googleMailConfiguration.getClientSecret(),
+                        googleMailConfiguration.getApplicationName(),
+                        googleMailConfiguration.getRefreshToken(), 
googleMailConfiguration.getAccessToken());
+            } else if (googleMailConfiguration.getKeyResource() != null) {
+                client = getClientFactory().makeClient(getCamelContext(), 
googleMailConfiguration.getKeyResource(),
+                        googleMailConfiguration.getApplicationName(), 
googleMailConfiguration.getDelegate(),
+                        googleMailConfiguration.getScopes());
+            }
         }
         return client;
     }
diff --git 
a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailComponentVerifierExtension.java
 
b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailComponentVerifierExtension.java
index fdcd00b..9672a97 100644
--- 
a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailComponentVerifierExtension.java
+++ 
b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailComponentVerifierExtension.java
@@ -61,9 +61,16 @@ public class GoogleMailComponentVerifierExtension extends 
DefaultComponentVerifi
         try {
             GoogleMailConfiguration configuration = setProperties(new 
GoogleMailConfiguration(), parameters);
             GoogleMailClientFactory clientFactory = new 
BatchGoogleMailClientFactory();
-            Gmail client = 
clientFactory.makeClient(configuration.getClientId(), 
configuration.getClientSecret(),
-                    configuration.getApplicationName(),
-                    configuration.getRefreshToken(), 
configuration.getAccessToken());
+            Gmail client = null;
+            if (configuration.getClientSecret() != null) {
+                client = clientFactory.makeClient(configuration.getClientId(), 
configuration.getClientSecret(),
+                        configuration.getApplicationName(),
+                        configuration.getRefreshToken(), 
configuration.getAccessToken());
+            } else if (configuration.getKeyResource() != null) {
+                client = clientFactory.makeClient(getCamelContext(), 
configuration.getKeyResource(),
+                        configuration.getApplicationName(), 
configuration.getDelegate(),
+                        configuration.getScopes());
+            }
             client.users().getProfile((String) 
parameters.get("userId")).execute();
         } catch (Exception e) {
             ResultErrorBuilder errorBuilder
diff --git 
a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailConfiguration.java
 
b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailConfiguration.java
index 68fba6a..5632934 100644
--- 
a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailConfiguration.java
+++ 
b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailConfiguration.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.component.google.mail;
 
+import java.util.List;
+
 import org.apache.camel.component.google.mail.internal.GoogleMailApiName;
 import org.apache.camel.spi.Configurer;
 import org.apache.camel.spi.Metadata;
@@ -45,6 +47,13 @@ public class GoogleMailConfiguration {
     private String refreshToken;
     @UriParam
     private String applicationName;
+    /* Service account */
+    @UriParam(label = "security")
+    private String keyResource;
+    @UriParam
+    private String delegate;
+    @UriParam
+    private List<String> scopes;
 
     public GoogleMailApiName getApiName() {
         return apiName;
@@ -124,4 +133,40 @@ public class GoogleMailConfiguration {
         this.applicationName = applicationName;
     }
 
+    public String getKeyResource() {
+        return keyResource;
+    }
+
+    /**
+     * Sets "*.json" file with credentials for Service account
+     * 
+     * @param keyResource String file, classpath, or http url
+     */
+    public void setKeyResource(String keyResource) {
+        this.keyResource = keyResource;
+    }
+
+    public String getDelegate() {
+        return delegate;
+    }
+
+    /**
+     * Delegate for wide-domain service account
+     */
+    public void setDelegate(String delegate) {
+        this.delegate = delegate;
+    }
+
+    public List<String> getScopes() {
+        return scopes;
+    }
+
+    /**
+     * GMail scopes
+     * 
+     * @see com.google.api.services.gmail.GmailScopes
+     */
+    public void setScopes(List<String> scopes) {
+        this.scopes = scopes;
+    }
 }
diff --git 
a/components/camel-google/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/GmailUsersMessagesIT.java
 
b/components/camel-google/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/GmailUsersMessagesIT.java
index b67ceeb..4dc1b13 100644
--- 
a/components/camel-google/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/GmailUsersMessagesIT.java
+++ 
b/components/camel-google/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/GmailUsersMessagesIT.java
@@ -1,216 +1,216 @@
-/*
- * 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.component.google.mail;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
-import javax.mail.MessagingException;
-import javax.mail.Session;
-import javax.mail.internet.MimeMessage;
-
-import com.google.api.client.repackaged.org.apache.commons.codec.binary.Base64;
-import com.google.api.services.gmail.model.ListMessagesResponse;
-import com.google.api.services.gmail.model.Message;
-import org.apache.camel.builder.RouteBuilder;
-import 
org.apache.camel.component.google.mail.internal.GmailUsersMessagesApiMethod;
-import org.apache.camel.component.google.mail.internal.GoogleMailApiCollection;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.condition.EnabledIf;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-/**
- * Test class for {@link com.google.api.services.gmail.Gmail$Users$Messages} 
APIs.
- */
-@EnabledIf(value = 
"org.apache.camel.component.google.mail.AbstractGoogleMailTestSupport#hasCredentials",
-           disabledReason = "Google Mail credentials were not provided")
-public class GmailUsersMessagesIT extends AbstractGoogleMailTestSupport {
-
-    // userid of the currently authenticated user
-    public static final String CURRENT_USERID = "me";
-    private static final Logger LOG = 
LoggerFactory.getLogger(GmailUsersMessagesIT.class);
-    private static final String PATH_PREFIX
-            = 
GoogleMailApiCollection.getCollection().getApiName(GmailUsersMessagesApiMethod.class).getName();
-
-    @Test
-    public void testMessages() throws Exception {
-
-        // ==== Send test email ====
-        Message testEmail = createTestEmail();
-        Map<String, Object> headers = new HashMap<>();
-        // parameter type is String
-        headers.put("CamelGoogleMail.userId", CURRENT_USERID);
-        // parameter type is com.google.api.services.gmail.model.Message
-        headers.put("CamelGoogleMail.content", testEmail);
-
-        com.google.api.services.gmail.model.Message result = 
requestBodyAndHeaders("direct://SEND", null, headers);
-        assertNotNull(result, "send result");
-        String testEmailId = result.getId();
-
-        // ==== Search for message we just sent ====
-        headers = new HashMap<>();
-        headers.put("CamelGoogleMail.q", "subject:\"Hello from 
camel-google-mail\"");
-        // using String message body for single parameter "userId"
-        ListMessagesResponse listOfMessages = requestBody("direct://LIST", 
CURRENT_USERID);
-        assertTrue(idInList(testEmailId, listOfMessages));
-
-        // ===== trash it ====
-        headers = new HashMap<>();
-        // parameter type is String
-        headers.put("CamelGoogleMail.userId", CURRENT_USERID);
-        // parameter type is String
-        headers.put("CamelGoogleMail.id", testEmailId);
-        requestBodyAndHeaders("direct://TRASH", null, headers);
-
-        // ==== Search for message we just trashed ====
-        headers = new HashMap<>();
-        headers.put("CamelGoogleMail.q", "subject:\"Hello from 
camel-google-mail\"");
-        // using String message body for single parameter "userId"
-        listOfMessages = requestBody("direct://LIST", CURRENT_USERID);
-        assertFalse(idInList(testEmailId, listOfMessages));
-
-        // ===== untrash it ====
-        headers = new HashMap<>();
-        // parameter type is String
-        headers.put("CamelGoogleMail.userId", CURRENT_USERID);
-        // parameter type is String
-        headers.put("CamelGoogleMail.id", testEmailId);
-        requestBodyAndHeaders("direct://UNTRASH", null, headers);
-
-        // ==== Search for message we just trashed ====
-        headers = new HashMap<>();
-        headers.put("CamelGoogleMail.q", "subject:\"Hello from 
camel-google-mail\"");
-        // using String message body for single parameter "userId"
-        listOfMessages = requestBody("direct://LIST", CURRENT_USERID);
-        assertTrue(idInList(testEmailId, listOfMessages));
-
-        // ===== permanently delete it ====
-        headers = new HashMap<>();
-        // parameter type is String
-        headers.put("CamelGoogleMail.userId", CURRENT_USERID);
-        // parameter type is String
-        headers.put("CamelGoogleMail.id", testEmailId);
-        requestBodyAndHeaders("direct://DELETE", null, headers);
-
-        // ==== Search for message we just deleted ====
-        headers = new HashMap<>();
-        headers.put("CamelGoogleMail.q", "subject:\"Hello from 
camel-google-mail\"");
-        // using String message body for single parameter "userId"
-        listOfMessages = requestBody("direct://LIST", CURRENT_USERID);
-        assertFalse(idInList(testEmailId, listOfMessages));
-    }
-
-    private boolean idInList(String testEmailId, ListMessagesResponse 
listOfMessages) {
-        assertNotNull(listOfMessages, "list result");
-        assertTrue(!listOfMessages.getMessages().isEmpty());
-        boolean foundMessage = false;
-        for (Message m : listOfMessages.getMessages()) {
-            if (testEmailId.equals(m.getId())) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    private Message createTestEmail() throws MessagingException, IOException {
-        com.google.api.services.gmail.model.Profile profile
-                = requestBody("google-mail://users/getProfile?inBody=userId", 
CURRENT_USERID);
-        Properties props = new Properties();
-        Session session = Session.getDefaultInstance(props, null);
-        MimeMessage mm = new MimeMessage(session);
-        mm.addRecipients(javax.mail.Message.RecipientType.TO, 
profile.getEmailAddress());
-        mm.setSubject("Hello from camel-google-mail");
-        mm.setContent("Camel rocks!", "text/plain");
-        Message createMessageWithEmail = createMessageWithEmail(mm);
-        return createMessageWithEmail;
-    }
-
-    private MimeMessage toMimeMessage(Message message) throws 
MessagingException {
-        byte[] emailBytes = Base64.decodeBase64(message.getRaw());
-
-        Properties props = new Properties();
-        Session session = Session.getDefaultInstance(props, null);
-
-        return new MimeMessage(session, new ByteArrayInputStream(emailBytes));
-    }
-
-    private Message createMessageWithEmail(MimeMessage email) throws 
MessagingException, IOException {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        email.writeTo(baos);
-        String encodedEmail = 
Base64.encodeBase64URLSafeString(baos.toByteArray());
-        Message message = new Message();
-        message.setRaw(encodedEmail);
-        return message;
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() {
-                // test route for attachments
-                from("direct://ATTACHMENTS").to("google-mail://" + PATH_PREFIX 
+ "/attachments");
-
-                // test route for delete
-                from("direct://DELETE").to("google-mail://" + PATH_PREFIX + 
"/delete");
-
-                // test route for get
-                from("direct://GET").to("google-mail://" + PATH_PREFIX + 
"/get");
-
-                // test route for gmailImport
-                from("direct://GMAILIMPORT").to("google-mail://" + PATH_PREFIX 
+ "/gmailImport");
-
-                // test route for gmailImport
-                from("direct://GMAILIMPORT_1").to("google-mail://" + 
PATH_PREFIX + "/gmailImport");
-
-                // test route for insert
-                from("direct://INSERT").to("google-mail://" + PATH_PREFIX + 
"/insert");
-
-                // test route for insert
-                from("direct://INSERT_1").to("google-mail://" + PATH_PREFIX + 
"/insert");
-
-                // test route for list
-                from("direct://LIST").to("google-mail://" + PATH_PREFIX + 
"/list?inBody=userId");
-
-                // test route for modify
-                from("direct://MODIFY").to("google-mail://" + PATH_PREFIX + 
"/modify");
-
-                // test route for send
-                from("direct://SEND").to("google-mail://" + PATH_PREFIX + 
"/send");
-
-                // test route for send
-                from("direct://SEND_1").to("google-mail://" + PATH_PREFIX + 
"/send");
-
-                // test route for trash
-                from("direct://TRASH").to("google-mail://" + PATH_PREFIX + 
"/trash");
-
-                // test route for untrash
-                from("direct://UNTRASH").to("google-mail://" + PATH_PREFIX + 
"/untrash");
-
-            }
-        };
-    }
-}
+/*
+ * 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.component.google.mail;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import javax.mail.MessagingException;
+import javax.mail.Session;
+import javax.mail.internet.MimeMessage;
+
+import com.google.api.services.gmail.model.ListMessagesResponse;
+import com.google.api.services.gmail.model.Message;
+import org.apache.camel.builder.RouteBuilder;
+import 
org.apache.camel.component.google.mail.internal.GmailUsersMessagesApiMethod;
+import org.apache.camel.component.google.mail.internal.GoogleMailApiCollection;
+import org.apache.commons.codec.binary.Base64;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.EnabledIf;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * Test class for {@link com.google.api.services.gmail.Gmail$Users$Messages} 
APIs.
+ */
+@EnabledIf(value = 
"org.apache.camel.component.google.mail.AbstractGoogleMailTestSupport#hasCredentials",
+           disabledReason = "Google Mail credentials were not provided")
+public class GmailUsersMessagesIT extends AbstractGoogleMailTestSupport {
+
+    // userid of the currently authenticated user
+    public static final String CURRENT_USERID = "me";
+    private static final Logger LOG = 
LoggerFactory.getLogger(GmailUsersMessagesIT.class);
+    private static final String PATH_PREFIX
+            = 
GoogleMailApiCollection.getCollection().getApiName(GmailUsersMessagesApiMethod.class).getName();
+
+    @Test
+    public void testMessages() throws Exception {
+
+        // ==== Send test email ====
+        Message testEmail = createTestEmail();
+        Map<String, Object> headers = new HashMap<>();
+        // parameter type is String
+        headers.put("CamelGoogleMail.userId", CURRENT_USERID);
+        // parameter type is com.google.api.services.gmail.model.Message
+        headers.put("CamelGoogleMail.content", testEmail);
+
+        com.google.api.services.gmail.model.Message result = 
requestBodyAndHeaders("direct://SEND", null, headers);
+        assertNotNull(result, "send result");
+        String testEmailId = result.getId();
+
+        // ==== Search for message we just sent ====
+        headers = new HashMap<>();
+        headers.put("CamelGoogleMail.q", "subject:\"Hello from 
camel-google-mail\"");
+        // using String message body for single parameter "userId"
+        ListMessagesResponse listOfMessages = requestBody("direct://LIST", 
CURRENT_USERID);
+        assertTrue(idInList(testEmailId, listOfMessages));
+
+        // ===== trash it ====
+        headers = new HashMap<>();
+        // parameter type is String
+        headers.put("CamelGoogleMail.userId", CURRENT_USERID);
+        // parameter type is String
+        headers.put("CamelGoogleMail.id", testEmailId);
+        requestBodyAndHeaders("direct://TRASH", null, headers);
+
+        // ==== Search for message we just trashed ====
+        headers = new HashMap<>();
+        headers.put("CamelGoogleMail.q", "subject:\"Hello from 
camel-google-mail\"");
+        // using String message body for single parameter "userId"
+        listOfMessages = requestBody("direct://LIST", CURRENT_USERID);
+        assertFalse(idInList(testEmailId, listOfMessages));
+
+        // ===== untrash it ====
+        headers = new HashMap<>();
+        // parameter type is String
+        headers.put("CamelGoogleMail.userId", CURRENT_USERID);
+        // parameter type is String
+        headers.put("CamelGoogleMail.id", testEmailId);
+        requestBodyAndHeaders("direct://UNTRASH", null, headers);
+
+        // ==== Search for message we just trashed ====
+        headers = new HashMap<>();
+        headers.put("CamelGoogleMail.q", "subject:\"Hello from 
camel-google-mail\"");
+        // using String message body for single parameter "userId"
+        listOfMessages = requestBody("direct://LIST", CURRENT_USERID);
+        assertTrue(idInList(testEmailId, listOfMessages));
+
+        // ===== permanently delete it ====
+        headers = new HashMap<>();
+        // parameter type is String
+        headers.put("CamelGoogleMail.userId", CURRENT_USERID);
+        // parameter type is String
+        headers.put("CamelGoogleMail.id", testEmailId);
+        requestBodyAndHeaders("direct://DELETE", null, headers);
+
+        // ==== Search for message we just deleted ====
+        headers = new HashMap<>();
+        headers.put("CamelGoogleMail.q", "subject:\"Hello from 
camel-google-mail\"");
+        // using String message body for single parameter "userId"
+        listOfMessages = requestBody("direct://LIST", CURRENT_USERID);
+        assertFalse(idInList(testEmailId, listOfMessages));
+    }
+
+    private boolean idInList(String testEmailId, ListMessagesResponse 
listOfMessages) {
+        assertNotNull(listOfMessages, "list result");
+        assertTrue(!listOfMessages.getMessages().isEmpty());
+        boolean foundMessage = false;
+        for (Message m : listOfMessages.getMessages()) {
+            if (testEmailId.equals(m.getId())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private Message createTestEmail() throws MessagingException, IOException {
+        com.google.api.services.gmail.model.Profile profile
+                = requestBody("google-mail://users/getProfile?inBody=userId", 
CURRENT_USERID);
+        Properties props = new Properties();
+        Session session = Session.getDefaultInstance(props, null);
+        MimeMessage mm = new MimeMessage(session);
+        mm.addRecipients(javax.mail.Message.RecipientType.TO, 
profile.getEmailAddress());
+        mm.setSubject("Hello from camel-google-mail");
+        mm.setContent("Camel rocks!", "text/plain");
+        Message createMessageWithEmail = createMessageWithEmail(mm);
+        return createMessageWithEmail;
+    }
+
+    private MimeMessage toMimeMessage(Message message) throws 
MessagingException {
+        byte[] emailBytes = Base64.decodeBase64(message.getRaw());
+
+        Properties props = new Properties();
+        Session session = Session.getDefaultInstance(props, null);
+
+        return new MimeMessage(session, new ByteArrayInputStream(emailBytes));
+    }
+
+    private Message createMessageWithEmail(MimeMessage email) throws 
MessagingException, IOException {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        email.writeTo(baos);
+        String encodedEmail = 
Base64.encodeBase64URLSafeString(baos.toByteArray());
+        Message message = new Message();
+        message.setRaw(encodedEmail);
+        return message;
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() {
+                // test route for attachments
+                from("direct://ATTACHMENTS").to("google-mail://" + PATH_PREFIX 
+ "/attachments");
+
+                // test route for delete
+                from("direct://DELETE").to("google-mail://" + PATH_PREFIX + 
"/delete");
+
+                // test route for get
+                from("direct://GET").to("google-mail://" + PATH_PREFIX + 
"/get");
+
+                // test route for gmailImport
+                from("direct://GMAILIMPORT").to("google-mail://" + PATH_PREFIX 
+ "/gmailImport");
+
+                // test route for gmailImport
+                from("direct://GMAILIMPORT_1").to("google-mail://" + 
PATH_PREFIX + "/gmailImport");
+
+                // test route for insert
+                from("direct://INSERT").to("google-mail://" + PATH_PREFIX + 
"/insert");
+
+                // test route for insert
+                from("direct://INSERT_1").to("google-mail://" + PATH_PREFIX + 
"/insert");
+
+                // test route for list
+                from("direct://LIST").to("google-mail://" + PATH_PREFIX + 
"/list?inBody=userId");
+
+                // test route for modify
+                from("direct://MODIFY").to("google-mail://" + PATH_PREFIX + 
"/modify");
+
+                // test route for send
+                from("direct://SEND").to("google-mail://" + PATH_PREFIX + 
"/send");
+
+                // test route for send
+                from("direct://SEND_1").to("google-mail://" + PATH_PREFIX + 
"/send");
+
+                // test route for trash
+                from("direct://TRASH").to("google-mail://" + PATH_PREFIX + 
"/trash");
+
+                // test route for untrash
+                from("direct://UNTRASH").to("google-mail://" + PATH_PREFIX + 
"/untrash");
+
+            }
+        };
+    }
+}
diff --git 
a/components/camel-google/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/GmailUsersThreadsIT.java
 
b/components/camel-google/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/GmailUsersThreadsIT.java
index 5cba04c..6f8b31a 100644
--- 
a/components/camel-google/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/GmailUsersThreadsIT.java
+++ 
b/components/camel-google/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/GmailUsersThreadsIT.java
@@ -1,136 +1,136 @@
-/*
- * 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.component.google.mail;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
-import javax.mail.MessagingException;
-import javax.mail.Session;
-import javax.mail.internet.MimeMessage;
-
-import com.google.api.client.repackaged.org.apache.commons.codec.binary.Base64;
-import com.google.api.services.gmail.model.Message;
-import org.apache.camel.builder.RouteBuilder;
-import 
org.apache.camel.component.google.mail.internal.GmailUsersThreadsApiMethod;
-import org.apache.camel.component.google.mail.internal.GoogleMailApiCollection;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.condition.EnabledIf;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-/**
- * Test class for {@link com.google.api.services.gmail.Gmail$Users$Threads} 
APIs.
- */
-@EnabledIf(value = 
"org.apache.camel.component.google.mail.AbstractGoogleMailTestSupport#hasCredentials",
-           disabledReason = "Google Mail credentials were not provided")
-public class GmailUsersThreadsIT extends AbstractGoogleMailTestSupport {
-
-    private static final Logger LOG = 
LoggerFactory.getLogger(GmailUsersThreadsIT.class);
-    private static final String PATH_PREFIX
-            = 
GoogleMailApiCollection.getCollection().getApiName(GmailUsersThreadsApiMethod.class).getName();
-
-    private Message createThreadedTestEmail(String previousThreadId) throws 
MessagingException, IOException {
-        com.google.api.services.gmail.model.Profile profile
-                = requestBody("google-mail://users/getProfile?inBody=userId", 
CURRENT_USERID);
-        Properties props = new Properties();
-        Session session = Session.getDefaultInstance(props, null);
-        MimeMessage mm = new MimeMessage(session);
-        mm.addRecipients(javax.mail.Message.RecipientType.TO, 
profile.getEmailAddress());
-        mm.setSubject("Hello from camel-google-mail");
-        mm.setContent("Camel rocks!", "text/plain");
-        Message createMessageWithEmail = createMessageWithEmail(mm);
-        if (previousThreadId != null) {
-            createMessageWithEmail.setThreadId(previousThreadId);
-        }
-
-        Map<String, Object> headers = new HashMap<>();
-        // parameter type is String
-        headers.put("CamelGoogleMail.userId", CURRENT_USERID);
-        // parameter type is com.google.api.services.gmail.model.Message
-        headers.put("CamelGoogleMail.content", createMessageWithEmail);
-
-        return requestBodyAndHeaders("google-mail://messages/send", null, 
headers);
-    }
-
-    private Message createMessageWithEmail(MimeMessage email) throws 
MessagingException, IOException {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        email.writeTo(baos);
-        String encodedEmail = 
Base64.encodeBase64URLSafeString(baos.toByteArray());
-        Message message = new Message();
-        message.setRaw(encodedEmail);
-        return message;
-    }
-
-    @Test
-    public void testList() throws Exception {
-        Message m1 = createThreadedTestEmail(null);
-        Message m2 = createThreadedTestEmail(m1.getThreadId());
-
-        Map<String, Object> headers = new HashMap<>();
-        headers.put("CamelGoogleMail.q", "subject:\"Hello from 
camel-google-mail\"");
-
-        // using String message body for single parameter "userId"
-        com.google.api.services.gmail.model.ListThreadsResponse result
-                = requestBodyAndHeaders("direct://LIST", CURRENT_USERID, 
headers);
-
-        assertNotNull(result, "list result");
-        assertTrue(result.getThreads().size() > 0);
-        LOG.debug("list: " + result);
-
-        headers = new HashMap<>();
-        // parameter type is String
-        headers.put("CamelGoogleMail.userId", CURRENT_USERID);
-        // parameter type is String
-        headers.put("CamelGoogleMail.id", m1.getThreadId());
-
-        requestBodyAndHeaders("direct://DELETE", null, headers);
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() {
-                // test route for delete
-                from("direct://DELETE").to("google-mail://" + PATH_PREFIX + 
"/delete");
-
-                // test route for get
-                from("direct://GET").to("google-mail://" + PATH_PREFIX + 
"/get");
-
-                // test route for list
-                from("direct://LIST").to("google-mail://" + PATH_PREFIX + 
"/list?inBody=userId");
-
-                // test route for modify
-                from("direct://MODIFY").to("google-mail://" + PATH_PREFIX + 
"/modify");
-
-                // test route for trash
-                from("direct://TRASH").to("google-mail://" + PATH_PREFIX + 
"/trash");
-
-                // test route for untrash
-                from("direct://UNTRASH").to("google-mail://" + PATH_PREFIX + 
"/untrash");
-
-            }
-        };
-    }
-}
+/*
+ * 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.component.google.mail;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import javax.mail.MessagingException;
+import javax.mail.Session;
+import javax.mail.internet.MimeMessage;
+
+import com.google.api.services.gmail.model.Message;
+import org.apache.camel.builder.RouteBuilder;
+import 
org.apache.camel.component.google.mail.internal.GmailUsersThreadsApiMethod;
+import org.apache.camel.component.google.mail.internal.GoogleMailApiCollection;
+import org.apache.commons.codec.binary.Base64;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.EnabledIf;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * Test class for {@link com.google.api.services.gmail.Gmail$Users$Threads} 
APIs.
+ */
+@EnabledIf(value = 
"org.apache.camel.component.google.mail.AbstractGoogleMailTestSupport#hasCredentials",
+           disabledReason = "Google Mail credentials were not provided")
+public class GmailUsersThreadsIT extends AbstractGoogleMailTestSupport {
+
+    private static final Logger LOG = 
LoggerFactory.getLogger(GmailUsersThreadsIT.class);
+    private static final String PATH_PREFIX
+            = 
GoogleMailApiCollection.getCollection().getApiName(GmailUsersThreadsApiMethod.class).getName();
+
+    private Message createThreadedTestEmail(String previousThreadId) throws 
MessagingException, IOException {
+        com.google.api.services.gmail.model.Profile profile
+                = requestBody("google-mail://users/getProfile?inBody=userId", 
CURRENT_USERID);
+        Properties props = new Properties();
+        Session session = Session.getDefaultInstance(props, null);
+        MimeMessage mm = new MimeMessage(session);
+        mm.addRecipients(javax.mail.Message.RecipientType.TO, 
profile.getEmailAddress());
+        mm.setSubject("Hello from camel-google-mail");
+        mm.setContent("Camel rocks!", "text/plain");
+        Message createMessageWithEmail = createMessageWithEmail(mm);
+        if (previousThreadId != null) {
+            createMessageWithEmail.setThreadId(previousThreadId);
+        }
+
+        Map<String, Object> headers = new HashMap<>();
+        // parameter type is String
+        headers.put("CamelGoogleMail.userId", CURRENT_USERID);
+        // parameter type is com.google.api.services.gmail.model.Message
+        headers.put("CamelGoogleMail.content", createMessageWithEmail);
+
+        return requestBodyAndHeaders("google-mail://messages/send", null, 
headers);
+    }
+
+    private Message createMessageWithEmail(MimeMessage email) throws 
MessagingException, IOException {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        email.writeTo(baos);
+        String encodedEmail = 
Base64.encodeBase64URLSafeString(baos.toByteArray());
+        Message message = new Message();
+        message.setRaw(encodedEmail);
+        return message;
+    }
+
+    @Test
+    public void testList() throws Exception {
+        Message m1 = createThreadedTestEmail(null);
+        Message m2 = createThreadedTestEmail(m1.getThreadId());
+
+        Map<String, Object> headers = new HashMap<>();
+        headers.put("CamelGoogleMail.q", "subject:\"Hello from 
camel-google-mail\"");
+
+        // using String message body for single parameter "userId"
+        com.google.api.services.gmail.model.ListThreadsResponse result
+                = requestBodyAndHeaders("direct://LIST", CURRENT_USERID, 
headers);
+
+        assertNotNull(result, "list result");
+        assertTrue(result.getThreads().size() > 0);
+        LOG.debug("list: " + result);
+
+        headers = new HashMap<>();
+        // parameter type is String
+        headers.put("CamelGoogleMail.userId", CURRENT_USERID);
+        // parameter type is String
+        headers.put("CamelGoogleMail.id", m1.getThreadId());
+
+        requestBodyAndHeaders("direct://DELETE", null, headers);
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() {
+                // test route for delete
+                from("direct://DELETE").to("google-mail://" + PATH_PREFIX + 
"/delete");
+
+                // test route for get
+                from("direct://GET").to("google-mail://" + PATH_PREFIX + 
"/get");
+
+                // test route for list
+                from("direct://LIST").to("google-mail://" + PATH_PREFIX + 
"/list?inBody=userId");
+
+                // test route for modify
+                from("direct://MODIFY").to("google-mail://" + PATH_PREFIX + 
"/modify");
+
+                // test route for trash
+                from("direct://TRASH").to("google-mail://" + PATH_PREFIX + 
"/trash");
+
+                // test route for untrash
+                from("direct://UNTRASH").to("google-mail://" + PATH_PREFIX + 
"/untrash");
+
+            }
+        };
+    }
+}
diff --git 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/GoogleMailComponentBuilderFactory.java
 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/GoogleMailComponentBuilderFactory.java
index 380e766..08e8bdd 100644
--- 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/GoogleMailComponentBuilderFactory.java
+++ 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/GoogleMailComponentBuilderFactory.java
@@ -96,6 +96,50 @@ public interface GoogleMailComponentBuilderFactory {
             return this;
         }
         /**
+         * Delegate for wide-domain service account.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param delegate the value to set
+         * @return the dsl builder
+         */
+        default GoogleMailComponentBuilder delegate(java.lang.String delegate) 
{
+            doSetProperty("delegate", delegate);
+            return this;
+        }
+        /**
+         * Filename .json with credentials for Service account.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param filename the value to set
+         * @return the dsl builder
+         */
+        default GoogleMailComponentBuilder filename(java.lang.String filename) 
{
+            doSetProperty("filename", filename);
+            return this;
+        }
+        /**
+         * GMail scopes.
+         * 
+         * The option is a:
+         * 
&lt;code&gt;java.util.List&amp;lt;java.lang.String&amp;gt;&lt;/code&gt; type.
+         * 
+         * Group: common
+         * 
+         * @param scopes the value to set
+         * @return the dsl builder
+         */
+        default GoogleMailComponentBuilder scopes(
+                java.util.List<java.lang.String> scopes) {
+            doSetProperty("scopes", scopes);
+            return this;
+        }
+        /**
          * Allows for bridging the consumer to the Camel routing Error Handler,
          * which mean any exceptions occurred while the consumer is trying to
          * pickup incoming messages, or the likes, will now be processed as a
@@ -254,6 +298,9 @@ public interface GoogleMailComponentBuilderFactory {
             case "applicationName": 
getOrCreateConfiguration((GoogleMailComponent) 
component).setApplicationName((java.lang.String) value); return true;
             case "clientId": getOrCreateConfiguration((GoogleMailComponent) 
component).setClientId((java.lang.String) value); return true;
             case "configuration": ((GoogleMailComponent) 
component).setConfiguration((org.apache.camel.component.google.mail.GoogleMailConfiguration)
 value); return true;
+            case "delegate": getOrCreateConfiguration((GoogleMailComponent) 
component).setDelegate((java.lang.String) value); return true;
+            case "filename": getOrCreateConfiguration((GoogleMailComponent) 
component).setFilename((java.lang.String) value); return true;
+            case "scopes": getOrCreateConfiguration((GoogleMailComponent) 
component).setScopes((java.util.List) value); return true;
             case "bridgeErrorHandler": ((GoogleMailComponent) 
component).setBridgeErrorHandler((boolean) value); return true;
             case "lazyStartProducer": ((GoogleMailComponent) 
component).setLazyStartProducer((boolean) value); return true;
             case "autowiredEnabled": ((GoogleMailComponent) 
component).setAutowiredEnabled((boolean) value); return true;
diff --git a/parent/pom.xml b/parent/pom.xml
index dda03eb..596d8d4 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -208,12 +208,13 @@
         
<google-api-services-drive-version>v2-rev297-1.22.0</google-api-services-drive-version>
         
<google-api-services-calendar-version>v3-rev291-1.22.0</google-api-services-calendar-version>
         
<google-api-services-sheets-version>v4-rev551-1.22.0</google-api-services-sheets-version>
-        
<google-api-services-mail-version>v1-rev81-1.22.0</google-api-services-mail-version>
         <google-cloud-bom-version>16.3.0</google-cloud-bom-version>
         
<google-cloud-functions-bom-version>1.0.8</google-cloud-functions-bom-version>
         
<google-cloud-functions-gax-grpc-version>1.62.0</google-cloud-functions-gax-grpc-version>
         <google-cloud-guava-version>30.0-jre</google-cloud-guava-version>
-        <google-mail-guava-version>17.0</google-mail-guava-version>
+        <google-mail-guava-version>20.0</google-mail-guava-version>
+        <google-mail-api-client-version>1.32.1</google-mail-api-client-version>
+        
<google-api-services-mail-version>v1-rev20211108-1.32.1</google-api-services-mail-version>
         <graaljs-version>21.3.0</graaljs-version>
         <graphql-java-version>14.0</graphql-java-version>
         <grizzly-websockets-version>2.4.4</grizzly-websockets-version>

Reply via email to