← 返回 Skills 市场
byungkyu

Dropbox Business

作者 byungkyu · GitHub ↗ · v1.0.3
cross-platform ✓ 安全检测通过
693
总下载
2
收藏
1
当前安装
4
版本数
在 OpenClaw 中安装
/install dropbox-business
功能描述
Dropbox Business API integration with managed OAuth. Manage team members, groups, team folders, devices, and audit logs for Dropbox Business teams. Use this...
使用说明 (SKILL.md)

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 \x3C\x3C'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

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

Connection Management

Manage your Dropbox Business OAuth connections at https://ctrl.maton.ai.

List Connections

python3 \x3C\x3C'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 \x3C\x3C'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 \x3C\x3C'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": "[email protected]",
    "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": "[email protected]",
        "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": "[email protected]"}]
}

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": "[email protected]"}]
}

Response:

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

Member Selectors:

  • {".tag": "email", "email": "[email protected]"}
  • {".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": "[email protected]",
      "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": "[email protected]"},
  "wipe_data": false
}

Unsuspend Member

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

{
  "user": {".tag": "email", "email": "[email protected]"}
}

Remove Member

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

{
  "user": {".tag": "email", "email": "[email protected]"},
  "wipe_data": true,
  "transfer_dest_id": {".tag": "email", "email": "[email protected]"},
  "transfer_admin_id": {".tag": "email", "email": "[email protected]"},
  "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": "[email protected]"}

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": "\x3Cbase64-encoded-image>"}
}

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": "[email protected]"},
  "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": "[email protected]"},
      "secondary_emails": ["[email protected]"]
    }
  ]
}

Delete Secondary Emails

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

{
  "emails_to_delete": [
    {
      "user": {".tag": "email", "email": "[email protected]"},
      "secondary_emails": ["[email protected]"]
    }
  ]
}

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": "[email protected]"},
      "secondary_emails": ["[email protected]"]
    }
  ]
}

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": "[email protected]"},
      "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": "[email protected]"}],
  "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": "[email protected]",
        "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": "[email protected]"}]
}

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": "[email protected]"},
      "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": ["[email protected]"]
}

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": "[email protected]"
        }
      },
      "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

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 \x3C\x3C'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 \x3C\x3C'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 \x3C\x3C'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 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

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

安全使用建议
This skill is coherent: it simply instructs the agent to use Maton's API gateway to call Dropbox Business endpoints and requires a single MATON_API_KEY. Before installing, confirm you trust maton.ai (the gateway/control endpoints in the docs) because Maton will hold and use OAuth tokens and can access team data. Verify the MATON_API_KEY scope (least privilege) and consider creating a dedicated API key with limited lifetime or permissions. Note the registry metadata lists no homepage/source — cross-check the vendor (Maton) independently and ensure the OAuth flow URL returned during connection setup is legitimate before authorizing. If you cannot trust Maton, do not provide your API key.
功能分析
Type: OpenClaw Skill Name: dropbox-business Version: 1.0.3 The skill bundle provides an integration with the Dropbox Business API via a Maton gateway. All code examples are standard Python `urllib.request` or JavaScript `fetch` calls to `maton.ai` domains, requiring `MATON_API_KEY` from environment variables for authentication. While the Dropbox Business API exposes powerful administrative capabilities (e.g., managing members, deleting data, accessing member files via `Dropbox-API-Select-User`), the skill's documentation and code examples merely describe and demonstrate these legitimate API functions without any instructions or logic indicating malicious intent, data exfiltration beyond authentication, persistence mechanisms, or prompt injection attempts against the AI agent.
能力评估
Purpose & Capability
The skill describes a Dropbox Business admin integration and its SKILL.md exclusively shows HTTP requests to Maton-managed endpoints (gateway.maton.ai, ctrl.maton.ai, connect.maton.ai) that proxy to Dropbox. Requesting MATON_API_KEY is expected for a managed OAuth gateway. There are no unrelated binaries, config paths, or credentials requested.
Instruction Scope
All runtime instructions are limited to making POST requests to the Maton gateway/control endpoints and guiding the user to complete OAuth in a browser. The instructions do not ask the agent to read local files, scan system state, or exfiltrate unrelated data. They do require network access and forwarding requests through an external proxy (Maton), which is consistent with the stated purpose.
Install Mechanism
This is an instruction-only skill with no install spec and no code files, so nothing is downloaded or written to disk during installation. That minimizes supply-chain/install risk.
Credentials
Only a single environment variable (MATON_API_KEY) is required, which matches the gateway-based authentication approach. However, granting that key to Maton effectively gives the service broad access to Dropbox Business APIs (team members, folders, audit logs). Ensure the key's scope and the provider (maton.ai) are trusted before granting it.
Persistence & Privilege
The skill does not request always:true and is user-invocable; it does not attempt to modify other skills or system-wide configs. Autonomous invocation remains at the platform default and is not combined with other concerning flags.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install dropbox-business
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /dropbox-business 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.3
- Expanded API reference with advanced features, including team feature queries and authenticated admin info. - Added documentation for v2 endpoints (e.g., members/list_v2, members/get_info_v2) for richer member and role data. - Included more sample responses and parameter examples for clarity. - No changes to code or implementation; documentation improvements only.
v1.0.2
No user-facing changes in this release. - Version bump to 1.0.2 with no file changes detected.
v1.0.1
- Added metadata fields specifying required environment variable (MATON_API_KEY), homepage URL, and emoji for skill identification. - No changes to functionality or usage instructions.
v1.0.0
Initial release of Dropbox Business skill with managed OAuth and team administration capabilities. - Provides secure Dropbox Business API access with managed OAuth authentication via Maton. - Enables management of team members, groups, folders, devices, apps, and audit logs. - Supports team/team member operations: list, add, suspend, unsuspend, remove, and get info. - Includes sample code for API usage and connection management. - Requires network access and a valid Maton API key.
元数据
Slug dropbox-business
版本 1.0.3
许可证
累计安装 1
当前安装数 1
历史版本数 4
常见问题

Dropbox Business 是什么?

Dropbox Business API integration with managed OAuth. Manage team members, groups, team folders, devices, and audit logs for Dropbox Business teams. Use this... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 693 次。

如何安装 Dropbox Business?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install dropbox-business」即可一键安装,无需额外配置。

Dropbox Business 是免费的吗?

是的,Dropbox Business 完全免费(开源免费),可自由下载、安装和使用。

Dropbox Business 支持哪些平台?

Dropbox Business 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Dropbox Business?

由 byungkyu(@byungkyu)开发并维护,当前版本 v1.0.3。

💬 留言讨论