You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2022/06/08 04:23:20 UTC

[camel] branch camel-3.14.x updated: CAMEL-17941 -(Backport) Dropbox: long-lived access tokens are retired, must use refresh token (#7736)

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

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


The following commit(s) were added to refs/heads/camel-3.14.x by this push:
     new 65fe4dd4a5e CAMEL-17941 -(Backport) Dropbox: long-lived access tokens are retired, must use refresh token (#7736)
65fe4dd4a5e is described below

commit 65fe4dd4a5e0999cb8ab31781d8482125787c8d5
Author: Rhuan Rocha <rh...@gmail.com>
AuthorDate: Wed Jun 8 01:23:14 2022 -0300

    CAMEL-17941 -(Backport) Dropbox: long-lived access tokens are retired, must use refresh token (#7736)
    
    Signed-off-by: Rhuan Rocha <rh...@gmail.com>
---
 .../dropbox/DropboxEndpointConfigurer.java         |  24 +++
 .../dropbox/DropboxEndpointUriFactory.java         |   6 +-
 .../apache/camel/component/dropbox/dropbox.json    |   4 +
 .../camel/component/dropbox/DropboxComponent.java  |   7 +
 .../component/dropbox/DropboxConfiguration.java    |  73 ++++++-
 .../validator/DropboxConfigurationValidator.java   |  16 +-
 .../src/main/resources/dropbox.properties          |   3 +
 .../DropboxComponentVerifierExtensionTest.java     |   8 +
 .../component/dropbox/DropboxConsumerTest.java     |  25 ++-
 .../dropbox/integration/DropboxTestSupport.java    |  13 +-
 .../consumer/DropboxConsumerGetSingleIT.java       |  11 +-
 .../consumer/DropboxConsumerSearchQueryIT.java     |  12 +-
 .../integration/producer/DropboxProducerDelIT.java |   9 +-
 .../producer/DropboxProducerGetFolderIT.java       |  17 +-
 .../producer/DropboxProducerGetSingleIT.java       |  11 +-
 .../producer/DropboxProducerMoveIT.java            |  11 +-
 .../producer/DropboxProducerPutSingleFileIT.java   |   6 +-
 .../producer/DropboxProducerSearchQueryIT.java     |  12 +-
 .../src/test/resources/test-options.properties     |   4 +
 .../dsl/DropboxEndpointBuilderFactory.java         | 231 +++++++++++++++++++++
 20 files changed, 472 insertions(+), 31 deletions(-)

diff --git a/components/camel-dropbox/src/generated/java/org/apache/camel/component/dropbox/DropboxEndpointConfigurer.java b/components/camel-dropbox/src/generated/java/org/apache/camel/component/dropbox/DropboxEndpointConfigurer.java
index 29dbed91982..1aee0f019e6 100644
--- a/components/camel-dropbox/src/generated/java/org/apache/camel/component/dropbox/DropboxEndpointConfigurer.java
+++ b/components/camel-dropbox/src/generated/java/org/apache/camel/component/dropbox/DropboxEndpointConfigurer.java
@@ -23,6 +23,10 @@ public class DropboxEndpointConfigurer extends PropertyConfigurerSupport impleme
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "accesstoken":
         case "accessToken": target.getConfiguration().setAccessToken(property(camelContext, java.lang.String.class, value)); return true;
+        case "apikey":
+        case "apiKey": target.getConfiguration().setApiKey(property(camelContext, java.lang.String.class, value)); return true;
+        case "apisecret":
+        case "apiSecret": target.getConfiguration().setApiSecret(property(camelContext, java.lang.String.class, value)); return true;
         case "bridgeerrorhandler":
         case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
         case "client": target.getConfiguration().setClient(property(camelContext, com.dropbox.core.v2.DbxClientV2.class, value)); return true;
@@ -32,6 +36,8 @@ public class DropboxEndpointConfigurer extends PropertyConfigurerSupport impleme
         case "exceptionHandler": target.setExceptionHandler(property(camelContext, org.apache.camel.spi.ExceptionHandler.class, value)); return true;
         case "exchangepattern":
         case "exchangePattern": target.setExchangePattern(property(camelContext, org.apache.camel.ExchangePattern.class, value)); return true;
+        case "expirein":
+        case "expireIn": target.getConfiguration().setExpireIn(property(camelContext, java.lang.Long.class, value)); return true;
         case "lazystartproducer":
         case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
         case "localpath":
@@ -39,6 +45,8 @@ public class DropboxEndpointConfigurer extends PropertyConfigurerSupport impleme
         case "newremotepath":
         case "newRemotePath": target.getConfiguration().setNewRemotePath(property(camelContext, java.lang.String.class, value)); return true;
         case "query": target.getConfiguration().setQuery(property(camelContext, java.lang.String.class, value)); return true;
+        case "refreshtoken":
+        case "refreshToken": target.getConfiguration().setRefreshToken(property(camelContext, java.lang.String.class, value)); return true;
         case "remotepath":
         case "remotePath": target.getConfiguration().setRemotePath(property(camelContext, java.lang.String.class, value)); return true;
         case "uploadmode":
@@ -52,6 +60,10 @@ public class DropboxEndpointConfigurer extends PropertyConfigurerSupport impleme
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "accesstoken":
         case "accessToken": return java.lang.String.class;
+        case "apikey":
+        case "apiKey": return java.lang.String.class;
+        case "apisecret":
+        case "apiSecret": return java.lang.String.class;
         case "bridgeerrorhandler":
         case "bridgeErrorHandler": return boolean.class;
         case "client": return com.dropbox.core.v2.DbxClientV2.class;
@@ -61,6 +73,8 @@ public class DropboxEndpointConfigurer extends PropertyConfigurerSupport impleme
         case "exceptionHandler": return org.apache.camel.spi.ExceptionHandler.class;
         case "exchangepattern":
         case "exchangePattern": return org.apache.camel.ExchangePattern.class;
+        case "expirein":
+        case "expireIn": return java.lang.Long.class;
         case "lazystartproducer":
         case "lazyStartProducer": return boolean.class;
         case "localpath":
@@ -68,6 +82,8 @@ public class DropboxEndpointConfigurer extends PropertyConfigurerSupport impleme
         case "newremotepath":
         case "newRemotePath": return java.lang.String.class;
         case "query": return java.lang.String.class;
+        case "refreshtoken":
+        case "refreshToken": return java.lang.String.class;
         case "remotepath":
         case "remotePath": return java.lang.String.class;
         case "uploadmode":
@@ -82,6 +98,10 @@ public class DropboxEndpointConfigurer extends PropertyConfigurerSupport impleme
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "accesstoken":
         case "accessToken": return target.getConfiguration().getAccessToken();
+        case "apikey":
+        case "apiKey": return target.getConfiguration().getApiKey();
+        case "apisecret":
+        case "apiSecret": return target.getConfiguration().getApiSecret();
         case "bridgeerrorhandler":
         case "bridgeErrorHandler": return target.isBridgeErrorHandler();
         case "client": return target.getConfiguration().getClient();
@@ -91,6 +111,8 @@ public class DropboxEndpointConfigurer extends PropertyConfigurerSupport impleme
         case "exceptionHandler": return target.getExceptionHandler();
         case "exchangepattern":
         case "exchangePattern": return target.getExchangePattern();
+        case "expirein":
+        case "expireIn": return target.getConfiguration().getExpireIn();
         case "lazystartproducer":
         case "lazyStartProducer": return target.isLazyStartProducer();
         case "localpath":
@@ -98,6 +120,8 @@ public class DropboxEndpointConfigurer extends PropertyConfigurerSupport impleme
         case "newremotepath":
         case "newRemotePath": return target.getConfiguration().getNewRemotePath();
         case "query": return target.getConfiguration().getQuery();
+        case "refreshtoken":
+        case "refreshToken": return target.getConfiguration().getRefreshToken();
         case "remotepath":
         case "remotePath": return target.getConfiguration().getRemotePath();
         case "uploadmode":
diff --git a/components/camel-dropbox/src/generated/java/org/apache/camel/component/dropbox/DropboxEndpointUriFactory.java b/components/camel-dropbox/src/generated/java/org/apache/camel/component/dropbox/DropboxEndpointUriFactory.java
index 1f4effbd14e..63d46ead5ab 100644
--- a/components/camel-dropbox/src/generated/java/org/apache/camel/component/dropbox/DropboxEndpointUriFactory.java
+++ b/components/camel-dropbox/src/generated/java/org/apache/camel/component/dropbox/DropboxEndpointUriFactory.java
@@ -20,20 +20,24 @@ public class DropboxEndpointUriFactory extends org.apache.camel.support.componen
     private static final Set<String> PROPERTY_NAMES;
     private static final Set<String> SECRET_PROPERTY_NAMES;
     static {
-        Set<String> props = new HashSet<>(13);
+        Set<String> props = new HashSet<>(17);
+        props.add("apiKey");
         props.add("remotePath");
         props.add("clientIdentifier");
         props.add("query");
         props.add("exchangePattern");
+        props.add("apiSecret");
         props.add("accessToken");
         props.add("lazyStartProducer");
         props.add("bridgeErrorHandler");
         props.add("localPath");
         props.add("newRemotePath");
         props.add("client");
+        props.add("expireIn");
         props.add("uploadMode");
         props.add("operation");
         props.add("exceptionHandler");
+        props.add("refreshToken");
         PROPERTY_NAMES = Collections.unmodifiableSet(props);
         SECRET_PROPERTY_NAMES = Collections.emptySet();
     }
diff --git a/components/camel-dropbox/src/generated/resources/org/apache/camel/component/dropbox/dropbox.json b/components/camel-dropbox/src/generated/resources/org/apache/camel/component/dropbox/dropbox.json
index 5e1959f51e4..b8ee470adbd 100644
--- a/components/camel-dropbox/src/generated/resources/org/apache/camel/component/dropbox/dropbox.json
+++ b/components/camel-dropbox/src/generated/resources/org/apache/camel/component/dropbox/dropbox.json
@@ -29,11 +29,15 @@
   "properties": {
     "operation": { "kind": "path", "displayName": "Operation", "group": "common", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.dropbox.util.DropboxOperation", "enum": [ "put", "del", "search", "get", "move" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.dropbox.DropboxConfiguration", "configurationField": "configuration", "description": "The specific action ( [...]
     "accessToken": { "kind": "parameter", "displayName": "Access Token", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.dropbox.DropboxConfiguration", "configurationField": "configuration", "description": "The access token to make API requests for a specific Dropbox user" },
+    "apiKey": { "kind": "parameter", "displayName": "Api Key", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.dropbox.DropboxConfiguration", "configurationField": "configuration", "description": "The apiKey to make API requests for a specific Dropbox user" },
+    "apiSecret": { "kind": "parameter", "displayName": "Api Secret", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.dropbox.DropboxConfiguration", "configurationField": "configuration", "description": "The apiSecret to make API requests for a specific Dropbox user" },
     "client": { "kind": "parameter", "displayName": "Client", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.dropbox.core.v2.DbxClientV2", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.dropbox.DropboxConfiguration", "configurationField": "configuration", "description": "To use an existing DbxClient instance as DropBox client." },
     "clientIdentifier": { "kind": "parameter", "displayName": "Client Identifier", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.dropbox.DropboxConfiguration", "configurationField": "configuration", "description": "Name of the app registered to make API requests" },
+    "expireIn": { "kind": "parameter", "displayName": "Expire In", "group": "common", "label": "", "required": true, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.dropbox.DropboxConfiguration", "configurationField": "configuration", "description": "The expire time to access token for a specific Dropbox user" },
     "localPath": { "kind": "parameter", "displayName": "Local Path", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.dropbox.DropboxConfiguration", "configurationField": "configuration", "description": "Optional folder or file to upload on Dropbox from the local filesystem. If this option has not been configured then the message  [...]
     "newRemotePath": { "kind": "parameter", "displayName": "New Remote Path", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.dropbox.DropboxConfiguration", "configurationField": "configuration", "description": "Destination file or folder" },
     "query": { "kind": "parameter", "displayName": "Query", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.dropbox.DropboxConfiguration", "configurationField": "configuration", "description": "A space-separated list of sub-strings to search for. A file matches only if it contains all the sub-strings. If this option is not set, a [...]
+    "refreshToken": { "kind": "parameter", "displayName": "Refresh Token", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.dropbox.DropboxConfiguration", "configurationField": "configuration", "description": "The refresh token to refresh the access token for a specific Dropbox user" },
     "remotePath": { "kind": "parameter", "displayName": "Remote Path", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.dropbox.DropboxConfiguration", "configurationField": "configuration", "description": "Original file or folder to move" },
     "uploadMode": { "kind": "parameter", "displayName": "Upload Mode", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.dropbox.util.DropboxUploadMode", "enum": [ "add", "force" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.dropbox.DropboxConfiguration", "configurationField": "configuration", "description": "Which mode to upload. in case of add the new file will be [...]
     "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 [...]
diff --git a/components/camel-dropbox/src/main/java/org/apache/camel/component/dropbox/DropboxComponent.java b/components/camel-dropbox/src/main/java/org/apache/camel/component/dropbox/DropboxComponent.java
index 2153cf83c69..65846abbe10 100644
--- a/components/camel-dropbox/src/main/java/org/apache/camel/component/dropbox/DropboxComponent.java
+++ b/components/camel-dropbox/src/main/java/org/apache/camel/component/dropbox/DropboxComponent.java
@@ -58,6 +58,13 @@ public class DropboxComponent extends DefaultComponent {
 
         // set options from component
         configuration.setAccessToken((String) parameters.get("accessToken"));
+        if (parameters.get("expireIn") != null) {
+            configuration.setExpireIn(Long.valueOf((String) parameters.get("expireIn")));
+        }
+        configuration.setRefreshToken((String) parameters.get("refreshToken"));
+        configuration.setApiKey((String) parameters.get("apiKey"));
+        configuration.setApiSecret((String) parameters.get("apiSecret"));
+
         configuration.setLocalPath((String) parameters.get("localPath"));
         configuration.setRemotePath(
                 parameters.get("remotePath") != null
diff --git a/components/camel-dropbox/src/main/java/org/apache/camel/component/dropbox/DropboxConfiguration.java b/components/camel-dropbox/src/main/java/org/apache/camel/component/dropbox/DropboxConfiguration.java
index 21c08680b99..dfa4512bda9 100644
--- a/components/camel-dropbox/src/main/java/org/apache/camel/component/dropbox/DropboxConfiguration.java
+++ b/components/camel-dropbox/src/main/java/org/apache/camel/component/dropbox/DropboxConfiguration.java
@@ -16,9 +16,8 @@
  */
 package org.apache.camel.component.dropbox;
 
-import java.util.Locale;
-
 import com.dropbox.core.DbxRequestConfig;
+import com.dropbox.core.oauth.DbxCredential;
 import com.dropbox.core.v2.DbxClientV2;
 import org.apache.camel.component.dropbox.util.DropboxOperation;
 import org.apache.camel.component.dropbox.util.DropboxUploadMode;
@@ -38,6 +37,27 @@ public class DropboxConfiguration {
     @UriParam
     @Metadata(required = true)
     private String accessToken;
+
+    //dropbox auth options
+    @UriParam
+    @Metadata(required = true)
+    private Long expireIn;
+
+    //dropbox auth options
+    @UriParam
+    @Metadata(required = true)
+    private String refreshToken;
+
+    //dropbox auth options
+    @UriParam
+    @Metadata(required = true)
+    private String apiKey;
+
+    //dropbox auth options
+    @UriParam
+    @Metadata(required = true)
+    private String apiSecret;
+
     //local path to put files
     @UriParam
     private String localPath;
@@ -75,8 +95,9 @@ public class DropboxConfiguration {
      * Obtain a new instance of DbxClient and store it in configuration.
      */
     public void createClient() {
-        DbxRequestConfig config = new DbxRequestConfig(clientIdentifier, Locale.getDefault().toString());
-        this.client = new DbxClientV2(config, accessToken);
+        DbxRequestConfig config = DbxRequestConfig.newBuilder(clientIdentifier).build();
+        DbxCredential credential = new DbxCredential(accessToken, expireIn, refreshToken, apiKey, apiSecret);
+        this.client = new DbxClientV2(config, credential);
     }
 
     public String getAccessToken() {
@@ -90,6 +111,50 @@ public class DropboxConfiguration {
         this.accessToken = accessToken;
     }
 
+    public String getRefreshToken() {
+        return refreshToken;
+    }
+
+    /**
+     * The refresh token to refresh the access token for a specific Dropbox user
+     */
+    public void setRefreshToken(String refreshToken) {
+        this.refreshToken = refreshToken;
+    }
+
+    public String getApiKey() {
+        return apiKey;
+    }
+
+    /**
+     * The apiKey to make API requests for a specific Dropbox user
+     */
+    public void setApiKey(String apiKey) {
+        this.apiKey = apiKey;
+    }
+
+    /**
+     * The apiSecret to make API requests for a specific Dropbox user
+     */
+    public String getApiSecret() {
+        return apiSecret;
+    }
+
+    public void setApiSecret(String apiSecret) {
+        this.apiSecret = apiSecret;
+    }
+
+    /**
+     * The expire time to access token for a specific Dropbox user
+     */
+    public Long getExpireIn() {
+        return expireIn;
+    }
+
+    public void setExpireIn(Long expireIn) {
+        this.expireIn = expireIn;
+    }
+
     public String getLocalPath() {
         return localPath;
     }
diff --git a/components/camel-dropbox/src/main/java/org/apache/camel/component/dropbox/validator/DropboxConfigurationValidator.java b/components/camel-dropbox/src/main/java/org/apache/camel/component/dropbox/validator/DropboxConfigurationValidator.java
index 2fba22ed441..a6c1233b11b 100644
--- a/components/camel-dropbox/src/main/java/org/apache/camel/component/dropbox/validator/DropboxConfigurationValidator.java
+++ b/components/camel-dropbox/src/main/java/org/apache/camel/component/dropbox/validator/DropboxConfigurationValidator.java
@@ -30,10 +30,22 @@ public final class DropboxConfigurationValidator {
     }
 
     public static void validateCommonProperties(DropboxConfiguration configuration) throws DropboxException {
-        if (configuration.getAccessToken() == null || configuration.getAccessToken().equals("")) {
+        if (ObjectHelper.isEmpty(configuration.getAccessToken())) {
             throw new DropboxException("option <accessToken> is not present or not valid!");
         }
-        if (configuration.getClientIdentifier() == null || configuration.getClientIdentifier().equals("")) {
+        if (configuration.getExpireIn() == null || configuration.getExpireIn() <= 0) {
+            throw new DropboxException("option <expireIn> is not present or not valid!");
+        }
+        if (ObjectHelper.isEmpty(configuration.getRefreshToken())) {
+            throw new DropboxException("option <refreshToken> is not present or not valid!");
+        }
+        if (ObjectHelper.isEmpty(configuration.getApiKey())) {
+            throw new DropboxException("option <apiKey> is not present or not valid!");
+        }
+        if (ObjectHelper.isEmpty(configuration.getApiSecret())) {
+            throw new DropboxException("option <apiSecret> is not present or not valid!");
+        }
+        if (ObjectHelper.isEmpty(configuration.getClientIdentifier())) {
             throw new DropboxException("option <clientIdentifier> is not present or not valid!");
         }
     }
diff --git a/components/camel-dropbox/src/main/resources/dropbox.properties b/components/camel-dropbox/src/main/resources/dropbox.properties
index 8a22061c046..b43e45db1d2 100644
--- a/components/camel-dropbox/src/main/resources/dropbox.properties
+++ b/components/camel-dropbox/src/main/resources/dropbox.properties
@@ -16,4 +16,7 @@
 ## ---------------------------------------------------------------------------
 
 accessToken=<access-token>
+refreshToken=<refresh-token>
+apiKey=<api-key>
+expireIn=<api-secret>
 clientIdentifier=<clientIdentifier>
diff --git a/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/DropboxComponentVerifierExtensionTest.java b/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/DropboxComponentVerifierExtensionTest.java
index 38b8fbe0822..1993855b640 100644
--- a/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/DropboxComponentVerifierExtensionTest.java
+++ b/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/DropboxComponentVerifierExtensionTest.java
@@ -45,6 +45,10 @@ public class DropboxComponentVerifierExtensionTest extends CamelTestSupport {
 
         Map<String, Object> parameters = new HashMap<>();
         parameters.put("accessToken", "l");
+        parameters.put("expireIn", "1000");
+        parameters.put("refreshToken", "l");
+        parameters.put("apiKey", "a");
+        parameters.put("apiSecret", "s");
         parameters.put("clientIdentifier", "k");
 
         ComponentVerifierExtension.Result result = verifier.verify(ComponentVerifierExtension.Scope.PARAMETERS, parameters);
@@ -60,6 +64,10 @@ public class DropboxComponentVerifierExtensionTest extends CamelTestSupport {
 
         Map<String, Object> parameters = new HashMap<>();
         parameters.put("accessToken", "l");
+        parameters.put("expireIn", "1000");
+        parameters.put("refreshToken", "l");
+        parameters.put("apiKey", "a");
+        parameters.put("apiSecret", "s");
         parameters.put("clientIdentifier", "k");
 
         ComponentVerifierExtension.Result result = verifier.verify(ComponentVerifierExtension.Scope.CONNECTIVITY, parameters);
diff --git a/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/DropboxConsumerTest.java b/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/DropboxConsumerTest.java
index 4c810f1695e..69e301683b7 100644
--- a/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/DropboxConsumerTest.java
+++ b/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/DropboxConsumerTest.java
@@ -32,9 +32,17 @@ public class DropboxConsumerTest extends CamelTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("dropbox://get?accessToken=accessToken&remotePath=/path").to("mock:test1");
+                from("dropbox://get?accessToken=accessToken" +
+                     "&expireIn=1000" +
+                     "&refreshToken=refreshToken" +
+                     "&apiKey=apiKey&apiSecret=apiSecret" +
+                     "&remotePath=/path").to("mock:test1");
 
-                from("dropbox://get?accessToken=accessToken&remotePath=/path with spaces/file").to("mock:test2");
+                from("dropbox://get?accessToken=accessToken" +
+                     "&expireIn=1000" +
+                     "&refreshToken=refreshToken" +
+                     "&apiKey=apiKey&apiSecret=apiSecret" +
+                     "&remotePath=/path with spaces/file").to("mock:test2");
             }
         };
     }
@@ -42,7 +50,11 @@ public class DropboxConsumerTest extends CamelTestSupport {
     @Test
     public void shouldCreateGetConsumer() throws Exception {
         // Given
-        Endpoint dropboxEndpoint1 = context.getEndpoint("dropbox://get?accessToken=accessToken&remotePath=/path");
+        Endpoint dropboxEndpoint1 = context.getEndpoint("dropbox://get?accessToken=accessToken" +
+                                                        "&expireIn=1000" +
+                                                        "&refreshToken=refreshToken" +
+                                                        "&apiKey=apiKey&apiSecret=apiSecret" +
+                                                        "&remotePath=/path");
 
         // When
         Consumer consumer1 = dropboxEndpoint1.createConsumer(null);
@@ -52,8 +64,11 @@ public class DropboxConsumerTest extends CamelTestSupport {
 
         // Given
         Endpoint dropboxEndpoint2
-                = context.getEndpoint("dropbox://get?accessToken=accessToken&remotePath=/path with spaces/file");
-
+                = context.getEndpoint("dropbox://get?accessToken=accessToken" +
+                                      "&expireIn=1000" +
+                                      "&refreshToken=refreshToken" +
+                                      "&apiKey=apiKey&apiSecret=apiSecret" +
+                                      "&remotePath=/path with spaces/file");
         // When
         Consumer consumer2 = dropboxEndpoint2.createConsumer(null);
 
diff --git a/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/DropboxTestSupport.java b/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/DropboxTestSupport.java
index 4548370fe3d..4664a6b684b 100644
--- a/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/DropboxTestSupport.java
+++ b/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/DropboxTestSupport.java
@@ -25,6 +25,7 @@ import java.util.Properties;
 import com.dropbox.core.DbxDownloader;
 import com.dropbox.core.DbxException;
 import com.dropbox.core.DbxRequestConfig;
+import com.dropbox.core.oauth.DbxCredential;
 import com.dropbox.core.v2.DbxClientV2;
 import com.dropbox.core.v2.files.FileMetadata;
 import org.apache.camel.test.junit5.CamelTestSupport;
@@ -39,6 +40,11 @@ public class DropboxTestSupport extends CamelTestSupport {
     protected final Properties properties;
     protected String workdir;
     protected String token;
+    protected String apiKey;
+    protected String apiSecret;
+    protected String refreshToken;
+    protected Long expireIn;
+
     private DbxClientV2 client;
 
     protected DropboxTestSupport() {
@@ -46,9 +52,14 @@ public class DropboxTestSupport extends CamelTestSupport {
 
         workdir = properties.getProperty("workDir");
         token = properties.getProperty("accessToken");
+        refreshToken = properties.getProperty("refreshToken");
+        apiKey = properties.getProperty("apiKey");
+        apiSecret = properties.getProperty("apiSecret");
+        expireIn = Long.valueOf(properties.getProperty("expireIn"));
 
         DbxRequestConfig config = DbxRequestConfig.newBuilder(properties.getProperty("clientIdentifier")).build();
-        client = new DbxClientV2(config, token);
+        DbxCredential credential = new DbxCredential(token, expireIn, refreshToken, apiKey, apiSecret);
+        client = new DbxClientV2(config, credential);
 
     }
 
diff --git a/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/consumer/DropboxConsumerGetSingleIT.java b/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/consumer/DropboxConsumerGetSingleIT.java
index 056be40c10d..8c91b831089 100644
--- a/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/consumer/DropboxConsumerGetSingleIT.java
+++ b/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/consumer/DropboxConsumerGetSingleIT.java
@@ -46,9 +46,14 @@ public class DropboxConsumerGetSingleIT extends DropboxTestSupport {
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() {
-                from(String.format("dropbox://get?accessToken={{accessToken}}&remotePath=%s/%s", workdir, FILE_NAME))
-                        .autoStartup(false).id("consumer")
-                        .to("mock:result");
+                from(String.format("dropbox://get?accessToken={{accessToken}}" +
+                                   "&expireIn={{expireIn}}" +
+                                   "&refreshToken={{refreshToken}}" +
+                                   "&apiKey={{apiKey}}&apiSecret={{apiSecret}}" +
+                                   "&remotePath=%s/%s",
+                        workdir, FILE_NAME))
+                                .autoStartup(false).id("consumer")
+                                .to("mock:result");
             }
         };
     }
diff --git a/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/consumer/DropboxConsumerSearchQueryIT.java b/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/consumer/DropboxConsumerSearchQueryIT.java
index 96823213deb..d1dba56393b 100644
--- a/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/consumer/DropboxConsumerSearchQueryIT.java
+++ b/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/consumer/DropboxConsumerSearchQueryIT.java
@@ -45,9 +45,15 @@ public class DropboxConsumerSearchQueryIT extends DropboxTestSupport {
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() {
-                from(String.format("dropbox://search?accessToken={{accessToken}}&remotePath=%s&query=%s", workdir, FILE_NAME))
-                        .id("consumer").autoStartup(false)
-                        .to("mock:result");
+                from(String.format("dropbox://search?accessToken={{accessToken}}" +
+                                   "&expireIn={{expireIn}}" +
+                                   "&refreshToken={{refreshToken}}" +
+                                   "&apiKey={{apiKey}}&apiSecret={{apiSecret}}" +
+                                   "&remotePath=%s&query=%s",
+                        workdir, FILE_NAME))
+                                .id("consumer").autoStartup(false)
+                                .to("mock:result");
+
             }
         };
     }
diff --git a/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/producer/DropboxProducerDelIT.java b/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/producer/DropboxProducerDelIT.java
index 2ebcb843e71..1dd0c0b7262 100644
--- a/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/producer/DropboxProducerDelIT.java
+++ b/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/producer/DropboxProducerDelIT.java
@@ -60,12 +60,17 @@ public class DropboxProducerDelIT extends DropboxTestSupport {
         return new RouteBuilder() {
             public void configure() {
                 from("direct:start")
-                        .to("dropbox://del?accessToken={{accessToken}}&remotePath=" + workdir + "/" + FILE_NAME)
+                        .to("dropbox://del?accessToken={{accessToken}}&expireIn={{expireIn}}" +
+                            "&refreshToken={{refreshToken}}" +
+                            "&apiKey={{apiKey}}&apiSecret={{apiSecret}}" +
+                            "&remotePath=" + workdir + "/" + FILE_NAME)
                         .to("mock:result");
 
                 from("direct:start2")
                         .setHeader(DropboxConstants.HEADER_REMOTE_PATH, constant(workdir + "/" + FILE_NAME))
-                        .to("dropbox://del?accessToken={{accessToken}}")
+                        .to("dropbox://del?accessToken={{accessToken}}&expireIn={{expireIn}}" +
+                            "&refreshToken={{refreshToken}}" +
+                            "&apiKey={{apiKey}}&apiSecret={{apiSecret}}")
                         .to("mock:result");
             }
         };
diff --git a/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/producer/DropboxProducerGetFolderIT.java b/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/producer/DropboxProducerGetFolderIT.java
index c4e4f88f5fa..efbca85bea8 100644
--- a/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/producer/DropboxProducerGetFolderIT.java
+++ b/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/producer/DropboxProducerGetFolderIT.java
@@ -79,17 +79,28 @@ public class DropboxProducerGetFolderIT extends DropboxTestSupport {
         return new RouteBuilder() {
             public void configure() {
                 from("direct:start")
-                        .to("dropbox://get?accessToken={{accessToken}}&remotePath=" + workdir)
+                        .to("dropbox://get?accessToken={{accessToken}}" +
+                            "&expireIn={{expireIn}}" +
+                            "&refreshToken={{refreshToken}}" +
+                            "&apiKey={{apiKey}}&apiSecret={{apiSecret}}" +
+                            "&remotePath=" + workdir)
                         .to("mock:result");
 
                 from("direct:start2")
                         .setHeader(DropboxConstants.HEADER_REMOTE_PATH, constant(workdir))
-                        .to("dropbox://get?accessToken={{accessToken}}")
+                        .to("dropbox://get?accessToken={{accessToken}}" +
+                            "&expireIn={{expireIn}}" +
+                            "&refreshToken={{refreshToken}}" +
+                            "&apiKey={{apiKey}}&apiSecret={{apiSecret}}")
                         .to("mock:result");
 
                 from("direct:start3")
                         .setHeader(DropboxConstants.HEADER_REMOTE_PATH, constant(workdir))
-                        .to("dropbox://get?accessToken={{accessToken}}&remotePath=/aWrongPath")
+                        .to("dropbox://get?accessToken={{accessToken}}" +
+                            "&expireIn={{expireIn}}" +
+                            "&refreshToken={{refreshToken}}" +
+                            "&apiKey={{apiKey}}&apiSecret={{apiSecret}}" +
+                            "&remotePath=/aWrongPath")
                         .to("mock:result");
 
             }
diff --git a/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/producer/DropboxProducerGetSingleIT.java b/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/producer/DropboxProducerGetSingleIT.java
index 151a5ecef4f..262ee31861c 100644
--- a/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/producer/DropboxProducerGetSingleIT.java
+++ b/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/producer/DropboxProducerGetSingleIT.java
@@ -62,12 +62,19 @@ public class DropboxProducerGetSingleIT extends DropboxTestSupport {
         return new RouteBuilder() {
             public void configure() {
                 from("direct:start")
-                        .to("dropbox://get?accessToken={{accessToken}}&remotePath=" + workdir + "/" + FILE_NAME)
+                        .to("dropbox://get?accessToken={{accessToken}}" +
+                            "&expireIn={{expireIn}}" +
+                            "&refreshToken={{refreshToken}}" +
+                            "&apiKey={{apiKey}}&apiSecret={{apiSecret}}" +
+                            "&remotePath=" + workdir + "/" + FILE_NAME)
                         .to("mock:result");
 
                 from("direct:start2")
                         .setHeader(DropboxConstants.HEADER_REMOTE_PATH, constant(workdir + "/" + FILE_NAME))
-                        .to("dropbox://get?accessToken={{accessToken}}")
+                        .to("dropbox://get?accessToken={{accessToken}}" +
+                            "&expireIn={{expireIn}}" +
+                            "&refreshToken={{refreshToken}}" +
+                            "&apiKey={{apiKey}}&apiSecret={{apiSecret}}")
                         .to("mock:result");
             }
         };
diff --git a/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/producer/DropboxProducerMoveIT.java b/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/producer/DropboxProducerMoveIT.java
index 8dde112f0a5..24dfd406a1b 100644
--- a/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/producer/DropboxProducerMoveIT.java
+++ b/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/producer/DropboxProducerMoveIT.java
@@ -64,14 +64,21 @@ public class DropboxProducerMoveIT extends DropboxTestSupport {
         return new RouteBuilder() {
             public void configure() {
                 from("direct:start")
-                        .to(String.format("dropbox://move?accessToken={{accessToken}}&remotePath=%s&newRemotePath=%s",
+                        .to(String.format("dropbox://move?accessToken={{accessToken}}" +
+                                          "&expireIn={{expireIn}}" +
+                                          "&refreshToken={{refreshToken}}" +
+                                          "&apiKey={{apiKey}}&apiSecret={{apiSecret}}" +
+                                          "&remotePath=%s&newRemotePath=%s",
                                 workdir + "/" + FILE, COPY_WORKDIR + "/" + FILE))
                         .to("mock:result");
 
                 from("direct:start2")
                         .setHeader(DropboxConstants.HEADER_REMOTE_PATH, constant(workdir + "/" + FILE))
                         .setHeader(DropboxConstants.HEADER_NEW_REMOTE_PATH, constant(COPY_WORKDIR + "/" + FILE))
-                        .to("dropbox://move?accessToken={{accessToken}}")
+                        .to("dropbox://move?accessToken={{accessToken}}" +
+                            "&expireIn={{expireIn}}" +
+                            "&refreshToken={{refreshToken}}" +
+                            "&apiKey={{apiKey}}&apiSecret={{apiSecret}}")
                         .to("mock:result");
             }
         };
diff --git a/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/producer/DropboxProducerPutSingleFileIT.java b/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/producer/DropboxProducerPutSingleFileIT.java
index 758c2a89a1b..e77739a965e 100644
--- a/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/producer/DropboxProducerPutSingleFileIT.java
+++ b/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/producer/DropboxProducerPutSingleFileIT.java
@@ -101,7 +101,11 @@ public class DropboxProducerPutSingleFileIT extends DropboxTestSupport {
         return new RouteBuilder() {
             public void configure() {
                 from("direct:start")
-                        .to("dropbox://put?accessToken={{accessToken}}&remotePath=" + workdir + "/" + FILENAME)
+                        .to("dropbox://put?accessToken={{accessToken}}" +
+                            "&expireIn={{expireIn}}" +
+                            "&refreshToken={{refreshToken}}" +
+                            "&apiKey={{apiKey}}&apiSecret={{apiSecret}}" +
+                            "&remotePath=" + workdir + "/" + FILENAME)
                         .to("mock:result");
             }
         };
diff --git a/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/producer/DropboxProducerSearchQueryIT.java b/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/producer/DropboxProducerSearchQueryIT.java
index f67188402d3..2059782462f 100644
--- a/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/producer/DropboxProducerSearchQueryIT.java
+++ b/components/camel-dropbox/src/test/java/org/apache/camel/component/dropbox/integration/producer/DropboxProducerSearchQueryIT.java
@@ -62,14 +62,22 @@ public class DropboxProducerSearchQueryIT extends DropboxTestSupport {
         return new RouteBuilder() {
             public void configure() {
                 from("direct:start")
-                        .to(String.format("dropbox://search?accessToken={{accessToken}}&remotePath=%s&query=%s", workdir,
+                        .to(String.format("dropbox://search?accessToken={{accessToken}}" +
+                                          "&expireIn={{expireIn}}" +
+                                          "&refreshToken={{refreshToken}}" +
+                                          "&apiKey={{apiKey}}&apiSecret={{apiSecret}}" +
+                                          "&remotePath=%s&query=%s",
+                                workdir,
                                 FILE_NAME))
                         .to("mock:result");
 
                 from("direct:start2")
                         .setHeader(DropboxConstants.HEADER_REMOTE_PATH, constant(workdir))
                         .setHeader(DropboxConstants.HEADER_QUERY, constant(FILE_NAME))
-                        .to("dropbox://search?accessToken={{accessToken}}")
+                        .to("dropbox://search?accessToken={{accessToken}}" +
+                            "&expireIn={{expireIn}}" +
+                            "&refreshToken={{refreshToken}}" +
+                            "&apiKey={{apiKey}}&apiSecret={{apiSecret}}")
                         .to("mock:result");
             }
         };
diff --git a/components/camel-dropbox/src/test/resources/test-options.properties b/components/camel-dropbox/src/test/resources/test-options.properties
index 67c9ec5f7bc..247d7d128f3 100644
--- a/components/camel-dropbox/src/test/resources/test-options.properties
+++ b/components/camel-dropbox/src/test/resources/test-options.properties
@@ -16,5 +16,9 @@
 ## ---------------------------------------------------------------------------
 
 accessToken=
+refreshToken=
+apiKey=
+apiSecret=
+expireIn=
 clientIdentifier=camel-dropbox
 workDir=/camel-test
diff --git a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/DropboxEndpointBuilderFactory.java b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/DropboxEndpointBuilderFactory.java
index 7f3058b4293..c4b998150da 100644
--- a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/DropboxEndpointBuilderFactory.java
+++ b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/DropboxEndpointBuilderFactory.java
@@ -57,6 +57,36 @@ public interface DropboxEndpointBuilderFactory {
             doSetProperty("accessToken", accessToken);
             return this;
         }
+        /**
+         * The apiKey to make API requests for a specific Dropbox user.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Required: true
+         * Group: common
+         * 
+         * @param apiKey the value to set
+         * @return the dsl builder
+         */
+        default DropboxEndpointConsumerBuilder apiKey(String apiKey) {
+            doSetProperty("apiKey", apiKey);
+            return this;
+        }
+        /**
+         * The apiSecret to make API requests for a specific Dropbox user.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Required: true
+         * Group: common
+         * 
+         * @param apiSecret the value to set
+         * @return the dsl builder
+         */
+        default DropboxEndpointConsumerBuilder apiSecret(String apiSecret) {
+            doSetProperty("apiSecret", apiSecret);
+            return this;
+        }
         /**
          * To use an existing DbxClient instance as DropBox client.
          * 
@@ -102,6 +132,37 @@ public interface DropboxEndpointBuilderFactory {
             doSetProperty("clientIdentifier", clientIdentifier);
             return this;
         }
+        /**
+         * The expire time to access token for a specific Dropbox user.
+         * 
+         * The option is a: &lt;code&gt;java.lang.Long&lt;/code&gt; type.
+         * 
+         * Required: true
+         * Group: common
+         * 
+         * @param expireIn the value to set
+         * @return the dsl builder
+         */
+        default DropboxEndpointConsumerBuilder expireIn(Long expireIn) {
+            doSetProperty("expireIn", expireIn);
+            return this;
+        }
+        /**
+         * The expire time to access token for a specific Dropbox user.
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;java.lang.Long&lt;/code&gt; type.
+         * 
+         * Required: true
+         * Group: common
+         * 
+         * @param expireIn the value to set
+         * @return the dsl builder
+         */
+        default DropboxEndpointConsumerBuilder expireIn(String expireIn) {
+            doSetProperty("expireIn", expireIn);
+            return this;
+        }
         /**
          * Optional folder or file to upload on Dropbox from the local
          * filesystem. If this option has not been configured then the message
@@ -149,6 +210,22 @@ public interface DropboxEndpointBuilderFactory {
             doSetProperty("query", query);
             return this;
         }
+        /**
+         * The refresh token to refresh the access token for a specific Dropbox
+         * user.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Required: true
+         * Group: common
+         * 
+         * @param refreshToken the value to set
+         * @return the dsl builder
+         */
+        default DropboxEndpointConsumerBuilder refreshToken(String refreshToken) {
+            doSetProperty("refreshToken", refreshToken);
+            return this;
+        }
         /**
          * Original file or folder to move.
          * 
@@ -352,6 +429,36 @@ public interface DropboxEndpointBuilderFactory {
             doSetProperty("accessToken", accessToken);
             return this;
         }
+        /**
+         * The apiKey to make API requests for a specific Dropbox user.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Required: true
+         * Group: common
+         * 
+         * @param apiKey the value to set
+         * @return the dsl builder
+         */
+        default DropboxEndpointProducerBuilder apiKey(String apiKey) {
+            doSetProperty("apiKey", apiKey);
+            return this;
+        }
+        /**
+         * The apiSecret to make API requests for a specific Dropbox user.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Required: true
+         * Group: common
+         * 
+         * @param apiSecret the value to set
+         * @return the dsl builder
+         */
+        default DropboxEndpointProducerBuilder apiSecret(String apiSecret) {
+            doSetProperty("apiSecret", apiSecret);
+            return this;
+        }
         /**
          * To use an existing DbxClient instance as DropBox client.
          * 
@@ -397,6 +504,37 @@ public interface DropboxEndpointBuilderFactory {
             doSetProperty("clientIdentifier", clientIdentifier);
             return this;
         }
+        /**
+         * The expire time to access token for a specific Dropbox user.
+         * 
+         * The option is a: &lt;code&gt;java.lang.Long&lt;/code&gt; type.
+         * 
+         * Required: true
+         * Group: common
+         * 
+         * @param expireIn the value to set
+         * @return the dsl builder
+         */
+        default DropboxEndpointProducerBuilder expireIn(Long expireIn) {
+            doSetProperty("expireIn", expireIn);
+            return this;
+        }
+        /**
+         * The expire time to access token for a specific Dropbox user.
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;java.lang.Long&lt;/code&gt; type.
+         * 
+         * Required: true
+         * Group: common
+         * 
+         * @param expireIn the value to set
+         * @return the dsl builder
+         */
+        default DropboxEndpointProducerBuilder expireIn(String expireIn) {
+            doSetProperty("expireIn", expireIn);
+            return this;
+        }
         /**
          * Optional folder or file to upload on Dropbox from the local
          * filesystem. If this option has not been configured then the message
@@ -444,6 +582,22 @@ public interface DropboxEndpointBuilderFactory {
             doSetProperty("query", query);
             return this;
         }
+        /**
+         * The refresh token to refresh the access token for a specific Dropbox
+         * user.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Required: true
+         * Group: common
+         * 
+         * @param refreshToken the value to set
+         * @return the dsl builder
+         */
+        default DropboxEndpointProducerBuilder refreshToken(String refreshToken) {
+            doSetProperty("refreshToken", refreshToken);
+            return this;
+        }
         /**
          * Original file or folder to move.
          * 
@@ -582,6 +736,36 @@ public interface DropboxEndpointBuilderFactory {
             doSetProperty("accessToken", accessToken);
             return this;
         }
+        /**
+         * The apiKey to make API requests for a specific Dropbox user.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Required: true
+         * Group: common
+         * 
+         * @param apiKey the value to set
+         * @return the dsl builder
+         */
+        default DropboxEndpointBuilder apiKey(String apiKey) {
+            doSetProperty("apiKey", apiKey);
+            return this;
+        }
+        /**
+         * The apiSecret to make API requests for a specific Dropbox user.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Required: true
+         * Group: common
+         * 
+         * @param apiSecret the value to set
+         * @return the dsl builder
+         */
+        default DropboxEndpointBuilder apiSecret(String apiSecret) {
+            doSetProperty("apiSecret", apiSecret);
+            return this;
+        }
         /**
          * To use an existing DbxClient instance as DropBox client.
          * 
@@ -626,6 +810,37 @@ public interface DropboxEndpointBuilderFactory {
             doSetProperty("clientIdentifier", clientIdentifier);
             return this;
         }
+        /**
+         * The expire time to access token for a specific Dropbox user.
+         * 
+         * The option is a: &lt;code&gt;java.lang.Long&lt;/code&gt; type.
+         * 
+         * Required: true
+         * Group: common
+         * 
+         * @param expireIn the value to set
+         * @return the dsl builder
+         */
+        default DropboxEndpointBuilder expireIn(Long expireIn) {
+            doSetProperty("expireIn", expireIn);
+            return this;
+        }
+        /**
+         * The expire time to access token for a specific Dropbox user.
+         * 
+         * The option will be converted to a
+         * &lt;code&gt;java.lang.Long&lt;/code&gt; type.
+         * 
+         * Required: true
+         * Group: common
+         * 
+         * @param expireIn the value to set
+         * @return the dsl builder
+         */
+        default DropboxEndpointBuilder expireIn(String expireIn) {
+            doSetProperty("expireIn", expireIn);
+            return this;
+        }
         /**
          * Optional folder or file to upload on Dropbox from the local
          * filesystem. If this option has not been configured then the message
@@ -672,6 +887,22 @@ public interface DropboxEndpointBuilderFactory {
             doSetProperty("query", query);
             return this;
         }
+        /**
+         * The refresh token to refresh the access token for a specific Dropbox
+         * user.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Required: true
+         * Group: common
+         * 
+         * @param refreshToken the value to set
+         * @return the dsl builder
+         */
+        default DropboxEndpointBuilder refreshToken(String refreshToken) {
+            doSetProperty("refreshToken", refreshToken);
+            return this;
+        }
         /**
          * Original file or folder to move.
          *