文档

dropbox-business

试用

通过托管 OAuth 管理 Dropbox Business 团队,默认只读,所有写入需用户确认。

它能做什么

通过托管 OAuth 网关访问 Dropbox Business API。可管理团队成员、群组、团队文件夹、设备、审计日志、关联应用、共享以及文件请求。通过 Dropbox-API-Select-User 头可访问指定成员的文件与共享文件夹。网关将请求代理到 api.dropboxapi.com,并自动注入 OAuth 令牌。绝大多数端点使用 POST(包括读取操作),请求体为 JSON,无参数时传 null。所有写入、删除以及成员文件访问操作,都必须由用户用具体资源标识符显式确认后方可执行。需要 Maton API 密钥与网络访问。

什么时候用它

  • 列出、暂停或移除 Dropbox Business 团队成员
  • 创建、更新或归档团队文件夹与群组
  • 查看设备、关联应用与团队审计日志
  • 出于明确业务需要访问指定成员的文件

技能文档

Dropbox Business

Access the Dropbox Business API with managed OAuth authentication. Manage team members, groups, team folders, devices, linked apps, audit logs, and access individual members' files. This is an admin-level integration — all write, delete, and member-file-access operations require explicit user approval.

Quick Start

# Get team info
python3 <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/dropbox-business/2/team/get_info', data=b'null', method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Base URL

https://api.maton.ai/dropbox-business/2/{resource-path}

The gateway proxies requests to api.dropboxapi.com and automatically injects your OAuth token. Only the endpoints documented in this skill are supported — always use specific endpoint paths from the API Reference section below rather than constructing arbitrary paths.

IMPORTANT: Dropbox Business API uses POST for almost all endpoints, including read operations. Request bodies should be JSON (use null for endpoints with no parameters).

Authentication

All requests require the Maton API key in the Authorization header:

Authorization: Bearer $MATON_API_KEY

Environment Variable: Set your API key as MATON_API_KEY:

export MATON_API_KEY="YOUR_API_KEY"

Getting Your API Key

  1. Sign in or create an account at maton.ai
  2. Go to maton.ai/settings
  3. Copy your API key

Connection Management (Maton Platform)

The following endpoints are Maton platform operations for managing the OAuth connection to Dropbox Business — they are not part of the Dropbox Business API itself. Only the endpoints listed in the API Reference section below are proxied to Dropbox.

List Connections

python3 <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/connections?app=dropbox-business&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Create Connection

python3 <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'dropbox-business'}).encode()
req = urllib.request.Request('https://api.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

{
  "connection_id": "{connection_id}",
  "status": "PENDING",
  "url": "https://connect.maton.ai/?session_token=...",
  "app": "dropbox-business"
}

Open the returned url in a browser to complete OAuth authorization.

Delete Connection

python3 <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
urllib.request.urlopen(req)
print("Deleted")
EOF

Specifying Connection

If you have multiple Dropbox Business connections, specify which one to use with the Maton-Connection header:

req.add_header('Maton-Connection', '{connection_id}')

If you have multiple connections, always include this header to ensure requests go to the intended account.

Security & Permissions

  • Access is scoped to the connected Dropbox Business account via OAuth. The connection grants team-level admin access — only install if you trust this integration and intend to grant Dropbox Business admin access. Use the least-privileged Dropbox admin account available and review OAuth permissions before authorizing.
  • Default to read-only operations. Always start by listing or retrieving resources to confirm identifiers before proposing any changes.
  • All write operations require explicit user approval with specific identifiers. Before executing any create, update, or delete call:
    1. Retrieve and display the target resource (member email, group name, folder name/ID) so the user can verify.
    2. Clearly describe the intended effect (e.g., "This will permanently delete team folder 'Project X' (ID: 13646676387)").
    3. Wait for explicit user confirmation before proceeding.
  • High-impact operations require extra caution. Actions such as removing members (wipe_data), permanently deleting team folders, revoking device sessions, or modifying admin permissions must include a summary of irreversible consequences and require confirmation.
  • Prefer reversible actions. Use archive over permanent delete, suspend over remove, and always confirm wipe_data and keep_account flags with the user before member removal.

API Reference

Team Information

Get Team Info

Retrieves information about the team including license usage and policies.

POST /dropbox-business/2/team/get_info
Content-Type: application/json

null

Response:

{
  "name": "My Company",
  "team_id": "dbtid:AAC...",
  "num_licensed_users": 10,
  "num_provisioned_users": 5,
  "num_used_licenses": 5,
  "policies": {
    "sharing": {...},
    "emm_state": {".tag": "disabled"},
    "office_addin": {".tag": "enabled"}
  }
}

Get Team Features

Query team feature availability.

POST /dropbox-business/2/team/features/get_values
Content-Type: application/json

{
  "features": [
    {".tag": "upload_api_rate_limit"},
    {".tag": "has_team_shared_dropbox"},
    {".tag": "has_team_file_events"},
    {".tag": "has_team_selective_sync"}
  ]
}

Response:

{
  "values": [
    {".tag": "upload_api_rate_limit", "upload_api_rate_limit": {".tag": "limit", "limit": 1000000000}},
    {".tag": "has_team_shared_dropbox", "has_team_shared_dropbox": {".tag": "has_team_shared_dropbox", "has_team_shared_dropbox": false}},
    {".tag": "has_team_file_events", "has_team_file_events": {".tag": "enabled", "enabled": true}},
    {".tag": "has_team_selective_sync", "has_team_selective_sync": {".tag": "has_team_selective_sync", "has_team_selective_sync": true}}
  ]
}

Get Authenticated Admin

Get info about the currently authenticated admin.

POST /dropbox-business/2/team/token/get_authenticated_admin
Content-Type: application/json

null

Response:

{
  "admin_profile": {
    "team_member_id": "dbmid:AAA...",
    "account_id": "dbid:AAC...",
    "email": "admin@company.com",
    "email_verified": true,
    "status": {".tag": "active"},
    "name": {"given_name": "Admin", "surname": "User", "display_name": "Admin User"},
    "membership_type": {".tag": "full"},
    "joined_on": "2026-02-15T08:27:35Z"
  }
}

Team Members

List Members

POST /dropbox-business/2/team/members/list
Content-Type: application/json

{
  "limit": 100
}

List Members (V2)

Returns members with roles information (recommended).

POST /dropbox-business/2/team/members/list_v2
Content-Type: application/json

{
  "limit": 100,
  "include_removed": false
}

Response:

{
  "members": [
    {
      "profile": {
        "team_member_id": "dbmid:AAA...",
        "account_id": "dbid:AAC...",
        "email": "user@company.com",
        "email_verified": true,
        "secondary_emails": [],
        "status": {".tag": "active"},
        "name": {
          "given_name": "John",
          "surname": "Doe",
          "familiar_name": "John",
          "display_name": "John Doe",
          "abbreviated_name": "JD"
        },
        "membership_type": {".tag": "full"},
        "joined_on": "2026-01-15T10:00:00Z",
        "groups": ["g:1d31f47b..."],
        "member_folder_id": "13646219987",
        "root_folder_id": "13650024947"
      },
      "roles": [
        {
          "role_id": "pid_dbtmr:...",
          "name": "Team",
          "description": "Manage everything and access all permissions"
        }
      ]
    }
  ],
  "cursor": "AAQ...",
  "has_more": false
}

Continue Listing Members

POST /dropbox-business/2/team/members/list/continue
Content-Type: application/json

{
  "cursor": "AAQ..."
}

Get Member Info

POST /dropbox-business/2/team/members/get_info
Content-Type: application/json

{
  "members": [{".tag": "email", "email": "user@company.com"}]
}

Get Member Info (V2)

Returns member with roles information (recommended).

POST /dropbox-business/2/team/members/get_info_v2
Content-Type: application/json

{
  "members": [{".tag": "email", "email": "user@company.com"}]
}

Response:

{
  "members_info": [
    {
      ".tag": "member_info",
      "profile": {
        "team_member_id": "dbmid:AAA...",
        "email": "user@company.com",
        "secondary_emails": [],
        "status": {".tag": "active"},
        "name": {...},
        "groups": ["g:..."]
      },
      "roles": [
        {"role_id": "...", "name": "Team", "description": "..."}
      ]
    }
  ]
}

Member Selectors:

  • {".tag": "email", "email": "user@company.com"}
  • {".tag": "team_member_id", "team_member_id": "dbmid:AAA..."}
  • {".tag": "external_id", "external_id": "..."}

Add Member

POST /dropbox-business/2/team/members/add
Content-Type: application/json

{
  "new_members": [
    {
      "member_email": "newuser@company.com",
      "member_given_name": "Jane",
      "member_surname": "Smith",
      "send_welcome_email": true,
      "role": {".tag": "member_only"}
    }
  ]
}

Suspend Member

POST /dropbox-business/2/team/members/suspend
Content-Type: application/json

{
  "user": {".tag": "email", "email": "user@company.com"},
  "wipe_data": false
}

Unsuspend Member

POST /dropbox-business/2/team/members/unsuspend
Content-Type: application/json

{
  "user": {".tag": "email", "email": "user@company.com"}
}

Remove Member

POST /dropbox-business/2/team/members/remove
Content-Type: application/json

{
  "user": {".tag": "email", "email": "user@company.com"},
  "wipe_data": true,
  "transfer_dest_id": {".tag": "email", "email": "admin@company.com"},
  "transfer_admin_id": {".tag": "email", "email": "admin@company.com"},
  "keep_account": false
}

Check Remove Job Status

POST /dropbox-business/2/team/members/remove/job_status/get
Content-Type: application/json

{
  "async_job_id": "dbjid:..."
}

Send Welcome Email

Send or resend welcome email to pending members.

POST /dropbox-business/2/team/members/send_welcome_email
Content-Type: application/json

{".tag": "email", "email": "pending@company.com"}

Set Member Profile (V2)

Update member profile information.

POST /dropbox-business/2/team/members/set_profile_v2
Content-Type: application/json

{
  "user": {".tag": "team_member_id", "team_member_id": "dbmid:AAA..."},
  "new_given_name": "John",
  "new_surname": "Smith",
  "new_external_id": "emp-123"
}

Delete Profile Photo (V2)

POST /dropbox-business/2/team/members/delete_profile_photo_v2
Content-Type: application/json

{
  "user": {".tag": "team_member_id", "team_member_id": "dbmid:AAA..."}
}

Set Profile Photo (V2)

POST /dropbox-business/2/team/members/set_profile_photo_v2
Content-Type: application/json

{
  "user": {".tag": "team_member_id", "team_member_id": "dbmid:AAA..."},
  "photo": {".tag": "base64_data", "base64_data": ""}
}

Set Admin Permissions (V2)

Change a member's admin role.

POST /dropbox-business/2/team/members/set_admin_permissions_v2
Content-Type: application/json

{
  "user": {".tag": "email", "email": "user@company.com"},
  "new_roles": ["pid_dbtmr:..."]
}

Secondary Emails

Add Secondary Emails

POST /dropbox-business/2/team/members/secondary_emails/add
Content-Type: application/json

{
  "new_secondary_emails": [
    {
      "user": {".tag": "email", "email": "user@company.com"},
      "secondary_emails": ["alias@company.com"]
    }
  ]
}

Delete Secondary Emails

POST /dropbox-business/2/team/members/secondary_emails/delete
Content-Type: application/json

{
  "emails_to_delete": [
    {
      "user": {".tag": "email", "email": "user@company.com"},
      "secondary_emails": ["alias@company.com"]
    }
  ]
}

Resend Verification Emails

POST /dropbox-business/2/team/members/secondary_emails/resend_verification_emails
Content-Type: application/json

{
  "emails_to_resend": [
    {
      "user": {".tag": "email", "email": "user@company.com"},
      "secondary_emails": ["alias@company.com"]
    }
  ]
}

Groups

List Groups

POST /dropbox-business/2/team/groups/list
Content-Type: application/json

{
  "limit": 100
}

Response:

{
  "groups": [
    {
      "group_name": "Engineering",
      "group_id": "g:1d31f47b...",
      "member_count": 5,
      "group_management_type": {".tag": "company_managed"}
    }
  ],
  "cursor": "AAZ...",
  "has_more": false
}

Get Group Info

POST /dropbox-business/2/team/groups/get_info
Content-Type: application/json

{
  ".tag": "group_ids",
  "group_ids": ["g:1d31f47b..."]
}

Create Group

POST /dropbox-business/2/team/groups/create
Content-Type: application/json

{
  "group_name": "Marketing Team",
  "group_management_type": {".tag": "company_managed"}
}

Add Members to Group

POST /dropbox-business/2/team/groups/members/add
Content-Type: application/json

{
  "group": {".tag": "group_id", "group_id": "g:1d31f47b..."},
  "members": [
    {
      "user": {".tag": "email", "email": "user@company.com"},
      "access_type": {".tag": "member"}
    }
  ],
  "return_members": true
}

Remove Members from Group

POST /dropbox-business/2/team/groups/members/remove
Content-Type: application/json

{
  "group": {".tag": "group_id", "group_id": "g:1d31f47b..."},
  "users": [{".tag": "email", "email": "user@company.com"}],
  "return_members": true
}

List Group Members

POST /dropbox-business/2/team/groups/members/list
Content-Type: application/json

{
  "group": {".tag": "group_id", "group_id": "g:1d31f47b..."},
  "limit": 100
}

Response:

{
  "members": [
    {
      "profile": {
        "team_member_id": "dbmid:AAA...",
        "email": "user@company.com",
        "status": {".tag": "active"},
        "name": {...}
      },
      "access_type": {".tag": "member"}
    }
  ],
  "cursor": "...",
  "has_more": false
}

Update Group

POST /dropbox-business/2/team/groups/update
Content-Type: application/json

{
  "group": {".tag": "group_id", "group_id": "g:1d31f47b..."},
  "new_group_name": "Updated Name",
  "new_group_external_id": "ext-123"
}

Note: System-managed groups (like "Everyone at...") cannot be updated.

Delete Group

POST /dropbox-business/2/team/groups/delete
Content-Type: application/json

{
  ".tag": "group_id",
  "group_id": "g:1d31f47b..."
}

Check Group Job Status

For async group operations.

POST /dropbox-business/2/team/groups/job_status/get
Content-Type: application/json

{
  "async_job_id": "dbjid:..."
}

Team Folders

List Team Folders

POST /dropbox-business/2/team/team_folder/list
Content-Type: application/json

{
  "limit": 100
}

Response:

{
  "team_folders": [
    {
      "team_folder_id": "13646676387",
      "name": "Company Documents",
      "status": {".tag": "active"},
      "is_team_shared_dropbox": false,
      "sync_setting": {".tag": "default"}
    }
  ],
  "cursor": "AAb...",
  "has_more": false
}

Get Team Folder Info

POST /dropbox-business/2/team/team_folder/get_info
Content-Type: application/json

{
  "team_folder_ids": ["13646676387"]
}

Create Team Folder

POST /dropbox-business/2/team/team_folder/create
Content-Type: application/json

{
  "name": "New Team Folder",
  "sync_setting": {".tag": "default"}
}

Rename Team Folder

POST /dropbox-business/2/team/team_folder/rename
Content-Type: application/json

{
  "team_folder_id": "13646676387",
  "name": "Renamed Folder"
}

Archive Team Folder

POST /dropbox-business/2/team/team_folder/archive
Content-Type: application/json

{
  "team_folder_id": "13646676387",
  "force_async_off": false
}

Permanently Delete Team Folder

POST /dropbox-business/2/team/team_folder/permanently_delete
Content-Type: application/json

{
  "team_folder_id": "13646676387"
}

Activate Team Folder

Activate an archived team folder.

POST /dropbox-business/2/team/team_folder/activate
Content-Type: application/json

{
  "team_folder_id": "13646676387"
}

Update Sync Settings

POST /dropbox-business/2/team/team_folder/update_sync_settings
Content-Type: application/json

{
  "team_folder_id": "13646676387",
  "sync_setting": {".tag": "default"}
}

Response:

{
  "team_folder_id": "13646676387",
  "name": "Team Folder",
  "status": {".tag": "active"},
  "is_team_shared_dropbox": false,
  "sync_setting": {".tag": "default"},
  "content_sync_settings": []
}

Namespaces

List Namespaces

POST /dropbox-business/2/team/namespaces/list
Content-Type: application/json

{
  "limit": 100
}

Response:

{
  "namespaces": [
    {
      "name": "Team Folder",
      "namespace_id": "13646676387",
      "namespace_type": {".tag": "team_folder"}
    },
    {
      "name": "Root",
      "namespace_id": "13646219987",
      "namespace_type": {".tag": "team_member_folder"},
      "team_member_id": "dbmid:AAA..."
    }
  ],
  "cursor": "AAY...",
  "has_more": false
}

Devices

List All Members' Devices

POST /dropbox-business/2/team/devices/list_members_devices
Content-Type: application/json

{}

Response:

{
  "devices": [
    {
      "team_member_id": "dbmid:AAA...",
      "web_sessions": [
        {
          "session_id": "dbwsid:...",
          "ip_address": "192.168.1.1",
          "country": "United States",
          "created": "2026-02-15T08:26:33Z",
          "user_agent": "Mozilla/5.0...",
          "os": "Mac OS X",
          "browser": "Chrome"
        }
      ],
      "desktop_clients": [],
      "mobile_clients": []
    }
  ],
  "has_more": false
}

List Member Devices

POST /dropbox-business/2/team/devices/list_member_devices
Content-Type: application/json

{
  "team_member_id": "dbmid:AAA..."
}

Revoke Device Session

POST /dropbox-business/2/team/devices/revoke_device_session
Content-Type: application/json

{
  ".tag": "web_session",
  "session_id": "dbwsid:...",
  "team_member_id": "dbmid:AAA..."
}

Revoke Device Sessions (Batch)

POST /dropbox-business/2/team/devices/revoke_device_session_batch
Content-Type: application/json

{
  "revoke_devices": [
    {".tag": "web_session", "session_id": "dbwsid:...", "team_member_id": "dbmid:AAA..."}
  ]
}

Linked Apps

List Members' Linked Apps

POST /dropbox-business/2/team/linked_apps/list_members_linked_apps
Content-Type: application/json

{}

Response:

{
  "apps": [
    {
      "team_member_id": "dbmid:AAA...",
      "linked_api_apps": [
        {
          "app_id": "...",
          "app_name": "Third Party App",
          "linked": "2026-01-15T10:00:00Z"
        }
      ]
    }
  ],
  "has_more": false
}

List All Team Linked Apps

POST /dropbox-business/2/team/linked_apps/list_team_linked_apps
Content-Type: application/json

{}

Revoke Linked App

POST /dropbox-business/2/team/linked_apps/revoke_linked_app
Content-Type: application/json

{
  "app_id": "...",
  "team_member_id": "dbmid:AAA..."
}

Member Space Limits

Get Custom Quotas

POST /dropbox-business/2/team/member_space_limits/get_custom_quota
Content-Type: application/json

{
  "users": [{".tag": "email", "email": "user@company.com"}]
}

Set Custom Quotas

POST /dropbox-business/2/team/member_space_limits/set_custom_quota
Content-Type: application/json

{
  "users_and_quotas": [
    {
      "user": {".tag": "email", "email": "user@company.com"},
      "quota_gb": 100
    }
  ]
}

List Excluded Users

List users excluded from automatic backup.

POST /dropbox-business/2/team/member_space_limits/excluded_users/list
Content-Type: application/json

{}

Sharing Allowlist

List Sharing Allowlist

POST /dropbox-business/2/team/sharing_allowlist/list
Content-Type: application/json

{}

Response:

{
  "domains": [],
  "emails": [],
  "cursor": "...",
  "has_more": false
}

Add to Sharing Allowlist

POST /dropbox-business/2/team/sharing_allowlist/add
Content-Type: application/json

{
  "domains": ["partner.com"],
  "emails": ["external@client.com"]
}

Continue Listing Allowlist

POST /dropbox-business/2/team/sharing_allowlist/list/continue
Content-Type: application/json

{
  "cursor": "..."
}

Audit Log (Team Log)

Get Events

POST /dropbox-business/2/team_log/get_events
Content-Type: application/json

{
  "limit": 100,
  "category": {".tag": "members"}
}

Response:

{
  "events": [
    {
      "timestamp": "2026-02-15T08:27:36Z",
      "event_category": {".tag": "members"},
      "actor": {
        ".tag": "admin",
        "admin": {
          "account_id": "dbid:AAC...",
          "display_name": "Admin User",
          "email": "admin@company.com"
        }
      },
      "event_type": {
        ".tag": "member_add_name",
        "description": "Added team member name"
      },
      "details": {...}
    }
  ],
  "cursor": "...",
  "has_more": false
}

Event Categories:

  • apps - Third-party app events
  • comments - Comment events
  • devices - Device events
  • domains - Domain events
  • file_operations - File and folder events
  • file_requests - File request events
  • groups - Group events
  • logins - Login events
  • members - Member events
  • paper - Paper events
  • passwords - Password events
  • reports - Report events
  • sharing - Sharing events
  • showcase - Showcase events
  • sso - SSO events
  • team_folders - Team folder events
  • team_policies - Policy events
  • team_profile - Team profile events
  • tfa - Two-factor auth events

Continue Getting Events

POST /dropbox-business/2/team_log/get_events/continue
Content-Type: application/json

{
  "cursor": "..."
}

Member File Access

Privacy-sensitive admin capability. Accessing another member's files, shared folders, or file requests is a privileged operation that exposes personal and organizational data. Only use when the user explicitly requests it with a clear business justification (e.g., offboarding, compliance investigation, data recovery). Confirm the target member and scope with the user before executing. Do not browse member files proactively.

To access files on behalf of a team member, use the Dropbox-API-Select-User header with the member's team_member_id. This allows admin applications to access member files, shared folders, and file requests.

List Member's Files

python3 <<'EOF'
import urllib.request, os, json
data = json.dumps({"path": ""}).encode()
req = urllib.request.Request('https://api.maton.ai/dropbox-business/2/files/list_folder', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
req.add_header('Dropbox-API-Select-User', 'dbmid:AAA...')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

List Member's Shared Folders

python3 <<'EOF'
import urllib.request, os, json
data = json.dumps({}).encode()
req = urllib.request.Request('https://api.maton.ai/dropbox-business/2/sharing/list_folders', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
req.add_header('Dropbox-API-Select-User', 'dbmid:AAA...')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

List Member's File Requests

python3 <<'EOF'
import urllib.request, os, json
data = json.dumps({}).encode()
req = urllib.request.Request('https://api.maton.ai/dropbox-business/2/file_requests/list_v2', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
req.add_header('Dropbox-API-Select-User', 'dbmid:AAA...')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Note: The Dropbox-API-Select-User header requires the team_data.member scope. Use this to operate on user-level endpoints (files, sharing, etc.) on behalf of team members.

Pagination

Dropbox Business uses cursor-based pagination. List endpoints return a cursor and has_more field.

Initial Request:

POST /dropbox-business/2/team/members/list
Content-Type: application/json

{
  "limit": 100
}

Response:

{
  "members": [...],
  "cursor": "AAQ...",
  "has_more": true
}

Continue with cursor:

POST /dropbox-business/2/team/members/list/continue
Content-Type: application/json

{
  "cursor": "AAQ..."
}

Code Examples

JavaScript

async function listTeamMembers() {
  const response = await fetch(
    'https://api.maton.ai/dropbox-business/2/team/members/list',
    {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${process.env.MATON_API_KEY}`,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({ limit: 100 })
    }
  );
  return await response.json();
}

Python

import os
import json
import urllib.request

def list_team_members():
    url = 'https://api.maton.ai/dropbox-business/2/team/members/list'
    data = json.dumps({'limit': 100}).encode()
    req = urllib.request.Request(url, data=data, method='POST')
    req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
    req.add_header('Content-Type', 'application/json')
    return json.load(urllib.request.urlopen(req))

def get_team_info():
    url = 'https://api.maton.ai/dropbox-business/2/team/get_info'
    req = urllib.request.Request(url, data=b'null', method='POST')
    req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
    req.add_header('Content-Type', 'application/json')
    return json.load(urllib.request.urlopen(req))

Notes

  • POST for Everything: Dropbox Business API uses POST for almost all endpoints, including read operations
  • JSON Body Required: Even for endpoints with no parameters, send null as the request body
  • Tag Format: Many fields use .tag to indicate the type (e.g., {".tag": "email", "email": "..."})
  • Member Selectors: Use .tag with email, team_member_id, or external_id to identify members
  • Async Operations: Some operations (like group member changes, member removal) may be async; check corresponding job_status endpoints
  • Select-User Header: Use Dropbox-API-Select-User with team_member_id to access user-level endpoints (files, sharing) on behalf of members
  • System-Managed Groups: Groups like "Everyone at..." are system-managed and cannot be modified or deleted
  • V2 Endpoints: Use V2 versions of endpoints (e.g., members/list_v2, members/get_info_v2) for enhanced responses with roles information
  • Deprecated Endpoints: The reports endpoints (team/reports/get_activity, get_devices, get_membership, get_storage) are deprecated
  • IMPORTANT: When piping curl output to jq or other commands, environment variables like $MATON_API_KEY may not expand correctly in some shell environments

Error Handling

StatusMeaning
400Bad request or invalid parameters
401Invalid API key or expired token
403Permission denied (requires team admin)
404Resource not found
409Conflict (e.g., member already exists)
429Rate limited
4xx/5xxPassthrough error from Dropbox API

Response Error Format

{
  "error_summary": "member_not_found/...",
  "error": {
    ".tag": "member_not_found"
  }
}

Resources

常见问题

使用什么认证方式?
OAuth 由 Maton 网关托管。你只需以 Bearer 方式提供 Maton API 密钥,网关在向 api.dropboxapi.com 代理请求时会自动注入 Dropbox 的 OAuth 令牌。若存在多个连接,可通过 Maton-Connection 头指定目标账号。
写入操作可以直接执行吗?
不可以。任何创建、更新、删除以及成员文件访问操作,都必须由用户用具体标识符确认后才能执行;默认应先通过读取或列表接口确认目标资源。
能否访问某个团队成员的文件?
可以,通过 Dropbox-API-Select-User 机制实现,但仅在用户明确提出并说明业务理由时使用——成员文件访问属于隐私敏感且高影响的操作。
支持哪些 API 端点?
仅代理 SKILL.md 中 API 参考列出的端点,不应自行拼凑任意路径;按文档使用对应的 POST 端点与 JSON 请求体。

相关技能

通过 Maton 网关访问 Dropbox 文件、文件夹与元数据,OAuth 由网关托管。

170 次安装5 星标

通过托管 OAuth 的代理调用 WhatsApp Business API,发送消息、管理模板与媒体。

758 次安装60 星标

通过托管 OAuth 网关调用 Box API,实现文件、文件夹与协作的读取与管理。

158 次安装3 星标

Google Business Profile API integration with managed OAuth. Read and manage business accounts and locations, business hours and attributes, reviews, photos, local posts, verification status, and performance metrics. Use this skill when users want to audit or update a business listing on Google.

Dropbox (dropbox.com). Use this skill for ANY Dropbox request — reading, creating, updating, and deleting data. Whenever a task involves Dropbox, use this sk...

9 次安装

通过托管 OAuth 网关调用 Square API 接口,内置连接管理能力。

229 次安装3 星标