diff --git a/.gitignore b/.gitignore
index cad124b..419f783 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,7 @@
*~
#*
+*#
+.#*
drafts
node_modules
dist
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 43839d5..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-language: node_js
-node_js:
- - 14
-os:
- - linux
- - osx
- - windows
-script:
- - node tests/all.js
diff --git a/README.md b/README.md
index e204458..8d18840 100644
--- a/README.md
+++ b/README.md
@@ -1,40 +1,13 @@
-# Solid REST
+# Solid-Rest
-## treat any storage backend as a minimal Solid server
+Treat any storage backend as a Solid pod
-
+## Overview
-This package provides Solid access to local file systems and other storage spaces. It recieves standard Solid REST requests and returns the same kind of response a Solid server sends. This means that libraries and apps can make a file:// or app:// request in the same way they make an https request without having to know anything about the backend and without needing a server on the backend.
+Solid-Rest translates Solid requests into backend requests and backend responses into Solid responses. This means that any storage system that has a Solid-Rest plugin may be treated as a pod. Currently there are plugins for file and dropbox which means that any app that uses Solid-Rest can address file:// and dropbox:// URIs the same way as a Solid pod https:// URI and expect the same responses with some exceptions : permissions are not handled by Solid .acls, they are based on the underlying file or cloud permissions; collaborative tools such as chat are not available. These backends can now be addressed with most Solid libraries (e.g. rdflib) and apps (e.g. the databrowser).
-### Using with rdflib
+Plugins for ssh, in-memory storage, in-browser storage (indexedDB, localStorage, Native File API) are in development.
-Solid-Rest is included automatically in [rdflib]() when a script is run outside a browser. This means that commands such as fetcher.load('file:///somepath/container/') will behave, for most purposes just like the same command against an https URI on a Solid server (in this case, create an in-memory parsed version of the container's turtle representation).
-
-### Using with other libraries
-
-Solid-Rest can be used with any other libraries capable of operating either outside a browser or in an express-wrapped browser. For example, [solid-file-client]() uses solid-rest behind the scenes to support file transfers between local file systems and remote pods.
-
-
-### Backends
-
-**file://** - the local file system; works on command-line or in a browser within an electron process
-
-**app://ls/** - an in-memory local storage; works on command-line or in a browser within an electron process
-
-**app://bfs/** - any of the dozen or so storage mechanisms supported by [BrowserFS](https://github.com/jvilk/BrowserFS) - Dropbox, browser Local Storage, browser indexedDB, browser Native File Api, and more; works in a browser.
-
-The file and in-memory storage are initialized automatically with the creation of the rest object. The BrowserFS backends need to be initialized explicitly. Please see tests/browser-test.html in the distribution for an example and details.
-
-### Plugins
-
-The package supports plugins, so new backends may be added by supplying the storage system specific commands without having to reinvent the wheel of receiving REST requests and responding to them in a Solid manner. The src/localStorage.js package contains documentation on writing plugins. Contact me for more info.
-
-
-
-### Acknowledgements
-
-Thanks to [Otto-AA](https://github.com/Otto-AA) and [CxRes](https://github.com/CxRes) for advice and patches.
-
-copyright © 2019, 2020, [Jeff Zucker](https://github.com/jeff-zucker), may be freely distributed with the MIT license
+Although Solid-Rest can be used stand-alone, it is best used in conjunction with other libraries, especially [Solid-Node-Client](), a nodejs client for Solid.
+ Solid-Node-Client comes preloaded with the Solid-Rest-File plugin, so it will be transparently included in anything using that library.
+
\ No newline at end of file
diff --git a/bfs/README.md b/bfs/README.md
new file mode 100644
index 0000000..588e899
--- /dev/null
+++ b/bfs/README.md
@@ -0,0 +1,9 @@
+# Solid-Rest-BFS
+
+A Solid-Rest plugin for in-browser storage
+
+This is a plugin for [Solid-Rest](https://github.com/solid/solid-rest) that handles in-broswer storage including localStorage, indexedDB, and Native File API which can all be treated as mini-pods.
+
+**Note** This library has not been upgraded to version 2.x yet, so is NOT usable at the moment.
+
+
diff --git a/src/browserFS.js b/bfs/src/index.js
similarity index 100%
rename from src/browserFS.js
rename to bfs/src/index.js
diff --git a/bundles/Dropbox-sdk.js.map b/bundles/Dropbox-sdk.js.map
deleted file mode 100644
index 8db0a55..0000000
--- a/bundles/Dropbox-sdk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"Dropbox-sdk.js","sources":["../src/routes.js","../src/constants.js","../src/utils.js","../src/download-request.js","../src/upload-request.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/buffer/index.js","../src/rpc-request.js","../src/dropbox-base.js","../src/dropbox.js","../src/routes-team.js","../src/team/dropbox-team.js","../src/index.js"],"sourcesContent":["// Auto-generated by Stone, do not modify.\nvar routes = {};\n\n/**\n * Creates an OAuth 2.0 access token from the supplied OAuth 1.0 access token.\n * @function Dropbox#authTokenFromOauth1\n * @arg {AuthTokenFromOAuth1Arg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.authTokenFromOauth1 = function (arg) {\n return this.request('auth/token/from_oauth1', arg, 'app', 'api', 'rpc');\n};\n\n/**\n * Disables the access token used to authenticate the call.\n * @function Dropbox#authTokenRevoke\n * @arg {void} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.authTokenRevoke = function (arg) {\n return this.request('auth/token/revoke', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Removes all manually added contacts. You'll still keep contacts who are on\n * your team or who you imported. New contacts will be added when you share.\n * @function Dropbox#contactsDeleteManualContacts\n * @arg {void} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.contactsDeleteManualContacts = function (arg) {\n return this.request('contacts/delete_manual_contacts', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Removes manually added contacts from the given list.\n * @function Dropbox#contactsDeleteManualContactsBatch\n * @arg {ContactsDeleteManualContactsArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.contactsDeleteManualContactsBatch = function (arg) {\n return this.request('contacts/delete_manual_contacts_batch', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Add property groups to a Dropbox file. See templates/add_for_user or\n * templates/add_for_team to create new templates.\n * @function Dropbox#filePropertiesPropertiesAdd\n * @arg {FilePropertiesAddPropertiesArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filePropertiesPropertiesAdd = function (arg) {\n return this.request('file_properties/properties/add', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Overwrite property groups associated with a file. This endpoint should be\n * used instead of properties/update when property groups are being updated via\n * a \"snapshot\" instead of via a \"delta\". In other words, this endpoint will\n * delete all omitted fields from a property group, whereas properties/update\n * will only delete fields that are explicitly marked for deletion.\n * @function Dropbox#filePropertiesPropertiesOverwrite\n * @arg {FilePropertiesOverwritePropertyGroupArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filePropertiesPropertiesOverwrite = function (arg) {\n return this.request('file_properties/properties/overwrite', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Permanently removes the specified property group from the file. To remove\n * specific property field key value pairs, see properties/update. To update a\n * template, see templates/update_for_user or templates/update_for_team. To\n * remove a template, see templates/remove_for_user or\n * templates/remove_for_team.\n * @function Dropbox#filePropertiesPropertiesRemove\n * @arg {FilePropertiesRemovePropertiesArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filePropertiesPropertiesRemove = function (arg) {\n return this.request('file_properties/properties/remove', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Search across property templates for particular property field values.\n * @function Dropbox#filePropertiesPropertiesSearch\n * @arg {FilePropertiesPropertiesSearchArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filePropertiesPropertiesSearch = function (arg) {\n return this.request('file_properties/properties/search', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Once a cursor has been retrieved from properties/search, use this to paginate\n * through all search results.\n * @function Dropbox#filePropertiesPropertiesSearchContinue\n * @arg {FilePropertiesPropertiesSearchContinueArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filePropertiesPropertiesSearchContinue = function (arg) {\n return this.request('file_properties/properties/search/continue', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Add, update or remove properties associated with the supplied file and\n * templates. This endpoint should be used instead of properties/overwrite when\n * property groups are being updated via a \"delta\" instead of via a \"snapshot\" .\n * In other words, this endpoint will not delete any omitted fields from a\n * property group, whereas properties/overwrite will delete any fields that are\n * omitted from a property group.\n * @function Dropbox#filePropertiesPropertiesUpdate\n * @arg {FilePropertiesUpdatePropertiesArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filePropertiesPropertiesUpdate = function (arg) {\n return this.request('file_properties/properties/update', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Add a template associated with a team. See properties/add to add properties\n * to a file or folder. Note: this endpoint will create team-owned templates.\n * @function Dropbox#filePropertiesTemplatesAddForTeam\n * @arg {FilePropertiesAddTemplateArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filePropertiesTemplatesAddForTeam = function (arg) {\n return this.request('file_properties/templates/add_for_team', arg, 'team', 'api', 'rpc');\n};\n\n/**\n * Add a template associated with a user. See properties/add to add properties\n * to a file. This endpoint can't be called on a team member or admin's behalf.\n * @function Dropbox#filePropertiesTemplatesAddForUser\n * @arg {FilePropertiesAddTemplateArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filePropertiesTemplatesAddForUser = function (arg) {\n return this.request('file_properties/templates/add_for_user', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Get the schema for a specified template.\n * @function Dropbox#filePropertiesTemplatesGetForTeam\n * @arg {FilePropertiesGetTemplateArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filePropertiesTemplatesGetForTeam = function (arg) {\n return this.request('file_properties/templates/get_for_team', arg, 'team', 'api', 'rpc');\n};\n\n/**\n * Get the schema for a specified template. This endpoint can't be called on a\n * team member or admin's behalf.\n * @function Dropbox#filePropertiesTemplatesGetForUser\n * @arg {FilePropertiesGetTemplateArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filePropertiesTemplatesGetForUser = function (arg) {\n return this.request('file_properties/templates/get_for_user', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Get the template identifiers for a team. To get the schema of each template\n * use templates/get_for_team.\n * @function Dropbox#filePropertiesTemplatesListForTeam\n * @arg {void} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filePropertiesTemplatesListForTeam = function (arg) {\n return this.request('file_properties/templates/list_for_team', arg, 'team', 'api', 'rpc');\n};\n\n/**\n * Get the template identifiers for a team. To get the schema of each template\n * use templates/get_for_user. This endpoint can't be called on a team member or\n * admin's behalf.\n * @function Dropbox#filePropertiesTemplatesListForUser\n * @arg {void} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filePropertiesTemplatesListForUser = function (arg) {\n return this.request('file_properties/templates/list_for_user', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Permanently removes the specified template created from\n * templates/add_for_user. All properties associated with the template will also\n * be removed. This action cannot be undone.\n * @function Dropbox#filePropertiesTemplatesRemoveForTeam\n * @arg {FilePropertiesRemoveTemplateArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filePropertiesTemplatesRemoveForTeam = function (arg) {\n return this.request('file_properties/templates/remove_for_team', arg, 'team', 'api', 'rpc');\n};\n\n/**\n * Permanently removes the specified template created from\n * templates/add_for_user. All properties associated with the template will also\n * be removed. This action cannot be undone.\n * @function Dropbox#filePropertiesTemplatesRemoveForUser\n * @arg {FilePropertiesRemoveTemplateArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filePropertiesTemplatesRemoveForUser = function (arg) {\n return this.request('file_properties/templates/remove_for_user', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Update a template associated with a team. This route can update the template\n * name, the template description and add optional properties to templates.\n * @function Dropbox#filePropertiesTemplatesUpdateForTeam\n * @arg {FilePropertiesUpdateTemplateArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filePropertiesTemplatesUpdateForTeam = function (arg) {\n return this.request('file_properties/templates/update_for_team', arg, 'team', 'api', 'rpc');\n};\n\n/**\n * Update a template associated with a user. This route can update the template\n * name, the template description and add optional properties to templates. This\n * endpoint can't be called on a team member or admin's behalf.\n * @function Dropbox#filePropertiesTemplatesUpdateForUser\n * @arg {FilePropertiesUpdateTemplateArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filePropertiesTemplatesUpdateForUser = function (arg) {\n return this.request('file_properties/templates/update_for_user', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Returns the total number of file requests owned by this user. Includes both\n * open and closed file requests.\n * @function Dropbox#fileRequestsCount\n * @arg {void} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.fileRequestsCount = function (arg) {\n return this.request('file_requests/count', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Creates a file request for this user.\n * @function Dropbox#fileRequestsCreate\n * @arg {FileRequestsCreateFileRequestArgs} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.fileRequestsCreate = function (arg) {\n return this.request('file_requests/create', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Delete a batch of closed file requests.\n * @function Dropbox#fileRequestsDelete\n * @arg {FileRequestsDeleteFileRequestArgs} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.fileRequestsDelete = function (arg) {\n return this.request('file_requests/delete', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Delete all closed file requests owned by this user.\n * @function Dropbox#fileRequestsDeleteAllClosed\n * @arg {void} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.fileRequestsDeleteAllClosed = function (arg) {\n return this.request('file_requests/delete_all_closed', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Returns the specified file request.\n * @function Dropbox#fileRequestsGet\n * @arg {FileRequestsGetFileRequestArgs} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.fileRequestsGet = function (arg) {\n return this.request('file_requests/get', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Returns a list of file requests owned by this user. For apps with the app\n * folder permission, this will only return file requests with destinations in\n * the app folder.\n * @function Dropbox#fileRequestsListV2\n * @arg {FileRequestsListFileRequestsArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.fileRequestsListV2 = function (arg) {\n return this.request('file_requests/list_v2', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Returns a list of file requests owned by this user. For apps with the app\n * folder permission, this will only return file requests with destinations in\n * the app folder.\n * @function Dropbox#fileRequestsList\n * @arg {void} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.fileRequestsList = function (arg) {\n return this.request('file_requests/list', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Once a cursor has been retrieved from list_v2, use this to paginate through\n * all file requests. The cursor must come from a previous call to list_v2 or\n * list/continue.\n * @function Dropbox#fileRequestsListContinue\n * @arg {FileRequestsListFileRequestsContinueArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.fileRequestsListContinue = function (arg) {\n return this.request('file_requests/list/continue', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Update a file request.\n * @function Dropbox#fileRequestsUpdate\n * @arg {FileRequestsUpdateFileRequestArgs} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.fileRequestsUpdate = function (arg) {\n return this.request('file_requests/update', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Returns the metadata for a file or folder. This is an alpha endpoint\n * compatible with the properties API. Note: Metadata for the root folder is\n * unsupported.\n * @function Dropbox#filesAlphaGetMetadata\n * @deprecated\n * @arg {FilesAlphaGetMetadataArg} arg - The request parameters.\n * @returns {Promise.<(FilesFileMetadata|FilesFolderMetadata|FilesDeletedMetadata), Error.>}\n */\nroutes.filesAlphaGetMetadata = function (arg) {\n return this.request('files/alpha/get_metadata', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Create a new file with the contents provided in the request. Note that this\n * endpoint is part of the properties API alpha and is slightly different from\n * upload. Do not use this to upload a file larger than 150 MB. Instead, create\n * an upload session with upload_session/start.\n * @function Dropbox#filesAlphaUpload\n * @deprecated\n * @arg {FilesCommitInfoWithProperties} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesAlphaUpload = function (arg) {\n return this.request('files/alpha/upload', arg, 'user', 'content', 'upload');\n};\n\n/**\n * Copy a file or folder to a different location in the user's Dropbox. If the\n * source path is a folder all its contents will be copied.\n * @function Dropbox#filesCopyV2\n * @arg {FilesRelocationArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesCopyV2 = function (arg) {\n return this.request('files/copy_v2', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Copy a file or folder to a different location in the user's Dropbox. If the\n * source path is a folder all its contents will be copied.\n * @function Dropbox#filesCopy\n * @deprecated\n * @arg {FilesRelocationArg} arg - The request parameters.\n * @returns {Promise.<(FilesFileMetadata|FilesFolderMetadata|FilesDeletedMetadata), Error.>}\n */\nroutes.filesCopy = function (arg) {\n return this.request('files/copy', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Copy multiple files or folders to different locations at once in the user's\n * Dropbox. This route will replace copy_batch. The main difference is this\n * route will return status for each entry, while copy_batch raises failure if\n * any entry fails. This route will either finish synchronously, or return a job\n * ID and do the async copy job in background. Please use copy_batch/check_v2 to\n * check the job status.\n * @function Dropbox#filesCopyBatchV2\n * @arg {Object} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesCopyBatchV2 = function (arg) {\n return this.request('files/copy_batch_v2', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Copy multiple files or folders to different locations at once in the user's\n * Dropbox. If RelocationBatchArg.allow_shared_folder is false, this route is\n * atomic. If one entry fails, the whole transaction will abort. If\n * RelocationBatchArg.allow_shared_folder is true, atomicity is not guaranteed,\n * but it allows you to copy the contents of shared folders to new locations.\n * This route will return job ID immediately and do the async copy job in\n * background. Please use copy_batch/check to check the job status.\n * @function Dropbox#filesCopyBatch\n * @deprecated\n * @arg {FilesRelocationBatchArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesCopyBatch = function (arg) {\n return this.request('files/copy_batch', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Returns the status of an asynchronous job for copy_batch_v2. It returns list\n * of results for each entry.\n * @function Dropbox#filesCopyBatchCheckV2\n * @arg {AsyncPollArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesCopyBatchCheckV2 = function (arg) {\n return this.request('files/copy_batch/check_v2', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Returns the status of an asynchronous job for copy_batch. If success, it\n * returns list of results for each entry.\n * @function Dropbox#filesCopyBatchCheck\n * @deprecated\n * @arg {AsyncPollArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesCopyBatchCheck = function (arg) {\n return this.request('files/copy_batch/check', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Get a copy reference to a file or folder. This reference string can be used\n * to save that file or folder to another user's Dropbox by passing it to\n * copy_reference/save.\n * @function Dropbox#filesCopyReferenceGet\n * @arg {FilesGetCopyReferenceArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesCopyReferenceGet = function (arg) {\n return this.request('files/copy_reference/get', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Save a copy reference returned by copy_reference/get to the user's Dropbox.\n * @function Dropbox#filesCopyReferenceSave\n * @arg {FilesSaveCopyReferenceArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesCopyReferenceSave = function (arg) {\n return this.request('files/copy_reference/save', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Create a folder at a given path.\n * @function Dropbox#filesCreateFolderV2\n * @arg {FilesCreateFolderArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesCreateFolderV2 = function (arg) {\n return this.request('files/create_folder_v2', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Create a folder at a given path.\n * @function Dropbox#filesCreateFolder\n * @deprecated\n * @arg {FilesCreateFolderArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesCreateFolder = function (arg) {\n return this.request('files/create_folder', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Create multiple folders at once. This route is asynchronous for large\n * batches, which returns a job ID immediately and runs the create folder batch\n * asynchronously. Otherwise, creates the folders and returns the result\n * synchronously for smaller inputs. You can force asynchronous behaviour by\n * using the CreateFolderBatchArg.force_async flag. Use\n * create_folder_batch/check to check the job status.\n * @function Dropbox#filesCreateFolderBatch\n * @arg {FilesCreateFolderBatchArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesCreateFolderBatch = function (arg) {\n return this.request('files/create_folder_batch', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Returns the status of an asynchronous job for create_folder_batch. If\n * success, it returns list of result for each entry.\n * @function Dropbox#filesCreateFolderBatchCheck\n * @arg {AsyncPollArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesCreateFolderBatchCheck = function (arg) {\n return this.request('files/create_folder_batch/check', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Delete the file or folder at a given path. If the path is a folder, all its\n * contents will be deleted too. A successful response indicates that the file\n * or folder was deleted. The returned metadata will be the corresponding\n * FileMetadata or FolderMetadata for the item at time of deletion, and not a\n * DeletedMetadata object.\n * @function Dropbox#filesDeleteV2\n * @arg {FilesDeleteArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesDeleteV2 = function (arg) {\n return this.request('files/delete_v2', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Delete the file or folder at a given path. If the path is a folder, all its\n * contents will be deleted too. A successful response indicates that the file\n * or folder was deleted. The returned metadata will be the corresponding\n * FileMetadata or FolderMetadata for the item at time of deletion, and not a\n * DeletedMetadata object.\n * @function Dropbox#filesDelete\n * @deprecated\n * @arg {FilesDeleteArg} arg - The request parameters.\n * @returns {Promise.<(FilesFileMetadata|FilesFolderMetadata|FilesDeletedMetadata), Error.>}\n */\nroutes.filesDelete = function (arg) {\n return this.request('files/delete', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Delete multiple files/folders at once. This route is asynchronous, which\n * returns a job ID immediately and runs the delete batch asynchronously. Use\n * delete_batch/check to check the job status.\n * @function Dropbox#filesDeleteBatch\n * @arg {FilesDeleteBatchArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesDeleteBatch = function (arg) {\n return this.request('files/delete_batch', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Returns the status of an asynchronous job for delete_batch. If success, it\n * returns list of result for each entry.\n * @function Dropbox#filesDeleteBatchCheck\n * @arg {AsyncPollArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesDeleteBatchCheck = function (arg) {\n return this.request('files/delete_batch/check', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Download a file from a user's Dropbox.\n * @function Dropbox#filesDownload\n * @arg {FilesDownloadArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesDownload = function (arg) {\n return this.request('files/download', arg, 'user', 'content', 'download');\n};\n\n/**\n * Download a folder from the user's Dropbox, as a zip file. The folder must be\n * less than 20 GB in size and have fewer than 10,000 total files. The input\n * cannot be a single file. Any single file must be less than 4GB in size.\n * @function Dropbox#filesDownloadZip\n * @arg {FilesDownloadZipArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesDownloadZip = function (arg) {\n return this.request('files/download_zip', arg, 'user', 'content', 'download');\n};\n\n/**\n * Export a file from a user's Dropbox. This route only supports exporting files\n * that cannot be downloaded directly and whose ExportResult.file_metadata has\n * ExportInfo.export_as populated.\n * @function Dropbox#filesExport\n * @arg {FilesExportArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesExport = function (arg) {\n return this.request('files/export', arg, 'user', 'content', 'download');\n};\n\n/**\n * Returns the metadata for a file or folder. Note: Metadata for the root folder\n * is unsupported.\n * @function Dropbox#filesGetMetadata\n * @arg {FilesGetMetadataArg} arg - The request parameters.\n * @returns {Promise.<(FilesFileMetadata|FilesFolderMetadata|FilesDeletedMetadata), Error.>}\n */\nroutes.filesGetMetadata = function (arg) {\n return this.request('files/get_metadata', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Get a preview for a file. Currently, PDF previews are generated for files\n * with the following extensions: .ai, .doc, .docm, .docx, .eps, .gdoc,\n * .gslides, .odp, .odt, .pps, .ppsm, .ppsx, .ppt, .pptm, .pptx, .rtf. HTML\n * previews are generated for files with the following extensions: .csv, .ods,\n * .xls, .xlsm, .gsheet, .xlsx. Other formats will return an unsupported\n * extension error.\n * @function Dropbox#filesGetPreview\n * @arg {FilesPreviewArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesGetPreview = function (arg) {\n return this.request('files/get_preview', arg, 'user', 'content', 'download');\n};\n\n/**\n * Get a temporary link to stream content of a file. This link will expire in\n * four hours and afterwards you will get 410 Gone. This URL should not be used\n * to display content directly in the browser. The Content-Type of the link is\n * determined automatically by the file's mime type.\n * @function Dropbox#filesGetTemporaryLink\n * @arg {FilesGetTemporaryLinkArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesGetTemporaryLink = function (arg) {\n return this.request('files/get_temporary_link', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Get a one-time use temporary upload link to upload a file to a Dropbox\n * location. This endpoint acts as a delayed upload. The returned temporary\n * upload link may be used to make a POST request with the data to be uploaded.\n * The upload will then be perfomed with the CommitInfo previously provided to\n * get_temporary_upload_link but evaluated only upon consumption. Hence, errors\n * stemming from invalid CommitInfo with respect to the state of the user's\n * Dropbox will only be communicated at consumption time. Additionally, these\n * errors are surfaced as generic HTTP 409 Conflict responses, potentially\n * hiding issue details. The maximum temporary upload link duration is 4 hours.\n * Upon consumption or expiration, a new link will have to be generated.\n * Multiple links may exist for a specific upload path at any given time. The\n * POST request on the temporary upload link must have its Content-Type set to\n * \"application/octet-stream\". Example temporary upload link consumption\n * request: curl -X POST\n * https://dl.dropboxusercontent.com/apitul/1/bNi2uIYF51cVBND --header\n * \"Content-Type: application/octet-stream\" --data-binary @local_file.txt A\n * successful temporary upload link consumption request returns the content hash\n * of the uploaded data in JSON format. Example succesful temporary upload link\n * consumption response: {\"content-hash\":\n * \"599d71033d700ac892a0e48fa61b125d2f5994\"} An unsuccessful temporary upload\n * link consumption request returns any of the following status codes: HTTP 400\n * Bad Request: Content-Type is not one of application/octet-stream and\n * text/plain or request is invalid. HTTP 409 Conflict: The temporary upload\n * link does not exist or is currently unavailable, the upload failed, or\n * another error happened. HTTP 410 Gone: The temporary upload link is expired\n * or consumed. Example unsuccessful temporary upload link consumption\n * response: Temporary upload link has been recently consumed.\n * @function Dropbox#filesGetTemporaryUploadLink\n * @arg {FilesGetTemporaryUploadLinkArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesGetTemporaryUploadLink = function (arg) {\n return this.request('files/get_temporary_upload_link', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Get a thumbnail for an image. This method currently supports files with the\n * following file extensions: jpg, jpeg, png, tiff, tif, gif and bmp. Photos\n * that are larger than 20MB in size won't be converted to a thumbnail.\n * @function Dropbox#filesGetThumbnail\n * @arg {FilesThumbnailArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesGetThumbnail = function (arg) {\n return this.request('files/get_thumbnail', arg, 'user', 'content', 'download');\n};\n\n/**\n * Get thumbnails for a list of images. We allow up to 25 thumbnails in a single\n * batch. This method currently supports files with the following file\n * extensions: jpg, jpeg, png, tiff, tif, gif and bmp. Photos that are larger\n * than 20MB in size won't be converted to a thumbnail.\n * @function Dropbox#filesGetThumbnailBatch\n * @arg {FilesGetThumbnailBatchArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesGetThumbnailBatch = function (arg) {\n return this.request('files/get_thumbnail_batch', arg, 'user', 'content', 'rpc');\n};\n\n/**\n * Starts returning the contents of a folder. If the result's\n * ListFolderResult.has_more field is true, call list_folder/continue with the\n * returned ListFolderResult.cursor to retrieve more entries. If you're using\n * ListFolderArg.recursive set to true to keep a local cache of the contents of\n * a Dropbox account, iterate through each entry in order and process them as\n * follows to keep your local state in sync: For each FileMetadata, store the\n * new entry at the given path in your local state. If the required parent\n * folders don't exist yet, create them. If there's already something else at\n * the given path, replace it and remove all its children. For each\n * FolderMetadata, store the new entry at the given path in your local state. If\n * the required parent folders don't exist yet, create them. If there's already\n * something else at the given path, replace it but leave the children as they\n * are. Check the new entry's FolderSharingInfo.read_only and set all its\n * children's read-only statuses to match. For each DeletedMetadata, if your\n * local state has something at the given path, remove it and all its children.\n * If there's nothing at the given path, ignore this entry. Note:\n * auth.RateLimitError may be returned if multiple list_folder or\n * list_folder/continue calls with same parameters are made simultaneously by\n * same API app for same user. If your app implements retry logic, please hold\n * off the retry until the previous request finishes.\n * @function Dropbox#filesListFolder\n * @arg {FilesListFolderArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesListFolder = function (arg) {\n return this.request('files/list_folder', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Once a cursor has been retrieved from list_folder, use this to paginate\n * through all files and retrieve updates to the folder, following the same\n * rules as documented for list_folder.\n * @function Dropbox#filesListFolderContinue\n * @arg {FilesListFolderContinueArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesListFolderContinue = function (arg) {\n return this.request('files/list_folder/continue', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * A way to quickly get a cursor for the folder's state. Unlike list_folder,\n * list_folder/get_latest_cursor doesn't return any entries. This endpoint is\n * for app which only needs to know about new files and modifications and\n * doesn't need to know about files that already exist in Dropbox.\n * @function Dropbox#filesListFolderGetLatestCursor\n * @arg {FilesListFolderArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesListFolderGetLatestCursor = function (arg) {\n return this.request('files/list_folder/get_latest_cursor', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * A longpoll endpoint to wait for changes on an account. In conjunction with\n * list_folder/continue, this call gives you a low-latency way to monitor an\n * account for file changes. The connection will block until there are changes\n * available or a timeout occurs. This endpoint is useful mostly for client-side\n * apps. If you're looking for server-side notifications, check out our webhooks\n * documentation https://www.dropbox.com/developers/reference/webhooks.\n * @function Dropbox#filesListFolderLongpoll\n * @arg {FilesListFolderLongpollArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesListFolderLongpoll = function (arg) {\n return this.request('files/list_folder/longpoll', arg, 'noauth', 'notify', 'rpc');\n};\n\n/**\n * Returns revisions for files based on a file path or a file id. The file path\n * or file id is identified from the latest file entry at the given file path or\n * id. This end point allows your app to query either by file path or file id by\n * setting the mode parameter appropriately. In the ListRevisionsMode.path\n * (default) mode, all revisions at the same file path as the latest file entry\n * are returned. If revisions with the same file id are desired, then mode must\n * be set to ListRevisionsMode.id. The ListRevisionsMode.id mode is useful to\n * retrieve revisions for a given file across moves or renames.\n * @function Dropbox#filesListRevisions\n * @arg {FilesListRevisionsArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesListRevisions = function (arg) {\n return this.request('files/list_revisions', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Move a file or folder to a different location in the user's Dropbox. If the\n * source path is a folder all its contents will be moved.\n * @function Dropbox#filesMoveV2\n * @arg {FilesRelocationArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesMoveV2 = function (arg) {\n return this.request('files/move_v2', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Move a file or folder to a different location in the user's Dropbox. If the\n * source path is a folder all its contents will be moved.\n * @function Dropbox#filesMove\n * @deprecated\n * @arg {FilesRelocationArg} arg - The request parameters.\n * @returns {Promise.<(FilesFileMetadata|FilesFolderMetadata|FilesDeletedMetadata), Error.>}\n */\nroutes.filesMove = function (arg) {\n return this.request('files/move', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Move multiple files or folders to different locations at once in the user's\n * Dropbox. This route will replace move_batch. The main difference is this\n * route will return status for each entry, while move_batch raises failure if\n * any entry fails. This route will either finish synchronously, or return a job\n * ID and do the async move job in background. Please use move_batch/check_v2 to\n * check the job status.\n * @function Dropbox#filesMoveBatchV2\n * @arg {FilesMoveBatchArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesMoveBatchV2 = function (arg) {\n return this.request('files/move_batch_v2', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Move multiple files or folders to different locations at once in the user's\n * Dropbox. This route is 'all or nothing', which means if one entry fails, the\n * whole transaction will abort. This route will return job ID immediately and\n * do the async moving job in background. Please use move_batch/check to check\n * the job status.\n * @function Dropbox#filesMoveBatch\n * @arg {FilesRelocationBatchArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesMoveBatch = function (arg) {\n return this.request('files/move_batch', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Returns the status of an asynchronous job for move_batch_v2. It returns list\n * of results for each entry.\n * @function Dropbox#filesMoveBatchCheckV2\n * @arg {AsyncPollArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesMoveBatchCheckV2 = function (arg) {\n return this.request('files/move_batch/check_v2', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Returns the status of an asynchronous job for move_batch. If success, it\n * returns list of results for each entry.\n * @function Dropbox#filesMoveBatchCheck\n * @arg {AsyncPollArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesMoveBatchCheck = function (arg) {\n return this.request('files/move_batch/check', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Permanently delete the file or folder at a given path (see\n * https://www.dropbox.com/en/help/40). Note: This endpoint is only available\n * for Dropbox Business apps.\n * @function Dropbox#filesPermanentlyDelete\n * @arg {FilesDeleteArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesPermanentlyDelete = function (arg) {\n return this.request('files/permanently_delete', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * @function Dropbox#filesPropertiesAdd\n * @deprecated\n * @arg {FilePropertiesAddPropertiesArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesPropertiesAdd = function (arg) {\n return this.request('files/properties/add', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * @function Dropbox#filesPropertiesOverwrite\n * @deprecated\n * @arg {FilePropertiesOverwritePropertyGroupArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesPropertiesOverwrite = function (arg) {\n return this.request('files/properties/overwrite', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * @function Dropbox#filesPropertiesRemove\n * @deprecated\n * @arg {FilePropertiesRemovePropertiesArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesPropertiesRemove = function (arg) {\n return this.request('files/properties/remove', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * @function Dropbox#filesPropertiesTemplateGet\n * @deprecated\n * @arg {FilePropertiesGetTemplateArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesPropertiesTemplateGet = function (arg) {\n return this.request('files/properties/template/get', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * @function Dropbox#filesPropertiesTemplateList\n * @deprecated\n * @arg {void} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesPropertiesTemplateList = function (arg) {\n return this.request('files/properties/template/list', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * @function Dropbox#filesPropertiesUpdate\n * @deprecated\n * @arg {FilePropertiesUpdatePropertiesArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesPropertiesUpdate = function (arg) {\n return this.request('files/properties/update', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Restore a specific revision of a file to the given path.\n * @function Dropbox#filesRestore\n * @arg {FilesRestoreArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesRestore = function (arg) {\n return this.request('files/restore', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Save the data from a specified URL into a file in user's Dropbox. Note that\n * the transfer from the URL must complete within 5 minutes, or the operation\n * will time out and the job will fail. If the given path already exists, the\n * file will be renamed to avoid the conflict (e.g. myfile (1).txt).\n * @function Dropbox#filesSaveUrl\n * @arg {FilesSaveUrlArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesSaveUrl = function (arg) {\n return this.request('files/save_url', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Check the status of a save_url job.\n * @function Dropbox#filesSaveUrlCheckJobStatus\n * @arg {AsyncPollArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesSaveUrlCheckJobStatus = function (arg) {\n return this.request('files/save_url/check_job_status', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Searches for files and folders. Note: Recent changes may not immediately be\n * reflected in search results due to a short delay in indexing.\n * @function Dropbox#filesSearch\n * @arg {FilesSearchArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesSearch = function (arg) {\n return this.request('files/search', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Create a new file with the contents provided in the request. Do not use this\n * to upload a file larger than 150 MB. Instead, create an upload session with\n * upload_session/start. Calls to this endpoint will count as data transport\n * calls for any Dropbox Business teams with a limit on the number of data\n * transport calls allowed per month. For more information, see the Data\n * transport limit page\n * https://www.dropbox.com/developers/reference/data-transport-limit.\n * @function Dropbox#filesUpload\n * @arg {FilesCommitInfo} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesUpload = function (arg) {\n return this.request('files/upload', arg, 'user', 'content', 'upload');\n};\n\n/**\n * Append more data to an upload session. When the parameter close is set, this\n * call will close the session. A single request should not upload more than 150\n * MB. The maximum size of a file one can upload to an upload session is 350 GB.\n * Calls to this endpoint will count as data transport calls for any Dropbox\n * Business teams with a limit on the number of data transport calls allowed per\n * month. For more information, see the Data transport limit page\n * https://www.dropbox.com/developers/reference/data-transport-limit.\n * @function Dropbox#filesUploadSessionAppendV2\n * @arg {FilesUploadSessionAppendArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesUploadSessionAppendV2 = function (arg) {\n return this.request('files/upload_session/append_v2', arg, 'user', 'content', 'upload');\n};\n\n/**\n * Append more data to an upload session. A single request should not upload\n * more than 150 MB. The maximum size of a file one can upload to an upload\n * session is 350 GB. Calls to this endpoint will count as data transport calls\n * for any Dropbox Business teams with a limit on the number of data transport\n * calls allowed per month. For more information, see the Data transport limit\n * page https://www.dropbox.com/developers/reference/data-transport-limit.\n * @function Dropbox#filesUploadSessionAppend\n * @deprecated\n * @arg {FilesUploadSessionCursor} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesUploadSessionAppend = function (arg) {\n return this.request('files/upload_session/append', arg, 'user', 'content', 'upload');\n};\n\n/**\n * Finish an upload session and save the uploaded data to the given file path. A\n * single request should not upload more than 150 MB. The maximum size of a file\n * one can upload to an upload session is 350 GB. Calls to this endpoint will\n * count as data transport calls for any Dropbox Business teams with a limit on\n * the number of data transport calls allowed per month. For more information,\n * see the Data transport limit page\n * https://www.dropbox.com/developers/reference/data-transport-limit.\n * @function Dropbox#filesUploadSessionFinish\n * @arg {FilesUploadSessionFinishArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesUploadSessionFinish = function (arg) {\n return this.request('files/upload_session/finish', arg, 'user', 'content', 'upload');\n};\n\n/**\n * This route helps you commit many files at once into a user's Dropbox. Use\n * upload_session/start and upload_session/append_v2 to upload file contents. We\n * recommend uploading many files in parallel to increase throughput. Once the\n * file contents have been uploaded, rather than calling upload_session/finish,\n * use this route to finish all your upload sessions in a single request.\n * UploadSessionStartArg.close or UploadSessionAppendArg.close needs to be true\n * for the last upload_session/start or upload_session/append_v2 call. The\n * maximum size of a file one can upload to an upload session is 350 GB. This\n * route will return a job_id immediately and do the async commit job in\n * background. Use upload_session/finish_batch/check to check the job status.\n * For the same account, this route should be executed serially. That means you\n * should not start the next job before current job finishes. We allow up to\n * 1000 entries in a single request. Calls to this endpoint will count as data\n * transport calls for any Dropbox Business teams with a limit on the number of\n * data transport calls allowed per month. For more information, see the Data\n * transport limit page\n * https://www.dropbox.com/developers/reference/data-transport-limit.\n * @function Dropbox#filesUploadSessionFinishBatch\n * @arg {FilesUploadSessionFinishBatchArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesUploadSessionFinishBatch = function (arg) {\n return this.request('files/upload_session/finish_batch', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Returns the status of an asynchronous job for upload_session/finish_batch. If\n * success, it returns list of result for each entry.\n * @function Dropbox#filesUploadSessionFinishBatchCheck\n * @arg {AsyncPollArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesUploadSessionFinishBatchCheck = function (arg) {\n return this.request('files/upload_session/finish_batch/check', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Upload sessions allow you to upload a single file in one or more requests,\n * for example where the size of the file is greater than 150 MB. This call\n * starts a new upload session with the given data. You can then use\n * upload_session/append_v2 to add more data and upload_session/finish to save\n * all the data to a file in Dropbox. A single request should not upload more\n * than 150 MB. The maximum size of a file one can upload to an upload session\n * is 350 GB. An upload session can be used for a maximum of 48 hours.\n * Attempting to use an UploadSessionStartResult.session_id with\n * upload_session/append_v2 or upload_session/finish more than 48 hours after\n * its creation will return a UploadSessionLookupError.not_found. Calls to this\n * endpoint will count as data transport calls for any Dropbox Business teams\n * with a limit on the number of data transport calls allowed per month. For\n * more information, see the Data transport limit page\n * https://www.dropbox.com/developers/reference/data-transport-limit.\n * @function Dropbox#filesUploadSessionStart\n * @arg {FilesUploadSessionStartArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.filesUploadSessionStart = function (arg) {\n return this.request('files/upload_session/start', arg, 'user', 'content', 'upload');\n};\n\n/**\n * Marks the given Paper doc as archived. Note: This action can be performed or\n * undone by anyone with edit permissions to the doc.\n * @function Dropbox#paperDocsArchive\n * @arg {PaperRefPaperDoc} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.paperDocsArchive = function (arg) {\n return this.request('paper/docs/archive', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Creates a new Paper doc with the provided content.\n * @function Dropbox#paperDocsCreate\n * @arg {PaperPaperDocCreateArgs} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.paperDocsCreate = function (arg) {\n return this.request('paper/docs/create', arg, 'user', 'api', 'upload');\n};\n\n/**\n * Exports and downloads Paper doc either as HTML or markdown.\n * @function Dropbox#paperDocsDownload\n * @arg {PaperPaperDocExport} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.paperDocsDownload = function (arg) {\n return this.request('paper/docs/download', arg, 'user', 'api', 'download');\n};\n\n/**\n * Lists the users who are explicitly invited to the Paper folder in which the\n * Paper doc is contained. For private folders all users (including owner)\n * shared on the folder are listed and for team folders all non-team users\n * shared on the folder are returned.\n * @function Dropbox#paperDocsFolderUsersList\n * @arg {PaperListUsersOnFolderArgs} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.paperDocsFolderUsersList = function (arg) {\n return this.request('paper/docs/folder_users/list', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Once a cursor has been retrieved from docs/folder_users/list, use this to\n * paginate through all users on the Paper folder.\n * @function Dropbox#paperDocsFolderUsersListContinue\n * @arg {PaperListUsersOnFolderContinueArgs} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.paperDocsFolderUsersListContinue = function (arg) {\n return this.request('paper/docs/folder_users/list/continue', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Retrieves folder information for the given Paper doc. This includes: -\n * folder sharing policy; permissions for subfolders are set by the top-level\n * folder. - full 'filepath', i.e. the list of folders (both folderId and\n * folderName) from the root folder to the folder directly containing the\n * Paper doc. Note: If the Paper doc is not in any folder (aka unfiled) the\n * response will be empty.\n * @function Dropbox#paperDocsGetFolderInfo\n * @arg {PaperRefPaperDoc} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.paperDocsGetFolderInfo = function (arg) {\n return this.request('paper/docs/get_folder_info', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Return the list of all Paper docs according to the argument specifications.\n * To iterate over through the full pagination, pass the cursor to\n * docs/list/continue.\n * @function Dropbox#paperDocsList\n * @arg {PaperListPaperDocsArgs} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.paperDocsList = function (arg) {\n return this.request('paper/docs/list', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Once a cursor has been retrieved from docs/list, use this to paginate through\n * all Paper doc.\n * @function Dropbox#paperDocsListContinue\n * @arg {PaperListPaperDocsContinueArgs} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.paperDocsListContinue = function (arg) {\n return this.request('paper/docs/list/continue', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Permanently deletes the given Paper doc. This operation is final as the doc\n * cannot be recovered. Note: This action can be performed only by the doc\n * owner.\n * @function Dropbox#paperDocsPermanentlyDelete\n * @arg {PaperRefPaperDoc} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.paperDocsPermanentlyDelete = function (arg) {\n return this.request('paper/docs/permanently_delete', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Gets the default sharing policy for the given Paper doc.\n * @function Dropbox#paperDocsSharingPolicyGet\n * @arg {PaperRefPaperDoc} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.paperDocsSharingPolicyGet = function (arg) {\n return this.request('paper/docs/sharing_policy/get', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Sets the default sharing policy for the given Paper doc. The default\n * 'team_sharing_policy' can be changed only by teams, omit this field for\n * personal accounts. Note: 'public_sharing_policy' cannot be set to the value\n * 'disabled' because this setting can be changed only via the team admin\n * console.\n * @function Dropbox#paperDocsSharingPolicySet\n * @arg {PaperPaperDocSharingPolicy} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.paperDocsSharingPolicySet = function (arg) {\n return this.request('paper/docs/sharing_policy/set', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Updates an existing Paper doc with the provided content.\n * @function Dropbox#paperDocsUpdate\n * @arg {PaperPaperDocUpdateArgs} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.paperDocsUpdate = function (arg) {\n return this.request('paper/docs/update', arg, 'user', 'api', 'upload');\n};\n\n/**\n * Allows an owner or editor to add users to a Paper doc or change their\n * permissions using their email address or Dropbox account ID. Note: The Doc\n * owner's permissions cannot be changed.\n * @function Dropbox#paperDocsUsersAdd\n * @arg {PaperAddPaperDocUser} arg - The request parameters.\n * @returns {Promise., Error.>}\n */\nroutes.paperDocsUsersAdd = function (arg) {\n return this.request('paper/docs/users/add', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Lists all users who visited the Paper doc or users with explicit access. This\n * call excludes users who have been removed. The list is sorted by the date of\n * the visit or the share date. The list will include both users, the explicitly\n * shared ones as well as those who came in using the Paper url link.\n * @function Dropbox#paperDocsUsersList\n * @arg {PaperListUsersOnPaperDocArgs} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.paperDocsUsersList = function (arg) {\n return this.request('paper/docs/users/list', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Once a cursor has been retrieved from docs/users/list, use this to paginate\n * through all users on the Paper doc.\n * @function Dropbox#paperDocsUsersListContinue\n * @arg {PaperListUsersOnPaperDocContinueArgs} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.paperDocsUsersListContinue = function (arg) {\n return this.request('paper/docs/users/list/continue', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Allows an owner or editor to remove users from a Paper doc using their email\n * address or Dropbox account ID. Note: Doc owner cannot be removed.\n * @function Dropbox#paperDocsUsersRemove\n * @arg {PaperRemovePaperDocUser} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.paperDocsUsersRemove = function (arg) {\n return this.request('paper/docs/users/remove', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Adds specified members to a file.\n * @function Dropbox#sharingAddFileMember\n * @arg {SharingAddFileMemberArgs} arg - The request parameters.\n * @returns {Promise., Error.>}\n */\nroutes.sharingAddFileMember = function (arg) {\n return this.request('sharing/add_file_member', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Allows an owner or editor (if the ACL update policy allows) of a shared\n * folder to add another member. For the new member to get access to all the\n * functionality for this folder, you will need to call mount_folder on their\n * behalf.\n * @function Dropbox#sharingAddFolderMember\n * @arg {SharingAddFolderMemberArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingAddFolderMember = function (arg) {\n return this.request('sharing/add_folder_member', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Identical to update_file_member but with less information returned.\n * @function Dropbox#sharingChangeFileMemberAccess\n * @deprecated\n * @arg {SharingChangeFileMemberAccessArgs} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingChangeFileMemberAccess = function (arg) {\n return this.request('sharing/change_file_member_access', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Returns the status of an asynchronous job.\n * @function Dropbox#sharingCheckJobStatus\n * @arg {AsyncPollArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingCheckJobStatus = function (arg) {\n return this.request('sharing/check_job_status', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Returns the status of an asynchronous job for sharing a folder.\n * @function Dropbox#sharingCheckRemoveMemberJobStatus\n * @arg {AsyncPollArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingCheckRemoveMemberJobStatus = function (arg) {\n return this.request('sharing/check_remove_member_job_status', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Returns the status of an asynchronous job for sharing a folder.\n * @function Dropbox#sharingCheckShareJobStatus\n * @arg {AsyncPollArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingCheckShareJobStatus = function (arg) {\n return this.request('sharing/check_share_job_status', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Create a shared link. If a shared link already exists for the given path,\n * that link is returned. Note that in the returned PathLinkMetadata, the\n * PathLinkMetadata.url field is the shortened URL if\n * CreateSharedLinkArg.short_url argument is set to true. Previously, it was\n * technically possible to break a shared link by moving or renaming the\n * corresponding file or folder. In the future, this will no longer be the case,\n * so your app shouldn't rely on this behavior. Instead, if your app needs to\n * revoke a shared link, use revoke_shared_link.\n * @function Dropbox#sharingCreateSharedLink\n * @deprecated\n * @arg {SharingCreateSharedLinkArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingCreateSharedLink = function (arg) {\n return this.request('sharing/create_shared_link', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Create a shared link with custom settings. If no settings are given then the\n * default visibility is RequestedVisibility.public (The resolved visibility,\n * though, may depend on other aspects such as team and shared folder settings).\n * @function Dropbox#sharingCreateSharedLinkWithSettings\n * @arg {SharingCreateSharedLinkWithSettingsArg} arg - The request parameters.\n * @returns {Promise.<(SharingFileLinkMetadata|SharingFolderLinkMetadata|SharingSharedLinkMetadata), Error.>}\n */\nroutes.sharingCreateSharedLinkWithSettings = function (arg) {\n return this.request('sharing/create_shared_link_with_settings', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Returns shared file metadata.\n * @function Dropbox#sharingGetFileMetadata\n * @arg {SharingGetFileMetadataArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingGetFileMetadata = function (arg) {\n return this.request('sharing/get_file_metadata', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Returns shared file metadata.\n * @function Dropbox#sharingGetFileMetadataBatch\n * @arg {SharingGetFileMetadataBatchArg} arg - The request parameters.\n * @returns {Promise., Error.>}\n */\nroutes.sharingGetFileMetadataBatch = function (arg) {\n return this.request('sharing/get_file_metadata/batch', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Returns shared folder metadata by its folder ID.\n * @function Dropbox#sharingGetFolderMetadata\n * @arg {SharingGetMetadataArgs} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingGetFolderMetadata = function (arg) {\n return this.request('sharing/get_folder_metadata', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Download the shared link's file from a user's Dropbox.\n * @function Dropbox#sharingGetSharedLinkFile\n * @arg {Object} arg - The request parameters.\n * @returns {Promise.<(SharingFileLinkMetadata|SharingFolderLinkMetadata|SharingSharedLinkMetadata), Error.>}\n */\nroutes.sharingGetSharedLinkFile = function (arg) {\n return this.request('sharing/get_shared_link_file', arg, 'user', 'content', 'download');\n};\n\n/**\n * Get the shared link's metadata.\n * @function Dropbox#sharingGetSharedLinkMetadata\n * @arg {SharingGetSharedLinkMetadataArg} arg - The request parameters.\n * @returns {Promise.<(SharingFileLinkMetadata|SharingFolderLinkMetadata|SharingSharedLinkMetadata), Error.>}\n */\nroutes.sharingGetSharedLinkMetadata = function (arg) {\n return this.request('sharing/get_shared_link_metadata', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Returns a list of LinkMetadata objects for this user, including collection\n * links. If no path is given, returns a list of all shared links for the\n * current user, including collection links, up to a maximum of 1000 links. If a\n * non-empty path is given, returns a list of all shared links that allow access\n * to the given path. Collection links are never returned in this case. Note\n * that the url field in the response is never the shortened URL.\n * @function Dropbox#sharingGetSharedLinks\n * @deprecated\n * @arg {SharingGetSharedLinksArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingGetSharedLinks = function (arg) {\n return this.request('sharing/get_shared_links', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Use to obtain the members who have been invited to a file, both inherited and\n * uninherited members.\n * @function Dropbox#sharingListFileMembers\n * @arg {SharingListFileMembersArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingListFileMembers = function (arg) {\n return this.request('sharing/list_file_members', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Get members of multiple files at once. The arguments to this route are more\n * limited, and the limit on query result size per file is more strict. To\n * customize the results more, use the individual file endpoint. Inherited users\n * and groups are not included in the result, and permissions are not returned\n * for this endpoint.\n * @function Dropbox#sharingListFileMembersBatch\n * @arg {SharingListFileMembersBatchArg} arg - The request parameters.\n * @returns {Promise., Error.>}\n */\nroutes.sharingListFileMembersBatch = function (arg) {\n return this.request('sharing/list_file_members/batch', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Once a cursor has been retrieved from list_file_members or\n * list_file_members/batch, use this to paginate through all shared file\n * members.\n * @function Dropbox#sharingListFileMembersContinue\n * @arg {SharingListFileMembersContinueArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingListFileMembersContinue = function (arg) {\n return this.request('sharing/list_file_members/continue', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Returns shared folder membership by its folder ID.\n * @function Dropbox#sharingListFolderMembers\n * @arg {SharingListFolderMembersArgs} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingListFolderMembers = function (arg) {\n return this.request('sharing/list_folder_members', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Once a cursor has been retrieved from list_folder_members, use this to\n * paginate through all shared folder members.\n * @function Dropbox#sharingListFolderMembersContinue\n * @arg {SharingListFolderMembersContinueArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingListFolderMembersContinue = function (arg) {\n return this.request('sharing/list_folder_members/continue', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Return the list of all shared folders the current user has access to.\n * @function Dropbox#sharingListFolders\n * @arg {SharingListFoldersArgs} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingListFolders = function (arg) {\n return this.request('sharing/list_folders', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Once a cursor has been retrieved from list_folders, use this to paginate\n * through all shared folders. The cursor must come from a previous call to\n * list_folders or list_folders/continue.\n * @function Dropbox#sharingListFoldersContinue\n * @arg {SharingListFoldersContinueArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingListFoldersContinue = function (arg) {\n return this.request('sharing/list_folders/continue', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Return the list of all shared folders the current user can mount or unmount.\n * @function Dropbox#sharingListMountableFolders\n * @arg {SharingListFoldersArgs} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingListMountableFolders = function (arg) {\n return this.request('sharing/list_mountable_folders', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Once a cursor has been retrieved from list_mountable_folders, use this to\n * paginate through all mountable shared folders. The cursor must come from a\n * previous call to list_mountable_folders or list_mountable_folders/continue.\n * @function Dropbox#sharingListMountableFoldersContinue\n * @arg {SharingListFoldersContinueArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingListMountableFoldersContinue = function (arg) {\n return this.request('sharing/list_mountable_folders/continue', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Returns a list of all files shared with current user. Does not include files\n * the user has received via shared folders, and does not include unclaimed\n * invitations.\n * @function Dropbox#sharingListReceivedFiles\n * @arg {SharingListFilesArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingListReceivedFiles = function (arg) {\n return this.request('sharing/list_received_files', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Get more results with a cursor from list_received_files.\n * @function Dropbox#sharingListReceivedFilesContinue\n * @arg {SharingListFilesContinueArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingListReceivedFilesContinue = function (arg) {\n return this.request('sharing/list_received_files/continue', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * List shared links of this user. If no path is given, returns a list of all\n * shared links for the current user. If a non-empty path is given, returns a\n * list of all shared links that allow access to the given path - direct links\n * to the given path and links to parent folders of the given path. Links to\n * parent folders can be suppressed by setting direct_only to true.\n * @function Dropbox#sharingListSharedLinks\n * @arg {SharingListSharedLinksArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingListSharedLinks = function (arg) {\n return this.request('sharing/list_shared_links', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Modify the shared link's settings. If the requested visibility conflict with\n * the shared links policy of the team or the shared folder (in case the linked\n * file is part of a shared folder) then the LinkPermissions.resolved_visibility\n * of the returned SharedLinkMetadata will reflect the actual visibility of the\n * shared link and the LinkPermissions.requested_visibility will reflect the\n * requested visibility.\n * @function Dropbox#sharingModifySharedLinkSettings\n * @arg {SharingModifySharedLinkSettingsArgs} arg - The request parameters.\n * @returns {Promise.<(SharingFileLinkMetadata|SharingFolderLinkMetadata|SharingSharedLinkMetadata), Error.>}\n */\nroutes.sharingModifySharedLinkSettings = function (arg) {\n return this.request('sharing/modify_shared_link_settings', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * The current user mounts the designated folder. Mount a shared folder for a\n * user after they have been added as a member. Once mounted, the shared folder\n * will appear in their Dropbox.\n * @function Dropbox#sharingMountFolder\n * @arg {SharingMountFolderArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingMountFolder = function (arg) {\n return this.request('sharing/mount_folder', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * The current user relinquishes their membership in the designated file. Note\n * that the current user may still have inherited access to this file through\n * the parent folder.\n * @function Dropbox#sharingRelinquishFileMembership\n * @arg {SharingRelinquishFileMembershipArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingRelinquishFileMembership = function (arg) {\n return this.request('sharing/relinquish_file_membership', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * The current user relinquishes their membership in the designated shared\n * folder and will no longer have access to the folder. A folder owner cannot\n * relinquish membership in their own folder. This will run synchronously if\n * leave_a_copy is false, and asynchronously if leave_a_copy is true.\n * @function Dropbox#sharingRelinquishFolderMembership\n * @arg {SharingRelinquishFolderMembershipArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingRelinquishFolderMembership = function (arg) {\n return this.request('sharing/relinquish_folder_membership', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Identical to remove_file_member_2 but with less information returned.\n * @function Dropbox#sharingRemoveFileMember\n * @deprecated\n * @arg {SharingRemoveFileMemberArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingRemoveFileMember = function (arg) {\n return this.request('sharing/remove_file_member', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Removes a specified member from the file.\n * @function Dropbox#sharingRemoveFileMember2\n * @arg {SharingRemoveFileMemberArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingRemoveFileMember2 = function (arg) {\n return this.request('sharing/remove_file_member_2', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Allows an owner or editor (if the ACL update policy allows) of a shared\n * folder to remove another member.\n * @function Dropbox#sharingRemoveFolderMember\n * @arg {SharingRemoveFolderMemberArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingRemoveFolderMember = function (arg) {\n return this.request('sharing/remove_folder_member', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Revoke a shared link. Note that even after revoking a shared link to a file,\n * the file may be accessible if there are shared links leading to any of the\n * file parent folders. To list all shared links that enable access to a\n * specific file, you can use the list_shared_links with the file as the\n * ListSharedLinksArg.path argument.\n * @function Dropbox#sharingRevokeSharedLink\n * @arg {SharingRevokeSharedLinkArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingRevokeSharedLink = function (arg) {\n return this.request('sharing/revoke_shared_link', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Change the inheritance policy of an existing Shared Folder. Only permitted\n * for shared folders in a shared team root. If a ShareFolderLaunch.async_job_id\n * is returned, you'll need to call check_share_job_status until the action\n * completes to get the metadata for the folder.\n * @function Dropbox#sharingSetAccessInheritance\n * @arg {SharingSetAccessInheritanceArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingSetAccessInheritance = function (arg) {\n return this.request('sharing/set_access_inheritance', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Share a folder with collaborators. Most sharing will be completed\n * synchronously. Large folders will be completed asynchronously. To make\n * testing the async case repeatable, set `ShareFolderArg.force_async`. If a\n * ShareFolderLaunch.async_job_id is returned, you'll need to call\n * check_share_job_status until the action completes to get the metadata for the\n * folder.\n * @function Dropbox#sharingShareFolder\n * @arg {SharingShareFolderArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingShareFolder = function (arg) {\n return this.request('sharing/share_folder', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Transfer ownership of a shared folder to a member of the shared folder. User\n * must have AccessLevel.owner access to the shared folder to perform a\n * transfer.\n * @function Dropbox#sharingTransferFolder\n * @arg {SharingTransferFolderArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingTransferFolder = function (arg) {\n return this.request('sharing/transfer_folder', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * The current user unmounts the designated folder. They can re-mount the folder\n * at a later time using mount_folder.\n * @function Dropbox#sharingUnmountFolder\n * @arg {SharingUnmountFolderArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingUnmountFolder = function (arg) {\n return this.request('sharing/unmount_folder', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Remove all members from this file. Does not remove inherited members.\n * @function Dropbox#sharingUnshareFile\n * @arg {SharingUnshareFileArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingUnshareFile = function (arg) {\n return this.request('sharing/unshare_file', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Allows a shared folder owner to unshare the folder. You'll need to call\n * check_job_status to determine if the action has completed successfully.\n * @function Dropbox#sharingUnshareFolder\n * @arg {SharingUnshareFolderArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingUnshareFolder = function (arg) {\n return this.request('sharing/unshare_folder', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Changes a member's access on a shared file.\n * @function Dropbox#sharingUpdateFileMember\n * @arg {SharingUpdateFileMemberArgs} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingUpdateFileMember = function (arg) {\n return this.request('sharing/update_file_member', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Allows an owner or editor of a shared folder to update another member's\n * permissions.\n * @function Dropbox#sharingUpdateFolderMember\n * @arg {SharingUpdateFolderMemberArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingUpdateFolderMember = function (arg) {\n return this.request('sharing/update_folder_member', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Update the sharing policies for a shared folder. User must have\n * AccessLevel.owner access to the shared folder to update its policies.\n * @function Dropbox#sharingUpdateFolderPolicy\n * @arg {SharingUpdateFolderPolicyArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.sharingUpdateFolderPolicy = function (arg) {\n return this.request('sharing/update_folder_policy', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Retrieves team events. Events have a lifespan of two years. Events older than\n * two years will not be returned. Many attributes note 'may be missing due to\n * historical data gap'. Note that the file_operations category and & analogous\n * paper events are not available on all Dropbox Business plans\n * /business/plans-comparison. Use features/get_values\n * /developers/documentation/http/teams#team-features-get_values to check for\n * this feature. Permission : Team Auditing.\n * @function Dropbox#teamLogGetEvents\n * @arg {TeamLogGetTeamEventsArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.teamLogGetEvents = function (arg) {\n return this.request('team_log/get_events', arg, 'team', 'api', 'rpc');\n};\n\n/**\n * Once a cursor has been retrieved from get_events, use this to paginate\n * through all events. Permission : Team Auditing.\n * @function Dropbox#teamLogGetEventsContinue\n * @arg {TeamLogGetTeamEventsContinueArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.teamLogGetEventsContinue = function (arg) {\n return this.request('team_log/get_events/continue', arg, 'team', 'api', 'rpc');\n};\n\n/**\n * Get information about a user's account.\n * @function Dropbox#usersGetAccount\n * @arg {UsersGetAccountArg} arg - The request parameters.\n * @returns {Promise.>}\n */\nroutes.usersGetAccount = function (arg) {\n return this.request('users/get_account', arg, 'user', 'api', 'rpc');\n};\n\n/**\n * Get information about multiple user accounts. At most 300 accounts may be\n * queried per request.\n * @function Dropbox#usersGetAccountBatch\n * @arg {UsersGetAccountBatchArg} arg - The request parameters.\n * @returns {Promise.