Skip to main content

Box - Integration nuances

This article highlights Box specific behavior to plan around when building your implementation with Merge

Updated yesterday

Data Structure

Files and Permissions

Box's data structure consists of folders and files but does not include drives. Access to files and folders is managed through permissions (also known as Access Control Lists or ACLs), granted to users and groups.

Each Box instance includes a root level named "All Files.” Because of Box API limitations, Merge cannot map this root level to a specific folder, so files located here are synced with a null parent_folder id.

Checksums

Box provides a checksum called "sha1" to verify if file contents have changed. Merge directly maps this checksum from the Box API rather than generating it internally.

Users

Users represent individuals with access to the Box instance. Users can gain access through group memberships or by direct collaboration on files or folders, even if they are external to the Box instance.

Ingestion

Sync Cadence

Merge regularly polls the Box API at intervals defined in the provided table for updates to all common models. Sync frequency is constrained by Box API rate limits. Merge employs timestamp filtering to ensure polling efficiency.

If the highest available sync frequency listed does not meet your requirements, please contact us to discuss custom sync options.

Webhooks

Beyond periodic polling, Merge leverages Box webhooks to capture real-time updates on files, folders, and permissions when available. These webhooks have many limitations based on what Box supports:

  • When folder-level permissions change (e.g., ownership, shared access), Merge receives a webhook notification for the affected folder. However, Box does not send webhook notifications for permission changes affecting nested items within the folder. These cascading changes are captured in subsequent polling events

  • Box does not allow webhook subscriptions for actions performed at the root (“All Files”) level. Consequently, creation events at this level do not trigger webhooks

  • Merge subscribes to webhooks for newly created folders; however, webhook subscription setup may experience delays of up to 3 hours (due to Box delays) after folder creation

  • Webhook notifications for changes involving Users or Groups are not supported by Box

Given these constraints, webhook notifications alone cannot fully guarantee data accuracy and completeness for Box. Regular polling should always serve as the baseline method for maintaining data freshness in your application.

Mime Types

Box does not support specifying MIME types when downloading file contents. Merge returns files in their original format via our /download and /direct-download endpoints.

Rate Limits

Box enforces two types of rate limits:

  • 1,000 API requests per minute

  • 100,000 API requests per month (Enterprise Plan)

Authentication

Supported Authentication Types

Merge supports three authentication types with Box and will initiate an OAuth flow prompting your users to enter their username and password for any option. Box mandates write permissions for files and folders to enable downloading through their API which all three authentication types support.

The admin-level connections must have “Read and write for admins” or “Read and write for super admins” permissions enabled. Box developer support confirms there are currently no alternative solutions.

1. Read and Write for Super Admins

Only Box super admins can authenticate using this method. Super admins have permissions to allow the super admin to make authenticated requests on behalf of another user to access private user files and folders.

2. Read and Write for Admins

Only Box administrators can authenticate using this method. Admins generally have access to a broader set of public files and folders.

3. Read and Write for Non-Admins

Any user with valid Box credentials can authenticate using this method. Access is limited to the authenticated user's personal drive, as well as shared drives and explicitly shared files.

Did this answer your question?