Curiosity

Dropbox (Business)

Ingests files and folders from a Dropbox Business team, including shared folders in their own namespaces. Each shared folder is tracked by a separate delta cursor so re-shares and unshares are handled cleanly.

variant=info text="Cloud storage" variant=success text="OAuth" variant=success text="Maps ACLs"

What gets ingested

Element Mapped to
Personal-namespace files & folders _FileEntry, _Folder
Shared-folder files & folders _FileEntry, _Folder per shared-folder namespace
File metadata (rev, size, modified, sharing info) Properties on _FileEntry

Authentication

  • Type: OAuth 2.0 (per-user, per-team-member).
  • Requested scopes: account_info.read, files.content.read, files.metadata.read, sharing.read.

Access control mapping

Source Carried into the graph?
Per-user Dropbox membership Yes — each team member has their own connector + access group.
Shared folder membership Yes — shared folders are namespaced separately and ACLs are mapped.
Public links Mapped when the connector encounters sharing_info.public.

Sync cadence

  • Default cron: every 15 minutes.
  • Incremental sync: delta cursors per namespace. Dropbox returns a cursor after every list_folder / list_folder/continue; the connector persists it and resumes from that point next run.
flowchart LR Conn[Connector] -->|list_folder| Personal[Personal NS] Conn -->|list_folder| Share1[Shared NS #1] Conn -->|list_folder| Share2[Shared NS #2] Personal -->|cursor| State[(Cursors per NS)] Share1 -->|cursor| State Share2 -->|cursor| State State --> NextRun[Next run resumes]

Notable

  • The same DropboxTask engine drives both the Business and Personal connectors — the variants differ in how they filter shared / unshared namespaces. The Business variant includes shared team folders; the Personal variant excludes them.