<?xml version="1.0" encoding="UTF-8"?>


<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:c="http://java.sun.com/jsp/jstl/core"
     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
     xmlns:media="http://search.yahoo.com/mrss/">




         

    <channel>
         <title> Dropbox Tech Blog </title>
        <atom:link  href="https://dropbox.tech/developers/feed" rel="self" type="application/rss+xml" />
        <link>https://dropbox.tech</link>
        <description>null</description>
        <lastBuildDate>Wed, 26 Jun 2024 07:30:00 -0700</lastBuildDate>
        <language>en</language>
        <sy:updatePeriod>hourly</sy:updatePeriod>
        <sy:updateFrequency>1</sy:updateFrequency>

        <image>
            <url>https://dropbox.tech/cms/content/dropbox/tech-blog/en-us/developers.thumb.319.319.png?ck=1666190685</url>
            <title>Dropbox Tech Blog</title>
            <link>https://dropbox.tech/cms/content/dropbox/tech-blog/en-us/developers.thumb.319.319.png?ck=1666190685</link>
        </image>

            
        				<item>
                        <title>Dropbox API server root certificate changes coming in 2026</title>
                        
            			<link>https://dropbox.tech/developers/api-server-certificate-changes</link>

                            
            			<dc:creator>
                            Dropbox Platform Team
            			</dc:creator>
            			
            				<category>Announcements</category>
							
                            
            			<description><![CDATA[Learn about planned changes to the root certificates used on the Dropbox API servers, and how that will affect SDKs used to access the Dropbox API.]]></description>
            			<guid>https://dropbox.tech/developers/api-server-certificate-changes</guid>
                        <pubDate>Wed, 26 Jun 2024 07:30:00 -0700</pubDate>
                            
                        <content:encoded><![CDATA[


<div class="aem-Grid aem-Grid--12 aem-Grid--default--12 ">
    
    <div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>The Dropbox API servers will be updated with certificates issued from a new root starting on or after January 1, 2026.</p>
<p>Some of the official Dropbox SDKs implemented certificate pinning based on a list of root certificates included in the SDKs. These certificates will stop working in many web browsers and devices in 2026, so Dropbox needs to change which root is used to issue its server certificates. Apps using these SDKs need to be updated to the latest versions of the Dropbox SDKs to ensure uninterrupted access to the API.</p>
<p>The versions listed below have been updated to maintain compatibility with the Dropbox API servers going forward:</p>
<ul>
<li><a href="https://github.com/dropbox/dropbox-sdk-java">Java SDK</a> v7.0.0 or greater</li>
<li><a href="https://github.com/dropbox/dropbox-sdk-dotnet">.NET SDK</a> v7.0.0 or greater<ul>
<li>Note that apps using older versions of the .NET SDK are only affected if they call <span class="dr-code" title="undefined">DropboxCertHelper.InitializeCertPinning()</span>.</li>
</ul>
</li>
<li><a href="https://github.com/dropbox/dropbox-sdk-python">Python SDK</a> v12.0.2 or greater</li>
</ul>
<p>If you are using any of the above SDKs, please update your app(s) to use the latest versions of these SDKs as soon as possible to ensure continued access to the Dropbox API.</p>
<p>The following official Dropbox SDKs are not affected:</p>
<ul>
<li><a href="https://github.com/dropbox/dropbox-sdk-js">JavaScript SDK</a></li>
<li><a href="https://github.com/dropbox/dropbox-sdk-obj-c">Objective-C SDK</a></li>
<li><a href="https://github.com/dropbox/SwiftyDropbox">Swift SDK</a></li>
</ul>
<p>Third party libraries may or may not be affected by these changes. Please consult their documentation for further information.</p>
<p>If you have any questions, you can always reach us on our <a href="https://www.dropboxforum.com/t5/API-support/bd-p/101000014">forum</a> or via our <a href="https://www.dropbox.com/developers/contact">contact form</a>.</p>

</div>

    
</div>
]]></content:encoded>
            			
                <media:thumbnail url="https://dropbox.tech/cms/content/dam/dropbox/tech-blog/en-us/developers/Developers-1-1440x305px-light.png" />
                <media:content url="https://dropbox.tech/cms/content/dam/dropbox/tech-blog/en-us/developers/Developers-1-1440x305px-light.png" medium="image">
                    <media:title type="html">Dropbox API server root certificate changes coming in 2026</media:title>
                </media:content>
       		 </item>
                    
        				<item>
                        <title>Listing the contents of all team-accessible namespaces</title>
                        
            			<link>https://dropbox.tech/developers/listing-team-contents</link>

                            
            			<dc:creator>
                            Dropbox Platform Team,Dropbox Developer Support Team
            			</dc:creator>
            			
            				<category>Sample Apps</category>
							
            				<category>Tips and Tricks</category>
							
                            
            			<description><![CDATA[Learn how to list the contents of all of the namespaces across all members of a team using the Dropbox API]]></description>
            			<guid>https://dropbox.tech/developers/listing-team-contents</guid>
                        <pubDate>Wed, 13 Mar 2024 07:30:00 -0700</pubDate>
                            
                        <content:encoded><![CDATA[


<div class="aem-Grid aem-Grid--12 aem-Grid--default--12 ">
    
    <div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>A Dropbox team can contain multiple members, and each member may have many of their own files and folders, as well as access to other files and folders, such as via shared folders or team folders. That can add up to a lot of content, and sometimes, it‘s useful to be able to programmatically list all of those items across all of the members of the team, such as for organizational or auditing purposes.</p>
<p><br />
The Dropbox API does offer the ability to list the contents of any particular folder, and there are multiple ways an app could go about finding and listing all of the contents across all team members. One good way to do so is by first getting the list of all of the namespaces that the team has access to, and then listing the contents of each of those namespaces. This way helps avoid reading the same listing twice (for example, in the case where multiple team members are in the same shared folder). This works for teams with any type of <a href="https://dropbox.tech/developers/api-updates-to-better-support-team-spaces">team folder or team space configuration</a>.</p>
<p><br />
Check out <a href="https://github.com/dropbox/Developer-Samples/tree/master/Blog/list_all_team_contents">the new code sample here</a> for an example of how to implement that strategy to list all of the files and folders that a team can access.</p>

</div>

    
</div>
]]></content:encoded>
            			
                <media:thumbnail url="https://dropbox.tech/cms/content/dam/dropbox/tech-blog/en-us/developers/Developers-1-1440x305px-light.png" />
                <media:content url="https://dropbox.tech/cms/content/dam/dropbox/tech-blog/en-us/developers/Developers-1-1440x305px-light.png" medium="image">
                    <media:title type="html">Listing the contents of all team-accessible namespaces</media:title>
                </media:content>
       		 </item>
                    
        				<item>
                        <title>API updates to better support team spaces</title>
                        
            			<link>https://dropbox.tech/developers/api-updates-to-better-support-team-spaces</link>

                            
            			<dc:creator>
                            Dropbox Platform Team,Dropbox Developer Support Team,Dropbox Platform Team
            			</dc:creator>
            			
            				<category>Announcements</category>
							
                            
            			<description><![CDATA[Learn about changes and updates to the Dropbox API to support the latest features of Dropbox teams]]></description>
            			<guid>https://dropbox.tech/developers/api-updates-to-better-support-team-spaces</guid>
                        <pubDate>Fri, 10 Nov 2023 07:30:00 -0800</pubDate>
                            
                        <content:encoded><![CDATA[


<div class="aem-Grid aem-Grid--12 aem-Grid--default--12 ">
    
    <div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>Dropbox is updating the <a href="https://help.dropbox.com/organize/team-space-overview">team space</a> functionality to improve the scalability and privacy of the team space model. Accordingly we’re introducing some new features and behaviors to the Dropbox API to make sure that apps can properly support team spaces. If your app interacts with team-owned content, read on for information on how to handle these updates in your app’s code.</p>
<p>We’re rolling out the new team features to new and existing teams over the next few months. Customer teams will get an email notification ahead of their scheduled update date. If necessary, please update your app to support these features and changes by January 31, 2024.</p>
<p>In order to better support updated team spaces, we’ve added some new features to the API that your apps can use:</p>
<ul>
<li>There are new <span class="dr-code">distinct_member_home</span> and <span class="dr-code">team_shared_dropbox</span> features available on <a href="https://www.dropbox.com/developers/documentation/http/documentation#users-features-get_values">/2/users/features/get_values</a> that apps can use to determine whether or not the user has a home folder distinct from their root folder, and whether or not the user is part of a team with a shared team root, respectively. </li>
<li>There’s a new <span class="dr-code">has_distinct_member_homes</span> feature available on <a href="https://www.dropbox.com/developers/documentation/http/teams#team-features-get_values">/2/team/features/get_values</a> that apps can use to determine whether or not the members of the team have home folders distinct from their root folders.</li>
<li>There’s a new <span class="dr-code">team_member_root</span> namespace type returned by <a href="https://www.dropbox.com/developers/documentation/http/teams#team-namespaces-list">/2/team/namespaces/list</a> and <a href="https://www.dropbox.com/developers/documentation/http/teams#team-namespaces-list-continue">/2/team/namespaces/list/continue</a> that apps can use to get the team member roots for members of the team, which applies to teams with the updated team space.</li>
<li>There’s a new <span class="dr-code">root_folder_id</span> field included on <span class="dr-code">TeamMemberProfile</span> returned by <a href="https://www.dropbox.com/developers/documentation/http/teams#team-members-list">/2/team/members/list_v2</a> and <a href="https://www.dropbox.com/developers/documentation/http/teams#team-members-list-continue">/2/team/members/list/continue_v2</a> that apps can use to retrieve the namespace ID of the team member’s root.</li>
</ul>
<p>We plan to eventually have all teams using the latest feature set. You can use these features as reported by <a href="https://www.dropbox.com/developers/documentation/http/teams#team-features-get_values">/2/team/features/get_values</a> to determine which features a team currently has:</p>

</div>
<div class="dmep-plank-frame-child c04-4-table-component aem-GridColumn aem-GridColumn--default--12">


    


<section class="table__wrapper dr-container--api-updates-to-better-support-team-spaces dr-container--developers  " data-component="table" data-component-instance="ca5003a4-dbe3-4c86-adcc-7d1d0b6cd893/content/responsivegrid/table">
  <div class="table__container">
    <div class="table__content">
          
<table width="100%" cellspacing="0" cellpadding="1" border="1">
<tbody><tr><td><b>Team configuration</b></td>
<td><b>has_distinct_member_homes</b></td>
<td><b>has_team_shared_dropbox</b></td>
</tr><tr><td>updated team space</td>
<td>true</td>
<td>false</td>
</tr><tr><td>team space</td>
<td>true</td>
<td>true</td>
</tr><tr><td>no team space</td>
<td>false</td>
<td>false</td>
</tr></tbody></table>


    </div>
  </div>
</section></div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>The equivalent features exist on <a href="https://www.dropbox.com/developers/documentation/http/documentation#users-features-get_values">/2/users/features/get_values</a> for user-linked apps.</p>
<p>Use these feature values in your app’s code to determine which features to use and which behaviors to expect.</p>
<p>For example, for an account with <span class="dr-code">distinct_member_home: true</span> from <a href="https://www.dropbox.com/developers/documentation/http/documentation#users-features-get_values">/2/users/features/get_values</a>, continue to use the <span class="dr-code">Dropbox-API-Path-Root</span> header to access the account’s team space, with the <span class="dr-code">root_info.root_namespace_id</span> value from <a href="https://www.dropbox.com/developers/documentation/http/documentation#users-get_current_account">/2/users/get_current_account</a> for that account.</p>
<p>There are also a number of behavioral differences for teams with updated team spaces to be aware of:</p>
<ul>
<li>As before, apps can get the namespace ID of the root namespace for an account from the <span class="dr-code">root_info.root_namespace_id</span> value returned by <a href="https://www.dropbox.com/developers/documentation/http/documentation#users-get_current_account">/2/users/get_current_account</a>. However note that this value will not necessarily be the same for all members of a team, in particular for any teams with <span class="dr-code">has_team_shared_dropbox: false</span>.</li>
<li>Previously, all teams with a team space had <span class="dr-code">has_team_shared_dropbox: true</span> from <a href="https://www.dropbox.com/developers/documentation/http/teams#team-features-get_values">/2/team/features/get_values</a> and had only one team folder (being the team space) with <span class="dr-code">is_team_shared_dropbox: true</span> listed by <a href="https://www.dropbox.com/developers/documentation/http/teams#team-team_folder-list">/2/team/team_folder/list</a>. Going forward, teams with the updated team space will have <span class="dr-code">has_team_shared_dropbox: false</span> from <a href="https://www.dropbox.com/developers/documentation/http/teams#team-features-get_values">/2/team/features/get_values</a> and will have their potentially multiple team folders returned by <a href="https://www.dropbox.com/developers/documentation/http/teams#team-team_folder-list">/2/team/team_folder/list</a>[<a href="https://www.dropbox.com/developers/documentation/http/teams#team-team_folder-list-continue">/continue</a>] with each having <span class="dr-code">is_team_shared_dropbox: false</span>. Accordingly, do not rely on the number of items returned by <a href="https://www.dropbox.com/developers/documentation/http/teams#team-team_folder-list">/2/team/team_folder/list</a>[<a href="https://www.dropbox.com/developers/documentation/http/teams#team-team_folder-list-continue">/continue</a>] to determine if a team uses the team space. Instead, use <a href="https://www.dropbox.com/developers/documentation/http/teams#team-features-get_values">/2/team/features/get_values</a> to determine the features of a team and <a href="https://www.dropbox.com/developers/documentation/http/documentation#users-get_current_account">/2/users/get_current_account</a> to get the root information for an account.</li>
<li>All users with a team space previously had a <span class="dr-code">root_info</span> of type <span class="dr-code">team</span> from <a href="https://www.dropbox.com/developers/documentation/http/documentation#users-get_current_account">/2/users/get_current_account</a>. Going forward, users with the updated team space will have <span class="dr-code">root_info</span> of type <span class="dr-code">user</span>. Accordingly, do not rely on the <span class="dr-code">root_info</span> type to determine if a team uses the team space; that only indicates if the team shares the team space across all members. Instead, use <a href="https://www.dropbox.com/developers/documentation/http/documentation#users-features-get_values">/2/users/features/get_values</a> to determine the features of a user account.</li>
<li>Since each member of a team with the updated team space functionality has their own team member root for accessing the team space, it is not possible to use only <a href="https://www.dropbox.com/developers/documentation/http/documentation#files-list_folder">/2/files/list_folder</a>[<a href="https://www.dropbox.com/developers/documentation/http/documentation#files-list_folder-continue">/continue</a>] to list all of the team’s content at once. If your app needs to list all team content for a team, you should use <a href="https://www.dropbox.com/developers/documentation/http/teams#team-namespaces-list">/2/team/namespaces/list</a>[<a href="https://www.dropbox.com/developers/documentation/http/teams#team-namespaces-list-continue">/continue</a>] to get the list of all the team’s namespaces, or you can use <a href="https://www.dropbox.com/developers/documentation/http/teams#team-team_folder-list">/2/team/team_folder/list</a>[<a href="https://www.dropbox.com/developers/documentation/http/teams#team-team_folder-list-continue">/continue</a>] to get the list of just the team folders. You can then use <a href="https://www.dropbox.com/developers/documentation/http/documentation#files-list_folder">/2/files/list_folder</a>[<a href="https://www.dropbox.com/developers/documentation/http/documentation#files-list_folder-continue">/continue</a>] to list the contents of any/all such namespaces as needed.</li>
<li>Files and folders may not be added directly to the root of a team space using the /2/files endpoints, for teams with the updated team space. Attempting to create any files or folders directly in the team space using the /2/files endpoints for those teams will fail. Team-linked apps can instead use <a href="https://www.dropbox.com/developers/documentation/http/teams#team-team_folder-create">/2/team/team_folder/create</a> to create a team folder for the team space. For those teams, the /2/files endpoints can be used to add files and folders only within team folders and member folders.</li>
<li>For teams with <span class="dr-code">has_team_shared_dropbox: true</span>, newly created folders in the team space are shared with the entire team by default. For teams with updated team spaces, newly created team folders are not shared with anyone by default. Apps can share them with appropriate groups by calling <a href="https://www.dropbox.com/developers/documentation/http/documentation#sharing-add_folder_member">/2/sharing/add_folder_member</a>. For teams without a team space, apps can still call <a href="https://www.dropbox.com/developers/documentation/http/teams#team-team_folder-create">/2/team/team_folder/create</a> to create a team folder.</li>
<li>For teams with the updated team space, top-level folders in the team space are team folders, with values in <span class="dr-code">SharedFolderMetadata</span> objects reflecting this accordingly with <span class="dr-code">"is_inside_team_folder": false</span> and <span class="dr-code">"is_team_folder": true</span>.</li>
</ul>
<p> </p>
<div>In the future, all teams will be on the updated configuration, so please make sure your apps are ready to support them.</div>
<div> </div>
<div>For more information be sure to check out our updated <a href="https://developers.dropbox.com/dbx-team-files-guide">Team Files Guide</a> as well.</div>
<div> </div>
<div>If you have any questions, you can always reach us on our <a href="https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/bd-p/101000014">forum</a> or via our <a href="https://www.dropbox.com/developers/contact">contact form</a>.</div>

</div>

    
</div>
]]></content:encoded>
            			
                <media:thumbnail url="https://dropbox.tech/cms/content/dam/dropbox/tech-blog/en-us/developers/Developers-1-1440x305px-light.png" />
                <media:content url="https://dropbox.tech/cms/content/dam/dropbox/tech-blog/en-us/developers/Developers-1-1440x305px-light.png" medium="image">
                    <media:title type="html">API updates to better support team spaces</media:title>
                </media:content>
       		 </item>
                    
        				<item>
                        <title>Beta version of major SwiftyDropbox update available</title>
                        
            			<link>https://dropbox.tech/developers/swiftydropbox-major-beta</link>

                            
            			<dc:creator>
                            Dropbox Platform Team,Dropbox Developer Support Team,Dropbox Platform Team,Dropbox Platform Team
            			</dc:creator>
            			
            				<category>Announcements</category>
							
            				<category>Developer Tools</category>
							
                            
            			<description><![CDATA[Check out an updated version of the Dropbox Swift SDK with significant new features]]></description>
            			<guid>https://dropbox.tech/developers/swiftydropbox-major-beta</guid>
                        <pubDate>Fri, 28 Jul 2023 07:30:00 -0700</pubDate>
                            
                        <content:encoded><![CDATA[


<div class="aem-Grid aem-Grid--12 aem-Grid--default--12 ">
    
    <div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>If you’re using or want to use the official Dropbox Swift SDK or Dropbox Objective-C SDK, read on for information on a major SDK update we’ve released in beta.</p>
<p>We've released a beta version of a significant update to the official Dropbox Swift SDK: SwiftyDropbox 10.0.0-beta.3 This new version has several significant improvements and features requested by the community, including:</p>
<ul>
<li>support for background sessions</li>
<li>compatibility for Objective-C code bases</li>
<li>native networking without an external dependency</li>
</ul>
<p>You can find more information in the beta <a href="https://github.com/dropbox/SwiftyDropbox/releases/tag/10.0.0-beta.3">release notes</a> and <a href="https://github.com/dropbox/SwiftyDropbox/blob/branch_10.0.0-beta/README.md#dropbox-for-swift">README file</a>. Please try it out and <a href="https://github.com/dropbox/SwiftyDropbox/issues">report any issues or feedback</a>; be sure to include the version number of the SDK you're using when doing so.</p>
<p>Thanks!</p>

</div>

    
</div>
]]></content:encoded>
            			
                <media:thumbnail url="https://dropbox.tech/cms/content/dam/dropbox/tech-blog/en-us/developers/Developers-1-1440x305px-light.png" />
                <media:content url="https://dropbox.tech/cms/content/dam/dropbox/tech-blog/en-us/developers/Developers-1-1440x305px-light.png" medium="image">
                    <media:title type="html">Beta version of major SwiftyDropbox update available</media:title>
                </media:content>
       		 </item>
                    
        				<item>
                        <title>Using OAuth 2.0 with offline access</title>
                        
            			<link>https://dropbox.tech/developers/using-oauth-2-0-with-offline-access</link>

                            
            			<dc:creator>
                            Dropbox Platform Team,Dropbox Developer Support Team,Dropbox Platform Team,Dropbox Platform Team,Dropbox Platform Team
            			</dc:creator>
            			
            				<category>OAuth flow</category>
							
            				<category>Authorization</category>
							
            				<category>Sample Apps</category>
							
            				<category>Oauth</category>
							
                            
            			<description><![CDATA[Learn how to use the Dropbox OAuth 2.0 app authorization flow with offline access]]></description>
            			<guid>https://dropbox.tech/developers/using-oauth-2-0-with-offline-access</guid>
                        <pubDate>Wed, 19 Oct 2022 07:30:00 -0700</pubDate>
                            
                        <content:encoded><![CDATA[


<div class="aem-Grid aem-Grid--12 aem-Grid--default--12 ">
    
    <div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>The <a href="https://dropbox.tech/developers/migrating-app-permissions-and-access-tokens">Dropbox API now returns short-lived access tokens</a>, and optionally returns refresh tokens. This post will cover how and when to retrieve and use refresh tokens. We suggest checking out <a href="https://developers.dropbox.com/oauth-guide">the OAuth Guide</a> for background first, if you haven’t already.<br />
<br />
We recommend using one of <a href="https://www.dropbox.com/developers/documentation#sdks">the official Dropbox SDKs</a> whenever possible, as they’ll handle most of the work of using the OAuth app authorization flow for you. If you’re using one of the official Dropbox SDKs, refer to its documentation for information on how to use it to process the authorization flow.<br />
<br />
Otherwise, read on for information on how to implement the OAuth app authorization flow using <a href="https://www.dropbox.com/developers/documentation/http/documentation#authorization">the Dropbox OAuth authorization endpoints</a> directly.  </p>

</div>
<div class="section aem-GridColumn aem-GridColumn--default--12">
<div class="dr-article-content__section" id="choosing-online-or-offline-access">
    <h2 class="dr-article-content__section-title">Choosing online or offline access</h2>
</div>
</div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>If your app only needs access for a short period of time, or only needs to operate when the user is present, then you only need to use “online” access.  For example, a web app that only interacts with a user’s Dropbox files when the user is actively interacting with the app would only need “online” access.</p>
<p>In that case, the app receives a short-lived access token when the user processes the authorization flow. If the app needs further access after the short-lived access token expires, the app can send the user through the app authorization flow again. If a user has previously authorized an app, re-authorization is typically a single click or automatically redirected.</p>
<p>Here’s an example of what the “online” flow looks like:</p>
<p><b>Step 1: Begin authorization</b></p>
<p>Construct the <a href="https://www.dropbox.com/developers/documentation/http/documentation#oauth2-authorize">/oauth2/authorize</a> URL like the following and direct the user there:<br />
<span class="dr-code">https://www.dropbox.com/oauth2/authorize?client_id=<APP KEY>&response_type=code&token_access_type=online&state=<STATE>&redirect_uri=<REDIRECT URI></span><br />
</p>
<p>After the user has authorized your app, they’ll be sent to your redirect URI, with a few query parameters:<br />
<span class="dr-code"><REDIRECT URI>?code=<AUTHORIZATION CODE>&state=<STATE></span><br />
</p>
<p><b>Step 2: Obtain an access token</b></p>
<p>Exchange the resulting authorization code for an access token, by calling <a href="https://www.dropbox.com/developers/documentation/http/documentation#oauth2-token">the /oauth2/token endpoint</a>. Here’s an example of calling this endpoint using curl:</p>

</div>
<div class="dr-code-container aem-GridColumn aem-GridColumn--default--12">




<div class="dr-code-container--title"></div>
<div class="dr-code-container-inner">

    <button class="dr-code-container__copy-button dr-button dr-typography-t17">
        Copy
    </button>
    <pre class="dr-code-container__pre"><code class="dr-code-container__code dr-typography-t5 bash">curl https://api.dropbox.com/oauth2/token \
    -d code=<AUTHORIZATION CODE> \
    -d grant_type=authorization_code \
    -d client_id=<APP KEY> \
    -d client_secret=<APP SECRET> \
    -d redirect_uri=<REDIRECT URI></code></pre>


</div>
<div class="dr-code-container-rte"></div>
</div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>The response will look like this:<br />
<span class="dr-code">{"access_token": "<ACCESS TOKEN>", "expires_in": "<EXPIRATION>", "token_type": "bearer", "scope": "<SCOPES>", "account_id": "<ACCOUNT ID>", "uid": "<USER ID>"}</span></p>
<p><br />
<b>Step 3: Call the API</b></p>
<p>Use the resulting access token to call the API, with the access token as a “Bearer” token in the “Authorization” header, like this:</p>

</div>
<div class="dr-code-container aem-GridColumn aem-GridColumn--default--12">




<div class="dr-code-container--title"></div>
<div class="dr-code-container-inner">

    <button class="dr-code-container__copy-button dr-button dr-typography-t17">
        Copy
    </button>
    <pre class="dr-code-container__pre"><code class="dr-code-container__code dr-typography-t5 bash">curl -X POST https://api.dropboxapi.com/2/users/get_current_account \
    --header "Authorization: Bearer <ACCESS TOKEN>"</code></pre>


</div>
<div class="dr-code-container-rte"></div>
</div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>If your app needs to be able to operate long-term without the user present, continue reading to see how to use “offline” access instead. For example, an app that operates in the background to receive status updates or automatically perform operations on a user’s Dropbox account over long periods of time even when the user isn’t actively interacting with the app would need “offline” access.</p>

</div>
<div class="section aem-GridColumn aem-GridColumn--default--12">
<div class="dr-article-content__section" id="using-offline-access">
    <h2 class="dr-article-content__section-title">Using offline access</h2>
</div>
</div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>Here’s an example of what the “offline” flow looks like:</p>
<p><b>Step 1: Begin authorization</b></p>
<p>Construct the <a href="https://www.dropbox.com/developers/documentation/http/documentation#oauth2-authorize">/oauth2/authorize</a> URL like the following, with <span class="dr-code">token_access_type=offline</span> , and direct the user there:<br />
<span class="dr-code">https://www.dropbox.com/oauth2/authorize?client_id=<APP KEY>&response_type=code&token_access_type=offline&state=<STATE>&redirect_uri=<REDIRECT URI></span><br />
</p>
<p>After the user has authorized your app, they’ll be sent to your redirect URI, with a few query parameters:<br />
<span class="dr-code"><REDIRECT URI>?code=<AUTHORIZATION CODE>&state=<STATE></span><br />
</p>
<p><b>Step 2: Obtain an access token and refresh token</b></p>
<p>Exchange the resulting authorization code for an access token and refresh token, by calling <a href="https://www.dropbox.com/developers/documentation/http/documentation#oauth2-token">the /oauth2/token endpoint</a>. Here’s an example of calling this endpoint using curl:<a href="https://www.dropbox.com/developers/documentation/http/documentation#oauth2-token"></a></p>

</div>
<div class="dr-code-container aem-GridColumn aem-GridColumn--default--12">




<div class="dr-code-container--title"></div>
<div class="dr-code-container-inner">

    <button class="dr-code-container__copy-button dr-button dr-typography-t17">
        Copy
    </button>
    <pre class="dr-code-container__pre"><code class="dr-code-container__code dr-typography-t5 bash">curl https://api.dropbox.com/oauth2/token \
    -d code=<AUTHORIZATION CODE> \
    -d grant_type=authorization_code \
    -d client_id=<APP KEY> \
    -d client_secret=<APP SECRET> \
    -d redirect_uri=<REDIRECT URI></code></pre>


</div>
<div class="dr-code-container-rte"></div>
</div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>The response will look like this:<br />
<span class="dr-code">{"access_token": "<ACCESS TOKEN>", "expires_in": "<EXPIRATION>", "token_type": "bearer", "scope": "<SCOPES>", "refresh_token": "<REFRESH TOKEN>", "account_id": "<ACCOUNT ID>", "uid": "<USER ID>"}</span><br />
<br />
<b>Step 3: Store the returned refresh token</b><br />
<br />
The refresh token can be repeatedly re-used and doesn't expire automatically (though it can be revoked on demand). Securely store the refresh token for later use.<br />
<br />
<b>Step 4. Call the API</b><br />
<br />
Use the resulting access token to call the API, with the access token as a “Bearer” token in the “Authorization” header, like this:</p>

</div>
<div class="dr-code-container aem-GridColumn aem-GridColumn--default--12">




<div class="dr-code-container--title"></div>
<div class="dr-code-container-inner">

    <button class="dr-code-container__copy-button dr-button dr-typography-t17">
        Copy
    </button>
    <pre class="dr-code-container__pre"><code class="dr-code-container__code dr-typography-t5 bash">curl -X POST https://api.dropboxapi.com/2/users/get_current_account \
    --header "Authorization: Bearer <ACCESS TOKEN>"</code></pre>


</div>
<div class="dr-code-container-rte"></div>
</div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>The short-lived access token can be used until it expires (or is revoked).<br />
<br />
<b>Step 5: Retrieve a new short-lived access token</b><br />
<br />
Once the current short-lived access token expires, call <a href="https://www.dropbox.com/developers/documentation/http/documentation#oauth2-token">the /oauth2/token endpoint</a> with the refresh token to get a new short-lived access token, like this: </p>

</div>
<div class="dr-code-container aem-GridColumn aem-GridColumn--default--12">




<div class="dr-code-container--title"></div>
<div class="dr-code-container-inner">

    <button class="dr-code-container__copy-button dr-button dr-typography-t17">
        Copy
    </button>
    <pre class="dr-code-container__pre"><code class="dr-code-container__code dr-typography-t5 bash">curl https://api.dropbox.com/oauth2/token \
   -d refresh_token=<REFRESH TOKEN> \
   -d grant_type=refresh_token \
   -d client_id=<APP KEY> \
   -d client_secret=<APP SECRET></code></pre>


</div>
<div class="dr-code-container-rte"></div>
</div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>The response will look like this:<br />
<span class="dr-code">{"access_token": "<NEW ACCESS TOKEN>", "expires_in": "<EXPIRATION>", "token_type": "bearer"}</span><br />
</p>
<p>Repeat steps 4 and 5 programmatically as needed.</p>

</div>
<div class="section aem-GridColumn aem-GridColumn--default--12">
<div class="dr-article-content__section" id="tips-and-pointers">
    <h2 class="dr-article-content__section-title">Tips and pointers</h2>
</div>
</div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<ul>
<li>Dropbox <a href="https://www.dropbox.com/developers/documentation/http/documentation#oauth2-authorize">supports both</a> <span class="dr-code">response_type=code</span> and <span class="dr-code">response_type=token</span>. However, <span class="dr-code">response_type=token</span> is considered legacy and no longer recommended. The use of <span class="dr-code">response_type=code</span> is necessary for offline access; <span class="dr-code">response_type=token</span> does not support offline access.</li>
<li>Server-side apps should use <span class="dr-code">response_type=code</span> and client-side apps should use <span class="dr-code">response_type=code</span> with <a href="https://dropbox.tech/developers/pkce--what-and-why-">PKCE</a>. Either can use offline access.</li>
<li>When using <span class="dr-code">response_type=code</span>, a redirect URI is optional, regardless of using offline access or not (or using PKCE or not).</li>
<li>While the use of a redirect URI is optional, apps must be consistent in specifying or not specifying it during a given authorization flow. If the app sets <span class="dr-code">redirect_uri</span> when configuring the <a href="https://www.dropbox.com/developers/documentation/http/documentation#oauth2-authorize">/oauth2/authorize</a> URL, it must also set the same <span class="dr-code">redirect_uri<a href="https://www.dropbox.com/developers/documentation/http/documentation#oauth2-authorize"></a></span> when calling <a href="https://www.dropbox.com/developers/documentation/http/documentation#oauth2-token">/oauth2/token</a> with <span class="dr-code">grant_type=authorization_code</span> to exchange the resulting authorization code. If the app does not set <span class="dr-code">redirect_uri</span> on the <a href="https://www.dropbox.com/developers/documentation/http/documentation#oauth2-authorize">/oauth2/authorize</a> URL, it must not set <span class="dr-code">redirect_uri</span> when calling <a href="https://www.dropbox.com/developers/documentation/http/documentation#oauth2-token">/oauth2/token</a> with <span class="dr-code">grant_type=authorization_code</span> to exchange the resulting authorization code. In either case, setting <span class="dr-code">redirect_uri</span> is not expected when calling <a href="https://www.dropbox.com/developers/documentation/http/documentation#oauth2-token">/oauth2/token</a> with <span class="dr-code">grant_type=refresh_token</span>.<br />
</li>
<li>The terms “app key”, “app secret”, "authorization code”, “access token”, and “refresh token” describe distinct objects which are not interchangeable.</li>
<li>Authorization codes can only be used once each and expire after a very short period of time. New access tokens are short-lived, meaning they expire after a short period of time. Refresh tokens are long-lived and do not expire automatically. Access tokens and refresh tokens can be revoked on demand though, by the app or user. For example, users can unlink apps from their account using <a href="https://www.dropbox.com/account/connected_apps">the Connected apps page</a>, and team admins can unlink apps from their teams using <a href="https://www.dropbox.com/team/admin/settings/team_apps">the Team apps page</a>. Apps can revoke an access token (and corresponding refresh token, if any) using <a href="https://www.dropbox.com/developers/documentation/http/documentation#auth-token-revoke">the /2/auth/token/revoke endpoint</a>.</li>
<li>Refresh tokens are app- and user-specific. Developers with multiple app registrations will need to keep track of which app each refresh token is for. Attempting to use the wrong app key/secret when using a refresh token will fail.</li>
</ul>

</div>

    
</div>
]]></content:encoded>
            			
                <media:thumbnail url="https://dropbox.tech/cms/content/dam/dropbox/tech-blog/en-us/developers/Developers-1-1440x305px-light.png" />
                <media:content url="https://dropbox.tech/cms/content/dam/dropbox/tech-blog/en-us/developers/Developers-1-1440x305px-light.png" medium="image">
                    <media:title type="html">Using OAuth 2.0 with offline access</media:title>
                </media:content>
       		 </item>
                    
        				<item>
                        <title>Uploading file data in a performant manner</title>
                        
            			<link>https://dropbox.tech/developers/performant-upload</link>

                            
            			<dc:creator>
                            Dropbox Platform Team,Dropbox Developer Support Team,Dropbox Platform Team,Dropbox Platform Team,Dropbox Platform Team,Dropbox Platform Team
            			</dc:creator>
            			
            				<category>Sample Apps</category>
							
            				<category>Tips and Tricks</category>
							
                            
            			<description><![CDATA[Learn how to upload files to Dropbox using the Dropbox API in a performant manner]]></description>
            			<guid>https://dropbox.tech/developers/performant-upload</guid>
                        <pubDate>Tue, 30 Aug 2022 07:30:00 -0700</pubDate>
                            
                        <content:encoded><![CDATA[


<div class="aem-Grid aem-Grid--12 aem-Grid--default--12 ">
    
    <div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>Once of the most common uses of the Dropbox API is to upload files to Dropbox. If you only need to upload one small file, you can do so with <a href="https://www.dropbox.com/developers/documentation/http/documentation#files-upload">one Dropbox API call</a>, but when you need to upload a large amount of larger files, and you need to do so very quickly, things can get more complicated. In that case, you'll need to consider things like lock contention and parallelization. </p>
<p>For tips on how to manage these considerations and upload file data fast, check out our updated <a href="https://developers.dropbox.com/dbx-performance-guide">Performance Guide</a>. We've added some information on using new functionality on the Dropbox API that can help you upload file data fast, by starting multiple upload sessions in batches, and by further parallelizing upload session requests.</p>
<p>Also, check out <a href="https://github.com/dropbox/Developer-Samples/tree/master/Blog/performant_upload">this new code sample</a> that takes advantage of these features to upload file data as quickly as possible. You can tune the thread count parameters to match however much parallel traffic your network connection can handle.</p>
<p>Happy uploading!</p>

</div>

    
</div>
]]></content:encoded>
            			
                <media:thumbnail url="https://dropbox.tech/cms/content/dam/dropbox/tech-blog/en-us/developers/Developers-1-1440x305px-light.png" />
                <media:content url="https://dropbox.tech/cms/content/dam/dropbox/tech-blog/en-us/developers/Developers-1-1440x305px-light.png" medium="image">
                    <media:title type="html">Uploading file data in a performant manner</media:title>
                </media:content>
       		 </item>
                    
        				<item>
                        <title>OpenID Connect released in preview</title>
                        
            			<link>https://dropbox.tech/developers/openid-connect-released-preview</link>

                            
            			<dc:creator>
                            Dropbox Platform Team,Dropbox Developer Support Team,Dropbox Platform Team,Dropbox Platform Team,Dropbox Platform Team,Dropbox Platform Team,Kyle Anderson
            			</dc:creator>
            			
            				<category>Announcements</category>
							
            				<category>Preview</category>
							
                            
            			<description><![CDATA[Learn how to Dropbox as an OpenID Connect provider]]></description>
            			<guid>https://dropbox.tech/developers/openid-connect-released-preview</guid>
                        <pubDate>Thu, 28 Jul 2022 07:30:00 -0700</pubDate>
                            
                        <content:encoded><![CDATA[


<div class="aem-Grid aem-Grid--12 aem-Grid--default--12 ">
    
    <div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>OpenID Connect—or OIDC—is a standard identity layer built on top of OAuth 2.</p>
<p>This lets you build support for signing into your application via the user’s email verified Dropbox identity, which reduces the number of steps for a user to sign up for your service. It provides the end user with a simple click through consent screen, and returns basic user information to your application.</p>
<p>OIDC is an open standard, supported by many tools and libraries that can help you integrate this functionality.</p>
<p>For details on implementing OIDC, visit our new <a href="https://developers.dropbox.com/oidc-guide">OpenID Connect Guide</a>.</p>

</div>
<div class="image c04-image aem-GridColumn aem-GridColumn--default--12">
<div class="dr-image image cq-dd-image  align-center">
    <figure class="dr-margin-0 dr-display-inline-block">
        
            
    

        

        
        
        

        
        
        

        <!--optimized image webp-->
        

        
        <!-- <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/www/en-us/landing-pages/developers/oidc-guide/authorize-example.png 2x,  1x"
             src="/cms/content/dam/dropbox/www/en-us/landing-pages/developers/oidc-guide/authorize-example.png"
             aria-hidden=""
             alt="Screenshot of the authorization page using OIDC"
             class=""
             data-sly-attribute.width="1194"
             data-sly-attribute.height="894"
             data-aem-asset-id="7ca8311d-ad05-49a9-91b9-f79fc06d60b3:authorize-example.png"
             data-trackable="true" />
        <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/www/en-us/landing-pages/developers/oidc-guide/authorize-example.png 2x,  1x"
             src="/cms/content/dam/dropbox/www/en-us/landing-pages/developers/oidc-guide/authorize-example.png"
             aria-hidden=""
             alt=""
             class=""
             data-sly-attribute.width="1194"
             data-sly-attribute.height="894"
             data-aem-asset-id="7ca8311d-ad05-49a9-91b9-f79fc06d60b3:authorize-example.png"
             data-trackable="true" /> -->

        
         <img src="/cms/content/dam/dropbox/www/en-us/landing-pages/developers/oidc-guide/authorize-example.png/_jcr_content/renditions/authorize-example.webp" fallbackimage="/cms/content/dam/dropbox/www/en-us/landing-pages/developers/oidc-guide/authorize-example.png" onerror="window.failedAttempts=0;this.setAttribute('src',this.getAttribute('fallbackimage'));window.failedAttempts++;if(window.failedAttempts == 1)this.onerror=null" aria-hidden="false" alt="Screenshot of the authorization page using OIDC" data-aem-asset-id="7ca8311d-ad05-49a9-91b9-f79fc06d60b3:authorize-example.png" data-trackable="true" height="894" width="1194"/>
        
    

            
        
    </figure>
</div></div>

    
</div>
]]></content:encoded>
            			
                <media:thumbnail url="https://dropbox.tech/cms/content/dam/dropbox/tech-blog/en-us/developers/Developers-1-1440x305px-light.png" />
                <media:content url="https://dropbox.tech/cms/content/dam/dropbox/tech-blog/en-us/developers/Developers-1-1440x305px-light.png" medium="image">
                    <media:title type="html">OpenID Connect released in preview</media:title>
                </media:content>
       		 </item>
                    
        				<item>
                        <title>Automating contract management with Dropbox and Integromat</title>
                        
            			<link>https://dropbox.tech/developers/automating-contract-management-dbx-integromat</link>

                            
            			<dc:creator>
                            Dropbox Platform Team,Dropbox Developer Support Team,Dropbox Platform Team,Dropbox Platform Team,Dropbox Platform Team,Dropbox Platform Team,Kyle Anderson,Tahsin Islam
            			</dc:creator>
            			
            				<category>Workflow</category>
							
            				<category>Automation</category>
							
            				<category>Partners</category>
							
            				<category>Developer Spotlight</category>
							
                            
            			<description><![CDATA[Learn how to automate workflows like contract management with Integromat’s new Dropbox integration]]></description>
            			<guid>https://dropbox.tech/developers/automating-contract-management-dbx-integromat</guid>
                        <pubDate>Wed, 17 Mar 2021 09:30:00 -0700</pubDate>
                            
                        <content:encoded><![CDATA[


<div class="aem-Grid aem-Grid--12 aem-Grid--default--12 ">
    
    <div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p><a href="https://www.integromat.com/?utm_medium=partner&utm_source=dropbox-tech&utm_campaign=dropbox-guest-post"><i><u>Integromat</u></i></a><i> is a powerful integration platform to connect apps and automate workflows in just a few clicks. Featuring 600+ apps and 6,000+ endpoints, Integromat is redefining work automation so everyone can get back to what matters the most. </i></p>
<p><i>We asked </i><a href="https://www.linkedin.com/in/jessica-herauf-31852383/"><i><u>Jessica Herauf</u></i></a><i>, Head of App Partnerships at Integromat, to write a guest post on our developer blog, and share how to accelerate digital paperwork workflows involving digital signature tools, CRMs, and Dropbox. </i></p>

</div>
<div class="section aem-GridColumn aem-GridColumn--default--12">
<div class="dr-article-content__section" id="what-is-integromat">
    <h2 class="dr-article-content__section-title">What is Integromat?</h2>
</div>
</div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>Integromat is the <a href="https://www.integromat.com/?utm_medium=partner&utm_source=dropbox-tech&utm_campaign=dropbox-guest-post"><u>app integration platform</u></a> that allows anyone to create powerful integrations and automate tasks. Integromat users range from independent professionals and small businesses to organizations like Spotify, Facebook, and the United Nations. </p>

</div>
<div class="image c04-image aem-GridColumn aem-GridColumn--default--12">
<div class="dr-image image cq-dd-image  align-center">
    <figure class="dr-margin-0 dr-display-inline-block">
        
            
    

        

        
        
        

        
        
        

        <!--optimized image webp-->
        

        
        <!-- <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-signup-page.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-signup-page.png"
             aria-hidden=""
             alt="Sign up page for Integromat"
             class=""
             data-sly-attribute.width="1135"
             data-sly-attribute.height="581"
             data-aem-asset-id="8117677f-3f9a-4b21-893b-201fb8b633a7:integromat-signup-page.png"
             data-trackable="true" />
        <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-signup-page.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-signup-page.png"
             aria-hidden=""
             alt=""
             class=""
             data-sly-attribute.width="1135"
             data-sly-attribute.height="581"
             data-aem-asset-id="8117677f-3f9a-4b21-893b-201fb8b633a7:integromat-signup-page.png"
             data-trackable="true" /> -->

        
         <img src="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-signup-page.png" fallbackimage="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-signup-page.png" onerror="window.failedAttempts=0;this.setAttribute('src',this.getAttribute('fallbackimage'));window.failedAttempts++;if(window.failedAttempts == 1)this.onerror=null" aria-hidden="false" alt="Sign up page for Integromat" data-aem-asset-id="8117677f-3f9a-4b21-893b-201fb8b633a7:integromat-signup-page.png" data-trackable="true" height="581" width="1135"/>
        
    

            
        
    </figure>
</div></div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>Users can pick from a selection of 600+ apps to automate both simple and complex tasks using Integromat’s drag and drop visual builder. The platform integrates directly with app APIs, and this of course includes the <a href="https://www.integromat.com/en/integrations/dropbox?utm_medium=partner&utm_source=dropbox-tech&utm_campaign=dropbox-guest-post"><u>Dropbox API</u></a>, for which Integromat currently features 14 endpoints or “modules”. </p>
<p>Integromat modules allow you to connect Dropbox to hundreds of different apps and automate tasks like:</p>
<ul>
<li>Uploading and downloading files</li>
<li>Sharing and moving files between folders</li>
<li>Creating file share links</li>
</ul>
<p>Tasks like these are often part of collaborative processes, involving teams that need to increase productivity and bring down costs. </p>
<p>With Integromat, users can create their own Dropbox integrations from scratch, or else rely on available <a href="https://www.integromat.com/en/templates/dropbox?utm_medium=partner&utm_source=dropbox-tech&utm_campaign=dropbox-guest-post"><u>templates</u></a> to automate tasks like:</p>
<ul>
<li><u><a href="https://www.integromat.com/en/integration/3093-save-new-telegram-files-to-dropbox?utm_medium=partner&utm_source=dropbox-tech&utm_campaign=dropbox-guest-post">Saving new Telegram files to Dropbox</a></u></li>
<li><u style="background-color: rgb(255,255,255);"><a href="https://www.integromat.com/en/integration/286-upload-new-dropbox-files-to-slack?utm_medium=partner&utm_source=dropbox-tech&utm_campaign=dropbox-guest-post" style="background-color: rgb(255,255,255);">Uploading new Dropbox files to a Slack channel or conversation</a></u></li>
<li><a href="https://www.integromat.com/en/integration/2503-backup-new-google-photos-to-dropbox?utm_medium=partner&utm_source=dropbox-tech&utm_campaign=dropbox-guest-post" style="background-color: rgb(255,255,255);"><u>Backing up Google Photos to Dropbox</u></a></li>
</ul>
<p>Below, we will show you how to use Dropbox and Integromat to automate a task that affects an entire industry. </p>

</div>
<div class="section aem-GridColumn aem-GridColumn--default--12">
<div class="dr-article-content__section" id="leveraging-dropbox-and-integromat-to-create-an-automated-contract-management-system">
    <h2 class="dr-article-content__section-title">Leveraging Dropbox and Integromat to create an automated contract management system</h2>
</div>
</div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>The real estate industry is fertile ground for automation. Regular industry procedures like sales, valuations, and leases demand paperwork, which in turn require time and resources. </p>
<p>A good example of this paperwork can be found within contracts. By automating contract management tasks, companies can increase their opportunities and revenues. </p>
<p>As you can foresee, Integromat and Dropbox can lay the foundation for a contract management automation solution that scales. You will get the best of contract management software, without having to onboard one. </p>
<p>Let’s say you are a real estate agent that just closed a sale and need to create, store, and send a contract to your client (or to an attorney) to get it signed and successfully finish the operation. </p>
<p>In other words, a normal contracting process, which can take anywhere from several hours to a few days to be completed when done the traditional way. In turn, it adds costs and risk to what is perhaps the most sensitive stage of a real estate sale. </p>
<p>With this in mind, we developed an automated solution that will allow you to:</p>
<ul>
<li>Reduce the duration of the process to a matter of minutes</li>
<li>Bring down costs </li>
<li>Lower the risk levels attached to late contract arrivals </li>
</ul>
<p>Additionally, we are making this automated contract management solution <a href="https://www.integromat.com/en/integration/4796-hubspot-google-docs-dropbox-contract-management?utm_medium=partner&utm_source=dropbox-tech&utm_campaign=dropbox-guest-post"><u>available as an Integromat template</u></a>. In order to access and use it, you will need an Integromat account. In case you don’t have one yet, please <a href="https://www.integromat.com/en/register?utm_medium=partner&utm_source=dropbox-tech&utm_campaign=dropbox-guest-post"><u>sign up for free</u></a>.  </p>

</div>
<div class="image c04-image aem-GridColumn aem-GridColumn--default--12">
<div class="dr-image image cq-dd-image  ">
    <figure class="dr-margin-0 dr-display-inline-block">
        
            
    

        

        
        
        

        
        
        

        <!--optimized image webp-->
        

        
        <!-- <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-workflow.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-workflow.png"
             aria-hidden=""
             alt="Contract management workflow template"
             class=""
             data-sly-attribute.width="863"
             data-sly-attribute.height="435"
             data-aem-asset-id="66ea7891-d312-47b9-b116-e2e115c152f2:integromat-workflow.png"
             data-trackable="true" />
        <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-workflow.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-workflow.png"
             aria-hidden=""
             alt=""
             class=""
             data-sly-attribute.width="863"
             data-sly-attribute.height="435"
             data-aem-asset-id="66ea7891-d312-47b9-b116-e2e115c152f2:integromat-workflow.png"
             data-trackable="true" /> -->

        
         <img src="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-workflow.png" fallbackimage="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-workflow.png" onerror="window.failedAttempts=0;this.setAttribute('src',this.getAttribute('fallbackimage'));window.failedAttempts++;if(window.failedAttempts == 1)this.onerror=null" aria-hidden="false" alt="Contract management workflow template" data-aem-asset-id="66ea7891-d312-47b9-b116-e2e115c152f2:integromat-workflow.png" data-trackable="true" height="435" width="863"/>
        
    

            <figcaption class="dr-typography-t5 dr-color-ink-60 dr-image-rte"><p>Contract management workflow template<br />
</p>
</figcaption>
        
    </figure>
</div></div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>Now, back to our use case. </p>
<p>The picture above shows the contract management workflow template. It features the tasks/actions that Integromat will automatically complete for you on a recurring basis. These actions are:</p>
<ul>
<li>Watch records/deals on HubSpot CRM</li>
<li>Create a contract from a Google doc template</li>
<li>Download the contract to Google Drive</li>
<li>Send the contract via Gmail to the corresponding recipient</li>
<li>Upload a copy of the contract to Dropbox </li>
</ul>
<p>It all begins with HubSpot CRM for a simple reason: in many cases, the need for a contract starts within a customer relationship management (CRM) platform, which is what several real estate professionals use to manage and close property sales.  </p>
<p>Taking this into account, we chose HubSpot - one of the most popular CRMs out there - as the first module of our template. In case you don’t use HubSpot, Integromat features <a href="https://www.integromat.com/en/integrations#filter:crm?utm_medium=partner&utm_source=dropbox-tech&utm_campaign=dropbox-guest-post"><u>28 other CRMs</u></a> you can select to replace the first module.    </p>
<p>This module will trigger the whole automated sequence by performing an elementary task: watching your HubSpot records for deals. Whenever a deal gets marked or labeled as “closed”, Integromat will trigger the subsequent steps in the sequence. </p>

</div>
<div class="image c04-image aem-GridColumn aem-GridColumn--default--12">
<div class="dr-image image cq-dd-image  align-center">
    <figure class="dr-margin-0 dr-display-inline-block">
        
            
    

        

        
        
        

        
        
        

        <!--optimized image webp-->
        

        
        <!-- <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-hubspot-config.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-hubspot-config.png"
             aria-hidden=""
             alt="Hubspot module configuration"
             class=""
             data-sly-attribute.width="628"
             data-sly-attribute.height="832"
             data-aem-asset-id="b143595d-16ad-4245-996d-f79a2c67e230:integromat-hubspot-config.png"
             data-trackable="true" />
        <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-hubspot-config.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-hubspot-config.png"
             aria-hidden=""
             alt=""
             class=""
             data-sly-attribute.width="628"
             data-sly-attribute.height="832"
             data-aem-asset-id="b143595d-16ad-4245-996d-f79a2c67e230:integromat-hubspot-config.png"
             data-trackable="true" /> -->

        
         <img src="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-hubspot-config.png" fallbackimage="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-hubspot-config.png" onerror="window.failedAttempts=0;this.setAttribute('src',this.getAttribute('fallbackimage'));window.failedAttempts++;if(window.failedAttempts == 1)this.onerror=null" aria-hidden="false" alt="Hubspot module configuration" data-aem-asset-id="b143595d-16ad-4245-996d-f79a2c67e230:integromat-hubspot-config.png" data-trackable="true" height="832" width="628"/>
        
    

            <figcaption class="dr-typography-t5 dr-color-ink-60 dr-image-rte"><p>Hubspot module configuration<br />
</p>
</figcaption>
        
    </figure>
</div></div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>The second step demands special attention. Here, Integromat will automatically create a contract from a Google doc template, using the data from the corresponding HubSpot record/deal to fill in the details. </p>
<p><i>Note: the </i><a href="https://www.integromat.com/en/integration/4796-hubspot-google-docs-dropbox-contract-management"><i><u>Integromat template page</u></i></a><i> provides a contract template, but feel free to modify it or use your own Google doc template, as this will be the document Integromat will use to generate, send, and store your future contracts. </i></p>

</div>
<div class="image c04-image aem-GridColumn aem-GridColumn--default--12">
<div class="dr-image image cq-dd-image  align-center">
    <figure class="dr-margin-0 dr-display-inline-block">
        
            
    

        

        
        
        

        
        
        

        <!--optimized image webp-->
        

        
        <!-- <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-google-config.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-google-config.png"
             aria-hidden=""
             alt="Google Docs module configuration"
             class=""
             data-sly-attribute.width="683"
             data-sly-attribute.height="1314"
             data-aem-asset-id="bfe4a2f2-8ffc-49fb-b3d9-b95d59c13abe:integromat-google-config.png"
             data-trackable="true" />
        <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-google-config.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-google-config.png"
             aria-hidden=""
             alt=""
             class=""
             data-sly-attribute.width="683"
             data-sly-attribute.height="1314"
             data-aem-asset-id="bfe4a2f2-8ffc-49fb-b3d9-b95d59c13abe:integromat-google-config.png"
             data-trackable="true" /> -->

        
         <img src="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-google-config.png" fallbackimage="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-google-config.png" onerror="window.failedAttempts=0;this.setAttribute('src',this.getAttribute('fallbackimage'));window.failedAttempts++;if(window.failedAttempts == 1)this.onerror=null" aria-hidden="false" alt="Google Docs module configuration" data-aem-asset-id="bfe4a2f2-8ffc-49fb-b3d9-b95d59c13abe:integromat-google-config.png" data-trackable="true" height="1314" width="683"/>
        
    

            <figcaption class="dr-typography-t5 dr-color-ink-60 dr-image-rte"><p>Google Docs module configuration<br />
</p>
</figcaption>
        
    </figure>
</div></div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>After the contract is created, Integromat will download/store it in a dedicated folder within your Google Drive account. This is the third action. </p>
<p>Once this is done, Integromat will do the following:</p>
<ul>
<li>Store a copy of the contract in a dedicated Dropbox folder</li>
<li>Send a copy of the contract via Gmail to the recipient you want (including yourself)</li>
</ul>
<p>To do this, Gmail and Dropbox modules are placed to pick up the recipient’s email address from the corresponding HubSpot record. See the details of each module below.</p>

</div>
<div class="image c04-image aem-GridColumn aem-GridColumn--default--12">
<div class="dr-image image cq-dd-image  ">
    <figure class="dr-margin-0 dr-display-inline-block">
        
            
    

        

        
        
        

        
        
        

        <!--optimized image webp-->
        

        
        <!-- <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-dropbox-config.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-dropbox-config.png"
             aria-hidden=""
             alt="“Send an email” Gmail module configuration"
             class=""
             data-sly-attribute.width="655"
             data-sly-attribute.height="1088"
             data-aem-asset-id="e052d6cf-7ed6-48c1-8a7e-f515b23defd5:integromat-dropbox-config.png"
             data-trackable="true" />
        <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-dropbox-config.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-dropbox-config.png"
             aria-hidden=""
             alt=""
             class=""
             data-sly-attribute.width="655"
             data-sly-attribute.height="1088"
             data-aem-asset-id="e052d6cf-7ed6-48c1-8a7e-f515b23defd5:integromat-dropbox-config.png"
             data-trackable="true" /> -->

        
         <img src="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-dropbox-config.png" fallbackimage="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-dropbox-config.png" onerror="window.failedAttempts=0;this.setAttribute('src',this.getAttribute('fallbackimage'));window.failedAttempts++;if(window.failedAttempts == 1)this.onerror=null" aria-hidden="false" alt="“Send an email” Gmail module configuration" data-aem-asset-id="e052d6cf-7ed6-48c1-8a7e-f515b23defd5:integromat-dropbox-config.png" data-trackable="true" height="1088" width="655"/>
        
    

            <figcaption class="dr-typography-t5 dr-color-ink-60 dr-image-rte"><p>“Send an email” Gmail module configuration</p>
</figcaption>
        
    </figure>
</div></div>
<div class="image c04-image aem-GridColumn aem-GridColumn--default--12">
<div class="dr-image image cq-dd-image  ">
    <figure class="dr-margin-0 dr-display-inline-block">
        
            
    

        

        
        
        

        
        
        

        <!--optimized image webp-->
        

        
        <!-- <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-dropbox-file-save.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-dropbox-file-save.png"
             aria-hidden=""
             alt="“Upload a file” Dropbox module configuration"
             class=""
             data-sly-attribute.width="384"
             data-sly-attribute.height="479"
             data-aem-asset-id="fb0a2aa4-840e-4c70-a9e9-ebd1bf700218:integromat-dropbox-file-save.png"
             data-trackable="true" />
        <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-dropbox-file-save.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-dropbox-file-save.png"
             aria-hidden=""
             alt=""
             class=""
             data-sly-attribute.width="384"
             data-sly-attribute.height="479"
             data-aem-asset-id="fb0a2aa4-840e-4c70-a9e9-ebd1bf700218:integromat-dropbox-file-save.png"
             data-trackable="true" /> -->

        
         <img src="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-dropbox-file-save.png" fallbackimage="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-dropbox-file-save.png" onerror="window.failedAttempts=0;this.setAttribute('src',this.getAttribute('fallbackimage'));window.failedAttempts++;if(window.failedAttempts == 1)this.onerror=null" aria-hidden="false" alt="“Upload a file” Dropbox module configuration" data-aem-asset-id="fb0a2aa4-840e-4c70-a9e9-ebd1bf700218:integromat-dropbox-file-save.png" data-trackable="true" height="479" width="384"/>
        
    

            <figcaption class="dr-typography-t5 dr-color-ink-60 dr-image-rte"><p>“Upload a file” Dropbox module configuration</p>
</figcaption>
        
    </figure>
</div></div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>And that’s it! After this, please save and run the scenario to see how it works. A trial run with one contract produced the following results.</p>

</div>
<div class="image c04-image aem-GridColumn aem-GridColumn--default--12">
<div class="dr-image image cq-dd-image  ">
    <figure class="dr-margin-0 dr-display-inline-block">
        
            
    

        

        
        
        

        
        
        

        <!--optimized image webp-->
        

        
        <!-- <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-email-confirmation.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-email-confirmation.png"
             aria-hidden=""
             alt="An email message with a contract attached"
             class=""
             data-sly-attribute.width="1291"
             data-sly-attribute.height="520"
             data-aem-asset-id="6233f4e4-f898-46e7-b77b-0b2369d4334f:integromat-email-confirmation.png"
             data-trackable="true" />
        <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-email-confirmation.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-email-confirmation.png"
             aria-hidden=""
             alt=""
             class=""
             data-sly-attribute.width="1291"
             data-sly-attribute.height="520"
             data-aem-asset-id="6233f4e4-f898-46e7-b77b-0b2369d4334f:integromat-email-confirmation.png"
             data-trackable="true" /> -->

        
         <img src="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-email-confirmation.png" fallbackimage="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-email-confirmation.png" onerror="window.failedAttempts=0;this.setAttribute('src',this.getAttribute('fallbackimage'));window.failedAttempts++;if(window.failedAttempts == 1)this.onerror=null" aria-hidden="false" alt="An email message with a contract attached" data-aem-asset-id="6233f4e4-f898-46e7-b77b-0b2369d4334f:integromat-email-confirmation.png" data-trackable="true" height="520" width="1291"/>
        
    

            <figcaption class="dr-typography-t5 dr-color-ink-60 dr-image-rte"><p>Email message with contract attached</p>
</figcaption>
        
    </figure>
</div></div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>Plus, a copy of that same contract, stored in a dedicated Dropbox folder.</p>

</div>
<div class="image c04-image aem-GridColumn aem-GridColumn--default--12">
<div class="dr-image image cq-dd-image  ">
    <figure class="dr-margin-0 dr-display-inline-block">
        
            
    

        

        
        
        

        
        
        

        <!--optimized image webp-->
        

        
        <!-- <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-dropbox-save-to-folder.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-dropbox-save-to-folder.png"
             aria-hidden=""
             alt=""
             class=""
             data-sly-attribute.width="1194"
             data-sly-attribute.height="398"
             data-aem-asset-id="8e48a5f3-63fe-4818-8d65-5c2c042ce92b:integromat-dropbox-save-to-folder.png"
             data-trackable="true" />
        <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-dropbox-save-to-folder.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-dropbox-save-to-folder.png"
             aria-hidden=""
             alt=""
             class=""
             data-sly-attribute.width="1194"
             data-sly-attribute.height="398"
             data-aem-asset-id="8e48a5f3-63fe-4818-8d65-5c2c042ce92b:integromat-dropbox-save-to-folder.png"
             data-trackable="true" /> -->

        
         
        <img src="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-dropbox-save-to-folder.png" fallbackimage="/cms/content/dam/dropbox/tech-blog/en-us/2021/03/integromat-partner-post/integromat-dropbox-save-to-folder.png" onerror="window.failedAttempts=0;this.setAttribute('src',this.getAttribute('fallbackimage'));window.failedAttempts++;if(window.failedAttempts == 1)this.onerror=null" aria-hidden="false" alt="" data-aem-asset-id="8e48a5f3-63fe-4818-8d65-5c2c042ce92b:integromat-dropbox-save-to-folder.png" data-trackable="true" height="398" width="1194"/>
    

            
        
    </figure>
</div></div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>This solution will automatically create, send, and store contracts in just a couple of minutes, beating the most eager, earnest attorneys and assistants by ridiculous margins. </p>

</div>
<div class="section aem-GridColumn aem-GridColumn--default--12">
<div class="dr-article-content__section" id="reflections-on-dropbox-automation">
    <h2 class="dr-article-content__section-title">Reflections on Dropbox automation</h2>
</div>
</div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>The use case presented above is just an example of how Dropbox automation can improve tedious, time-consuming tasks.  </p>
<p>It goes without saying that contract automation is just the tip of the iceberg of what you can achieve with Dropbox and Integromat. </p>
<p>Other workflows that can be automated include:</p>
<ul>
<li><u><a href="https://www.integromat.com/en/integration/3667-create-zoho-invoices-from-shopify-orders-and-uploading-them-to-dropbox?utm_medium=partner&utm_source=dropbox-tech&utm_campaign=dropbox-guest-post">Creating and storing invoices from Shopify orders</a></u></li>
<li><u style="background-color: rgb(255,255,255);"><a href="https://www.integromat.com/en/integration/3311-add-attachments-received-by-gmail-to-a-dropbox-folder-and-notify-by-a-skype-message?utm_medium=partner&utm_source=dropbox-tech&utm_campaign=dropbox-guest-post" style="background-color: rgb(255,255,255);">Sending Gmail attachments to Dropbox folders </a></u></li>
<li><a href="https://www.integromat.com/en/integration/3263-upload-podcast-audio-to-dropbox?utm_medium=partner&utm_source=dropbox-tech&utm_campaign=dropbox-guest-post" style="background-color: rgb(255,255,255);"><u>Uploading podcast audio to Dropbox</u></a></li>
</ul>
<p>If your work involves sending and sharing files to and from Dropbox, chances are you can transform it with Integromat. </p>
<p>To conclude, none of this would be possible without the kind of APIs companies like Dropbox, HubSpot and Google offer. Integromat features multiple <a href="https://www.integromat.com/en/integrations/dropbox?utm_medium=partner&utm_source=dropbox-tech&utm_campaign=dropbox-guest-post"><u>Dropbox endpoints</u></a>, which anyone can use to automate tasks without the hassle of code, or costly development teams. </p>
<p>The potential of combining apps to automate workflows is huge, and not doing so is missing on immediate gains. </p>

</div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p><i>We hope you enjoyed this guest blog contribution from Jessica Herauf at Integromat, and that it gave you some ideas of how you can build powerful Dropbox integrations. </i><br />
</p>
<p><i>To learn more about Integromat and see more Dropbox modules and templates, head to </i><a href="https://www.integromat.com/"><i><u>integromat.com</u></i></a><i>. You can also contact Jessica Herauf directly at jessica.herauf@integromat.com. </i></p>
<p><i>If you have any questions about this or need help with anything else, you can always contact us </i><a href="https://www.dropbox.com/developers/contact"><i>here</i></a><i>.</i></p>
<p style="text-align: center;"><i>Build with Dropbox today at</i></p>
<p style="text-align: center;"><i>www.dropbox.com/developers</i></p>

</div>

    
</div>
]]></content:encoded>
            			
                <media:thumbnail url="https://dropbox.tech/cms/content/dam/dropbox/tech-blog/en-us/developers/Developers-1-1440x305px-light.png" />
                <media:content url="https://dropbox.tech/cms/content/dam/dropbox/tech-blog/en-us/developers/Developers-1-1440x305px-light.png" medium="image">
                    <media:title type="html">Automating contract management with Dropbox and Integromat</media:title>
                </media:content>
       		 </item>
                    
        				<item>
                        <title>New Paper Endpoints Released in Preview</title>
                        
            			<link>https://dropbox.tech/developers/new-paper-endpoints-released-in-preview</link>

                            
            			<dc:creator>
                            Dropbox Platform Team,Dropbox Developer Support Team,Dropbox Platform Team,Dropbox Platform Team,Dropbox Platform Team,Dropbox Platform Team,Kyle Anderson,Tahsin Islam,Jess Kenney
            			</dc:creator>
            			
            				<category>Announcements</category>
							
            				<category>Preview</category>
							
            				<category>Paper</category>
							
                            
            			<description><![CDATA[New endpoints are available to interact with Paper in the File System using the Dropbox API.]]></description>
            			<guid>https://dropbox.tech/developers/new-paper-endpoints-released-in-preview</guid>
                        <pubDate>Wed, 03 Mar 2021 12:15:00 -0800</pubDate>
                            
                        <content:encoded><![CDATA[


<div class="aem-Grid aem-Grid--12 aem-Grid--default--12 ">
    
    <div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>In September 2019, we began to represent <a href="https://www.dropbox.com/paper">Dropbox Paper</a> files as <a href="https://aem.dropbox.com/en-us/lp/developers/reference/paper-migration-guide">.paper documents in the filesystem</a>. This enabled listing, moving, and exporting paper docs with /files endpoints.</p>
<p>Today, we’ve added new endpoints for Paper—now you can create, update, and even append to paper documents in the filesystem! Paper docs can be added using Markdown, HTML, or plain text.</p>

</div>
<div class="section aem-GridColumn aem-GridColumn--default--12">
<div class="dr-article-content__section" id="-new-and-updated-apis">
    <h2 class="dr-article-content__section-title"> New and Updated APIs</h2>
</div>
</div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>The following APIs have been added or modified:</p>
<ul>
<li><a href="https://www.dropbox.com/developers/documentation/http/documentation#files-paper-create">/files/paper/create</a> - Use this new endpoint to create new Paper docs</li>
<li><a href="https://www.dropbox.com/developers/documentation/http/documentation#files-paper-update">/files/paper/update</a> - Use this new endpoint to overwrite or append Paper docs</li>
<li><a href="https://www.dropbox.com/developers/documentation/http/documentation#files-export">/files/export</a> - Use this endpoint to get metadata and a Markdown, HTML, or plain text representation of a Paper doc. This endpoint has been updated to support new Paper export formats and metadata.</li>
</ul>

</div>
<div class="section aem-GridColumn aem-GridColumn--default--12">
<div class="dr-article-content__section" id="-creating-a-paper-doc">
    <h2 class="dr-article-content__section-title"> Creating a Paper Doc</h2>
</div>
</div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>Creating a paper doc is easy—conventions are similar to <a href="https://www.dropbox.com/developers/documentation/http/documentation#files-upload">uploading binary files</a>. Simply specify your target path and input format with the <span class="dr-code">Dropbox-API-Arg</span> header with your text, Markdown, or HTML as the body.</p>

</div>
<div class="dr-code-container aem-GridColumn aem-GridColumn--default--12">




<div class="dr-code-container--title"></div>
<div class="dr-code-container-inner">

    <button class="dr-code-container__copy-button dr-button dr-typography-t17">
        Copy
    </button>
    <pre class="dr-code-container__pre"><code class="dr-code-container__code dr-typography-t5 bash">curl -v -X POST https://api.dropboxapi.com/2/files/paper/create     
--header "Authorization: Bearer YOUR_BEARER_TOKEN"     
--header "Dropbox-API-Arg: {\"path\": \"/Meeting Notes.paper\",\"import_format\": \"plain_text\"}"     
--header "Content-Type: application/octet-stream"      
--data-binary @meeting_notes.txt</code></pre>


</div>
<div class="dr-code-container-rte"></div>
</div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>The <a href="https://www.dropbox.com/developers/documentation/http/documentation#files-paper-create">/files/paper</a><a href="https://www.dropbox.com/developers/documentation/http/documentation#files-paper-create">/create</a> call will return the URL, which is presentable to end users to visit and begin editing (Note: permissions on the link can be managed through sharing APIs). The call will also return the <span class="dr-code">result_path</span> and <span class="dr-code">file_id</span>, which can be used with other file operators (like <a href="https://www.dropbox.com/developers/documentation/http/documentation#files-move">/files/</a><a href="https://www.dropbox.com/developers/documentation/http/documentation#files-move">move</a> and <a href="https://www.dropbox.com/developers/documentation/http/documentation#files-delete">/files/</a><a href="https://www.dropbox.com/developers/documentation/http/documentation#files-delete">delete</a>).  </p>
<p>Note that if a file already exists at your target destination, create will append a number to the end of the path to prevent a collision.</p>

</div>
<div class="dr-code-container aem-GridColumn aem-GridColumn--default--12">




<div class="dr-code-container--title"></div>
<div class="dr-code-container-inner">

    <button class="dr-code-container__copy-button dr-button dr-typography-t17">
        Copy
    </button>
    <pre class="dr-code-container__pre"><code class="dr-code-container__code dr-typography-t5 json">{
    "url": "https://www.dropbox.com/cloud_docs/view/k93hadJEO3-sRkejKYJi4?fileid_gid=0uVLNNU2EdAAAAAAAABTcw",
    "result_path": "/Meeting Notes (1).paper",
    "file_id": "id:0uVLZNU2SdAAAAAAAAATcw",
    "paper_revision": 2
}</code></pre>


</div>
<div class="dr-code-container-rte"></div>
</div>
<div class="section aem-GridColumn aem-GridColumn--default--12">
<div class="dr-article-content__section" id="-updating-a-paper-doc">
    <h2 class="dr-article-content__section-title"> Updating a Paper Doc</h2>
</div>
</div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>Updating a paper document with <a href="https://www.dropbox.com/developers/documentation/http/documentation#files-paper-update">/files/paper/update</a> is similar. Pass the path, input format, and binary content.</p>
<p>Update also enables you to specify the <span class="dr-code">doc_update_policy</span>. The <span class="dr-code">append</span> and <span class="dr-code">prepend</span> modes allow you to add content to an existing doc. The <span class="dr-code">overwrite</span> mode will overwrite the entire document, and the <span class="dr-code">update</span> mode overwrites after checking that there are no updates the caller has missed.</p>
<p>Dropbox Paper enables live, real-time co-editing. The <span class="dr-code">paper_revision</span> increments for every change to the document. The <span class="dr-code">paper_revision</span> can be passed when using the <span class="dr-code">update</span> mode, which will then error if <span class="dr-code">paper_revision</span> has changed by the time the call reaches Dropbox servers. This provides a mechanism to make sure your programmatic updates do not conflict with any edits made by users.  Other update modes to not require the <span class="dr-code">paper_revision</span>.</p>
<p>Note that <span class="dr-code">paper_revision</span> and <a href="https://www.dropbox.com/developers/documentation/http/documentation#files-list_revisions">file revision</a> are different, but related: <span class="dr-code">paper_revision</span> tracks rapid, live updates — which Paper will then batch together to make a <a href="https://www.dropbox.com/developers/documentation/http/documentation#files-list_revisions">file revision</a>.  Use <a href="https://www.dropbox.com/developers/documentation/http/documentation#files-export"> </a><a href="https://www.dropbox.com/developers/documentation/http/documentation#files-export">/files/export</a> to retrieve the latest <span class="dr-code">paper_revision</span>.</p>

</div>
<div class="section aem-GridColumn aem-GridColumn--default--12">
<div class="dr-article-content__section" id="-building-with-paper">
    <h2 class="dr-article-content__section-title"> Building with Paper</h2>
</div>
</div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>These new APIs are in preview, available to all developers.   </p>
<p>Note that at the time of writing, not all users have access to paper docs in the filesystem—you may need to issue an API call to <a href="https://www.dropbox.com/developers/documentation/http/documentation#users-features-get_values"><u>/users/features/get_values</u></a> to check for availability on a per-user basis. See our <a href="https://aem.dropbox.com/en-us/lp/developers/reference/paper-migration-guide">Paper Migration Guide</a> for more information.</p>
<p>As always, we’re available to help! You can post your questions on our <a href="https://www.dropboxforum.com/t5/Discuss-Developer-API/ct-p/101000041B">developer forum</a> or <a href="https://www.dropbox.com/developers/contact">submit a ticket</a> for more direct support.  </p>
<p>Build with Dropbox today at <u>www.dropbox.com/developers</u>.<br />
</p>

</div>

    
</div>
]]></content:encoded>
            			
                <media:thumbnail url="https://dropbox.tech/cms/content/dam/dropbox/tech-blog/en-us/developers/Developers-3-1440x305px-light.png" />
                <media:content url="https://dropbox.tech/cms/content/dam/dropbox/tech-blog/en-us/developers/Developers-3-1440x305px-light.png" medium="image">
                    <media:title type="html">New Paper Endpoints Released in Preview</media:title>
                </media:content>
       		 </item>
                    
        				<item>
                        <title>Dropbox Postman Collection for Team Admin Workflows</title>
                        
            			<link>https://dropbox.tech/developers/dropbox-postman-collection-for-team-admin-workflows</link>

                            
            			<dc:creator>
                            Dropbox Platform Team,Dropbox Developer Support Team,Dropbox Platform Team,Dropbox Platform Team,Dropbox Platform Team,Dropbox Platform Team,Kyle Anderson,Tahsin Islam,Jess Kenney,Marcel Ribas
            			</dc:creator>
            			
            				<category>collection</category>
							
            				<category>Workflow</category>
							
            				<category>Tips and Tricks</category>
							
            				<category>Teams</category>
							
                            
            			<description><![CDATA[Use this Dropbox Postman Collection for managing Team Admin Workflows]]></description>
            			<guid>https://dropbox.tech/developers/dropbox-postman-collection-for-team-admin-workflows</guid>
                        <pubDate>Tue, 05 Jan 2021 10:20:00 -0800</pubDate>
                            
                        <content:encoded><![CDATA[


<div class="aem-Grid aem-Grid--12 aem-Grid--default--12 ">
    
    <div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>Dropbox has more than 500,000 teams using <a href="https://www.dropbox.com/business">Dropbox Business</a> collaboration capabilities. The rich Dropbox API allows business customers to manage their content and their team programmatically.<br />
</p>
<p>Although Dropbox Business has a <a href="https://www.dropbox.com/business/tour/administrative-tools">web-based management console</a>, some Dropbox team administration tasks, such as onboarding/off-boarding users, are carried out more efficiently through the API. For example, when you need to remove a number of members from the team, running a script is much faster than manually removing each one.<br />
</p>
<p>Certain administrative tasks are carried out by combining multiple API requests, executing them sequentially or in conditional loops. We were looking for a way to show how to implement these workflows with the Dropbox API in a format that they could be easily executable, but also extendable, so they can be improved as business needs change.</p>
<p>Enter <a href="https://www.postman.com/">Postman</a>, an API Lifecycle Platform that has more than 10 million registered users. It is a smart way of learning a new API. It has many capabilities, among them the ability to create collections of requests, run scripts before and after issuing requests and executing multiple requests in sequence. It also has <a href="https://www.postman.com/explore">an API Network</a>, where companies can publish their collections of endpoints and expose their public APIs to a large population of developers and administrators.<br />
</p>
<p>Combining the ability to sequence requests and publish collections, Postman seemed like a great platform to build and distribute administrative workflows our customers have been requesting. We built the first version of the <a href="https://www.postman.com/explore/collection/6403/dropbox-team-admin-workflows">Dropbox Team Admin Workflows</a> collection during this year's <a href="https://blog.dropbox.com/topics/inside-dbx/dropbox-hack-week-2020--doing-good-from-the-cloud">Hack Week</a>, our company-wide annual hacking event. Our team of technical architects, experienced in supporting large Dropbox deployments, had already been using Postman to help customers. We used that customer feedback to define the workflows in the collection. These are some of the workflows you'll find:</p>
<ul>
<li>Bulk Provision Users and Add to Groups</li>
<li>Bulk Deprovision Members with Transfer Destination</li>
<li>Bulk Deprovision Members without Transfer Destination</li>
<li>Bulk Suspend Members</li>
<li>Bulk Unsuspend Members</li>
<li>Bulk Add Users To Groups</li>
<li>Bulk Update Email Addresses</li>
<li>Bulk Add Groups</li>
<li>Wipe External ID</li>
<li>Bulk Update External IDs</li>
</ul>
<p>Let's have a look at the collection. The picture below is the <a href="https://www.postman.com/dropbox-api">Dropbox page in the Postman API Network</a>:</p>

</div>
<div class="image c04-image aem-GridColumn aem-GridColumn--default--12">
<div class="dr-image image cq-dd-image  align-center">
    <figure class="dr-margin-0 dr-display-inline-block">
        
            
    

        

        
        
        

        
        
        

        <!--optimized image webp-->
        

        
        <!-- <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/dropbox_collections.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/dropbox_collections.png"
             aria-hidden=""
             alt="Public Dropbox page in the Postman API Network"
             class=""
             data-sly-attribute.width="2494"
             data-sly-attribute.height="1474"
             data-aem-asset-id="91f60576-22bc-409c-ac68-5ab1aaeec6af:dropbox_collections.png"
             data-trackable="true" />
        <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/dropbox_collections.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/dropbox_collections.png"
             aria-hidden=""
             alt=""
             class=""
             data-sly-attribute.width="2494"
             data-sly-attribute.height="1474"
             data-aem-asset-id="91f60576-22bc-409c-ac68-5ab1aaeec6af:dropbox_collections.png"
             data-trackable="true" /> -->

        
         <img src="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/dropbox_collections.png" fallbackimage="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/dropbox_collections.png" onerror="window.failedAttempts=0;this.setAttribute('src',this.getAttribute('fallbackimage'));window.failedAttempts++;if(window.failedAttempts == 1)this.onerror=null" aria-hidden="false" alt="Public Dropbox page in the Postman API Network" data-aem-asset-id="91f60576-22bc-409c-ac68-5ab1aaeec6af:dropbox_collections.png" data-trackable="true" height="1474" width="2494"/>
        
    

            <figcaption class="dr-typography-t5 dr-color-ink-60 dr-image-rte"><p>The <a href="https://www.postman.com/dropbox-api" target="_blank">Dropbox page</a> in the Postman API Network<br />
</p>
</figcaption>
        
    </figure>
</div></div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>To add the collection from Postman, go to the <a href="https://www.postman.com/explore/collection/6403/dropbox-team-admin-workflows">Dropbox Team Admin Workflows</a> and click the “Run In Postman” button:</p>

</div>
<div class="image c04-image aem-GridColumn aem-GridColumn--default--12">
<div class="dr-image image cq-dd-image  align-center">
    <figure class="dr-margin-0 dr-display-inline-block">
        
            
    

        

        
        
        

        
        
        

        <!--optimized image webp-->
        

        
        <!-- <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/team_admin_workflow_collection.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/team_admin_workflow_collection.png"
             aria-hidden=""
             alt="The Dropbox Team Admin Workflows collection in Postman"
             class=""
             data-sly-attribute.width="2548"
             data-sly-attribute.height="1274"
             data-aem-asset-id="a61ffabd-22ad-48b9-98d6-a1bf139356b4:team_admin_workflow_collection.png"
             data-trackable="true" />
        <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/team_admin_workflow_collection.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/team_admin_workflow_collection.png"
             aria-hidden=""
             alt=""
             class=""
             data-sly-attribute.width="2548"
             data-sly-attribute.height="1274"
             data-aem-asset-id="a61ffabd-22ad-48b9-98d6-a1bf139356b4:team_admin_workflow_collection.png"
             data-trackable="true" /> -->

        
         <img src="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/team_admin_workflow_collection.png/_jcr_content/renditions/team_admin_workflow_collection.webp" fallbackimage="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/team_admin_workflow_collection.png" onerror="window.failedAttempts=0;this.setAttribute('src',this.getAttribute('fallbackimage'));window.failedAttempts++;if(window.failedAttempts == 1)this.onerror=null" aria-hidden="false" alt="The Dropbox Team Admin Workflows collection in Postman" data-aem-asset-id="a61ffabd-22ad-48b9-98d6-a1bf139356b4:team_admin_workflow_collection.png" data-trackable="true" height="1274" width="2548"/>
        
    

            <figcaption class="dr-typography-t5 dr-color-ink-60 dr-image-rte"><p>The <a href="https://www.postman.com/explore/collection/6403/dropbox-team-admin-workflows" target="_blank">Dropbox Team Admin Workflows collection</a> in Postman</p>
</figcaption>
        
    </figure>
</div></div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>After you import the collection, we recommend you check out the documentation by clicking the ellipsis and selecting “View Documentation”:</p>

</div>
<div class="dr-image-container aem-GridColumn aem-GridColumn--default--12">

<div class="dr-image-container__container">
    <div class="dr-image-container__image-container dr-image-container__image-container--2">
        
<div class="dr-image image cq-dd-image  align-center">
    <figure class="dr-margin-0 dr-display-inline-block">
        
            
    

        

        
        
        

        
        
        

        <!--optimized image webp-->
        

        
        <!-- <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/view_docs.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/view_docs.png"
             aria-hidden=""
             alt="Menu showing the View Documentation option from a collection in Postman"
             class=""
             data-sly-attribute.width="200"
             data-sly-attribute.height="1134"
             data-aem-asset-id="8d7daeb8-53d5-4b07-9daf-8d2ddda55d4d:view_docs.png"
             data-trackable="true" />
        <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/view_docs.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/view_docs.png"
             aria-hidden=""
             alt=""
             class=""
             data-sly-attribute.width="200"
             data-sly-attribute.height="1134"
             data-aem-asset-id="8d7daeb8-53d5-4b07-9daf-8d2ddda55d4d:view_docs.png"
             data-trackable="true" /> -->

        
         <img src="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/view_docs.png/_jcr_content/renditions/view_docs.webp" fallbackimage="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/view_docs.png" onerror="window.failedAttempts=0;this.setAttribute('src',this.getAttribute('fallbackimage'));window.failedAttempts++;if(window.failedAttempts == 1)this.onerror=null" aria-hidden="false" alt="Menu showing the View Documentation option from a collection in Postman" data-aem-asset-id="8d7daeb8-53d5-4b07-9daf-8d2ddda55d4d:view_docs.png" data-trackable="true" height="1134" width="200"/>
        
    

            <figcaption class="dr-typography-t5 dr-color-ink-60 dr-image-rte"><p>View Documentation<br />
</p>
</figcaption>
        
    </figure>
</div>
    </div>
    <div class="dr-image-container__image-container dr-image-container__image-container--2">
        
<div class="dr-image image cq-dd-image  align-center">
    <figure class="dr-margin-0 dr-display-inline-block">
        
            
    

        

        
        
        

        
        
        

        <!--optimized image webp-->
        

        
        <!-- <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/workflow_documentation.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/workflow_documentation.png"
             aria-hidden=""
             alt="Documentation for the Dropbox Team Admin Workflows collection"
             class=""
             data-sly-attribute.width="1614"
             data-sly-attribute.height="1202"
             data-aem-asset-id="f63e6cb0-2a22-4ead-b7fb-c6a68e6a9286:workflow_documentation.png"
             data-trackable="true" />
        <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/workflow_documentation.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/workflow_documentation.png"
             aria-hidden=""
             alt=""
             class=""
             data-sly-attribute.width="1614"
             data-sly-attribute.height="1202"
             data-aem-asset-id="f63e6cb0-2a22-4ead-b7fb-c6a68e6a9286:workflow_documentation.png"
             data-trackable="true" /> -->

        
         <img src="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/workflow_documentation.png/_jcr_content/renditions/workflow_documentation.webp" fallbackimage="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/workflow_documentation.png" onerror="window.failedAttempts=0;this.setAttribute('src',this.getAttribute('fallbackimage'));window.failedAttempts++;if(window.failedAttempts == 1)this.onerror=null" aria-hidden="false" alt="Documentation for the Dropbox Team Admin Workflows collection" data-aem-asset-id="f63e6cb0-2a22-4ead-b7fb-c6a68e6a9286:workflow_documentation.png" data-trackable="true" height="1202" width="1614"/>
        
    

            <figcaption class="dr-typography-t5 dr-color-ink-60 dr-image-rte"><p>Documentation for the Dropbox Team Admin Workflows collection <br />
</p>
</figcaption>
        
    </figure>
</div>
    </div>
    
</div></div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>In order to try it out in your own Dropbox team, you'll need to provide the credentials. In the documentation, you will find instructions on how to get your access token from your Dropbox account and add it to the collection.<br />
</p>
<p>Each workflow in this collection is a folder and can be executed using Postman's Collection Runner. To run a particular workflow, select the folder and click the “Run” button to invoke Collection Runner:<br />
</p>

</div>
<div class="image c04-image aem-GridColumn aem-GridColumn--default--12">
<div class="dr-image image cq-dd-image  align-center">
    <figure class="dr-margin-0 dr-display-inline-block">
        
            
    

        

        
        
        

        
        
        

        <!--optimized image webp-->
        

        
        <!-- <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/bulk_provision_users.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/bulk_provision_users.png"
             aria-hidden=""
             alt="Postman collection showing the Run button to invoke the "collection runner""
             class=""
             data-sly-attribute.width="1404"
             data-sly-attribute.height="406"
             data-aem-asset-id="bd3feb44-d914-4bc0-8630-7ee3ac7e7b1b:bulk_provision_users.png"
             data-trackable="true" />
        <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/bulk_provision_users.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/bulk_provision_users.png"
             aria-hidden=""
             alt=""
             class=""
             data-sly-attribute.width="1404"
             data-sly-attribute.height="406"
             data-aem-asset-id="bd3feb44-d914-4bc0-8630-7ee3ac7e7b1b:bulk_provision_users.png"
             data-trackable="true" /> -->

        
         <img src="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/bulk_provision_users.png/_jcr_content/renditions/bulk_provision_users.webp" fallbackimage="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/bulk_provision_users.png" onerror="window.failedAttempts=0;this.setAttribute('src',this.getAttribute('fallbackimage'));window.failedAttempts++;if(window.failedAttempts == 1)this.onerror=null" aria-hidden="false" alt="Postman collection showing the Run button to invoke the "collection runner"" data-aem-asset-id="bd3feb44-d914-4bc0-8630-7ee3ac7e7b1b:bulk_provision_users.png" data-trackable="true" height="406" width="1404"/>
        
    

            <figcaption class="dr-typography-t5 dr-color-ink-60 dr-image-rte"><p>Invoking Postman's Collection Runner<br />
</p>
</figcaption>
        
    </figure>
</div></div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>When you point Collection Runner to a folder, it executes requests sequentially according to their order in the folder, or you can use scripts to define your flow.<br />
</p>

</div>
<div class="image c04-image aem-GridColumn aem-GridColumn--default--12">
<div class="dr-image image cq-dd-image  align-center">
    <figure class="dr-margin-0 dr-display-inline-block">
        
            
    

        

        
        
        

        
        
        

        <!--optimized image webp-->
        

        
        <!-- <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/sequence_calls.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/sequence_calls.png"
             aria-hidden=""
             alt="Page displaying the execution order for a folder selected by the Postman Collection Runner."
             class=""
             data-sly-attribute.width="2036"
             data-sly-attribute.height="962"
             data-aem-asset-id="065e8c5b-abf9-4eac-b423-3054f6704409:sequence_calls.png"
             data-trackable="true" />
        <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/sequence_calls.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/sequence_calls.png"
             aria-hidden=""
             alt=""
             class=""
             data-sly-attribute.width="2036"
             data-sly-attribute.height="962"
             data-aem-asset-id="065e8c5b-abf9-4eac-b423-3054f6704409:sequence_calls.png"
             data-trackable="true" /> -->

        
         <img src="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/sequence_calls.png/_jcr_content/renditions/sequence_calls.webp" fallbackimage="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/sequence_calls.png" onerror="window.failedAttempts=0;this.setAttribute('src',this.getAttribute('fallbackimage'));window.failedAttempts++;if(window.failedAttempts == 1)this.onerror=null" aria-hidden="false" alt="Page displaying the execution order for a folder selected by the Postman Collection Runner." data-aem-asset-id="065e8c5b-abf9-4eac-b423-3054f6704409:sequence_calls.png" data-trackable="true" height="962" width="2036"/>
        
    

            <figcaption class="dr-typography-t5 dr-color-ink-60 dr-image-rte"><p>Collection Runner for a Team Admin Workflow<br />
</p>
</figcaption>
        
    </figure>
</div></div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>We use Postman variables to store data in between requests. Postman has several <a href="https://learning.postman.com/docs/sending-requests/variables/#variable-scopes">variable scopes</a> available, from local to global. We mostly used collection variables for this collection. It is the least privileged scope that allows us to pass values between requests.<br />
</p>
<p>Using <a href="https://learning.postman.com/docs/writing-scripts/test-scripts/">Postman's Tests scripting engine</a>, you can access these variables. You can also <a href="https://learning.postman.com/docs/running-collections/building-workflows/">build workflows</a> by jumping to a different request or even doing a conditional loop. This is done using the <span class="dr-code">setNextRequest()</span> method. Let's take a look at a sample script from the collection. Notice how a simple if-else statement can invoke different requests based on the response you get from the Dropbox API endpoint:</p>

</div>
<div class="image c04-image aem-GridColumn aem-GridColumn--default--12">
<div class="dr-image image cq-dd-image  align-center">
    <figure class="dr-margin-0 dr-display-inline-block">
        
            
    

        

        
        
        

        
        
        

        <!--optimized image webp-->
        

        
        <!-- <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/custom_javascript.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/custom_javascript.png"
             aria-hidden=""
             alt="Code execution environment in the Tests tab of postman"
             class=""
             data-sly-attribute.width="1692"
             data-sly-attribute.height="936"
             data-aem-asset-id="729e77b4-e49e-441e-a6a6-ffa69b8b9659:custom_javascript.png"
             data-trackable="true" />
        <img data-sly-test.highRes="false"
             srcset="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/custom_javascript.png 2x,  1x"
             src="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/custom_javascript.png"
             aria-hidden=""
             alt=""
             class=""
             data-sly-attribute.width="1692"
             data-sly-attribute.height="936"
             data-aem-asset-id="729e77b4-e49e-441e-a6a6-ffa69b8b9659:custom_javascript.png"
             data-trackable="true" /> -->

        
         <img src="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/custom_javascript.png/_jcr_content/renditions/custom_javascript.webp" fallbackimage="/cms/content/dam/dropbox/tech-blog/en-us/2021/01/admin-workflows-collection/custom_javascript.png" onerror="window.failedAttempts=0;this.setAttribute('src',this.getAttribute('fallbackimage'));window.failedAttempts++;if(window.failedAttempts == 1)this.onerror=null" aria-hidden="false" alt="Code execution environment in the Tests tab of postman" data-aem-asset-id="729e77b4-e49e-441e-a6a6-ffa69b8b9659:custom_javascript.png" data-trackable="true" height="936" width="1692"/>
        
    

            <figcaption class="dr-typography-t5 dr-color-ink-60 dr-image-rte"><p><span class=" author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z9z84zrtjz71zz89zr4cz81zz68zmc0z69zz70zaz81zz87z8z122zz84zz76zvz74zfz80zz85z1u">Script that runs after the Get More Groups request in the Bulk Provision Users and Add to Groups Workflow</span></p>
</figcaption>
        
    </figure>
</div></div>
<div class="text parbase aem-GridColumn aem-GridColumn--default--12">
<p>The scripting language that Postman uses is based on Node.js. We recommend reading <a href="https://learning.postman.com/docs/writing-scripts/intro-to-scripts/">Postman’s scripting documentation</a>. We believe that pretty soon you'll be modifying our scripts or creating new ones to fit your needs. The Team Admin Workflows collection is already in use by customers and helping administrators manage their teams.<br />
</p>
<p>For a more comprehensive look at team administration using the Dropbox Business API, we recommend reading our <a href="https://www.dropbox.com/lp/developers/reference/dbx-team-administration-guide">Dropbox Team Administration Guide</a>. To dig deeper into using the API for sharing in a team context, then we recommend the blog post, <a href="https://dropbox.tech/developers/manage-team-sharing-in-your-dropbox-app">Manage Team Sharing in your Dropbox App</a>.</p>
<p>Another exciting feature of Postman is the recently launched <a href="https://blog.postman.com/introducing-postman-public-workspaces/">Public Workspaces</a>. With Public Workspaces, teams can collaborate with external users on their collections. Head over to the <a href="https://www.postman.com/dropbox-api/workspace/dropbox-public-workspace">Dropbox Public Workspace</a> in Postman to find the Team Admin Workflows and other collections.<br />
</p>
<p>We intend to explore Postman further by releasing other collections, such as showing common operations with the user API. We hope you take the time to explore what our Postman collections can do. If you have coding skills, you can even create your own workflows or improve the existing ones. Go ahead and fork the collections, make pull requests, and help us make them better. Then <a href="https://www.dropboxforum.com/t5/Discuss-Dropbox-Developer-API/Have-you-seen-our-Postman-collections/td-p/480335">head over to our Developer Forum </a><a href="https://www.dropboxforum.com/t5/Discuss-Dropbox-Developer-API/Have-you-seen-our-Postman-collections/td-p/480335">and let us know what you think</a>. We look forward to hearing your opinion!</p>

</div>

    
</div>
]]></content:encoded>
            			
                <media:thumbnail url="https://dropbox.tech/cms/content/dam/dropbox/tech-blog/en-us/developers/Developers-2-1440x305px-light.png" />
                <media:content url="https://dropbox.tech/cms/content/dam/dropbox/tech-blog/en-us/developers/Developers-2-1440x305px-light.png" medium="image">
                    <media:title type="html">Dropbox Postman Collection for Team Admin Workflows</media:title>
                </media:content>
       		 </item>
                    
            
    </channel>
</rss>
