- Documentation
- Integrations
- Apps
- Dropbox integration
Dropbox integration
Manage files and folders and react to account-level change notifications on behalf of your clients' Dropbox accounts.
What it does
The Dropbox integration lets your agency move work in and out of your clients' Dropbox accounts without leaving TaskJuice. Connect an account once and your workflows can list folders, create new folders, move or copy files, soft-delete files, fetch metadata, and mint shared links against the Dropbox HTTP API v2. When something changes inside the connected account, Dropbox notifies TaskJuice and your workflow can react in seconds.
Connect a Dropbox account
- Open your workspace in TaskJuice and navigate to Connections.
- Choose Dropbox and click Connect.
- Sign in to the Dropbox account you want to wire up and approve the scopes your BYOC client requests (
account_info.read,account_info.write,contacts.write,email,file_requests.read,file_requests.write,files.content.read,files.content.write,files.metadata.read,files.metadata.write,files.permanent_delete,openid,profile,sharing.read,sharing.write). - TaskJuice returns you to the workspace with the connection ready to use in any workflow.
To revoke access, open dropbox.com, go to Settings, Connected apps, and remove the TaskJuice authorization. The full grant flow is documented in the Dropbox OAuth guide.
Triggers
dropbox/account-changedTriggers when a change occurs in any connected Dropbox account (file added, removed, or modified). Dropbox POSTs alist_folder/longpoll-style notification carrying the changed account ids; downstream actions then call/files/list_folder/continueto materialize the delta.dropbox/file-changed-in-folderPollsPOST /2/files/list_folderfor a folder and emits one activation per cycle whoseitemsarray carries the entries seen on that listing. Dedupe is onrev, the Dropbox revision id, so a NEW file fires once and an EDITED file fires again on every content change. Entries without arev-- folders, and deleted entries when Include Deleted is on -- fall back to whole-entry identity, so each fires once. The first cycle is suppressed: it baselines the folder so an existing library does not flood the workflow. Drop a Loop node (type: array,arrayPath: items) downstream to act on each entry; omit it for a digest. Folders arrive in the same array with.tag: "folder"-- add a Filter node on that field for a New Folder workflow. Dropbox pageslist_folderthrough a SEPARATElist_folder/continueendpoint, which this poller cannot call, so one cycle sees at mostPage Sizeentries -- raise it for large folders. For a true change feed with no page ceiling, use the Account Changed webhook trigger with the List Folder Changes (Continue) action instead.dropbox/matching-item-foundPollsPOST /2/files/search_v2ordered by last-modified time and emits one activation per cycle whoseitemsarray carries the search matches. Use it to watch the WHOLE Dropbox (or one folder subtree) for items whose name matches a term, without listing a specific folder. A query string is mandatory -- Dropbox search has no match-everything mode; to watch a folder unconditionally use New or Updated File in Folder instead. Dedupe is on the match'smetadata.metadata.rev, so an edited file re-fires; folders (which carry norev) fall back to whole-match identity and fire once. The first cycle is suppressed so an existing library does not flood the workflow. Drop a Loop node (type: array,arrayPath: items) downstream to act on each match. Note Dropbox indexes content only on paid plans; on Basic, matching is filename-only.dropbox/shared-folder-addedPollsPOST /2/sharing/list_foldersand emits one activation per cycle whoseitemsarray carries the shared folders the connected account is a member of. Dedupe is onshared_folder_id, so each folder fires once -- when it is first shared with, or first created by, this account. The first cycle is suppressed so existing shared folders do not flood the workflow. Dropbox pages this endpoint through a separatelist_folders/continueroute the poller cannot call, so raise Max folders rather than expecting paging.dropbox/file-request-createdPollsPOST /2/file_requests/list_v2and emits one activation per cycle whoseitemsarray carries the file requests owned by the connected account. Only file requests created after the workflow is first published fire, judged by the request's own creation date, so editing an older request's title or deadline does not fire it. Dedupe is on the requestid, so each fires once. The first cycle is suppressed so existing requests do not flood the workflow. This watches the REQUESTS, not the files uploaded through them -- to react to uploads, watch the destination folder with New or Updated File in Folder.
Every inbound POST is authenticated by recomputing HMAC-SHA256 over the raw request body using your Dropbox app secret, and comparing the hex digest against the value Dropbox sends in the X-Dropbox-Signature header. Activations that fail the check are rejected before they reach your workflow.
Actions
Files and folders
dropbox/add-file-tagadd a tag to an item. A tag is a string. The strings are automatically converted to lowercase letters. No more than 20 tags can be added to a...dropbox/check-save-url-jobpolls a Save File from URL transfer that returned an async_job_id (POST /2/files/save_url/check_job_status). Returns .tag: "in_progress"...dropbox/copycopies a file or folder from one path to another. Optionally auto-renames on conflict.dropbox/copy-batch-check-v2returns the status of an asynchronous job for It returns list of results for each entry.dropbox/copy-batch-v2copy multiple files or folders to different locations at once in the user's Dropbox. This route will replace The main difference is this route...dropbox/create-foldercreates a new folder at the supplied path. Optionally auto-renames on conflict.dropbox/create-folder-batchcreate multiple folders at once. This route is asynchronous for large batches, which returns a job ID immediately and runs the create folder batch...dropbox/create-folder-batch-checkreturns the status of an asynchronous job for If success, it returns list of result for each entry.dropbox/deletepermanently deletes a file or folder at the supplied path. Soft-deletes by default; can be restored from the trash window.dropbox/delete-batchdelete multiple files/folders at once. This route is asynchronous, which returns a job ID immediately and runs the delete batch asynchronously....dropbox/delete-batch-checkreturns the status of an asynchronous job for If success, it returns list of result for each entry.dropbox/download-filedownloads a file's bytes and stores them as a TaskJuice file reference a later step can re-upload or attach (POST...dropbox/download-folder-zipdownload a folder from the user's Dropbox, as a zip file. The folder must be less than 20 GB in size and any single file within must be less than...dropbox/export-fileexport a file from a user's Dropbox. This route only supports exporting files that cannot be downloaded directly and whose...dropbox/get-copy-referenceget a copy reference to a file or folder. This reference string can be used to save that file or folder to another user's Dropbox by passing it to.dropbox/get-file-lock-batchreturn the lock metadata for the given list of paths.dropbox/get-file-previewget a preview for a file. Currently, PDF previews are generated for files with the following extensions: .ai, .doc, .docm, .docx, .eps, .gdoc...dropbox/get-file-tagsget list of tags assigned to items.dropbox/get-latest-cursorreturns a cursor representing the CURRENT state of a folder without listing any entries (POST /2/files/list_folder/get_latest_cursor). Use it to...dropbox/get-metadatafetches metadata for a single file or folder by path or id. Dropbox routes the read through POST with a JSON body.dropbox/get-temporary-linkreturns a direct, unauthenticated streaming URL for a file that is valid for four hours (POST /2/files/get_temporary_link). Prefer this over...dropbox/get-temporary-upload-linkcreates a one-time, unauthenticated URL that any system can POST raw bytes to, committing them to the supplied Dropbox path (POST...dropbox/get-thumbnailrenders a thumbnail for an image, PDF, or document and stores it as a TaskJuice file reference (POST...dropbox/get-thumbnail-batchget thumbnails for a list of images. We allow up to 25 thumbnails in a single batch. This method currently supports files with the following file...dropbox/list-folderlists the immediate contents of a folder by path. Supports cursor pagination via the cursor returned in the response.dropbox/list-folder-continuematerializes the delta since a stored cursor (POST /2/files/list_folder/continue). This is the second half of the Dropbox change-notification...dropbox/list-revisionslists prior revisions of a file (POST /2/files/list_revisions). Each entry carries a rev you can hand to Restore File Revision. Only...dropbox/lock-file-batchlock the files at the given paths. A locked file will be writable only by the lock holder. A successful response indicates that the file has been...dropbox/movemoves a file or folder from one path to another. Optionally creates missing parent folders or auto-renames on conflict.dropbox/move-batch-check-v2returns the status of an asynchronous job for It returns list of results for each entry.dropbox/move-batch-v2move multiple files or folders to different locations at once in the user's Dropbox. Note that we do not currently support case-only renaming....dropbox/permanently-deletepermanently delete the file or folder at a given path (see https://www.dropbox.com/en/help/40). If the given file or folder is not yet deleted...dropbox/remove-file-tagremove a tag from an item.dropbox/restore-filerestores a file to a previous revision (POST /2/files/restore). The current contents become just another revision, so this is recoverable --...dropbox/save-copy-referencesave a copy reference returned by to the user's Dropbox.dropbox/save-urltells Dropbox to fetch a public URL server-side and save the bytes into the account (POST /2/files/save_url). This is the way to get bytes INTO...dropbox/search-filessearches the connected Dropbox for files and folders matching a query (POST /2/files/search_v2). Optionally scope to a folder path, restrict to...dropbox/search-files-continuefetches the next page of a previous Search Files and Folders call (POST /2/files/search/continue_v2). Pass the cursor the prior call returned....dropbox/unlock-file-batchunlock the files at the given paths. A locked file can only be unlocked by the lock holder or, if a business account, a team admin. A successful...
Sharing
dropbox/add-file-memberadds specified members to a file.dropbox/add-folder-memberinvites one or more people to a shared folder (POST /2/sharing/add_folder_member). members is a list of ( "member": ( ".tag": "email", "email"...dropbox/check-remove-member-job-statusreturns the status of an asynchronous job for sharing a folder.dropbox/check-share-job-statusreturns the status of an asynchronous job for sharing a folder.dropbox/check-sharing-job-statusreturns the status of an asynchronous job.dropbox/create-shared-linkcreates a shareable URL for a file or folder, with optional access and expiration settings.dropbox/get-file-metadatareturns shared file metadata.dropbox/get-file-metadata-batchreturns shared file metadata.dropbox/get-folder-metadatareturns shared folder metadata by its folder ID.dropbox/get-shared-link-filedownload the shared link's file from a user's Dropbox. This is a download-style endpoint that returns the file content.dropbox/get-shared-link-metadataget the shared link's metadata.dropbox/list-file-membersuse to obtain the members who have been invited to a file, both inherited and uninherited members.dropbox/list-file-members-batchget members of multiple files at once. The arguments to this route are more limited, and the limit on query result size per file is more strict....dropbox/list-file-members-continueonce a cursor has been retrieved from or use this to paginate through all shared file members.dropbox/list-folder-membersreturns shared folder membership by its folder ID.dropbox/list-folder-members-continueonce a cursor has been retrieved from use this to paginate through all shared folder members.dropbox/list-folders-continueonce a cursor has been retrieved from use this to paginate through all shared folders. The cursor must come from a previous call to or.dropbox/list-mountable-foldersreturn the list of all shared folders the current user can mount or unmount.dropbox/list-mountable-folders-continueonce a cursor has been retrieved from use this to paginate through all mountable shared folders. The cursor must come from a previous call to or.dropbox/list-received-filesreturns a list of all files shared with current user.dropbox/list-received-files-continueget more results with a cursor from.dropbox/list-shared-folderslists every shared folder the connected account is a member of (POST /2/sharing/list_folders). Each entry carries the shared_folder_id that **Add...dropbox/list-shared-linkslists shared links in the account (POST /2/sharing/list_shared_links). With a Path set, returns the links pointing at that file or folder...dropbox/modify-shared-link-settingschanges the password, expiry, audience, access level, or download permission on an existing shared link (POST...dropbox/mount-folderthe current user mounts the designated folder. Mount a shared folder for a user after they have been added as a member. Once mounted, the shared...dropbox/relinquish-file-membershipthe current user relinquishes their membership in the designated file.dropbox/relinquish-folder-membershipthe current user relinquishes their membership in the designated shared folder and will no longer have access to the folder. A folder owner cannot...dropbox/remove-file-memberremoves a specified member from the file.dropbox/remove-folder-memberallows an owner or editor (if the ACL update policy allows) of a shared folder to remove another member.dropbox/revoke-shared-linkdisables an existing shared link so the URL stops working (POST /2/sharing/revoke_shared_link). The file itself is untouched; a new link can be...dropbox/set-access-inheritancechange the inheritance policy of an existing Shared Folder. Only permitted for shared folders in a shared team root. If a...dropbox/share-foldershare a folder with collaborators. Most sharing will be completed synchronously. Large folders will be completed asynchronously. To make testing...dropbox/transfer-foldertransfer ownership of a shared folder to a member of the shared folder. User must have :field:AccessLevel.owner access to the shared folder to...dropbox/unmount-folderthe current user unmounts the designated folder. They can re-mount the folder at a later time using.dropbox/unshare-fileremove all members from this file. Does not remove inherited members.dropbox/unshare-folderallows a shared folder owner to unshare the folder. Unshare will not work in following cases: The shared folder contains shared folders OR the...dropbox/update-file-memberchanges a member's access on a shared file.dropbox/update-file-policyupdate the viewer info policy of a file.dropbox/update-folder-memberallows an owner or editor of a shared folder to update another member's permissions.dropbox/update-folder-policyupdate the sharing policies for a shared folder. User must have :field:AccessLevel.owner access to the shared folder to update its policies.
File requests
dropbox/count-file-requestsreturns the total number of file requests owned by this user. Includes both open and closed file requests.dropbox/create-file-requestcreates a Dropbox file request -- a public upload page anyone can drop files into without a Dropbox account (POST /2/file_requests/create)....dropbox/delete-all-closeddelete all closed file requests owned by this user.dropbox/delete-file-requestsdeletes one or more CLOSED file requests (POST /2/file_requests/delete). Dropbox refuses to delete an open request -- close it with **Update File...dropbox/get-file-requestreturns the specified file request.dropbox/list-file-requestslists the file requests owned by the connected account (POST /2/file_requests/list_v2). Dropbox pages this through a separate list/continue route...dropbox/list-file-requests-continueonce a cursor has been retrieved from use this to paginate through all file requests. The cursor must come from a previous call to or.dropbox/list-file-requests-legacyreturns a list of file requests owned by this user. For apps with the app folder permission, this will only return file requests with destinations...dropbox/update-file-requestupdates a file request's title, destination folder, description, or open/closed state (POST /2/file_requests/update). Fields left blank are not...
File properties
dropbox/add-file-propertiesadd property groups to a Dropbox file. See or to create new templates.dropbox/add-property-templateadd a template associated with a user. See to add properties to a file. This endpoint can't be called on a team member or admin's behalf.dropbox/get-property-templateget the schema for a specified template. This endpoint can't be called on a team member or admin's behalf.dropbox/list-property-templatesget the template identifiers for a team. To get the schema of each template use This endpoint can't be called on a team member or admin's behalf.dropbox/overwrite-file-propertiesoverwrite property groups associated with a file. This endpoint should be used instead of when property groups are being updated via a .dropbox/remove-file-propertiespermanently removes the specified property group from the file. To remove specific property field key value pairs, see To update a template, see...dropbox/remove-property-templatepermanently removes the specified template created from All properties associated with the template will also be removed. This action cannot be...dropbox/search-file-propertiessearch across property templates for particular property field values.dropbox/search-file-properties-continueonce a cursor has been retrieved from use this to paginate through all search results.dropbox/update-file-propertiesadd, update or remove properties associated with the supplied file and templates. This endpoint should be used instead of when property groups are...dropbox/update-property-templateupdate a template associated with a user. This route can update the template name, the template description and add optional properties to...
Content extraction
dropbox/get-markdown-asyncasynchronous document-to-markdown conversion for supported file formats. Supported formats: .binder, .docx, .html, .paper, .papert, .pptx, .xlsx...dropbox/get-markdown-async-checkreturns the status or result of specified get_markdown_async task.dropbox/get-metadata-asyncasynchronous file metadata extraction for supported file formats. The kind of metadata returned depends on the file type: - Image (EXIF) formats...dropbox/get-metadata-async-checkreturns the status or result of specified get_metadata_async task.dropbox/get-ocr-asyncasynchronous OCR (optical character recognition) text extraction for images and PDFs, including scanned / non-text PDFs. Supported formats: -...dropbox/get-ocr-async-checkreturns the status or result of specified get_ocr_async task.dropbox/get-text-asyncasynchronous plain-text extraction from documents. Supported formats include: - Word processing: .doc, .docx, .docm, .rtf. - Presentations: .ppt...dropbox/get-text-async-checkreturns the status or result of specified get_text_async task.dropbox/get-transcript-asyncasynchronous transcript generation for audio and video files. Supported audio formats: .aac, .aif, .aiff, .flac, .m4a, .m4r, .mp3, .oga, .ogg...dropbox/get-transcript-async-checkreturns the status or result of specified get_transcript_async task.
Contacts
dropbox/delete-manual-contactsremoves all manually added contacts. You'll still keep contacts who are on your team or who you imported. New contacts will be added when you share.dropbox/delete-manual-contacts-batchremoves manually added contacts from the given list.
Account
dropbox/delete-profile-photodeletes the current user's profile photo.dropbox/get-account-featuresget a list of feature values that may be configured for the current account.dropbox/get-current-accountreturns the connected Dropbox account's profile (POST /2/users/get_current_account). The account_id it returns is the key that maps an **Account...dropbox/get-openid-userinfothis route is used for refreshing the info that is found in the id_token during the OIDC flow. This route doesn't require any arguments and will...dropbox/get-profile-photothis lovely endpoint gets the account photo of a given user.dropbox/get-space-usagereturns the connected account's storage usage and quota in bytes (POST /2/users/get_space_usage). Use it to gate an upload workflow before it...dropbox/get-user-accountget information about a user's account.dropbox/get-user-accounts-batchget information about multiple user accounts. At most 300 accounts may be queried per request.dropbox/set-profile-photosets a user's profile photo.
Diagnostics
dropbox/check-userthis endpoint performs User Authentication, validating the supplied access token, and returns the supplied string, to allow you to test your code...
Known limitations
- The Dropbox API enforces per-app rate limits. When a
429status is returned, TaskJuice surfaces it as a retryable error so the workflow can back off and retry. - Webhook notifications carry only the affected
account_idvalues, not the changed file list. Workflows must calldropbox/list-folderwith the cursor stored in state to learn what actually changed. - This integration covers the JSON-RPC endpoints under
api.dropboxapi.com/2/*. Content-upload and content-download endpoints (which require a separate binary host) are not exposed. - File and folder paths are case-insensitive in Dropbox storage but case-preserving in metadata; pass paths in the casing you want surfaced in the UI.
File upload is not available
Dropbox requires raw application/octet-stream bytes on its upload endpoints, and this integration does not offer files/upload or the upload-session family yet. To get bytes into a client's Dropbox, use Save File from URL, which asks Dropbox to fetch a file from a public URL, or Get Temporary Upload Link, which returns a short-lived URL a client system can POST to directly.
Missing scopes surface as an authentication error
Dropbox returns HTTP 401 with a missing_scope body when an access token predates a permission change, and HTTP 400 when the Dropbox app itself has not been granted the permission. TaskJuice reports the 401 form as an authentication failure. If an action fails that way and reconnecting does not help, add the scope named in the error to your OAuth client and reconnect.
Dropbox Business team endpoints are out of scope
The team administration surface requires a Dropbox Business team access token, which is a different application type from the user-scoped connection TaskJuice uses. Those operations are not offered.