IFClite TypeScript API
    Preparing search index...

    Implements

    Index

    Required when manifest.auth === 'interactive'.

    manifest: PluginManifest
    • Downloads a file's bytes via files/download on content.dropboxapi.com — a direct, authenticated, non-redirecting POST (see the citation on downloadContent() in http-client.ts), never a pre-signed URL the way Microsoft Graph requires.

      A revisionId is honored directly: Dropbox's path argument accepts the form "rev:<rev-id>" to address a specific historical revision (the separate, older rev request parameter on this endpoint is deprecated in favor of embedding it in path — Dropbox Community guidance and dropbox/revision-browser's reference implementation, checked 2026-08-15). A rev string is globally unique to one file's one revision, so this needs no separate metadata lookup the way source-msgraph's download() does to validate ref.revisionId against the item's current one — an invalid or mismatched rev is rejected by Dropbox itself (surfaced here as a DropboxHttpError) rather than silently serving the wrong bytes.

      Parameters

      Returns Promise<ArrayBuffer>

    • List containers within a project. parentId omitted means top level.

      The shape of the result is governed by capabilities.containerListing: direct-children returns only immediate children, flat-subtree returns the whole descendant set flattened with parentId links intact.

      Parameters

      Returns Promise<Page<SourceContainer>>

    • files/list_revisions does paginate, just not via an opaque cursor token the way files/list_folder/search_v2 do: Dropbox's ListRevisionsResult.has_more and ListRevisionsArg.before_rev (its files.stone API spec) form a real continuation mechanism — "Call list_revisions again with before_rev equal to the revision of the last returned entry to retrieve the rest." Revisions come back newest-first (see provider.test.ts), so the last entry of a page is its oldest, and before_rev set to that rev asks for the next-older page. This provider surfaces that as Page.cursor like every other paged method here: the opaque value it hands back is simply the last entry's rev, and options?.cursor is forwarded straight through as before_rev (before_rev is only honored in mode: 'path', which this call already uses). limit is capped at 100, not files/list_folder's 2000 — see clampRevisionsPageSize.

      Parameters

      Returns Promise<Page<SourceRevision>>

    • Watches for changes via files/list_folder/continue's cursor, Dropbox's change-feed equivalent of Graph's /delta (per the manifest's changeDetection doc comment) rather than polling the given refs.

      With no cursor yet, this establishes one via files/list_folder/get_latest_cursor (recursive: true at the account root) — a dedicated endpoint that returns only a cursor, with no entries fetched, so establishing a baseline doesn't cost sweeping the whole account. That first call reports no events (nothing has "changed" relative to a baseline just established); only subsequent calls, passing that cursor back in, report real deltas.

      Documented limitation: Dropbox's DeletedMetadata (what a deleted entry decodes to — see dropbox-types.ts) carries no id field, only name/path_lower. This provider addresses every tracked SourceFileRef by opaque id (see pathArgFor's doc comment), so a deletion reported by the cursor feed cannot be matched back to a tracked ref by id — deleted entries are therefore silently skipped rather than guessed-matched by name/path, which could misfire on a same-named file elsewhere. Updates and new content are unaffected: FileMetadata entries always carry id. A host relying on this provider for deletion detection specifically should not assume it fires.

      Parameters

      Returns Promise<RevisionWatchResult>