Curiosity

Google Drive

Ingests files and folders from My Drive and Shared Drives (formerly Team Drives), using Google's change-token APIs for incremental sync.

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

What gets ingested

Element Mapped to
Drive files (Docs, Sheets, Slides, PDFs, etc.) _FileEntry + _Blob (native Google file types are exported to PDF/DOCX/XLSX as appropriate)
Folders _Folder, linked via _HasChild
Shared Drives A top-level _Folder per shared drive
File metadata (id, MIME, modified, owners) Properties on _FileEntry
Per-file sharing permissions Mapped onto _AccessGroup membership

Authentication

  • Type: OAuth 2.0 (per-user).
  • Requested scopes: https://www.googleapis.com/auth/drive.readonly, https://www.googleapis.com/auth/drive.metadata.readonly.
sequenceDiagram participant U as User participant WS as Workspace participant G as Google OAuth U->>WS: Click "Connect Google Drive" WS->>G: /authorize (scopes: drive.readonly, drive.metadata.readonly) G->>U: Consent screen (per scope) U->>G: Approve G->>WS: code WS->>G: Exchange for tokens G->>WS: access + refresh token

Access control mapping

Source Carried into the graph?
Per-user Drive access Yes — each connected user has their own access group.
File permissions[] (writer / reader / owner) Yes — mapped via AddPermissionToItem.
Shared Drive membership Yes — separate access groups per drive.
"Anyone with the link" Yes — maps to _AccessGroup.Public.

Sync cadence

  • Default cron: every 15 minutes.
  • Incremental sync: Drive change tokens (changes.startPageTokenchanges.list). Tracked separately for My Drive and each Shared Drive.

Notable

  • Google native file types (Docs / Sheets / Slides) are exported on-the-fly to PDF / XLSX / PPTX so they can be parsed in the workspace.
  • The connector calls Drive's about.get once per run to confirm storage quota is sufficient before downloading large files.