# Dropbox

Monitor your Dropbox files, folders, shared content, and team activity with AI-powered insights into your cloud storage.


# Overview

Connect Weavestream to Dropbox to monitor:

  • 📁 Files & Folders - Your complete Dropbox file structure
  • 🔄 Recent Changes - Files added, modified, or deleted
  • 👥 Shared Content - Files and folders shared with you or by you
  • 📊 File Requests - Active file request links
  • 🔗 Shared Links - All your shared file/folder links
  • 📦 Team Activity - For Dropbox Business accounts

Estimated Setup Time: 10 minutes


# Prerequisites

  • Dropbox account (Personal or Business)
  • Admin access to create apps (for Business accounts)
  • Weavestream installed on your Mac

# Part 1: Create Dropbox App & Get OAuth Credentials

# Step 1: Go to Dropbox App Console

  1. Go to https://www.dropbox.com/developers/apps
  2. Sign in with your Dropbox account
  3. Click "Create app"

# Step 2: Configure Your App

Choose an API:

  • Select "Scoped access" (recommended - more granular permissions)

Choose the type of access:

  • Select "Full Dropbox" (access to all files/folders)
  • Or "App folder" if you only want to monitor specific folder

Name your app:

Weavestream Monitor

(Must be unique across all Dropbox apps)

Click "Create app"

# Step 3: Configure OAuth Settings

On your app's settings page:

Redirect URIs: Add this URI:

http://localhost:8080/callback

Click "Add"

OAuth 2:

  • Make sure "Allow implicit grant" is OFF
  • Set "Token access type" to "Offline" (enables refresh tokens)

# Step 4: Set Permissions

Click on the "Permissions" tab.

Select these scopes (minimum required):

  • account_info.read - Read account information
  • files.metadata.read - View file/folder metadata
  • files.content.read - View file/folder content
  • sharing.read - View shared folders/files
  • file_requests.read - View file requests

Optional (for advanced features):

  • contacts.read - View shared folder members
  • team_info.read - View team information (Business only)
  • team_data.member - View team member info (Business only)

Click "Submit" to save permissions

# Step 5: Get Your Credentials

Go back to the "Settings" tab.

📋 App key (Client ID)

  • Example: abc123xyz789
  • Copy this value

📋 App secret (Client Secret)

  • Click "Show" to reveal
  • Example: secret123abc456
  • Copy this value

Save these credentials securely - you'll need them for Weavestream.


# Part 2: Configure Weavestream

# Step 1: Add Dropbox as a Source

  1. Open Weavestream
  2. Click the "+" button in the sidebar
  3. Select "Add Source"
  4. Fill in the source details:
    • Name: Dropbox
    • Base URL: https://api.dropboxapi.com/2
    • Auth Type: OAuth
    • OAuth Flow Type: Authorization Code
    • Authorization URL: https://www.dropbox.com/oauth2/authorize
    • Token URL: https://api.dropbox.com/oauth2/token
    • Client ID: Paste your App key
    • Client Secret: Paste your App secret
    • Scopes: account_info.read files.metadata.read files.content.read sharing.read file_requests.read
    • Additional OAuth Parameters:
      • Parameter: token_access_type
      • Value: offline
    • Redirect Port: 8080
    • Use Basic Auth: Yes (checked)
    • Custom Headers:
      • Header Name: Content-Type
      • Header Value: application/json
    • Icon: Select icloud.and.arrow.down or custom dropbox icon if available
    • Color: Choose your preference (suggested: #0061FF - Dropbox blue, or #5856D6 - purple)
    • Refresh Interval: 60 minutes (Dropbox doesn't change constantly)
  5. Click "Add" or "Save"
  6. OAuth Authorization Flow:
    • A browser window will open
    • Sign into Dropbox if prompted
    • Click "Allow" to grant access
    • Browser will redirect back to Weavestream
    • You should see "Authorization successful"

# Step 2: Add Endpoints

Now we'll add endpoints to monitor different aspects of your Dropbox.


# Endpoint 1: List All Files & Folders

Get your complete Dropbox file structure.

Configuration:

  • Name: All Files & Folders
  • Path: /files/list_folder
  • Method: POST

Body Parameters (JSON):

{
  "path": "",
  "recursive": true,
  "include_deleted": false,
  "include_mounted_folders": true,
  "limit": 2000
}

In Weavestream:

  • Body Params:
    • path: `` (empty string = root)
    • limit: 2000 (max per request)
  • Body Params (Boolean):
    • recursive: true (traverse all subfolders)
    • include_deleted: false
    • include_mounted_folders: true

Field Mapping:

  • Array Path: entries
  • ID Field: id
  • Title Field: name
  • Date Field: server_modified (or client_modified)
  • Summary Fields: .tag (file or folder), path_display, size
  • Status Field: (none)

Retention Mode: Keep All (preserve file history)

Note: Dropbox API has pagination via cursor. Weavestream should handle this automatically.


# Endpoint 2: Recent Changes (Last 30 Days)

Track files modified in the last 30 days.

Configuration:

  • Name: Recent Changes
  • Path: /files/list_folder
  • Method: POST

Body Parameters:

{
  "path": "",
  "recursive": true,
  "include_deleted": false,
  "limit": 2000
}

Then create a Smart Filter:

  • Field: server_modified
  • Operator: in last
  • Value: 30 days

Alternative: Use /files/list_revisions endpoint for specific file history


# Endpoint 3: Shared Folders

Get all folders shared with you or by you.

Configuration:

  • Name: Shared Folders
  • Path: /sharing/list_folders
  • Method: POST

Body Parameters:

{
  "limit": 1000,
  "actions": []
}

Field Mapping:

  • Array Path: entries
  • ID Field: shared_folder_id
  • Title Field: name
  • Date Field: time_invited
  • Summary Fields: policy.acl_update_policy, policy.shared_link_policy, path_lower
  • Status Field: access_type
    • Map ownerok
    • Map editorinfo
    • Map viewerwarning

Retention Mode: Keep All


# Endpoint 4: Shared Files

Get all individual files you've shared.

Configuration:

  • Name: Shared Files
  • Path: /sharing/list_shared_links
  • Method: POST

Body Parameters:

{
  "path": "",
  "direct_only": false
}

Field Mapping:

  • Array Path: links
  • ID Field: id
  • Title Field: name
  • Date Field: client_modified
  • Summary Fields: url, link_permissions.resolved_visibility, path_lower
  • Status Field: (none)

Retention Mode: Keep All


# Endpoint 5: File Requests

Monitor active file request links (where others can upload to your Dropbox).

Configuration:

  • Name: File Requests
  • Path: /file_requests/list_v2
  • Method: POST

Body Parameters:

{
  "limit": 1000
}

Field Mapping:

  • Array Path: file_requests
  • ID Field: id
  • Title Field: title
  • Date Field: created
  • Summary Fields: url, destination, is_open
  • Status Field: is_open
    • Map trueok
    • Map falseinfo

Retention Mode: Keep All


# Endpoint 6: Recently Deleted Files

Track files deleted in the last 30 days.

Configuration:

  • Name: Recently Deleted
  • Path: /files/list_folder
  • Method: POST

Body Parameters:

{
  "path": "",
  "recursive": true,
  "include_deleted": true,
  "limit": 2000
}

Then create a Smart Filter:

  • Field: .tag
  • Operator: equals
  • Value: deleted

Alternative Approach: Use the Get Deleted Files endpoint:

  • Path: /files/list_folder/get_latest_cursor then /files/list_folder/continue
  • More complex but gives you chronological deletion history

# Endpoint 7: Search Files

Search your entire Dropbox for specific files.

Configuration:

  • Name: Search - [Search Term]
  • Path: /files/search_v2
  • Method: POST

Body Parameters:

{
  "query": "contract",
  "options": {
    "path": "",
    "max_results": 100,
    "file_status": "active",
    "filename_only": false
  }
}

Field Mapping:

  • Array Path: matches
  • ID Field: metadata.metadata.id
  • Title Field: metadata.metadata.name
  • Date Field: metadata.metadata.server_modified
  • Summary Fields: metadata.metadata.path_display

Use Case: Create separate endpoints for important search terms (e.g., "invoices", "contracts", "reports")


# Endpoint 8: Specific Folder Contents

Monitor a specific folder (e.g., "Documents" or "Work Projects").

Configuration:

  • Name: [Folder Name] Contents
  • Path: /files/list_folder
  • Method: POST

Body Parameters:

{
  "path": "/Documents",
  "recursive": false,
  "include_deleted": false,
  "limit": 2000
}

Replace /Documents with your folder path.

Field Mapping: Same as "All Files & Folders"


# Endpoint 9: Team Activity (Dropbox Business Only)

Monitor team member activity and events.

Configuration:

  • Name: Team Activity
  • Path: /team_log/get_events
  • Method: POST

Body Parameters:

{
  "limit": 1000,
  "category": {
    ".tag": "file_operations"
  }
}

Field Mapping:

  • Array Path: events
  • ID Field: event_id
  • Title Field: event_type.description
  • Date Field: timestamp
  • Summary Fields: actor.display_name, context.geo_location

Requires: Team admin permissions and team scopes enabled


# Endpoint 10: Account Space Usage

Monitor storage space usage.

Configuration:

  • Name: Space Usage
  • Path: /users/get_space_usage
  • Method: POST

Body Parameters: (none needed)

Field Mapping:

  • ID Field: Use static value or timestamp
  • Title Field: Create computed field showing "Dropbox Storage"
  • Summary Fields: used, allocation.allocated (total space)

Note: This returns a single object, not an array. You may need to wrap it for Weavestream.


# Part 3: Understanding Dropbox API Data

# File/Folder Data Structure

{
  "entries": [
    {
      ".tag": "file",
      "name": "Proposal.docx",
      "id": "id:abc123xyz",
      "client_modified": "2024-01-26T14:30:00Z",
      "server_modified": "2024-01-26T14:31:00Z",
      "rev": "abc123",
      "size": 1048576,
      "path_lower": "/documents/proposal.docx",
      "path_display": "/Documents/Proposal.docx",
      "is_downloadable": true,
      "content_hash": "abc123..."
    },
    {
      ".tag": "folder",
      "name": "Projects",
      "id": "id:xyz789abc",
      "path_lower": "/projects",
      "path_display": "/Projects"
    }
  ],
  "cursor": "abc123...",
  "has_more": false
}

Key Fields:

  • .tag - Type: file, folder, or deleted
  • name - File/folder name
  • id - Unique Dropbox ID
  • path_display - Full path with proper capitalization
  • size - File size in bytes
  • server_modified - Last modified timestamp
  • is_downloadable - Whether file can be downloaded

# Shared Folder Data Structure

{
  "shared_folder_id": "123456789",
  "name": "Team Documents",
  "policy": {
    "acl_update_policy": {
      ".tag": "editors"
    },
    "shared_link_policy": {
      ".tag": "members"
    }
  },
  "path_lower": "/team documents",
  "link_metadata": {
    "url": "https://www.dropbox.com/...",
    "visibility": {
      ".tag": "public"
    }
  },
  "time_invited": "2024-01-15T10:00:00Z",
  "access_type": {
    ".tag": "owner"
  }
}

# File Request Data Structure

{
  "id": "abc123xyz",
  "url": "https://www.dropbox.com/request/...",
  "title": "Client Documents Upload",
  "destination": "/File Requests/Client Docs",
  "created": "2024-01-20T10:00:00Z",
  "deadline": null,
  "is_open": true,
  "file_count": 5
}

# Part 4: Create Useful Filters

# Filter 1: Large Files (>100MB)

  1. Under Dropbox source, click "+""New Filter"
  2. Name: Large Files (100MB+)
  3. Select Endpoint: All Files & Folders
  4. Add Conditions:
    • Field: .tag
    • Operator: equals
    • Value: file
    • AND
    • Field: size
    • Type: Number
    • Operator: greater than
    • Value: 104857600 (100MB in bytes)
  5. Save

# Filter 2: Recently Modified (Last 7 Days)

  1. Create new filter
  2. Name: Modified This Week
  3. Select Endpoint: All Files & Folders
  4. Add Condition:
    • Field: server_modified
    • Operator: in last
    • Value: 7 days
  5. Save

# Filter 3: Shared Publicly

  1. Create new filter
  2. Name: Publicly Shared Files
  3. Select Endpoint: Shared Files
  4. Add Condition:
    • Field: link_permissions.resolved_visibility.tag
    • Operator: contains
    • Value: public
  5. Save

# Filter 4: Specific File Types (e.g., PDFs)

  1. Create new filter
  2. Name: PDF Files
  3. Select Endpoint: All Files & Folders
  4. Add Condition:
    • Field: name
    • Operator: ends with
    • Value: .pdf
  5. Save

Repeat for other file types: .docx, .xlsx, .jpg, etc.


# Filter 5: Files in Specific Folder

  1. Create new filter
  2. Name: Documents Folder
  3. Select Endpoint: All Files & Folders
  4. Add Condition:
    • Field: path_lower
    • Operator: starts with
    • Value: /documents
  5. Save

# Filter 6: Folders Only

  1. Create new filter
  2. Name: Folders
  3. Select Endpoint: All Files & Folders
  4. Add Condition:
    • Field: .tag
    • Operator: equals
    • Value: folder
  5. Save

# Part 5: Use AI to Manage Your Files

Now you can ask intelligent questions about your Dropbox!

# Example Questions:

File Management:

  • "What files did I add this week?"
  • "Show me all PDFs in my Documents folder"
  • "Find files larger than 100MB"
  • "What's taking up the most space in my Dropbox?"

Collaboration:

  • "What folders am I sharing with others?"
  • "Show me all publicly shared files"
  • "Which file requests are still active?"
  • "List all files shared with john@example.com"

Search & Discovery:

  • "Find all files containing 'invoice'"
  • "Show me Word documents from last month"
  • "What Excel files haven't I touched in 6 months?"
  • "Find duplicate file names"

Organization:

  • "What's in my root folder?"
  • "How many files do I have in each folder?"
  • "Show me folders I created but never used"
  • "Which folders have the most files?"

Security & Cleanup:

  • "What files are publicly accessible?"
  • "Show me files I deleted recently"
  • "Find old files I can archive"
  • "What shared links should I revoke?"

Business (Team Accounts):

  • "Who accessed sensitive documents today?"
  • "What files were shared externally this week?"
  • "Show me team member activity"
  • "Which folders have the most collaborators?"

# Part 6: Advanced Configuration

# Pagination Handling

Dropbox uses cursor-based pagination:

Initial Request:

POST /files/list_folder
{
  "path": "",
  "recursive": true,
  "limit": 2000
}

Response includes:

{
  "entries": [...],
  "cursor": "abc123xyz...",
  "has_more": true
}

Continue Request:

POST /files/list_folder/continue
{
  "cursor": "abc123xyz..."
}

Weavestream should handle this automatically, but be aware of it for large libraries.


# File Size Conversions

Dropbox returns size in bytes:

  • 1 KB = 1,024 bytes
  • 1 MB = 1,048,576 bytes
  • 1 GB = 1,073,741,824 bytes

Example filters:

  • 10MB: 10485760
  • 100MB: 104857600
  • 1GB: 1073741824

# Path Handling

Dropbox paths:

  • Case-insensitive: /documents = /Documents = /DOCUMENTS
  • Use path_lower for filtering (consistent casing)
  • Use path_display for showing to users (preserves original casing)
  • Root path: Empty string "" or just /

# File Type Detection

Dropbox doesn't have a dedicated "file_type" field. Detect via:

  • File extension: Check name field (e.g., ends with .pdf)
  • MIME type: Not directly available, infer from extension
  • .tag field: Only shows file, folder, or deleted

Common extensions by category:

Documents:

  • .pdf, .doc, .docx, .txt, .rtf, .odt

Spreadsheets:

  • .xls, .xlsx, .csv, .numbers

Presentations:

  • .ppt, .pptx, .key

Images:

  • .jpg, .jpeg, .png, .gif, .bmp, .svg, .heic

Videos:

  • .mp4, .mov, .avi, .mkv, .wmv

Audio:

  • .mp3, .wav, .aac, .flac, .m4a

Archives:

  • .zip, .rar, .7z, .tar, .gz

Code:

  • .py, .js, .java, .cpp, .html, .css, .json

# Part 7: Dropbox Business Features

If you have a Dropbox Business account:

# Team Folders

Access shared team folders:

  • Path: /team/team_folder/list
  • Lists all team folders your team has access to

# Team Members

Get list of team members:

  • Path: /team/members/list_v2
  • Returns team member info, roles, status

# Admin Reports

Generate usage reports:

  • Path: /team/reports/get_activity
  • Requires team admin permissions

# Linked Devices

Monitor devices connected to team accounts:

  • Path: /team/devices/list_team_devices
  • Shows computers, phones, tablets accessing Dropbox

# Troubleshooting

# Issue: "OAuth authorization failed"

Solution:

  1. Verify Authorization URL is https://www.dropbox.com/oauth2/authorize
  2. Check Token URL is https://api.dropbox.com/oauth2/token
  3. Ensure redirect URI matches: http://localhost:8080/callback
  4. Verify "Use Basic Auth" is checked
  5. Make sure token_access_type=offline is in authorization URL
  6. Check app has required scopes enabled

# Issue: "No files returned" or empty entries

Solution:

  1. Verify path parameter is "" (empty string) for root
  2. Check recursive is set to true to see subfolders
  3. Ensure account actually has files
  4. Try setting path to specific folder: /Documents
  5. Check array path is set to entries

# Issue: "Error in call to API function"

Solution:

  1. Verify Content-Type header is application/json
  2. Check body parameters are properly formatted JSON
  3. Ensure boolean values are actually booleans, not strings
  4. Check endpoint path starts with / (e.g., /files/list_folder)

# Issue: "Token expired" or "401 Unauthorized"

Solution:

  1. Refresh tokens should auto-renew with token_access_type=offline
  2. Check refresh token is being stored by Weavestream
  3. Try re-authorizing OAuth flow
  4. Verify app permissions haven't been revoked

# Issue: "Insufficient permissions"

Solution:

  1. Go to Dropbox App Console → Your App → Permissions tab
  2. Verify required scopes are enabled
  3. Click "Submit" after changing permissions
  4. Re-authorize OAuth flow in Weavestream (permissions only apply to new tokens)

# Issue: "Rate limited" or "Too many requests"

Solution: Dropbox rate limits vary by endpoint:

  • Most endpoints: ~200 requests/hour per user
  • Search: Lower limits

Best practices:

  • Increase refresh interval (60+ minutes)
  • Reduce limit parameter if hitting timeouts
  • Don't poll frequently for file changes (use webhooks in production apps)

# Security Best Practices

# Do:

  • Request minimum scopes needed (don't enable write if only reading)
  • Use offline access (token_access_type=offline) for refresh tokens
  • Rotate app secrets every 90 days
  • Create separate apps for different integrations
  • Monitor app access in Dropbox settings
  • Store credentials securely (Weavestream uses macOS Keychain)

# Don't:

  • Grant write permissions unless absolutely necessary
  • Share App secret with anyone
  • Use "Full Dropbox" access if "App folder" would suffice
  • Store credentials in plain text
  • Leave unused apps with active tokens

# Additional Resources

# Dropbox API Documentation:

# Useful API Endpoints Reference:

Endpoint Path Purpose
List folder /files/list_folder Get files/folders
Search /files/search_v2 Search files
Get metadata /files/get_metadata File/folder details
List shared /sharing/list_shared_links Shared links
File requests /file_requests/list_v2 File request links
Space usage /users/get_space_usage Storage info
Account info /users/get_current_account User details
Get thumbnail /files/get_thumbnail File preview image

# Summary Checklist

Before you finish, verify:

  • Dropbox app created with required scopes
  • OAuth credentials (App key and App secret) obtained
  • Redirect URI configured in app settings
  • Dropbox source added to Weavestream
  • OAuth authorization completed successfully
  • At least one endpoint configured (All Files & Folders)
  • Array path set to entries
  • Field mappings working (file names and dates visible)
  • Smart filters created for file organization
  • Tested AI questions about your Dropbox

You're all set! Manage your cloud files with intelligent AI insights! ☁️


Last updated: February 2026 Dropbox API version: v2