diff --git a/packages/nodes-base/credentials/DropboxApi.credentials.ts b/packages/nodes-base/credentials/DropboxApi.credentials.ts index ff7ca863d2..e17de90fff 100644 --- a/packages/nodes-base/credentials/DropboxApi.credentials.ts +++ b/packages/nodes-base/credentials/DropboxApi.credentials.ts @@ -14,5 +14,21 @@ export class DropboxApi implements ICredentialType { type: 'string' as NodePropertyTypes, default: '', }, + { + displayName: 'APP Access Type', + name: 'accessType', + type: 'options' as NodePropertyTypes, + options: [ + { + name: 'App Folder', + value: 'folder', + }, + { + name: 'Full Dropbox', + value: 'full', + }, + ], + default: 'full', + }, ]; } diff --git a/packages/nodes-base/credentials/DropboxOAuth2Api.credentials.ts b/packages/nodes-base/credentials/DropboxOAuth2Api.credentials.ts index 81c84d92aa..c1515cd6f5 100644 --- a/packages/nodes-base/credentials/DropboxOAuth2Api.credentials.ts +++ b/packages/nodes-base/credentials/DropboxOAuth2Api.credentials.ts @@ -50,5 +50,21 @@ export class DropboxOAuth2Api implements ICredentialType { type: 'hidden' as NodePropertyTypes, default: 'header', }, + { + displayName: 'APP Access Type', + name: 'accessType', + type: 'options' as NodePropertyTypes, + options: [ + { + name: 'App Folder', + value: 'folder', + }, + { + name: 'Full Dropbox', + value: 'full', + }, + ], + default: 'full', + }, ]; } diff --git a/packages/nodes-base/nodes/Dropbox/Dropbox.node.ts b/packages/nodes-base/nodes/Dropbox/Dropbox.node.ts index 5f4e219652..4421be2d4f 100644 --- a/packages/nodes-base/nodes/Dropbox/Dropbox.node.ts +++ b/packages/nodes-base/nodes/Dropbox/Dropbox.node.ts @@ -13,6 +13,7 @@ import { import { dropboxApiRequest, dropboxpiRequestAllItems, + getCredentials, getRootDirectory, simplify, } from './GenericFunctions'; @@ -793,15 +794,20 @@ export class Dropbox implements INodeType { let headers: IDataObject = {}; let simple = false; - // get the root directory to set it as the default search folder - const { root_info: { root_namespace_id } } = await getRootDirectory.call(this); - headers = { - 'dropbox-api-path-root': JSON.stringify({ - '.tag': 'root', - 'root': root_namespace_id, - }), - }; + const { accessType } = getCredentials.call(this); + + if (accessType === 'full') { + // get the root directory to set it as the default for all operations + const { root_info: { root_namespace_id } } = await getRootDirectory.call(this); + + headers = { + 'dropbox-api-path-root': JSON.stringify({ + '.tag': 'root', + 'root': root_namespace_id, + }), + }; + } for (let i = 0; i < items.length; i++) { body = {}; diff --git a/packages/nodes-base/nodes/Dropbox/GenericFunctions.ts b/packages/nodes-base/nodes/Dropbox/GenericFunctions.ts index 66533c4c01..ca7e4829bb 100644 --- a/packages/nodes-base/nodes/Dropbox/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Dropbox/GenericFunctions.ts @@ -114,4 +114,12 @@ export function simplify(data: IDataObject[]) { return results; } +export function getCredentials(this: IExecuteFunctions) { + const authenticationMethod = this.getNodeParameter('authentication', 0) as string; + if (authenticationMethod === 'accessToken') { + return this.getCredentials('dropboxApi') as IDataObject; + } else { + return this.getCredentials('dropboxOAuth2Api') as IDataObject; + } +}