Dropbox Business:团队管理与托管 OAuth 集成 - Openclaw Skills
作者:互联网
2026-03-28
什么是 Dropbox Business?
Dropbox Business 技能为管理企业级 Dropbox 环境提供了全面的接口。通过利用 Openclaw Skills,开发人员可以以编程方式控制团队成员、小组和团队文件夹,而无需处理复杂的手动 OAuth 令牌管理。此技能充当 Dropbox Business API 的代理,自动注入身份验证标头并处理繁重的团队级管理任务。
无论您需要自动化入职流程、审核安全日志,还是管理整个组织的设备会话,此技能都提供了一种简化的方法。它利用托管网关确保您的集成保持安全可靠,同时提供对 Dropbox 强大管理端点的完全访问权限。
下载入口:https://github.com/openclaw/skills/tree/main/skills/byungkyu/dropbox-business
安装与下载
1. ClawHub CLI
从源直接安装技能的最快方式。
npx clawhub@latest install dropbox-business
2. 手动安装
将技能文件夹复制到以下位置之一
全局模式~/.openclaw/skills/
工作区
/skills/
优先级:工作区 > 本地 > 内置
3. 提示词安装
将此提示词复制到 OpenClaw 即可自动安装。
请帮我使用 Clawhub 安装 dropbox-business。如果尚未安装 Clawhub,请先安装(npm i -g clawhub)。
Dropbox Business 应用场景
- 通过程序化成员管理,自动化团队成员的入职和离职流程。
- 在内部 HR 系统与 Dropbox Business 之间同步组织小组和权限。
- 通过获取和分析团队审核日志来监控安全性和合规性。
- 管理大型部门的共享团队文件夹和自定义空间配额。
- 为受损账户撤销设备会话或第三方应用访问权限。
- 该技能与处理 Dropbox Business 托管 OAuth 的 Maton API 网关对接。
- 用户配置 MATON_API_KEY 环境变量以验证其请求。
- 管理请求以 JSON 格式通过 POST 发送到网关,网关将其代理到官方 Dropbox API。
- 对于需要用户级访问的操作,Dropbox-API-Select-User 标头允许管理员代表特定团队成员执行操作。
- 该技能支持针对批量成员移除或小组更新等长时间运行任务的异步作业跟踪,确保稳健的工作流管理。
Dropbox Business 配置指南
要部署此技能,请确保您拥有 Maton API 密钥并已建立与 Dropbox Business 团队的连接。
- 导出您的 API 密钥:
export MATON_API_KEY="YOUR_MATON_API_KEY"
- 为您的团队创建活动连接:
# 通过控制平面创建连接
curl -X POST https://ctrl.maton.ai/connections r
-H "Authorization: Bearer $MATON_API_KEY" r
-H "Content-Type: application/json" r
-d '{"app": "dropbox-business"}'
- 按照返回的 URL 在浏览器中完成 OAuth 流程。
- 验证您的团队信息以确保连接性:
curl -X POST https://gateway.maton.ai/dropbox-business/2/team/get_info r
-H "Authorization: Bearer $MATON_API_KEY" r
-H "Content-Type: application/json" r
-d 'null'
Dropbox Business 数据架构与分类体系
Dropbox Business 技能对所有管理数据使用结构化 JSON。核心实体包括:
| 实体 | 数据类型 | 描述 |
|---|---|---|
| 成员 | 对象 | 包含个人资料详情、状态和分配的管理员角色。 |
| 团队文件夹 | 对象 | 包括文件夹 ID、同步设置以及激活/归档状态。 |
| 审核日志 | 对象 | 记录带有时间戳、操作员详情和事件类别的事件。 |
| 小组 | 对象 | 定义成员集合以简化权限管理。 |
请注意,Dropbox 在 JSON 对象中使用 .tag 字段来指定联合类型,例如通过电子邮件与 team_member_id 识别成员。
name: dropbox-business
description: |
Dropbox Business API integration with managed OAuth. Manage team members, groups, team folders, devices, and audit logs for Dropbox Business teams.
Use this skill when users want to administer Dropbox Business teams, manage members, create groups, handle team folders, or access audit logs.
For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway).
Requires network access and valid Maton API key.
metadata:
author: maton
version: "1.0"
clawdbot:
emoji: ??
homepage: "https://maton.ai"
requires:
env:
- MATON_API_KEY
Dropbox Business
Access the Dropbox Business API with managed OAuth authentication. Manage team administration including members, groups, team folders, devices, linked apps, and audit logs.
Quick Start
# Get team info
python3 <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.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://gateway.maton.ai/dropbox-business/2/{endpoint-path}
Replace {endpoint-path} with the actual Dropbox Business API endpoint path. The gateway proxies requests to api.dropboxapi.com and automatically injects your OAuth token.
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
- Sign in or create an account at maton.ai
- Go to maton.ai/settings
- Copy your API key
Connection Management
Manage your Dropbox Business OAuth connections at https://ctrl.maton.ai.
List Connections
python3 <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.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://ctrl.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": "09062f57-98a9-49f2-9e63-b2a7e03a9d7a",
"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://ctrl.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 omitted, the gateway uses the default (oldest) active connection.
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 eventscomments- Comment eventsdevices- Device eventsdomains- Domain eventsfile_operations- File and folder eventsfile_requests- File request eventsgroups- Group eventslogins- Login eventsmembers- Member eventspaper- Paper eventspasswords- Password eventsreports- Report eventssharing- Sharing eventsshowcase- Showcase eventssso- SSO eventsteam_folders- Team folder eventsteam_policies- Policy eventsteam_profile- Team profile eventstfa- Two-factor auth events
Continue Getting Events
POST /dropbox-business/2/team_log/get_events/continue
Content-Type: application/json
{
"cursor": "..."
}
Member File Access
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://gateway.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://gateway.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://gateway.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://gateway.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://gateway.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://gateway.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
nullas the request body - Tag Format: Many fields use
.tagto indicate the type (e.g.,{".tag": "email", "email": "..."}) - Member Selectors: Use
.tagwithemail,team_member_id, orexternal_idto 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-Userwith 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
jqor other commands, environment variables like$MATON_API_KEYmay not expand correctly in some shell environments
Error Handling
| Status | Meaning |
|---|---|
| 400 | Bad request or invalid parameters |
| 401 | Invalid API key or expired token |
| 403 | Permission denied (requires team admin) |
| 404 | Resource not found |
| 409 | Conflict (e.g., member already exists) |
| 429 | Rate limited |
| 4xx/5xx | Passthrough error from Dropbox API |
Response Error Format
{
"error_summary": "member_not_found/...",
"error": {
".tag": "member_not_found"
}
}
Resources
- Dropbox Business API Documentation
- Team Administration Guide
- Team Files Guide
- Authentication Types
- Maton Community
- Maton Support
相关推荐
专题
+ 收藏
+ 收藏
+ 收藏
+ 收藏
+ 收藏
最新数据
相关文章
工程经理操作系统:技术领导力与团队扩展 - Openclaw Skills
Markdown 报告生成器:专业文档制作 - Openclaw Skills
Business Claw:ERPNext MCP 自动化与工作流 - Openclaw 技能
Context Engineer:Openclaw 技能的 Token 优化专家
韩国发票:自动化估价单与税务发票 - Openclaw Skills
小红书文案教练:爆款笔记生成器 - Openclaw Skills
慕尼黑 MVG & S-Bahn 实时追踪命令行工具 - Openclaw Skills
Reddit 研究技能:自动化社群洞察 - Openclaw Skills
豆包聊天:带有联网搜索功能的免费 AI 对话 - Openclaw Skills
NightPatch:自动化工作流优化 - Openclaw 技能
AI精选
