mirror of
https://github.com/simstudioai/sim.git
synced 2026-04-06 03:00:16 -04:00
* feat(box): add Box and Box Sign integrations Add complete Box integration with file management (upload, download, get info, list folders, create/delete folders, copy, search, update metadata) and Box Sign e-signature support (create/get/list/cancel/resend sign requests). Includes OAuth provider setup, internal upload API route following the Dropbox pattern, block configurations, icon, and generated docs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(box): address PR review comments - Fix docsLink for Box Sign: use underscore (box_sign) to match docs URL - Move normalizeFileInput from tool() to params() in Box block config to match Dropbox pattern - Throw error on invalid additionalSigners JSON instead of silently dropping signers Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(box): remove unsupported reason param from cancel sign request The Box Sign cancel endpoint (POST /sign_requests/{id}/cancel) does not accept a request body per the API specification. Remove the misleading reason parameter from the tool, types, block config, and docs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(box): use canonical param ID for file normalization in params() The params function must reference canonical IDs (params.file), not raw subBlock IDs (uploadFile/fileRef) which are deleted after canonical transformation. Matches the Dropbox block pattern. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(box): use generic output descriptions for shared file properties Rename "Uploaded file ID/name" to "File ID/name" in UPLOAD_FILE_OUTPUT_PROPERTIES since the constant is shared by both upload and copy operations. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(box): rename items output to entries for list_folder_items Rename the output field from "items" to "entries" to match Box API naming and avoid collision with JSON schema "items" keyword that prevented the docs generator from rendering the nested array structure. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(box): filter empty file IDs from sourceFileIds input Add .filter(Boolean) after splitting sourceFileIds to prevent empty strings from trailing/double commas being sent as invalid file IDs to the Box Sign API. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor(box): merge Box Sign into single Box block Combine Box and Box Sign into one unified block with all 15 operations accessible via a single dropdown, removing the separate box_sign block. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(box): filter empty strings from tags array in update_file Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * style(docs): apply lint formatting to icon-mapping and meta.json Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * style(box): format chained method calls per linter rules Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * style(box,docusign): set block bgColor to white and regenerate docs Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * style(docs): apply lint formatting Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(box): populate OAuth scopes for Box since token response omits them Box's OAuth2 token endpoint does not return a scope field in the response, so Better Auth stores nothing in the DB. This causes the credential selector to always show "Additional permissions required". Fix by populating the scope from the requested scopes in the account.create.before hook. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(box): add sign_requests.readwrite scope for Box Sign operations Box Sign API requires the sign_requests.readwrite scope in addition to root_readwrite. Without it, sign requests fail with "The request requires higher privileges than provided by the access token." Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * update docs --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
441 lines
17 KiB
Plaintext
441 lines
17 KiB
Plaintext
---
|
|
title: Box
|
|
description: Manage files, folders, and e-signatures with Box
|
|
---
|
|
|
|
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
|
|
|
<BlockInfoCard
|
|
type="box"
|
|
color="#FFFFFF"
|
|
/>
|
|
|
|
{/* MANUAL-CONTENT-START:intro */}
|
|
[Box](https://www.box.com/) is a leading cloud content management and file sharing platform trusted by enterprises worldwide to securely store, manage, and collaborate on files. Box provides robust APIs for automating file operations and integrating with business workflows, including [Box Sign](https://www.box.com/esignature) for native e-signatures.
|
|
|
|
With the Box integration in Sim, you can:
|
|
|
|
- **Upload files**: Upload documents, images, and other files to any Box folder
|
|
- **Download files**: Retrieve file content from Box for processing in your workflows
|
|
- **Get file info**: Access detailed metadata including size, owner, timestamps, tags, and shared links
|
|
- **List folder contents**: Browse files and folders with sorting and pagination support
|
|
- **Create folders**: Organize your Box storage by creating new folders programmatically
|
|
- **Delete files and folders**: Remove content with optional recursive deletion for folders
|
|
- **Copy files**: Duplicate files across folders with optional renaming
|
|
- **Search**: Find files and folders by name, content, extension, or location
|
|
- **Update file metadata**: Rename, move, add descriptions, or tag files
|
|
- **Create sign requests**: Send documents for e-signature with one or more signers
|
|
- **Track signing status**: Monitor the progress of sign requests
|
|
- **List sign requests**: View all sign requests with marker-based pagination
|
|
- **Cancel sign requests**: Cancel pending sign requests that are no longer needed
|
|
- **Resend sign reminders**: Send reminder notifications to signers who haven't completed signing
|
|
|
|
These capabilities allow your Sim agents to automate Box operations directly within your workflows — from organizing documents and distributing content to processing uploaded files, managing e-signature workflows for offer letters and contracts, and maintaining structured cloud storage as part of your business processes.
|
|
{/* MANUAL-CONTENT-END */}
|
|
|
|
|
|
## Usage Instructions
|
|
|
|
Integrate Box into your workflow to manage files, folders, and e-signatures. Upload and download files, search content, create folders, send documents for e-signature, track signing status, and more.
|
|
|
|
|
|
|
|
## Tools
|
|
|
|
### `box_upload_file`
|
|
|
|
Upload a file to a Box folder
|
|
|
|
#### Input
|
|
|
|
| Parameter | Type | Required | Description |
|
|
| --------- | ---- | -------- | ----------- |
|
|
| `parentFolderId` | string | Yes | The ID of the folder to upload the file to \(use "0" for root\) |
|
|
| `file` | file | No | The file to upload \(UserFile object\) |
|
|
| `fileContent` | string | No | Legacy: base64 encoded file content |
|
|
| `fileName` | string | No | Optional filename override |
|
|
|
|
#### Output
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ---- | ----------- |
|
|
| `id` | string | File ID |
|
|
| `name` | string | File name |
|
|
| `size` | number | File size in bytes |
|
|
| `sha1` | string | SHA1 hash of file content |
|
|
| `createdAt` | string | Creation timestamp |
|
|
| `modifiedAt` | string | Last modified timestamp |
|
|
| `parentId` | string | Parent folder ID |
|
|
| `parentName` | string | Parent folder name |
|
|
|
|
### `box_download_file`
|
|
|
|
Download a file from Box
|
|
|
|
#### Input
|
|
|
|
| Parameter | Type | Required | Description |
|
|
| --------- | ---- | -------- | ----------- |
|
|
| `fileId` | string | Yes | The ID of the file to download |
|
|
|
|
#### Output
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ---- | ----------- |
|
|
| `file` | file | Downloaded file stored in execution files |
|
|
| `content` | string | Base64 encoded file content |
|
|
|
|
### `box_get_file_info`
|
|
|
|
Get detailed information about a file in Box
|
|
|
|
#### Input
|
|
|
|
| Parameter | Type | Required | Description |
|
|
| --------- | ---- | -------- | ----------- |
|
|
| `fileId` | string | Yes | The ID of the file to get information about |
|
|
|
|
#### Output
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ---- | ----------- |
|
|
| `id` | string | File ID |
|
|
| `name` | string | File name |
|
|
| `description` | string | File description |
|
|
| `size` | number | File size in bytes |
|
|
| `sha1` | string | SHA1 hash of file content |
|
|
| `createdAt` | string | Creation timestamp |
|
|
| `modifiedAt` | string | Last modified timestamp |
|
|
| `createdBy` | object | User who created the file |
|
|
| `modifiedBy` | object | User who last modified the file |
|
|
| `ownedBy` | object | User who owns the file |
|
|
| `parentId` | string | Parent folder ID |
|
|
| `parentName` | string | Parent folder name |
|
|
| `sharedLink` | json | Shared link details |
|
|
| `tags` | array | File tags |
|
|
| `commentCount` | number | Number of comments |
|
|
|
|
### `box_list_folder_items`
|
|
|
|
List files and folders in a Box folder
|
|
|
|
#### Input
|
|
|
|
| Parameter | Type | Required | Description |
|
|
| --------- | ---- | -------- | ----------- |
|
|
| `folderId` | string | Yes | The ID of the folder to list items from \(use "0" for root\) |
|
|
| `limit` | number | No | Maximum number of items to return per page |
|
|
| `offset` | number | No | The offset for pagination |
|
|
| `sort` | string | No | Sort field: id, name, date, or size |
|
|
| `direction` | string | No | Sort direction: ASC or DESC |
|
|
|
|
#### Output
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ---- | ----------- |
|
|
| `entries` | array | List of items in the folder |
|
|
| ↳ `type` | string | Item type \(file, folder, web_link\) |
|
|
| ↳ `id` | string | Item ID |
|
|
| ↳ `name` | string | Item name |
|
|
| ↳ `size` | number | Item size in bytes |
|
|
| ↳ `createdAt` | string | Creation timestamp |
|
|
| ↳ `modifiedAt` | string | Last modified timestamp |
|
|
| `totalCount` | number | Total number of items in the folder |
|
|
| `offset` | number | Current pagination offset |
|
|
| `limit` | number | Current pagination limit |
|
|
|
|
### `box_create_folder`
|
|
|
|
Create a new folder in Box
|
|
|
|
#### Input
|
|
|
|
| Parameter | Type | Required | Description |
|
|
| --------- | ---- | -------- | ----------- |
|
|
| `name` | string | Yes | Name for the new folder |
|
|
| `parentFolderId` | string | Yes | The ID of the parent folder \(use "0" for root\) |
|
|
|
|
#### Output
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ---- | ----------- |
|
|
| `id` | string | Folder ID |
|
|
| `name` | string | Folder name |
|
|
| `createdAt` | string | Creation timestamp |
|
|
| `modifiedAt` | string | Last modified timestamp |
|
|
| `parentId` | string | Parent folder ID |
|
|
| `parentName` | string | Parent folder name |
|
|
|
|
### `box_delete_file`
|
|
|
|
Delete a file from Box
|
|
|
|
#### Input
|
|
|
|
| Parameter | Type | Required | Description |
|
|
| --------- | ---- | -------- | ----------- |
|
|
| `fileId` | string | Yes | The ID of the file to delete |
|
|
|
|
#### Output
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ---- | ----------- |
|
|
| `deleted` | boolean | Whether the file was successfully deleted |
|
|
| `message` | string | Success confirmation message |
|
|
|
|
### `box_delete_folder`
|
|
|
|
Delete a folder from Box
|
|
|
|
#### Input
|
|
|
|
| Parameter | Type | Required | Description |
|
|
| --------- | ---- | -------- | ----------- |
|
|
| `folderId` | string | Yes | The ID of the folder to delete |
|
|
| `recursive` | boolean | No | Delete folder and all its contents recursively |
|
|
|
|
#### Output
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ---- | ----------- |
|
|
| `deleted` | boolean | Whether the folder was successfully deleted |
|
|
| `message` | string | Success confirmation message |
|
|
|
|
### `box_copy_file`
|
|
|
|
Copy a file to another folder in Box
|
|
|
|
#### Input
|
|
|
|
| Parameter | Type | Required | Description |
|
|
| --------- | ---- | -------- | ----------- |
|
|
| `fileId` | string | Yes | The ID of the file to copy |
|
|
| `parentFolderId` | string | Yes | The ID of the destination folder |
|
|
| `name` | string | No | Optional new name for the copied file |
|
|
|
|
#### Output
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ---- | ----------- |
|
|
| `id` | string | File ID |
|
|
| `name` | string | File name |
|
|
| `size` | number | File size in bytes |
|
|
| `sha1` | string | SHA1 hash of file content |
|
|
| `createdAt` | string | Creation timestamp |
|
|
| `modifiedAt` | string | Last modified timestamp |
|
|
| `parentId` | string | Parent folder ID |
|
|
| `parentName` | string | Parent folder name |
|
|
|
|
### `box_search`
|
|
|
|
Search for files and folders in Box
|
|
|
|
#### Input
|
|
|
|
| Parameter | Type | Required | Description |
|
|
| --------- | ---- | -------- | ----------- |
|
|
| `query` | string | Yes | The search query string |
|
|
| `limit` | number | No | Maximum number of results to return |
|
|
| `offset` | number | No | The offset for pagination |
|
|
| `ancestorFolderId` | string | No | Restrict search to a specific folder and its subfolders |
|
|
| `fileExtensions` | string | No | Comma-separated file extensions to filter by \(e.g., pdf,docx\) |
|
|
| `type` | string | No | Restrict to a specific content type: file, folder, or web_link |
|
|
|
|
#### Output
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ---- | ----------- |
|
|
| `results` | array | Search results |
|
|
| ↳ `type` | string | Item type \(file, folder, web_link\) |
|
|
| ↳ `id` | string | Item ID |
|
|
| ↳ `name` | string | Item name |
|
|
| ↳ `size` | number | Item size in bytes |
|
|
| ↳ `createdAt` | string | Creation timestamp |
|
|
| ↳ `modifiedAt` | string | Last modified timestamp |
|
|
| ↳ `parentId` | string | Parent folder ID |
|
|
| ↳ `parentName` | string | Parent folder name |
|
|
| `totalCount` | number | Total number of matching results |
|
|
|
|
### `box_update_file`
|
|
|
|
Update file info in Box (rename, move, change description, add tags)
|
|
|
|
#### Input
|
|
|
|
| Parameter | Type | Required | Description |
|
|
| --------- | ---- | -------- | ----------- |
|
|
| `fileId` | string | Yes | The ID of the file to update |
|
|
| `name` | string | No | New name for the file |
|
|
| `description` | string | No | New description for the file \(max 256 characters\) |
|
|
| `parentFolderId` | string | No | Move the file to a different folder by specifying the folder ID |
|
|
| `tags` | string | No | Comma-separated tags to set on the file |
|
|
|
|
#### Output
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ---- | ----------- |
|
|
| `id` | string | File ID |
|
|
| `name` | string | File name |
|
|
| `description` | string | File description |
|
|
| `size` | number | File size in bytes |
|
|
| `sha1` | string | SHA1 hash of file content |
|
|
| `createdAt` | string | Creation timestamp |
|
|
| `modifiedAt` | string | Last modified timestamp |
|
|
| `createdBy` | object | User who created the file |
|
|
| `modifiedBy` | object | User who last modified the file |
|
|
| `ownedBy` | object | User who owns the file |
|
|
| `parentId` | string | Parent folder ID |
|
|
| `parentName` | string | Parent folder name |
|
|
| `sharedLink` | json | Shared link details |
|
|
| `tags` | array | File tags |
|
|
| `commentCount` | number | Number of comments |
|
|
|
|
### `box_sign_create_request`
|
|
|
|
Create a new Box Sign request to send documents for e-signature
|
|
|
|
#### Input
|
|
|
|
| Parameter | Type | Required | Description |
|
|
| --------- | ---- | -------- | ----------- |
|
|
| `sourceFileIds` | string | Yes | Comma-separated Box file IDs to send for signing |
|
|
| `signerEmail` | string | Yes | Primary signer email address |
|
|
| `signerRole` | string | No | Primary signer role: signer, approver, or final_copy_reader \(default: signer\) |
|
|
| `additionalSigners` | string | No | JSON array of additional signers, e.g. \[\{"email":"user@example.com","role":"signer"\}\] |
|
|
| `parentFolderId` | string | No | Box folder ID where signed documents will be stored \(default: user root\) |
|
|
| `emailSubject` | string | No | Custom subject line for the signing email |
|
|
| `emailMessage` | string | No | Custom message in the signing email body |
|
|
| `name` | string | No | Name for the sign request |
|
|
| `daysValid` | number | No | Number of days before the request expires \(0-730\) |
|
|
| `areRemindersEnabled` | boolean | No | Whether to send automatic signing reminders |
|
|
| `areTextSignaturesEnabled` | boolean | No | Whether to allow typed \(text\) signatures |
|
|
| `signatureColor` | string | No | Signature color: blue, black, or red |
|
|
| `redirectUrl` | string | No | URL to redirect signers to after signing |
|
|
| `declinedRedirectUrl` | string | No | URL to redirect signers to after declining |
|
|
| `isDocumentPreparationNeeded` | boolean | No | Whether document preparation is needed before sending |
|
|
| `externalId` | string | No | External system reference ID |
|
|
|
|
#### Output
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ---- | ----------- |
|
|
| `id` | string | Sign request ID |
|
|
| `status` | string | Request status \(converting, created, sent, viewed, signed, cancelled, declined, expired, error_converting, error_sending, finalizing, error_finalizing\) |
|
|
| `name` | string | Sign request name |
|
|
| `shortId` | string | Human-readable short ID |
|
|
| `signers` | array | List of signers |
|
|
| `sourceFiles` | array | Source files for signing |
|
|
| `emailSubject` | string | Custom email subject line |
|
|
| `emailMessage` | string | Custom email message body |
|
|
| `daysValid` | number | Number of days the request is valid |
|
|
| `createdAt` | string | Creation timestamp |
|
|
| `autoExpireAt` | string | Auto-expiration timestamp |
|
|
| `prepareUrl` | string | URL for document preparation \(if preparation is needed\) |
|
|
| `senderEmail` | string | Email of the sender |
|
|
|
|
### `box_sign_get_request`
|
|
|
|
Get the details and status of a Box Sign request
|
|
|
|
#### Input
|
|
|
|
| Parameter | Type | Required | Description |
|
|
| --------- | ---- | -------- | ----------- |
|
|
| `signRequestId` | string | Yes | The ID of the sign request to retrieve |
|
|
|
|
#### Output
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ---- | ----------- |
|
|
| `id` | string | Sign request ID |
|
|
| `status` | string | Request status \(converting, created, sent, viewed, signed, cancelled, declined, expired, error_converting, error_sending, finalizing, error_finalizing\) |
|
|
| `name` | string | Sign request name |
|
|
| `shortId` | string | Human-readable short ID |
|
|
| `signers` | array | List of signers |
|
|
| `sourceFiles` | array | Source files for signing |
|
|
| `emailSubject` | string | Custom email subject line |
|
|
| `emailMessage` | string | Custom email message body |
|
|
| `daysValid` | number | Number of days the request is valid |
|
|
| `createdAt` | string | Creation timestamp |
|
|
| `autoExpireAt` | string | Auto-expiration timestamp |
|
|
| `prepareUrl` | string | URL for document preparation \(if preparation is needed\) |
|
|
| `senderEmail` | string | Email of the sender |
|
|
|
|
### `box_sign_list_requests`
|
|
|
|
List all Box Sign requests
|
|
|
|
#### Input
|
|
|
|
| Parameter | Type | Required | Description |
|
|
| --------- | ---- | -------- | ----------- |
|
|
| `limit` | number | No | Maximum number of sign requests to return \(max 1000\) |
|
|
| `marker` | string | No | Pagination marker from a previous response |
|
|
|
|
#### Output
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ---- | ----------- |
|
|
| `signRequests` | array | List of sign requests |
|
|
| ↳ `id` | string | Sign request ID |
|
|
| ↳ `status` | string | Request status \(converting, created, sent, viewed, signed, cancelled, declined, expired, error_converting, error_sending, finalizing, error_finalizing\) |
|
|
| ↳ `name` | string | Sign request name |
|
|
| ↳ `shortId` | string | Human-readable short ID |
|
|
| ↳ `signers` | array | List of signers |
|
|
| ↳ `sourceFiles` | array | Source files for signing |
|
|
| ↳ `emailSubject` | string | Custom email subject line |
|
|
| ↳ `emailMessage` | string | Custom email message body |
|
|
| ↳ `daysValid` | number | Number of days the request is valid |
|
|
| ↳ `createdAt` | string | Creation timestamp |
|
|
| ↳ `autoExpireAt` | string | Auto-expiration timestamp |
|
|
| ↳ `prepareUrl` | string | URL for document preparation \(if preparation is needed\) |
|
|
| ↳ `senderEmail` | string | Email of the sender |
|
|
| `count` | number | Number of sign requests returned in this page |
|
|
| `nextMarker` | string | Marker for next page of results |
|
|
|
|
### `box_sign_cancel_request`
|
|
|
|
Cancel a pending Box Sign request
|
|
|
|
#### Input
|
|
|
|
| Parameter | Type | Required | Description |
|
|
| --------- | ---- | -------- | ----------- |
|
|
| `signRequestId` | string | Yes | The ID of the sign request to cancel |
|
|
|
|
#### Output
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ---- | ----------- |
|
|
| `id` | string | Sign request ID |
|
|
| `status` | string | Request status \(converting, created, sent, viewed, signed, cancelled, declined, expired, error_converting, error_sending, finalizing, error_finalizing\) |
|
|
| `name` | string | Sign request name |
|
|
| `shortId` | string | Human-readable short ID |
|
|
| `signers` | array | List of signers |
|
|
| `sourceFiles` | array | Source files for signing |
|
|
| `emailSubject` | string | Custom email subject line |
|
|
| `emailMessage` | string | Custom email message body |
|
|
| `daysValid` | number | Number of days the request is valid |
|
|
| `createdAt` | string | Creation timestamp |
|
|
| `autoExpireAt` | string | Auto-expiration timestamp |
|
|
| `prepareUrl` | string | URL for document preparation \(if preparation is needed\) |
|
|
| `senderEmail` | string | Email of the sender |
|
|
|
|
### `box_sign_resend_request`
|
|
|
|
Resend a Box Sign request to signers who have not yet signed
|
|
|
|
#### Input
|
|
|
|
| Parameter | Type | Required | Description |
|
|
| --------- | ---- | -------- | ----------- |
|
|
| `signRequestId` | string | Yes | The ID of the sign request to resend |
|
|
|
|
#### Output
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ---- | ----------- |
|
|
| `message` | string | Success confirmation message |
|
|
|
|
|