Dropbox Trigger (Manual Webhook) Overview - Manual webhook trigger: users create their own Dropbox App and set the App's Webhook URL directly to this subscription endpoint. - The trigger validates signatures and emits `file_changes` that includes the notified account IDs and resolved change entries from the entire Dropbox account. Webhook Validation - GET challenge echo: returns the `challenge` query parameter verbatim. - Signature: verify `X-Dropbox-Signature` via HMAC-SHA256 of the raw body using your Dropbox App Secret. Subscription - Parameters: - `app_secret` (required): used to validate webhook signatures. - `access_token` (required): user access token to fetch file change details. - Steps: 1) In Dropbox App Console → your app → Settings → Webhooks, set the Webhook URL to: `https:///api/plugin/triggers/` 2) In Dify subscription UI, paste the App Secret and Access Token. Dispatch Flow 1) Webhook arrives (POST). Validate signature. 2) Extract `list_folder.accounts` from payload (if present). 3) Fetch file changes recursively from entire Dropbox account (including deleted files). 4) Emit `file_changes` with `{ accounts, cursor_before, cursor_after, changes, raw, headers, received_at }`. Files - `provider/dropbox.py`: trigger dispatch (manual webhook) - `provider/dropbox.yaml`: provider identity, schemas, and event registration - `events/file_changes/file_changes.yaml`: event identity and output schema (name: `file_changes`) Notes - The trigger monitors the entire Dropbox account recursively, including deleted files. - Change cursor is stored to track incremental updates between webhook notifications.