# Create agents Source: https://developer.box.com/guides/ai-studio/ai-studio-agents/create-agents Box AI Studio is available only for Enterprise Advanced accounts. The `POST /2.0/ai_agents` endpoint allows you to create a new, custom AI agent. ## Send a request To send a request, use the `POST /2.0/ai_agents` endpoint. Make sure you have generated the developer token to authorize your app. See getting started with Box AI for details. ```typescript Node/TypeScript v10 theme={null} await client.aiStudio.createAiAgent({ name: agentName, accessState: 'enabled', ask: new AiStudioAgentAsk({ accessState: 'enabled', description: 'desc1' }), } satisfies CreateAiAgentInput); ``` ```python Python v10 theme={null} client.ai_studio.create_ai_agent( agent_name, "enabled", ask=AiStudioAgentAsk(access_state="enabled", description="desc1"), ) ``` ```cs .NET v10 theme={null} await client.AiStudio.CreateAiAgentAsync(requestBody: new CreateAiAgent(name: agentName, accessState: "enabled") { Ask = new AiStudioAgentAsk(accessState: "enabled", description: "desc1") }); ``` ```swift Swift v10 theme={null} try await client.aiStudio.createAiAgent(requestBody: CreateAiAgent(name: agentName, accessState: "enabled", ask: AiStudioAgentAsk(accessState: "enabled", description: "desc1"))) ``` ```java Java v10 theme={null} client.getAiStudio().createAiAgent(new CreateAiAgent.Builder(agentName, "enabled").ask(new AiStudioAgentAsk("enabled", "desc1")).build()) ``` ### Parameters To make a call, you must pass the following parameters. Mandatory parameters are in **bold**. | Parameter | Description | Example | | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | | **`type`** | The type of agent used to handle queries. | `ai_agent` | | **`name`** | The name of the AI Agent. | `My AI Agent` | | **`access_state`** | The state of the AI Agent. Value is one of `enabled` `disabled`. | `enabled` | | `icon_reference` | The icon reference of the AI Agent. It should have format of the URL `https://cdn01.boxcdn.net/app-assets/aistudio/avatars/` , where the possible values of `file_name` are: `logo_boxAi.png`,`logo_stamp.png`, `logo_legal.png`,`logo_finance.png`,`logo_config.png`,`logo_handshake.png` `logo_analytics.png`,`logo_classification.png`. | `https://cdn01.boxcdn.net/app-assets/aistudio/avatars/logo_analytics.svg` | | `allowed_entities` | List of allowed users or groups. | | | `ask` | The AI Agent to be used for ask. | `ask` | | `extract` | The AI Agent to be used for extraction. | | | `text_gen` | The AI agent used for generating text. | | # Delete AI agent Source: https://developer.box.com/guides/ai-studio/ai-studio-agents/delete-agents The `DELETE /2.0/ai_agents/{id}` endpoint allows you to delete a custom AI agent based on its ID. ## Send a request To send a request, use the `DELETE /2.0/ai_agents/{id}` endpoint. ```sh cURL theme={null} curl -L DELETE "https://api.box.com/2.0/ai_agents/12345" \ -H 'Authorization: Bearer ' ``` ```typescript Node/TypeScript v10 theme={null} await client.aiStudio.deleteAiAgentById(createdAgent.id); ``` ```python Python v10 theme={null} client.ai_studio.delete_ai_agent_by_id(created_agent.id) ``` ```cs .NET v10 theme={null} await client.AiStudio.DeleteAiAgentByIdAsync(agentId: createdAgent.Id); ``` ```swift Swift v10 theme={null} try await client.aiStudio.deleteAiAgentById(agentId: createdAgent.id) ``` ```java Java v10 theme={null} client.getAiStudio().deleteAiAgentById(createdAgent.getId()) ``` ### Parameters To make a call, you must pass the following parameters. Mandatory parameters are in **bold**. | Parameter | Description | Example | | -------------- | ------------------------------ | ------- | | **`agent_id`** | The ID of the agent to delete. | `1234` | # Get AI agent by ID Source: https://developer.box.com/guides/ai-studio/ai-studio-agents/get-agent-id The `GET /2.0/ai_agents/{id}` endpoint allows you to list a specific AI agent by the `agent_id` parameter. ## Send a request To send a request, use the `GET /2.0/ai_agents/{id}` endpoint. ```sh cURL theme={null} curl -i -X GET "https://api.box.com/2.0/ai_agents/1234567890" \ -H "authorization: Bearer " ``` ```typescript Node/TypeScript v10 theme={null} await client.aiStudio.getAiAgentById(createdAgent.id, { queryParams: { fields: ['ask'] } satisfies GetAiAgentByIdQueryParams, } satisfies GetAiAgentByIdOptionalsInput); ``` ```python Python v10 theme={null} client.ai_studio.get_ai_agent_by_id(created_agent.id, fields=["ask"]) ``` ```cs .NET v10 theme={null} await client.AiStudio.GetAiAgentByIdAsync(agentId: createdAgent.Id, queryParams: new GetAiAgentByIdQueryParams() { Fields = Array.AsReadOnly(new [] {"ask"}) }); ``` ```swift Swift v10 theme={null} try await client.aiStudio.getAiAgentById(agentId: createdAgent.id, queryParams: GetAiAgentByIdQueryParams(fields: ["ask"])) ``` ```java Java v10 theme={null} client.getAiStudio().getAiAgentById(createdAgent.getId(), new GetAiAgentByIdQueryParams.Builder().fields(Arrays.asList("ask")).build()) ``` ### Parameters To make a call, you must pass the following parameters. Mandatory parameters are in **bold**. | Parameter | Description | Example | | -------------- | ------------------------------------- | ------- | | **`agent_id`** | The agent id to get. | `1234` | | `fields` | The fields to return in the response. | `ask` | # Get agents Source: https://developer.box.com/guides/ai-studio/ai-studio-agents/get-agents Box AI Studio is available only for Enterprise Advanced accounts. ## List all AI agents The `GET /2.0/ai_agents` endpoint allows you to list all AI agents based on the provided parameters. ### Send a request To send a request, use the `GET /2.0/ai_agents` endpoint. Make sure you have generated the developer token to authorize your app. See getting started with Box AI Studio for details. ```sh cURL theme={null} curl -i -X GET "https://api.box.com/2.0/ai_agents" \ -H "authorization: Bearer " ``` ```typescript Node/TypeScript v10 theme={null} await client.aiStudio.getAiAgents(); ``` ```python Python v10 theme={null} client.ai_studio.get_ai_agents() ``` ```csharp .NET v10 theme={null} await client.AiStudio.GetAiAgentsAsync(); ``` ```swift Swift v10 theme={null} try await client.aiStudio.getAiAgents() ``` ```java Java v10 theme={null} client.getAiStudio().getAiAgents() ``` #### Parameters To make a call, you must pass the following parameters. Mandatory parameters are in **bold**. | Parameter | Description | Example | | --------------------- | ------------------------------------------------------------------------------------------------------------ | --------------------------------------------------- | | `mode` | The mode to filter the agent configuration to return. Possible values are: `ask`, `text_gen`, and `extract`. | `ask` | | `fields` | The fields to return in the response. | `ask` | | `agent_state` | The state of the agent to return. Value is one of `enabled`,`disabled`. | `enabled` | | `fields` | The fields to return in the response. Value is one of `ask`, `text_gen`, `extract`. | `ask` | | `include_box_default` | Whether to include the Box default agents in the response. | `true` | | `limit` | The maximum number of items to return per page. | `1000` | | `marker` | Defines the position marker at which to begin returning results. | `JV9IRGZmieiBasejOG9yDCRNgd2ymoZIbjsxbJMjIs3kioVii` | # AI studio agents Source: https://developer.box.com/guides/ai-studio/ai-studio-agents/index Box AI Studio is available only for Enterprise Advanced accounts. Create, list, update, and delete custom AI agents. # Update AI agent Source: https://developer.box.com/guides/ai-studio/ai-studio-agents/update-agents The `PUT /2.0/ai_agents/{id}` endpoint allows you to update a custom AI agent based on its ID. ## Send a request To send a request, use the `PUT /2.0/ai_agents/{id}` endpoint. ```sh cURL theme={null} curl -i -X PUT "https://api.box.com/2.0/ai_agents/1234567890" \ -H "authorization: Bearer " ``` ```typescript Node/TypeScript v10 theme={null} await client.aiStudio.updateAiAgentById(createdAgent.id, { name: agentName, accessState: 'enabled', ask: new AiStudioAgentAsk({ accessState: 'disabled', description: 'desc2' }), } satisfies CreateAiAgentInput); ``` ```python Python v10 theme={null} client.ai_studio.update_ai_agent_by_id( created_agent.id, agent_name, "enabled", ask=AiStudioAgentAsk(access_state="disabled", description="desc2"), ) ``` ```cs .NET v10 theme={null} await client.AiStudio.UpdateAiAgentByIdAsync(agentId: createdAgent.Id, requestBody: new CreateAiAgent(name: agentName, accessState: "enabled") { Ask = new AiStudioAgentAsk(accessState: "disabled", description: "desc2") }); ``` ```swift Swift v10 theme={null} try await client.aiStudio.updateAiAgentById(agentId: createdAgent.id, requestBody: CreateAiAgent(name: agentName, accessState: "enabled", ask: AiStudioAgentAsk(accessState: "disabled", description: "desc2"))) ``` ```java Java v10 theme={null} client.getAiStudio().updateAiAgentById(createdAgent.getId(), new CreateAiAgent.Builder(agentName, "enabled").ask(new AiStudioAgentAsk("disabled", "desc2")).build()) ``` ### Parameters To make a call, you must pass the following parameters. Mandatory parameters are in **bold**. | Parameter | Description | Example | | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | | **`type`** | The type of agent used to handle queries. | \`\`\`\` | | **`name`** | The name of the AI Agent. | My AI Agent | | **`access_state`** | The state of the AI Agent. Value is one of `enabled` `disabled`. | `enabled` | | `icon_reference` | The icon reference of the AI Agent. It should have format of the URL `https://cdn01.boxcdn.net/app-assets/aistudio/avatars/`, where possible values of `file_name` are: `logo_boxAi.png`,`logo_stamp.png`,`logo_legal.png`,`logo_finance.png`,`logo_config.png`,`logo_handshake.png`,`logo_analytics.png`,`logo_classification.png` | `https://cdn01.boxcdn.net/app-assets/aistudio/avatars/logo_analytics.svg` | | `allowed_entities` | List of allowed users or groups. | | | `ask` | The AI Agent to be used for ask. | `ask` | | `extract` | The AI Agent to be used for extraction. | | | `text_gen` | The AI agent used for generating text. | | # Get started with AI studio Source: https://developer.box.com/guides/ai-studio/getting-started-ai-studio Box AI Studio is available only for Enterprise Advanced accounts. To start creating custom AI agents with AI studio you need a platform application with enabled Box AI scope and a developer token to authenticate your calls. ## Create a platform application First you need to create a platform application you will use to make calls. To create an application, follow the guide on creating platform apps. ## Enable Box AI studio To use Box AI studio, make sure it is enabled by a Box admin in the Admin Console. If you are a Box Admin, you will find the necessary information in [Enabling Box AI Studio and Managing Agents][enable]. To interact with Box AI API, you need the `ai.readwrite` scope added for your application. Before you add the scope, make sure that the Box Admin has granted you the access to Box AI API. If you can't see the **Manage AI** option in your app configuration settings, contact your admin. To add a scope: 1. Open your application in Developer Console. 2. Go to **Configuration** > **Required Access Scopes** > **Content Actions** 3. Select the **Manage AI** scope. Box Platform will automatically include the scope when making the call. If you are added as an collaborator for a given app, but do not have Box AI API access, you will see the **Manage AI** scope checked and grayed out. This means the app owner has the AI scope enabled but you cannot change this setting. box ai scopes 4. Submit your app for authorization or enablement. If you want to enable Box AI API for an existing application, you must re-authorize it. ## Generate a developer token You need a developer token to authenticate your app when sending requests. To generate a token: 1. Go to **Developer Console** > **My Platform Apps**. 2. Click the **Options menu** button (…) on the right. 3. Select **Generate Developer Token**. The token will be automatically generated and saved to clipboard. You can also open your app, go to **Configuration** > **Developer Token** and generate the token. A developer token is only valid for one hour. For additional details, see developer token. After you generate the token, you can use it in cURL or other clients, such as Postman, to make calls. [enable]: https://support.box.com/hc/en-us/articles/37228079461267-Enabling-Box-AI-Studio-and-Managing-Agents/#h_01JH9HAMP43YYN6VWM51QCK413 # Box AI Studio Source: https://developer.box.com/guides/ai-studio/index Box AI Studio is available only for Enterprise Advanced accounts. [Box AI Studio][ai-studio] allows you to build and manage custom AI agents to best suit your business needs. For example, you can create an AI agent that acts as a compliance consultant, answering questions regarding customer documentation with the FedRAMP Moderate compliance in mind. ## Box AI Studio capabilities Currently, you can configure Box AI agent to answer user questions or generate text you can use in your documents. ai agent capabilities ## Supported languages Box AI studio works in a number of languages including English, Japanese, French, Spanish, and many more. However, the underlying models are primarily trained on English language documents. This means that prompts in other languages may return answers of lower quality than in English. Tests have shown satisfactory results for summarizing, checking grammar and spelling, and answering questions, but bear in mind that the results may be different than in English. Switch the language to Japanese to get better results for this language. [ai-studio]: https://support.box.com/hc/en-us/articles/37228079461267-Enabling-Box-AI-Studio-and-Managing-Agents # Applications Source: https://developer.box.com/guides/applications/index Box Developer Console allows you to create applications you can then use to integrate with Box. **My Platform Apps** view displays a list of already created applications and gives you quick access to their configuration details. This way, you don't need to open the app each time you want to generate a Developer Token, copy the Client ID, or generate a report. ## Features **My Platform Apps** page allows you to: * Search through the list of already created apps. * Filter the apps by **Enablement Status** and **Authentication Type**. * Create a new app. * Copy the app's Client ID. * Rename the app and access its details with one click. * Check application enablement and authorization status. Apps published to Integrations display status from Integrations. The **Options menu** available for every entry allows you to: * Access the configuration details of your application. * Generate a Developer Token. * Add collaborators to your application. * Run the Platform App Diagnostics Report. ## Platform App Insights Admins and co-admins can access the Platform Insights dashboard that provides a comprehensive view of the organization’s platform usage. This includes app-related data, such as: * The total number of API calls per application. * A list of top applications within the enterprise. * A list of pending application approvals. * A list of applications awaiting enablement. See [Platform Insights][insights] for details. You need the following permissions to access and view Platform Insights: * View settings and apps for your company * Edit settings and apps for your company * Run new reports and access existing reports [insights]: https://support.box.com/hc/en-us/articles20738406915219-Platform-Insights # Integrations Source: https://developer.box.com/guides/applications/integrations/index [Box Integrations][app-center] is the first place for Box users to find out about applications they can use in combination with Box. If your application can be used by other enterprises, listing your service in under **Integrations** can be a great way to find new users. Integrations group apps into sections so that you can quickly find featured, most popular, or recently added apps. Integrations ## Developing a platform app or becoming a Box Partner If you need more information on developing a platform app for the Box Integrations or becoming a Box Partner, visit our [Box Partner Resources][bp] guides on our community site. ## Publishing a platform app Use the following steps to publish a platform app in Box Integrations. ### Prerequisites Your application must meet the following requirements: * The platform app is in a finished state and ready for production usage. * The platform app leverages OAuth 2.0 authentication, as Integrations do not support any other authentication methods. * You are a developer with access to the platform app in the **Developer Console**. ### Steps 1. Navigate to the Developer Console > **My Platform Apps** and select the app you want to publish. 2. Select the **Publishing** tab from the top menu. Publishing tab for an application 3. Read through the submission checklist and check the confirmation checkbox if your app meets all the requirements. 4. Fill in the form by providing: * the categories your app falls under * a short and a long description * screenshots and an app icon * supplementary information that will be used to support the users 5. Use the **Preview** button in the top right corner to see how your application will look when listed. 6. Finally, submit the application for approval by clicking the **Submit for Approval** button. Once a request for approval is received, the Box Partner team will be notified and review your request as soon as possible. For any questions, email [`integrate@box.com`][email]. ## Unpublishing a platform app Once approved and published, a platform app can be unpublished from the same control panel: 1. Navigate to the **Developer Console** and select your platform app. 2. Select the **Publishing** tab. 3. You can now unpublish the app. [app-center]: https://app.box.com/services [email]: mailto:integrate@box.com [bp]: https://support.box.com/hc/en-us/sections/21356597387539-Box-Partner-Programs # Create a Platform App Source: https://developer.box.com/guides/applications/platform-apps/create A Platform App allows for interaction with our 150+ endpoints. For example, downloading/uploading, searching, applying metadata and more. ## Prerequisites Access to the [Developer Console][dev-console]. ## Create a Platform App 1. Navigate to the [Developer Console][dev-console]. 2. Select **Create Platform App**. 3. Provide a name for your app. 4. Select the authentication method you want to use. 5. Click **Create App**. ## Configure application settings After you create a Platform App, the settings screen is displayed. ### General settings * **App Name** - the name you set up during the app creation, you can change it here if needed. * **App Description** - provide a description for your app (optional). * **Contact Email** - this is set to the developer of the application by default. Keep in mind that once you publish your app, this email is publicly visible to Box users who view your app in the Integrations. We recommend to change it to a support email address, so that users can reach out to support in case of any issues with the integration. ### Configuration * **Purpose** - select the purpose of your app from the drop-down list. Depending on the option you choose, you might need to specify further details. | Purpose | Details | | --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | **Automation**, **Custom Portal** | Specify if the app is built by a customer or partner. | | **Integration** | Specify the integration category, external system name if you're integrating with one, and if the app is built by a customer or partner. | | *Other* | Specify the app purpose and if it is built by a customer or partner. | * **Authentication Method** - choose how your app will authenticate to the Box APIs. Depending on the authentication method you choose, you need to specify further details. | Authentication Method | Details | | ---------------------------- | ------------------------------------------------------------------------------------ | | **OAuth 2.0** | Specify the client ID and client secret. | | **JWT** | Add a public key or generate a public/private key pair. Choose the app access level. | | **Client Credentials Grant** | Specify the client ID and client secret. Choose the app access level. | * **Developer Token** - a developer token is created automatically when you create a Platform App. * **Application Scopes** - choose the scopes you want to grant to your app. See the scopes guide for detailed information on each option. * **Advanced Features** - enable the advanced features your application requires. * **CORS Domains** - add the domains you want to allow requests from. [dev-console]: https://app.box.com/developers/console # Platform App Source: https://developer.box.com/guides/applications/platform-apps/index Platform App typically presents Box functionality to a user through a custom interface. Box offers pre-built, customizable user interface components, known as UI Elements, for functionalities like browsing, searching, and previewing content. ## Authentication methods Platform Apps support OAuth 2.0, JWT, and Client Credentials Grant authentication methods. ## When to use Use a Platform App when you want to: * Use OAuth 2.0, JWT or Client Credentials Grant for authentication. * Upload and download files * Access both your own files and files owned by managed or external users. * List the application in the Box Integrations * Provide integration into the Box Web App ## Use cases Example use cases include: * A file vault in an application that allows an end user to access files that have been shared with them, while also providing access for employees to the same files through the Box Web app. An example of this is financial advisor sharing statements and investment prospectuses with investors that can be viewed and commented on within a platform application. * A file upload feature in an application that allows an end user to submit and upload files from within a custom-built application to Box. These uploads then initiate a business process with the Box Web app. An example of this is a candidate submitting a PDF of a resume to a recruiting portal then can then be routed to an appropriate employee for review. ## Approval Platform Apps may require approval before use. # Create Web App Integration Source: https://developer.box.com/guides/applications/web-app-integrations/configure This guide explains how to set up a Web App Integration with a Platform App. Server-side integration is no longer supported. This means the applications using server-side actions will still be working, but you won't be able to modify the server-side configuration options such as Preliminary Callback URL or Basic Authentication. You will be able to deactivate them and change the implementation to a new one. ## Create an OAuth 2.0 Application Navigate to the [Developer Console][devconsole] and create a Platform App that leverages OAuth 2.0 authentication. ## Create a New Integration Then, navigate to the **Integrations** tab and click **Create a Web App Integration**. Integration Tab ## Configure Integration To configure the integration, follow the guidance below for each value. ### App Info | Field | Description | | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Integration name | The name of your integration, which users see in the Box Web App when they select the **More Options** > **Integrations** menu on a file or folder. | | Description | The description of the integration displayed in the Box Integrations. | | Supported file extensions | The integration will only appear as an option in the **More Options** > **Integrations** menu for the selected file extensions. | | Permissions requirement | Determines what permissions level users need to see the integration. **Download permissions are required** allows users to download the file - they will not be able to update it. **Full permissions are required** allows users to download and update the file. | | Integration scopes | Specifies the scope of your integration - either the file/folder from which integration is invoked, or its parent folder. | | Display on shared pages toggle | Determines if an integration can be shown to external users on a shared page. If enabled, users who are not collaborating on the content will see the integration in the context-menu when accessing the items through a shared link. | | Lock to only allow the current user to overwrite the file using your integration toggle | Determines if different web app integrations can edit the file at the same time. | | Integration type | Select desired integration type. Available options are: **Files**, **Folders**, **Both**. | ### Callback Configuration | Field | Description | | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Client Callback URL | Handles additional callback requests from Box after the primary request with Popup Integrations. If the application specifies a file parameter in the REST method, the preliminary callback URL cannot originate from the client. As a result, a second request must be made from the client to your server so the server can send the necessary interface to the user. | | Prompt Message | Specifies the message that users see when they initiate the integration. Use this field to provide context about what happens next. The message is limited to 500 characters. | | User Experience | Informs that the integration will open in a new window. | | New Window Settings | Determines if the application opens in a new tab. | ### Callback Parameters The **Callback Parameters** section configures the parameters that Box sends to the callback URL when a user accepts a confirmation prompt. If this setting is not configured, Box does not send any parameters to the callback URL. To add a parameter, select the **Method** (GET or POST), specify the **Parameter name** and add a **Parameter value**. The **File** method is no longer supported. If you already used this method, you cannot edit its values. You can change the **File** method to **GET** or **POST**, but you can't undo this action. For example: **GET - `userid` - `#user_id#`**. The following parameter values are available. | Parameter | Method | Description | | --------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `user_id` | GET, POST | The Box user ID. This information is used in Popup Integrations in which user authentication is required to complete an action. You can store the Box ID in your application to enable subsequent authentication requests from the integration. | | `user_name` | POST | The full name or email address of the Box user. Not all Box users specify their names at all times. | | `file_id` | GET, POST | The Box file ID. You can use this ID to make Box API calls that affect the file. | | `file_name` | POST | The name of the file. | | `file_extension` | GET, POST | The extension of the file. | | `auth_code` | GET, POST | The OAuth 2.0 authorization code, which is generated by Box upon successful authentication. Your application must then supply this authorization code to Box in exchange for an OAuth 2.0 Access Token. An authorization header containing a valid Access Token must be included in every Box API request. | | `redirect_to_box_url` | GET, POST | In Popup Integrations, the URL to which requests are sent by the confirmation prompt. Use this URL to redirect users to the All Files page. This parameter closes the popup panel and refreshes the All Files page to reflect any changes performed by the integration. If you do not want to add this parameter to your application, you can specify the entire URL. **Success**: `#redirect_to_box_url#&status=success&message=Your%20action%20was%20successful%2E`. **Failure**: `#redirect_to_box_url#&status=failure&message=Your%20action%20was%20unsuccessful%2E` | ### Integration Status * **Development**: The integration is visible and available only to application collaborators listed under the **General Settings** tab. This option is best used when the application is still in development and undergoing testing. * **Online**: The integration is visible and available to all Box users. This option is best used when development is complete and the application is ready to publish in the Integrations. * **Maintenance**: The integration is visible and available only to application collaborators listed under the **General Settings** tab. This option is best used after the integration is published in the Integrations, but needs to perform maintenance updates or troubleshoot issues. Use this option to temporarily take the integration offline for everyone except the application's collaborators. ## Example Use Cases of Box Integrations When a user chooses a Popup Integration, Box sends a callback request to the primary callback URL. It sends the callback parameters have been configured to the server. In some cases, Box may make a second request if the client cannot get all the data it needs from the first request. The following example does not require a client callback URL: * The Popup Integration performs a REST call using a `download_file_url` callback parameter. * The user clicks **OK** in the confirmation prompt to accept the popup. * Box sends a request to the following URL (the primary callback URL plus the callback parameter): `http://www.doceditor.com/service?apikey=abc&file=&redirect=`. * The response from the callback URL displays a user interface to the user who made the request. The popup has all the information needed to continue the action and an additional client callback is not needed. The following example requires a client callback URL: * The Popup Integration performs a REST call using a file-callback parameter. * The user clicks **OK** in the confirmation prompt to accept the popup. * The popup displays a page where Box sends a POST request with the contents of a file, along with the callback parameters to the remote server. * Box receives the response from the remote server and directs the client to POST the response to the client callback URL. The server identified by the URL interprets the response and redirects the user with the correct session ID. ## Client-callback URL Request Format The POST request that Box sends to the client callback URL takes the response from the primary callback URL and forwards it to the same URL along with the same data as the original callback. | Client Callback URL | Example | | --------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | | Two GET parameters and one POST parameter: `http://your-client-callback-url.com/?get_param1=value1&get_param2=value2` | `POST data: post_param1=value1initial_callback_response` | The response to the client-callback request is an HTTP status 302, redirecting the user to the correct URL or to the HTML for a UI. Most often the URL points to a separate API or custom script developed for Web App Integrations, which parses the result of the primary callback URL. Also, note that the URL must be publicly accessible on the internet. ## Making Integration Publicly Available To make a Box integration publicly available it needs to be listed in the App Center. Follow the Integrations guide for more details. [devconsole]: https://app.box.com/developers/console [devaccount]: https://account.box.com/signup/n/developer # Web App Integration Source: https://developer.box.com/guides/applications/web-app-integrations/index Web App Integrations allow third-party applications to become part of the Box user experience by allowing users to use such third-party applications when editing or sharing files. ## Features * **File interaction**. Users can modify, share, or edit content stored in Box using a third-party application. * **Recommended Apps support**. Integrations can appear in the Box Preview interface under **Recommended Apps**. For details, see [Recommended Web Integrations][recommended-web-integrations]. Integration example * **Scoped availability**. Integrations can be restricted to certain content types and file extensions. ## Visibility in Recommended Apps Your web application integration appears in **Recommended Apps** only if it is published in Integrations. [integrations]: /guides/applications/integrations [custom-app]: /guides/authentication/oauth2/oauth2-setup [oauth2]: /guides/authentication/oauth2 [devconsole]: https://app.box.com/developers/console [recommended-web-integrations]: https://support.box.com/hc/en-us/articles/360044195533-Installing-Recommended-Apps-in-your-Enterprise # Integrations Types Source: https://developer.box.com/guides/applications/web-app-integrations/types Currently, Box provides the Popup integration type. ## Popup Integrations In a popup integration, Box opens a panel and loads the application's callback URL configured for the integration. The application can display its own user interface for the integration in the popup. The integration receives a short-lived authorization code with this request, which can be used to connect to the Box APIs, exchange the code for an Access Token, and then use that to make API calls to Box. Popup panels use HTML ` ``` ### Browser permissions The `allow` attribute enables clipboard operations and local network access for Google Chrome 142 and above and Microsoft Edge 143 and above. While designed for these browser versions, this attribute can be safely included for all browsers. Other browsers will ignore it. Without this attribute, embedded Box content might not work correctly with Box Tools, Device Trust, or the clipboard copy button. The Embed Widget Link Generation modal automatically includes this parameter in the generated code. ### Finding your shared link value The first step to building an embed `iframe` programmatically is to generate or find the value for the shared link. One way to find this value is by using the Box web app. Box Share Another way is to create a shared link with API using the `PUT /files/:file_id` or `PUT /files/:file_id`. Then you can find this shared link value using the `GET /files/:id` or `GET /folders/:id` endpoint and passing in the query parameter `fields=shared_link`. ```curl theme={null} curl https://api.box.com/2.0/folders/12345?fields=shared_link \ -H "authorization: Bearer ACCESS_TOKEN" ``` ```json theme={null} "shared_link": { "url": "https://app.box.com/s/dsbJFzdO7qZxdfOHFzdO7qZxdfOH", "download_url": null, "vanity_url": null, ... } ``` You can also set the page to Root Folder/All Files page. Set the URL to `/folder/0` instead of the share link: `` ### Parameters Next, you will want to choose your view customization options. The following is a list of optional parameters you can configure. | | | | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `hideHubsGallery` | Hide or show navigation chevron button to go back to Hubs gallery. Can be `true` or `false` (default). | | `hideNavigationControls` | Hide or show navigation controls in Box Notes. | | `showItemFeedActions` | Hide or show file comments or tasks. Can be `true` (default) or `false`. | | `showParentPath` | Hide or show the folder path in the header of the frame. Can be `true` or `false` (default). | | `sortColumn` | The order the files or folders are sorted in. Can be `name`, `date` (default), or `size`. | | `sortDirection` | The sort direction of files or folders. Can be `ASC` (default) or `DESC`. | | `view` | The view type for your files or folders. Can be `list` (default) or `icon`. For logged-in users the view type from user preferences takes precedence. | | `uxLite` | Show the limited content preview (Preview Light), with no cloud game. Works only for shared files and Box Notes. | When you use `uxLite` with Box Notes, navigation controls are not displayed, regardless of the `hideNavigationControls` setting. All custom search parameters from the first-party app URL are passed to the embed widget modal and Content Preview. ### Full screen capabilities To enable full screen capabilities for the Box Embed snippet, include one or more of the following parameters if you want the object to be viewable in full screen within an ` ``` #### Using the close button When embedding the Box AI chat directly with `iframe` (without using the provided script), you can enable a close button within the chat interface that communicates with your parent application through `postMessage`. ##### Enabling the close button To display a close button (✕) in the corner of the iframe, add the `showCloseButton=true` query parameter to your `iframe` URL as follows: `https://app.box.com/ai-chat?hubId=YOUR_HUB_ID&showCloseButton=true` ##### How it works 1. When `showCloseButton=true` is set, an X button appears in the corner of the chat iframe. 2. When a user clicks this button, the iframe sends a `postMessage` event to the parent window. 3. The event contains `event.data.type` set to `"BOX_AI_CHAT_CLOSE"`. 4. Your hosting application listens for this event and handles the closing logic. ##### Implementation example ```javascript theme={null} window.addEventListener('message', (event) => { // Optional: validate origin is from Box for additional security // if (event.origin !== 'https://app.box.com') return; if (event.data && event.data.type === 'BOX_AI_CHAT_CLOSE') { closeChat(); } }); ``` ##### Event reference | Property | Value | Description | | ----------------- | --------------------- | --------------------------------------------------------------- | | `event.data.type` | `"BOX_AI_CHAT_CLOSE"` | Indicates the user clicked the close button in the chat iframe. | ## Expiring embed links For files, another option is to call the `GET /files/:id` and request an `expiring_embed_link` using the `fields` query parameter. ```curl theme={null} curl https://api.box.com/2.0/files/12345?fields=expiring_embed_link \ -H "authorization: Bearer ACCESS_TOKEN" ``` ```json theme={null} { "etag": "1", "expiring_embed_link": { "token": { "access_token": "1!rFppcinUwwwDmB4G60nah7z...", "expires_in": 3646, "restricted_to": [ { "object": { "etag": "1", "file_version": { "id": "34567", "sha1": "1b8cda4e52cb7b58b354d8da0068908ecfa4bd00", "type": "file_version" }, "id": "12345", "name": "Image.png", "sequence_id": "1", "sha1": "1b8cda4e52cb7b58b354d8da0068908ecfa4bd00", "type": "file" }, "scope": "base_preview" }, ... ], "token_type": "bearer" }, "url": "https://cloud.app.box.com/preview/expiring_embed/...." }, "id": "12345", "type": "file" } ``` The `url` attribute can be used in an ` ``` ## Customized Previewer (UI Elements) To leverage advanced preview customization and event handling capabilities, use the Box UI Preview Element. To set up the Preview Element, start by installing the required components. The basic code will resemble the below when adding the JavaScript code to display a new previewer. ```js theme={null} var preview = new Box.Preview(); preview.show("FILE_ID", "ACCESS_TOKEN", { container: ".preview-container", showDownload: true }); ``` Replace the placeholders in the code sample with the following: * `FILE_ID`: The ID of the file uploaded to the App Token application, which can be obtained from the object returned when uploading the file. * `ACCESS_TOKEN`: The primary Access Token set up when configuring the application or a downscoped version of the token. Due to the elevated privileges of the primary access token it's highly recommended that you use a downscoped version of the token in the Javascript code. See best practices for downscoping. # FAQ Source: https://developer.box.com/guides/embed/box-view/faq To get started with the New Box View, follow our guide here. Please follow our guide here to choose the best method for your use case. Supported [file types][file_types] can be found in our support article. * All documents supported on web preview are supported on mobile browsers (Safari for iOS and Chrome). * Full annotations support is available for mobile via the Content Preview UI Element, which leverages Box Annotations. * Mobile SDKs (for iOS and Android) do not support 360 Videos/Images, and 3D. * Mobile SDKs (for iOS and Android) do not support annotations (both read and write). Annotations are markup notes on a file rendering and allow developers to provide collaboration capabilities right from within the embedded Box preview in their application. Box Representations let you get the digital assets created for files stored in Box. You can use these endpoints to get PDF, text, image, and thumbnail representations for a file. Currently, Box View is only compatible with files that are stored in Box. You can delete the files from Box once you no longer need to display them. However, you would need to re-upload them again in order to generate the preview. For this reason, we recommend keeping the files stored in Box for at least as long as you want to be able to display them. To fix the CORS error, add each domain you wish to allow to make CORS requests via the application's configuration page. Wildcards are supported for the subdomain (`https://*.domain.com`). See the CORS guide for more information. See this guide for information on customizing the logo within a Preview UI Element. [file_types]: https://support.box.com/hc/en-us/articles/360043695794-Viewing-Different-File-Types-Supported-in-Box-Content-Preview # Box View Source: https://developer.box.com/guides/embed/box-view/index Box View is an embeddable service that allows developers to upload, convert, and display files in their web and mobile apps via a high-fidelity, interactive file viewer. ## Features ### View any file Embed documents, images, videos, 360-degree videos and images, 3D models, and dozens of other files in any web or mobile app using a standard ` ``` For details on working with Box Embed, see this guide. Box Embed uses the Cloud Game widget to prevent clickjacking. In this case, when the user wants to sign a document, they will have to interact with the widget and drag a cloud to the correct location before proceeding to document signing. # Box Sign Source: https://developer.box.com/guides/box-sign/index Programmatically harness the full functionality of the Box Sign web app experience by leveraging Box Sign’s API endpoints to create, list, resend, and cancel sign requests. ## Enablement The following account types support requests through the Box Sign API: Business, Business Plus, Enterprise, Enterprise Suites, Enterprise Plus, and Enterprise Advanced. To locate your account type, navigate to **Account Settings** and scroll down to the **Account Details** section of the **Account** tab. For Admin details on restricting access, please see our [support article][restrict]. ## Required scopes The following scopes must be enabled for an application before use of Box Sign's endpoints. * Read all files and folders stored in Box * Write all files and folders stored in Box * Manage signature requests Depending on the selected authentication method and enterprise's settings, your application may require Admin authorization or re-authorization before successful use of any newly selected scopes. ## Events Please see our events guide for more information. ## Webhooks Please see our webhooks guide for more information. ## Rate Limits Please see our rate limit guide for more information. ## Testing Due to the feature parity, it may be useful to familiarize yourself with [Box Sign functionality using the Box web app][webapp] before leveraging the API. As with all API endpoints, we recommend testing via [developer sandbox environment][sandbox] to eliminate the risk of impacting production content. [restrict]: https://support.box.com/hc/en-us/articles/4404076971155-Enabling-Box-Sign [webapp]: https://support.box.com/hc/en-us/articles/4404105810195-Sending-a-document-for-signature [sandbox]: https://support.box.com/hc/en-us/articles/360043697274-Managing-developer-sandboxes-for-Box-admins # List Box Sign Requests Source: https://developer.box.com/guides/box-sign/list-sign-requests ## All The get sign requests endpoint can be used to view a list of all Box Sign requests created by the user associated with the passed Access Token. ```sh cURL theme={null} curl -i -X GET "https://api.box.com/2.0/sign_requests" \ -H "authorization: Bearer " ``` ```typescript Node/TypeScript v10 theme={null} await client.signRequests.getSignRequests(); ``` ```python Python v10 theme={null} client.sign_requests.get_sign_requests() ``` ```cs .NET v10 theme={null} await client.SignRequests.GetSignRequestsAsync(); ``` ```swift Swift v10 theme={null} try await client.signRequests.getSignRequests() ``` ```java Java v10 theme={null} client.getSignRequests().getSignRequests() ``` ```java Java v5 theme={null} Iterable signRequests = BoxSignRequest.getAll(api); for (BoxSignRequest.Info signRequestInfo : signRequests) { // Do something with each `signRequestInfo`. } ``` ```python Python v4 theme={null} sign_requests = client.get_sign_requests() for sign_request in sign_requests: print(f'(Sign Request ID: {sign_request.id})') ``` ```cs .NET v6 theme={null} BoxCollectionMarkerBased signRequests = await client.SignRequestsManager.GetSignRequestsAsync(); ``` ```javascript Node v4 theme={null} const result = await client.signRequests.getAll(); console.log(`There are ${result.count} sign requests`); ``` ## By ID The get sign requests by ID endpoint can be used to view information about a specific Box Sign request. This endpoint requires the sign request's ID, which can be obtained by using the get all Box Sign requests endpoint or in the response when creating a Box Sign request. ```sh cURL theme={null} curl -i -X GET "https://api.box.com/2.0/sign_requests/" \ -H "authorization: Bearer " ``` ```typescript Node/TypeScript v10 theme={null} await client.signRequests.getSignRequestById(createdSignRequest.id!); ``` ```python Python v10 theme={null} client.sign_requests.get_sign_request_by_id(created_sign_request.id) ``` ```cs .NET v10 theme={null} await client.SignRequests.GetSignRequestByIdAsync(signRequestId: NullableUtils.Unwrap(createdSignRequest.Id)); ``` ```swift Swift v10 theme={null} try await client.signRequests.getSignRequestById(signRequestId: createdSignRequest.id!) ``` ```java Java v10 theme={null} client.getSignRequests().getSignRequestById(createdSignRequest.getId()) ``` ```java Java v5 theme={null} BoxSignRequest signRequest = new BoxSignRequest(api, id); BoxSignRequest.Info signRequestInfo = signRequest.getInfo(); //using `fields` parameter BoxSignRequest.Info signRequestInfoWithFields = signRequest.getInfo("status") ``` ```python Python v4 theme={null} sign_request = client.sign_request(sign_request_id='12345').get() print(f'Sign Request ID is {sign_request.id}') ``` ```cs .NET v6 theme={null} BoxSignRequest signRequest = await client.SignRequestsManager.GetSignRequestByIdAsync("12345"); ``` ```javascript Node v4 theme={null} const sr = await client.signRequests.getById({ sign_request_id: 12345, }); console.log( `Sign request id ${sr.id} contains ${sr.source_files.length} files` ); ``` # Resend Box Sign Request Source: https://developer.box.com/guides/box-sign/resend-sign-request The resend a Box sign request endpoint can be used to resend request emails to any remaining signers. A Box Sign request cannot be resent if the status is: `signed`, `cancelled`, `declined`, `expired`, `error_sending`, or `error_converting`. If a Box Sign request was recently sent, you will need to wait 10 minutes before resending. If you try before this time has passed you will receive a 400 error. Reminder emails can be enabled when creating a Box Sign request to avoid the need to resend the request. ```sh cURL theme={null} curl -i -X POST "https://api.box.com/2.0/sign_requests//resend" \ -H "authorization: Bearer " ``` ```java Java v5 theme={null} BoxSignRequest signRequest = new BoxSignRequest(api, id); BoxSignRequest.Info signRequestInfo = signRequest.getInfo(); signRequestInfo.resend(); ``` ```python Python v4 theme={null} sign_request = client.sign_request(sign_request_id='12345') sign_request.resend() ``` ```cs .NET v6 theme={null} await client.SignRequestsManager.ResendSignRequestAsync("12345"); ``` ```javascript Node v4 theme={null} const id = 12345; await client.signRequests.resendById({ sign_request_id: id }); console.log(`Sign request id ${sr.id} resent`); ``` # Create Sign Request with Sign Template Source: https://developer.box.com/guides/box-sign/sign-templates The Sign Request API allows you to use a predefined Box Sign template when creating a sign request. The template includes placeholders that are automatically populated with data when creating the request. ## Create Template Start with creating a Box Sign template that includes `text`, `date`, and `signature` fields you will need for you request. See the [template guides][docuprep] guide for detailed instructions. ## Get the Template ID To send a sign request, you need to pass the ID of the template you want to use. List the templates to find the `template_id`. ```json theme={null} "entries": [ { "id": "6ae28666-03c4-4ac1-80db-06a90d3b1361", "name": "Contract.pdf", "parent_folder": { "id": "157064745449", "etag": "0", "type": "folder", "sequence_id": "0", "name": "My Sign Requests" }, "source_files": [ { "id": "1216382236853", "etag": "0", "type": "file", "sequence_id": "0", "sha1": "ca9c75cda0d5e3c3c9b0a1e6d42cb5e29a211ab6", "file_version": { "id": "1327286673653", "type": "file_version", "sha1": "ca9c75cda0d5e3c3c9b0a1e6d42cb5e29a211ab6" } } ], "signers": [ { "email": "", "label": "reader", "public_id": "4Z8QZZV4", "role": "final_copy_reader", "is_in_person": false, "order": 1, "inputs": [...] }, { "email": "", "label": "signer1", "public_id": "4Z8QZZV4", "role": "signer", "is_in_person": false, "order": 1, "inputs": [...] }, { "email": "", "label": "signer2", "public_id": "13VK8794", "role": "signer", "is_in_person": false, "order": 1, "inputs": [ { "document_tag_id": "signer2_full_name", "id": "da431975-55c5-4629-86ae-3fb12dda1386", "type": "text", "text_value": null, "is_required": true, "content_type": "full_name", ... }, { "document_tag_id": null, "id": "b5a76a22-8d48-456e-a012-22a12fc91eb7", "type": "signature", ... }, { "document_tag_id": null, "id": "7e0cc4ee-b878-4739-afde-acbf69b117b2", "type": "date", "date_value": null, ... } ], } ] ... } ] ``` The response is similar to the following one (abbreviated for guide purposes). For the full response example, see Box Sign template API. You can also learn more about the specific parameters in the Create Sign Request guide. ```json theme={null} "entries": [ { "id": "6ae28666-03c4-4ac1-80db-06a90d3b1361", "name": "Contract.pdf", "parent_folder": { "id": "157064745449", "etag": "0", "type": "folder", "sequence_id": "0", "name": "My Sign Requests" }, "source_files": [ { "id": "1216382236853", "etag": "0", "type": "file", "sequence_id": "0", "sha1": "ca9c75cda0d5e3c3c9b0a1e6d42cb5e29a211ab6", "file_version": { "id": "1327286673653", "type": "file_version", "sha1": "ca9c75cda0d5e3c3c9b0a1e6d42cb5e29a211ab6" } } ], "signers": [ { "email": "", "label": "reader", "public_id": "4Z8QZZV4", "role": "final_copy_reader", "is_in_person": false, "order": 1, "inputs": [...] }, { "email": "", "label": "signer1", "public_id": "4Z8QZZV4", "role": "signer", "is_in_person": false, "order": 1, "inputs": [...] }, { "email": "", "label": "signer2", "public_id": "13VK8794", "role": "signer", "is_in_person": false, "order": 1, "inputs": [ { "document_tag_id": "signer2_full_name", "id": "da431975-55c5-4629-86ae-3fb12dda1386", "type": "text", "text_value": null, "is_required": true, "content_type": "full_name", ... }, { "document_tag_id": null, "id": "b5a76a22-8d48-456e-a012-22a12fc91eb7", "type": "signature", ... }, { "document_tag_id": null, "id": "7e0cc4ee-b878-4739-afde-acbf69b117b2", "type": "date", "date_value": null, ... } ], } ] ... } ] ``` ## Create the sign request Follow these steps to create sign request using a template: 1. In the request body, provide the `template_id`: ```json theme={null} { "template_id": "6ae28666-03c4-4ac1-80db-06a90d3b1361", "parent_folder": { "id": "123456789", "etag": "0", "type": "folder", "sequence_id": "0", "name": "My Sign Requests" }, ... } ``` 2. Add the signer email addresses and roles: ```json theme={null} { "template_id": "6ae28666-03c4-4ac1-80db-06a90d3b1361", "parent_folder": { "id": "157064745449", "etag": "0", "type": "folder", "sequence_id": "0", "name": "My Sign Requests" }, "signers": [ { "email": "signer1@sample.com", "role": "signer" }, { "email": "signer2@sample.com", "role": "signer" } ] } ``` 3. Add the `prefill_tags` to populate the fields. Make sure the signer order is the same as the one displayed on the template. If the template had `signer1` first and then `signer2`, the `POST` request must reflect the same order to assign the proper signers. ```json theme={null} { "template_id": "6ae28666-03c4-4ac1-80db-06a90d3b1361", "parent_folder": { "id": "123456789000", "etag": "0", "type": "folder", "sequence_id": "0", "name": "My Sign Requests" }, "signers": [ { "email": "signer1@sample.com", "role": "signer" }, { "email": "signer2@sample.com", "role": "signer" } ], "prefill_tags": [ { "document_tag_id": "signer1_full_name", "text_value": "Aaron Levie" }, { "document_tag_id": "signer2_full_name", "text_value": "Albert Einstein" } ] } ``` 4. Send the `POST` request. The response will be similar to the following: ```json theme={null} { "is_document_preparation_needed": false, ... "signers": [ { "email": "reader@sample.com", "role": "final_copy_reader", }, { "email": "signer1@sample.com", "role": "signer", }, { "email": "signer2@sample.com", "role": "signer", } ], "id": "d02fefd2-15fa-431f-a127-2b4525616ae6", "prefill_tags": [ { "document_tag_id": "signer1_full_name", "text_value": "Aaron Levie", }, { "document_tag_id": "signer2_full_name", "text_value": "Albert Einstein", } ], "source_files": [], "parent_folder": { "id": "123456789000", "type": "folder", "name": "My Sign Requests" }, "name": "Contract.pdf", "type": "sign-request", "status": "created", "sign_files": { "files": [ { "id": "123456789", "type": "file", "name": "Contract.pdf", } ], "is_ready_for_download": true }, "template_id": "6ae28666-03c4-4ac1-80db-06a90d3b1361" } ``` [docuprep]: https://support.box.com/hc/en-us/articles/4404094944915-Creating-templates [parentfolder]: /guides/box-sign/create-sign-request#parent-folder [signers]: /guides/box-sign/create-sign-request#signers # Suppress default Box Sign notifications Source: https://developer.box.com/guides/box-sign/suppress-sign-notifications Box Sign API allows you to suppress the default Box email notifications sent during the Sign workflow. ​​This feature facilitates the ownership of Box Sign notifications with the following options: * You can use a fully-customized email notification template to send emails from your domain. * Apart from emails, you can send push notifications or text messages.​ When you choose to suppress Box email notifications, your organization assumes responsibility for ensuring the delivery to Signers of all notifications at the appropriate time in the signing process and with the appropriate content, in compliance with all applicable laws and regulations, including with respect to obtaining Signer consent to the delivery methods used, if applicable. ## Using Box Sign API to suppress default notifications To suppress Box Sign email notifications, you must set the following parameters: 1. Set the `suppress_notifications` parameter in the `signers` object to `true` to turn the notifications off. 2. Set the `embed_url_external_user_id` parameter to specify the user who will not receive notifications. This configuration turns off the automatic Box Sign email notifications for a given user. As a result, you can configure and send your own notifications. ```sh theme={null} curl -i -X POST "https://api.box.com/2.0/sign_requests" \ -H "authorization: Bearer " \ -d '{ "signers": [ { "role": "signer", "email": "example_email@box.com" "suppress_notifications": true "embed_url_external_user_id": "1234" } ], "source_files": [ { "type": "file", "id": "123456789" } ], "parent_folder": { "type": "folder", "id": "0987654321" } }' ``` ## Signing Log entries When Box Sign default notifications are suppressed, the Signing Log will indicate that the sender has suppressed all Box Sign notifications. The log will also provide information on the system used for purposes of notification delivery and the user ID of the signer on your organization’s system, as provided to Box Sign through your API integration. # Enterprise-wide search Source: https://developer.box.com/guides/search/enterprise By default, a search is only performed against the content that the authenticated user has access to. In some cases, administrators might want to search against all content owned by all users. For this use-case the `scope` query parameter can be set to a value of `enterprise_content`. ```sh cURL theme={null} curl -i -X GET "https://api.box.com/2.0/search?query=sales&scope=enterprise_content" \ -H "Authorization: Bearer " ``` ```java Java theme={null} long offsetValue = 0; long limitValue = 10; BoxSearch boxSearch = new BoxSearch(api); BoxSearchParameters searchParams = new BoxSearchParameters(); searchParams.setQuery("sales"); searchParams.setScope("enterprise_content"); PartialCollection searchResults = boxSearch.searchRange(offsetValue, limitValue, searchParams); ``` ```csharp .NET theme={null} BoxCollection results = await client.SearchManager .QueryAsync("sales", mdFilters: filters, scope: "enterprise_content"); ``` ```python Python theme={null} client.search().query("sales", metadata_filters=metadata_search_filters, scope="enterprise_content") ``` ```js Node theme={null} client.search.query( 'sales', { scope: "enterprise_content" }) .then(results => { // ... }); ``` The `enterprise_content` scope can be requested by an admin through our support channels. Once this scope has been enabled for a user, it will allow that user to query for content across the entire enterprise and not only the content that they have access to. # Requesting extra fields Source: https://developer.box.com/guides/search/fields By default, the search API returns the **standard** format of a File, Folder, or Web Link. Each of these resources supports additional fields that can be requested through the `fields` query parameter. ```sh cURL theme={null} curl -i -X GET "https://api.box.com/2.0/search?query=sales&fields=name,tags" \ -H "Authorization: Bearer " ``` ```java Java theme={null} long offsetValue = 0; long limitValue = 10; BoxSearch boxSearch = new BoxSearch(api); BoxSearchParameters searchParams = new BoxSearchParameters(); searchParams.setQuery("sales"); final List fields = new ArrayList(); fields.add("name"); fields.add("tags"); searchParams.setFields(fields) PartialCollection searchResults = boxSearch.searchRange(offsetValue, limitValue, searchParams); ``` ```csharp .NET theme={null} IEnumerable fields = new List() { "name", "tags"}; BoxCollection results = await client.SearchManager .QueryAsync("sales", fields: fields); ``` ```python Python theme={null} client.search().query("sales", metadata_filters=metadata_search_filters, fields=["name", "tags"]) ``` ```js Node theme={null} client.search.query( 'sales', { fields: "name,tags" }) .then(results => { // ... }); ``` For more details on these fields, please check out the full File, full Folder, and full Web Link resources. When the `fields` parameter is used to query additional information about the items, only those fields and a few **base** fields (`id`, `type`, `name`, etc) are returned. Any fields that were originally in the response would now have to be requested explicitly. # Metadata Query Filters Source: https://developer.box.com/guides/search/metadata-filters The `GET /search` API allows for filtering search results by their associated metadata. A `mdfilters` query parameter allows a developer to specify a metadata template and the desired values to query. ```sh cURL theme={null} curl -i -X GET "https://api.box.com/2.0/search?query=sales&mdfilters=%5B%7B%22scope%22%3A%22enterprise%22%2C%22templateKey%22%3A%22contract%22%2C%22filters%22%3A%7B%22category%22%3A%22online%22%7D%7D%5D" \ -H "Authorization: Bearer " ``` ```java Java theme={null} long offsetValue = 0; long limitValue = 10; BoxSearch boxSearch = new BoxSearch(api); BoxSearchParameters searchParams = new BoxSearchParameters(); searchParams.setQuery("sales"); BoxMetadataFilter bmf = new BoxMetadataFilter(); bmf.setScope("enterprise"); bmf.setTemplateKey("contract"); bmf.setFilter("category", "online") searchParams.setMetadataFilter(bmf) PartialCollection searchResults = boxSearch.searchRange(offsetValue, limitValue, searchParams); ``` ```csharp .NET theme={null} var filter = new { category = "online" }; var filters = new List() { new BoxMetadataFilterRequest() { Scope = "enterprise", TemplateKey = "contract", Filters: filter } }; BoxCollection results = await client.SearchManager .QueryAsync("sales", mdFilters: filters); ``` ```python Python theme={null} from boxsdk.object.search import MetadataSearchFilter, MetadataSearchFilters metadata_search_filter = MetadataSearchFilter(scope='enterprise', template_key='contract') metadata_search_filter.add_value_based_filter(field_key='category', value='online') metadata_search_filters = MetadataSearchFilters() metadata_search_filters.add_filter(metadata_search_filter) client.search().query("sales", metadata_filters=metadata_search_filters) ``` ```js Node theme={null} client.search.query( 'sales', { mdfilters: [ { scope: 'enterprise', templateKey: 'contract', filters: { category: 'online' } } ] }) .then(results => { // ... }); ``` This example filters a search for any content that matches the query `sales` by any item that has `enterprise.contract` metadata attached to it and where the `category` field is set to `online`. ## Introduction to Metadata Metadata allows users and applications to define and store custom data associated with files and folders. String field Metadata consists of key/value pairs that are assigned to a file or a folder. For example, an important contract may have the key/value pairs of `clientNumber: 820183` and `category: online`. The `mdfilters` query parameter allows developers to find files and folders that have a specific piece of metadata attached to them. ## Metadata Filter Syntax The `mdfilters` parameter can currently only contain one filter, although this may be expanded in the future. Each filter defines the `scope` and `templateKey` of the metadata template to filter on. ```json theme={null} [ { "scope": "enterprise", "templateKey": "contract", "filters": {} } ] ``` To get the `scope` and `templateKey` for a template, either list all metadata templates for an enterprise, or list all metadata instances on an item. With the template defined, the `filters` field accepts a few different filter formats. The format of the filter very much depends on the type of field being filtered by. ### Filter by `string` field To filter by a field of type `string` a filter will need to define the `key` of the field and the desired value to find items for. ```json theme={null} [ { "scope": "enterprise", "templateKey": "contract", "filters": { "category": "online" } } ] ``` This example will find all files and folders that have an instance of the `enterprise.contract` template applied to it, and for which the field with the key `category` is set to the value `online`. ### Filter by `float` field To filter by a field of type `float`, you will need to define define a range by specifying a `gt` (greater-than) and/or `lt` (lower-than) value. To find an exact value, you can input the same value for both `gt` and `lt`. ```json theme={null} [ { "scope": "enterprise", "templateKey": "contract", "filters": { "amount": { "gt": 10000, "lt": 20000 } } } ] ``` This example will find all files and folders that have an instance of the `enterprise.contract` template applied to it, and for which the field with the key `amount` is set to a value equal or higher than `10000` and equal or lower than `2000`. Note that `gt` and `lt` are inclusive and do not need to both be set. If you create a query based on numbers, do not exceed the range of -16777215 and +16777215. For metadata search using number attributes the index value is stored as FLOAT32. As a result, integers between -16777215 and +16777215 can be precisely represented. Any operation with numbers beyond the range can lose its precision. ### Filter by `date` field To filter by a field of type `date` a filter will need to define the `key` of the field and the desired range to find items by specifying a `gt` (greater-than) and `lt` (lower-than) value. Please note that `gt` and `lt` are inclusive. ```json theme={null} [ { "scope": "enterprise", "templateKey": "contract", "filters": { "expirationDate": { "gt": "2016-08-01T00:00:00Z", "lt": "2017-08-01T00:00:00Z" } } } ] ``` This example will find all files and folders that have an instance of the `enterprise.contract` template applied and have an `expirationDate` set to a date after or exactly `2016-08-01T00:00:00Z` and before or exactly `2017-08-01T00:00:00Z`. ### Filter by `enum` field To filter by a field of type `enum` a filter will need to define the `key` of the field and the desired value to find items for. ```json theme={null} [ { "scope": "enterprise", "templateKey": "contract", "filters": { "category": "online" } } ] ``` This example will find all files and folders that have an instance of the `enterprise.contract` template applied to it, and for which the field with the key `category` is set to the value `online`. ### Filter by `multiSelect` field To filter by a field of type `multiSelect` a filter will need to define the `key` of the field and any of the potential desired values to find items for. When performing a search, the query will essentially perform an `OR` operation to match any template where any of the provided values match this field. ```json theme={null} [ { "scope": "enterprise", "templateKey": "contract", "filters": { "category": [ "online", "enterprise" ] } } ] ``` This example will find all files and folders that have an instance of the `enterprise.contract` template applied to it, and for which the field with the key `category` is set to the value `online` or `enterprise`. # Finding recent shared links Source: https://developer.box.com/guides/search/shared-links By default, the search API only returns items that are either owned by the user or items that the user has been explicitly collaborated on. These search results do not include any items that a user might have accessed recently through a shared link. To enable shared links in the API, the `include_recent_shared_links` query parameter can be set to `true`. ```sh cURL theme={null} curl -i -X GET "https://api.box.com/2.0/search?query=sales&include_recent_shared_links=true" \ -H "Authorization: Bearer " ``` ```python Python theme={null} client.search().query("sales", metadata_filters=metadata_search_filters, include_recent_shared_links=True) ``` ```js Node theme={null} client.search.query( 'sales', { include_recent_shared_links: true }) .then(results => { // ... }); ``` Please be aware that this parameter is relatively new and therefore support for it in our Java and Windows SDKs is still a work in progress. Please be very aware that when this parameter has been set to true, the format of the response of this API changes to return a list of Search Results with Shared Links # Searching trash Source: https://developer.box.com/guides/search/trash By default, any content in the user's trash is ignored in the search results. To search the user's trash, the `trash_content` query parameter can be set to `trashed_only`. ```sh cURL theme={null} curl -i -X GET "https://api.box.com/2.0/search?query=sales&trash_content=trashed_only" \ -H "Authorization: Bearer " ``` ```java Java theme={null} long offsetValue = 0; long limitValue = 10; BoxSearch boxSearch = new BoxSearch(api); BoxSearchParameters searchParams = new BoxSearchParameters(); searchParams.setQuery("sales"); searchParams.setTrashContent("trashed_only"); PartialCollection searchResults = boxSearch.searchRange(offsetValue, limitValue, searchParams); ``` ```csharp .NET theme={null} BoxCollection results = await client.SearchManager .QueryAsync("sales", mdFilters: filters, trashContent: "trashed_only"); ``` ```python Python theme={null} client.search().query("sales", metadata_filters=metadata_search_filters, trash_content="trashed_only") ``` ```js Node theme={null} client.search.query( 'sales', { trash_content: "trashed_only" }) .then(results => { // ... }); ``` Currently the API only supports searching for content not in the trash (`non_trashed_only`, default) or in the user's trash (`trashed_only`). It is currently not possible to search for items in both locations at once. # Create or Update Shared Link Source: https://developer.box.com/guides/shared-links/create-or-update Shared links may be created or directly for file, folder, or web link resources to generate a read-only URL to permit users with the appropriate access level to view the content. You may only have one active shared link for a file, folder, or web link at any time. At minimum the information needed to create a shared link will be: * The type of resource, either a file, folder, or web link. * The ID of that resource. Optionally when creating a shared link the following may be specified: * The access level, which may be one of: * open: A public shared link. Anyone with the link may access the link. * company: Anyone within your enterprise may access the link. * collaborators: Anyone collaborated on the content may access the link. * An expiration time when the shared link will automatically disable. * A password required to access the resource. If an access level is not specified when creating a shared link it will use the default access level specified by the enterprise admin. ## Create or Update Shared Link for File To create a shared link on a file, specify the ID of the file with any optional shared link parameters. ## Create or Update Shared Link for Folder To create a shared link on a folder, specify the ID of the folder with any optional shared link parameters. ## Create or Update Shared Link for Web Link To create a shared link on a web link, specify the ID of the web link with any optional shared link parameters. # Find Item from Shared Link Source: https://developer.box.com/guides/shared-links/find-for-item The find item for shared link API is designed to accept a shared link as an input using a `BoxApi` header and return the file or folder object that the shared link is set for. To get the file or folder object associated with a shared link, supply the full shared link URL in the request. ```sh cURL theme={null} curl -i -X GET "https://api.box.com/2.0/shared_items" \ -H "authorization: Bearer " \ -H "boxapi: shared_link=https://app.box.com/s/gjasdasjhasd&shared_link_password=letmein" ``` ```typescript Node/TypeScript v10 theme={null} await userClient.sharedLinksFiles.findFileForSharedLink( {} satisfies FindFileForSharedLinkQueryParams, { boxapi: ''.concat( 'shared_link=', fileFromApi.sharedLink!.url, '&shared_link_password=Secret123@', ) as string, } satisfies FindFileForSharedLinkHeadersInput, ); ``` ```python Python v10 theme={null} user_client.shared_links_files.find_file_for_shared_link( "".join( [ "shared_link=", file_from_api.shared_link.url, "&shared_link_password=Secret123@", ] ) ) ``` ```cs .NET v10 theme={null} await userClient.SharedLinksFiles.FindFileForSharedLinkAsync(queryParams: new FindFileForSharedLinkQueryParams(), headers: new FindFileForSharedLinkHeaders(boxapi: string.Concat("shared_link=", NullableUtils.Unwrap(fileFromApi.SharedLink).Url, "&shared_link_password=Secret123@"))); ``` ```swift Swift v10 theme={null} try await userClient.sharedLinksFiles.findFileForSharedLink(queryParams: FindFileForSharedLinkQueryParams(), headers: FindFileForSharedLinkHeaders(boxapi: "\("shared_link=")\(fileFromApi.sharedLink!.url)\("&shared_link_password=Secret123@")")) ``` ```java Java v10 theme={null} userClient.getSharedLinksFiles().findFileForSharedLink(new FindFileForSharedLinkQueryParams(), new FindFileForSharedLinkHeaders(String.join("", "shared_link=", fileFromApi.getSharedLink().getUrl(), "&shared_link_password=Secret123@"))) ``` ```java Java v5 theme={null} String sharedLink = "https://app.box.com/s/abcdefghijklmnopqrstuvwxyz123456"; String password = "foo"; BoxItem.Info itemInfo = BoxItem.getSharedItem(api, sharedLink, password); ``` ```python Python v4 theme={null} file = client.get_shared_item('https://app.box.com/s/gjasdasjhasd', password='letmein') ``` ```javascript Node v4 theme={null} client.sharedItems.get( 'https://app.box.com/s/1a2b3c4d5e', null, {fields: 'type,id,parent,extension,shared_link'}, callback ); ``` Please note that when the shared link is for a folder, the response of this API does not include the list of nested items within that folder. To further traverse the items in the folder, use the same `BoxApi` header to get a nested folder's information, list the items in those folders, get a nested file's information, or download a file # Shared Links Source: https://developer.box.com/guides/shared-links/index Shared links are URLs that are generated for files, folders, web links stored in Box, which provide direct, read-only access to the resource. Shared links which are set to an open access level allow anyone with the URL to access the item, while shared links with company or collaborators access levels may only be accessed by appropriate authenticated Box users. See [here][community_create_shared_link] for all of the options and admin settings related to shared links. Users can access shared items by entering the shared link URL in a browser. Applications can also access shared items using the Shared Item API. [community_create_shared_link]: https://community.box.com/t5/Using-Shared-Links/Creating-Shared-Links/ta-p/19523 # Shared Link Permissions Source: https://developer.box.com/guides/shared-links/permissions The shared link resource has three permissions that can be updated using the `permissions` field: `can_preview`, `can_download`, `can_edit`. The `can_edit` option can only be `true` for files. Also, if the admin has restricted shared links from having edit access in the admin console, you will not be able to set `can_edit` to `true`. ```sh theme={null} curl -i -X PUT 'https://api.box.com/2.0/files/123456789?fields=shared_link' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer [ACCESS TOKEN]' \ -d '{ "shared_link": { "permissions": { "can_preview": true, "can_download": true, "can_edit": true } } }' ``` # Remove Shared Link Source: https://developer.box.com/guides/shared-links/remove A shared link may be removed from a resource by calling the update file or update folder or update weblink endpoint and setting the `shared_link` value to `null`. If you delete the shared link and create a new one, the new shared link will have a different URL and users with the old URL will not be able to access the resource. ## Remove Shared Link on File To remove a shared link on a file, specify the ID of file to set the `shared_link` field to `null`. ## Remove Shared Link on Folder To remove a shared link on a folder, specify the ID of folder to set the `shared_link` field to `null`. ## Remove Shared Link on Web Link To remove a shared link on a web link, specify the ID of web link to set the `shared_link` field to `null`. # Assign a task to a user Source: https://developer.box.com/guides/tasks/assignments/assign To assign a task to a user you will need to provide the `POST /task_assignments` API with the `id` of the task and the user's details. For the user an application can either use the user `id` or the user's login email, which Box refers to as their `login`. ```sh cURL theme={null} curl -i -X POST "https://api.box.com/2.0/task_assignments" \ -H "authorization: Bearer " \ -H "content-type: application/json" \ -d '{ "task": { "id": "11446498", "type": "task" }, "assign_to": { "id": "4823213" } }' ``` ```typescript Node/TypeScript v10 theme={null} await client.taskAssignments.createTaskAssignment({ task: new CreateTaskAssignmentRequestBodyTaskField({ type: 'task' as CreateTaskAssignmentRequestBodyTaskTypeField, id: task.id!, }), assignTo: { id: currentUser.id, } satisfies CreateTaskAssignmentRequestBodyAssignToField, } satisfies CreateTaskAssignmentRequestBody); ``` ```python Python v10 theme={null} client.task_assignments.create_task_assignment( CreateTaskAssignmentTask(type=CreateTaskAssignmentTaskTypeField.TASK, id=task.id), CreateTaskAssignmentAssignTo(id=current_user.id), ) ``` ```csharp .NET v10 theme={null} await client.TaskAssignments.CreateTaskAssignmentAsync(requestBody: new CreateTaskAssignmentRequestBody(task: new CreateTaskAssignmentRequestBodyTaskField(type: CreateTaskAssignmentRequestBodyTaskTypeField.Task, id: NullableUtils.Unwrap(task.Id)), assignTo: new CreateTaskAssignmentRequestBodyAssignToField() { Id = currentUser.Id })); ``` ```swift Swift v10 theme={null} try await client.taskAssignments.createTaskAssignment(requestBody: CreateTaskAssignmentRequestBody(task: CreateTaskAssignmentRequestBodyTaskField(type: CreateTaskAssignmentRequestBodyTaskTypeField.task, id: task.id!), assignTo: CreateTaskAssignmentRequestBodyAssignToField(id: currentUser.id))) ``` ```java Java v10 theme={null} client.getTaskAssignments().createTaskAssignment(new CreateTaskAssignmentRequestBody(new CreateTaskAssignmentRequestBodyTaskField.Builder(task.getId()).type(CreateTaskAssignmentRequestBodyTaskTypeField.TASK).build(), new CreateTaskAssignmentRequestBodyAssignToField.Builder().id(currentUser.getId()).build())) ``` ```java Java v5 theme={null} BoxUser user = new BoxUser(api, "user-id") BoxTask task = new BoxTask(api, "id"); task.addAssignment(user); ``` ```py Python v4 theme={null} user = client.user(user_id='11111') assignment = client.task(task_id='12345').assign(user) print(f'Assignment ID is {assignment.id} and is assigned to user {assignment.assigned_to.name}') ``` ```csharp .NET v6 theme={null} // Assign task 11111 to user 22222 var assignmentParams = new BoxTaskAssignmentRequest() { Task = new BoxTaskRequest() { Id = "11111" }, AssignTo = new BoxAssignmentRequest() { Id = "22222" } }; BoxTaskAssignment assignment = await client.TasksManager.CreateTaskAssignmentAsync(assignmentParams); ``` ```js Node v4 theme={null} // Assign task 11111 to user 22222 var taskID = '11111'; var userID = '22222'; client.tasks.assignByUserID(taskID, userID) .then(assignment => { /* assignment -> { type: 'task_assignment', id: '12345', item: { type: 'file', id: '33333', sequence_id: '0', etag: '0', sha1: '7840095ee096ee8297676a138d4e316eabb3ec96', name: 'script.js' }, assigned_to: { type: 'user', id: '22222', name: 'Sample Assignee', login: 'assignee@exmaple.com' }, message: null, completed_at: null, assigned_at: '2013-05-10T11:43:41-07:00', reminded_at: null, resolution_state: 'incomplete', assigned_by: { type: 'user', id: '33333', name: 'Example User', login: 'user@example.com' } } */ }); ``` # Notifications When creating a task an email notification is sent to the user who the task is assigned to. # Permissions Both the user assigning the task and the user the task is being assigned to needs to be a collaborator on the file. # Change task assignment state Source: https://developer.box.com/guides/tasks/assignments/change-state To update a task assignment's state call the `PUT /tasks/:task_id/assignments` API and include a `resolution_state`, such as `completed`, `incomplete`, `approved`, or `rejected`. ```sh cURL theme={null} curl -i -X PUT "https://api.box.com/2.0/task_assignments/12345" \ -H "authorization: Bearer " \ -H "content-type: application/json" \ -d '{ "message": "New message", "resolution_state": "completed" }' ``` ```typescript Node/TypeScript v10 theme={null} await client.taskAssignments.updateTaskAssignmentById(taskAssignment.id!, { requestBody: { message: 'updated message', resolutionState: 'approved' as UpdateTaskAssignmentByIdRequestBodyResolutionStateField, } satisfies UpdateTaskAssignmentByIdRequestBody, } satisfies UpdateTaskAssignmentByIdOptionalsInput); ``` ```python Python v10 theme={null} client.task_assignments.update_task_assignment_by_id( task_assignment.id, message="updated message", resolution_state=UpdateTaskAssignmentByIdResolutionState.APPROVED, ) ``` ```csharp .NET v10 theme={null} await client.TaskAssignments.UpdateTaskAssignmentByIdAsync(taskAssignmentId: NullableUtils.Unwrap(taskAssignment.Id), requestBody: new UpdateTaskAssignmentByIdRequestBody() { Message = "updated message", ResolutionState = UpdateTaskAssignmentByIdRequestBodyResolutionStateField.Approved }); ``` ```swift Swift v10 theme={null} try await client.taskAssignments.updateTaskAssignmentById(taskAssignmentId: taskAssignment.id!, requestBody: UpdateTaskAssignmentByIdRequestBody(message: "updated message", resolutionState: UpdateTaskAssignmentByIdRequestBodyResolutionStateField.approved)) ``` ```java Java v10 theme={null} client.getTaskAssignments().updateTaskAssignmentById(taskAssignment.getId(), new UpdateTaskAssignmentByIdRequestBody.Builder().message("updated message").resolutionState(UpdateTaskAssignmentByIdRequestBodyResolutionStateField.APPROVED).build()) ``` ```java Java v5 theme={null} String assignmentID = "12345"; BoxTaskAssignment taskAssignment = new BoxTaskAssignment(api, assignmentID); BoxTaskAssignment.Info info = taskAssignment.getInfo(); info.setResolutionState(BoxTaskAssignment.ResolutionState.APPROVED); taskAssignment.updateInfo(info); ``` ```py Python v4 theme={null} from boxsdk.object.task_assignment import ResolutionState updated_task = {'resolution_state': ResolutionState.APPROVED} updated_assignment = client.task_assignment(assignment_id='12345').update_info(data=updated_task) print(f'Assignment ID is {updated_assignment.id} and resolution state is {updated_assignment.resolution_state}') ``` ```csharp .NET v6 theme={null} var requestParams = new BoxTaskAssignmentUpdateRequest() { Id = "12345", ResolutionState = ResolutionStateType.approved }; BoxTaskAssignment updatedAssignment = await client.TasksManager.UpdateTaskAssignmentAsync(requestParams); ``` ```js Node v4 theme={null} // Complete a task client.tasks.updateAssignment( '12345', { message: 'Done!', resolution_state: client.tasks.resolutionStates.COMPLETE }) .then(assignment => { /* assignment -> { type: 'task_assignment', id: '12345', item: { type: 'file', id: '33333', sequence_id: '0', etag: '0', sha1: '7840095ee096ee8297676a138d4e316eabb3ec96', name: 'script.js' }, assigned_to: { type: 'user', id: '22222', name: 'Sample Assignee', login: 'assignee@exmaple.com' }, message: 'Done!', completed_at: null, assigned_at: '2013-05-10T11:43:41-07:00', reminded_at: null, resolution_state: 'complete', assigned_by: { type: 'user', id: '33333', name: 'Example User', login: 'user@example.com' } } */ }); ``` ## Resolution states Box currently supports two types of tasks defined by the `action` value: `review` tasks and `complete` tasks. The type of task determines the possible resolution states a task can be in and the interface shown to a user in the web and mobile apps. | Task action | Possible resolution states | | ----------- | ------------------------------------ | | `review` | `incomplete`, `approved`, `rejected` | | `complete` | `incomplete`, `complete` | A `review` task starts out in an `incomplete` state and can be marked as `incomplete`, `approved`, or `rejected`. In the user interface a user is provided with a text box and an pair of buttons to approve or reject the task. A `complete` task starts out in an `incomplete` state and can be marked `incomplete` or `completed`. Once a this task is marked completed, no further changes can be made to the task's state. In the user interface a user is provided with a text box and an button to mark the task as completed. # Get task assignment information Source: https://developer.box.com/guides/tasks/assignments/get To get information about an assigned task, call the `GET /tasks/:task_id/assignments` API with the `id` of the task assignment. ```sh cURL theme={null} curl -i -X GET "https://api.box.com/2.0/task_assignments/12345" \ -H "authorization: Bearer " ``` ```typescript Node/TypeScript v10 theme={null} await client.taskAssignments.getTaskAssignmentById(taskAssignment.id!); ``` ```python Python v10 theme={null} client.task_assignments.get_task_assignment_by_id(task_assignment.id) ``` ```csharp .NET v10 theme={null} await client.TaskAssignments.GetTaskAssignmentByIdAsync(taskAssignmentId: NullableUtils.Unwrap(taskAssignment.Id)); ``` ```swift Swift v10 theme={null} try await client.taskAssignments.getTaskAssignmentById(taskAssignmentId: taskAssignment.id!) ``` ```java Java v10 theme={null} client.getTaskAssignments().getTaskAssignmentById(taskAssignment.getId()) ``` ```java Java v5 theme={null} String assignmentID = "4256974"; BoxTaskAssignment.Info assignmentInfo = new BoxTaskAssignment(api, assignmentID).getInfo(); ``` ```py Python v4 theme={null} assignment= client.task_assignment('12345').get() print(f'Assignment ID is {assignment.id} and assignment type is {assignment.type}') ``` ```csharp .NET v6 theme={null} BoxTaskAssignment assignment = await client.TasksManager.GetTaskAssignmentAsync("12345"); ``` ```js Node v4 theme={null} client.tasks.getAssignment('12345') .then(assignment => { /* assignment -> { type: 'task_assignment', id: '12345', item: { type: 'file', id: '33333', sequence_id: '0', etag: '0', sha1: '7840095ee096ee8297676a138d4e316eabb3ec96', name: 'script.js' }, assigned_to: { type: 'user', id: '22222', name: 'Sample Assignee', login: 'assignee@exmaple.com' }, message: null, completed_at: null, assigned_at: '2013-05-10T11:43:41-07:00', reminded_at: null, resolution_state: 'incomplete', assigned_by: { type: 'user', id: '33333', name: 'Example User', login: 'user@example.com' } } */ }); ``` # Assigning tasks Source: https://developer.box.com/guides/tasks/assignments/index When a task is delegated to a user in Box it creates a task assignment. A task assignment is a request for that user to complete the task. The way a task is resolved depends on the `action` type of a task and the `resolution_state` used to define how a task is resolved. # List a task's assignments Source: https://developer.box.com/guides/tasks/assignments/list To list all of the assignments for a specific tasks, call the `GET /tasks/:task_id/assignments` with the task `id`. ```sh cURL theme={null} curl -i -X GET "https://api.box.com/2.0/task_assignments/12345" \ -H "authorization: Bearer " ``` ```typescript Node/TypeScript v10 theme={null} await client.taskAssignments.getTaskAssignmentById(taskAssignment.id!); ``` ```python Python v10 theme={null} client.task_assignments.get_task_assignment_by_id(task_assignment.id) ``` ```csharp .NET v10 theme={null} await client.TaskAssignments.GetTaskAssignmentByIdAsync(taskAssignmentId: NullableUtils.Unwrap(taskAssignment.Id)); ``` ```swift Swift v10 theme={null} try await client.taskAssignments.getTaskAssignmentById(taskAssignmentId: taskAssignment.id!) ``` ```java Java v10 theme={null} client.getTaskAssignments().getTaskAssignmentById(taskAssignment.getId()) ``` ```java Java v5 theme={null} String assignmentID = "4256974"; BoxTaskAssignment.Info assignmentInfo = new BoxTaskAssignment(api, assignmentID).getInfo(); ``` ```py Python v4 theme={null} assignment= client.task_assignment('12345').get() print(f'Assignment ID is {assignment.id} and assignment type is {assignment.type}') ``` ```csharp .NET v6 theme={null} BoxTaskAssignment assignment = await client.TasksManager.GetTaskAssignmentAsync("12345"); ``` ```js Node v4 theme={null} client.tasks.getAssignment('12345') .then(assignment => { /* assignment -> { type: 'task_assignment', id: '12345', item: { type: 'file', id: '33333', sequence_id: '0', etag: '0', sha1: '7840095ee096ee8297676a138d4e316eabb3ec96', name: 'script.js' }, assigned_to: { type: 'user', id: '22222', name: 'Sample Assignee', login: 'assignee@exmaple.com' }, message: null, completed_at: null, assigned_at: '2013-05-10T11:43:41-07:00', reminded_at: null, resolution_state: 'incomplete', assigned_by: { type: 'user', id: '33333', name: 'Example User', login: 'user@example.com' } } */ }); ``` # Unassign a task Source: https://developer.box.com/guides/tasks/assignments/unassign To unassign a task, you will need to provide the `DELETE /task_assignments` API with the `id` of the task assignment. ```sh cURL theme={null} curl -i -X DELETE "https://api.box.com/2.0/task_assignments/12345" \ -H "authorization: Bearer " ``` ```typescript Node/TypeScript v10 theme={null} await client.taskAssignments.deleteTaskAssignmentById(taskAssignment.id!); ``` ```python Python v10 theme={null} client.task_assignments.delete_task_assignment_by_id(task_assignment.id) ``` ```csharp .NET v10 theme={null} await client.TaskAssignments.DeleteTaskAssignmentByIdAsync(taskAssignmentId: NullableUtils.Unwrap(taskAssignment.Id)); ``` ```swift Swift v10 theme={null} try await client.taskAssignments.deleteTaskAssignmentById(taskAssignmentId: taskAssignment.id!) ``` ```java Java v10 theme={null} client.getTaskAssignments().deleteTaskAssignmentById(taskAssignment.getId()) ``` ```java Java v5 theme={null} BoxTaskAssignment taskAssignment = new BoxTaskAssignment(api, "id"); taskAssignment.delete(); ``` ```py Python v4 theme={null} client.task_assignment(assignment_id='12345').delete() print('The task assignment was successfully delete!') ``` ```csharp .NET v6 theme={null} await client.TasksManager.DeleteTaskAssignmentAsync("12345"); ``` ```js Node v4 theme={null} client.tasks.deleteAssignment('12345') .then(() => { // deletion succeeded — no value returned }); ``` # Permissions The user deleting the assignment needs to be a collaborator on the file. # Change an assignment's message Source: https://developer.box.com/guides/tasks/assignments/update-message To update a task assignment's message call the `PUT /tasks/:task_id/assignments` API, and include the new `message` for the task assignment. # Create a task Source: https://developer.box.com/guides/tasks/create To create a task, you will need to provide the `POST /tasks` API with the `action` for the task, as well as an `item` to represent the file to add the task to. ```sh cURL theme={null} curl -i -X POST "https://api.box.com/2.0/tasks" \ -H "authorization: Bearer " \ -H "content-type: application/json" \ -d '{ "item": { "id": "11446498", "type": "file" }, "action": "review" }' ``` ```typescript Node/TypeScript v10 theme={null} await client.tasks.createTask({ item: { type: 'file' as CreateTaskRequestBodyItemTypeField, id: file.id, } satisfies CreateTaskRequestBodyItemField, message: 'test message', dueAt: dateTime, action: 'review' as CreateTaskRequestBodyActionField, completionRule: 'all_assignees' as CreateTaskRequestBodyCompletionRuleField, } satisfies CreateTaskRequestBody); ``` ```python Python v10 theme={null} client.tasks.create_task( CreateTaskItem(type=CreateTaskItemTypeField.FILE, id=file.id), action=CreateTaskAction.REVIEW, message="test message", due_at=date_time, completion_rule=CreateTaskCompletionRule.ALL_ASSIGNEES, ) ``` ```csharp .NET v10 theme={null} await client.Tasks.CreateTaskAsync(requestBody: new CreateTaskRequestBody(item: new CreateTaskRequestBodyItemField() { Type = CreateTaskRequestBodyItemTypeField.File, Id = file.Id }) { Message = "test message", DueAt = dateTime, Action = CreateTaskRequestBodyActionField.Review, CompletionRule = CreateTaskRequestBodyCompletionRuleField.AllAssignees }); ``` ```swift Swift v10 theme={null} try await client.tasks.createTask(requestBody: CreateTaskRequestBody(item: CreateTaskRequestBodyItemField(type: CreateTaskRequestBodyItemTypeField.file, id: file.id), message: "test message", dueAt: dateTime, action: CreateTaskRequestBodyActionField.review, completionRule: CreateTaskRequestBodyCompletionRuleField.allAssignees)) ``` ```java Java v10 theme={null} client.getTasks().createTask(new CreateTaskRequestBody.Builder(new CreateTaskRequestBodyItemField.Builder().id(file.getId()).type(CreateTaskRequestBodyItemTypeField.FILE).build()).action(CreateTaskRequestBodyActionField.REVIEW).message("test message").dueAt(dateTime).completionRule(CreateTaskRequestBodyCompletionRuleField.ALL_ASSIGNEES).build()) ``` ```java Java v5 theme={null} BoxFile file = new BoxFile(api, "id"); Date dueAt = new Date(); file.addTask(BoxTask.Action.REVIEW, "Please review this file.", dueAt); ``` ```py Python v4 theme={null} message = 'Please review this' due_at = "2014-04-03T11:09:43-07:00" task = client.file(file_id='11111').create_task(message, due_at) print(f'Task message is {task.message} and it is due at {task.due_at}') ``` ```csharp .NET v6 theme={null} var taskParams = new BoxTaskCreateRequest() { Item = new BoxRequestEntity() { Type = BoxType.file, Id = "11111" }, Message = "Please review!" }; BoxTask task = await client.TasksManager.CreateTaskAsync(taskParams); ``` ```js Node v4 theme={null} var options = { message: 'Please review for publication!', due_at: '2014-04-03T11:09:43-07:00' }; client.tasks.create('22222', options) .then(task => { /* task -> { type: 'task', id: '11111', item: { type: 'file', id: '22222', sequence_id: '0', etag: '0', sha1: '0bbd79a105c504f99573e3799756debba4c760cd', name: 'box-logo.png' }, due_at: '2014-04-03T11:09:43-07:00', action: 'review', message: 'Please review for publication!', task_assignment_collection: { total_count: 0, entries: [] }, is_completed: false, created_by: { type: 'user', id: '33333', name: 'Example User', login: 'user@example.com' }, created_at: '2013-04-03T11:12:54-07:00' } */ }); ``` ## Task actions Box currently supports two types of tasks defined by the `action` value: `review` tasks and `complete` tasks. The type of task determines the possible resolution states a task can be in and the interface shown to a user in the web and mobile apps. | Task action | Possible resolution states | | ----------- | ------------------------------------ | | `review` | `incomplete`, `approved`, `rejected` | | `complete` | `incomplete`, `complete` | A `review` task starts out in an `incomplete` state and can be marked as `incomplete`, `approved`, or `rejected`. In the user interface a user is provided with a text box and an pair of buttons to approve or reject the task. A `complete` task starts out in an `incomplete` state and can be marked `incomplete` or `completed`. Once a this task is marked completed, no further changes can be made to the task's state. In the user interface a user is provided with a text box and an button to mark the task as completed. ## Completion rules A task on a file can be assigned to more than one collaborator on the file, and a task has a `completion_rule` that can be used to define if all users who've been assigned the task (`all_assignees`) or only one assignee (`any_assignee`) need to complete the task. # Delete a task Source: https://developer.box.com/guides/tasks/delete To remove a task, call the `DELETE /tasks/:task_id` API with the `id` of the task. ```sh cURL theme={null} curl -i -X DELETE "https://api.box.com/2.0/tasks/12345" \ -H "authorization: Bearer " ``` ```typescript Node/TypeScript v10 theme={null} await client.tasks.deleteTaskById(task.id!); ``` ```python Python v10 theme={null} client.tasks.delete_task_by_id(task.id) ``` ```csharp .NET v10 theme={null} await client.Tasks.DeleteTaskByIdAsync(taskId: NullableUtils.Unwrap(task.Id)); ``` ```swift Swift v10 theme={null} try await client.tasks.deleteTaskById(taskId: task.id!) ``` ```java Java v10 theme={null} client.getTasks().deleteTaskById(task.getId()) ``` ```java Java v5 theme={null} BoxTask task = new BoxTask(api, "id"); task.delete(); ``` ```py Python v4 theme={null} client.client.task('12345').delete() print('The task was successfully delete!') ``` ```csharp .NET v6 theme={null} await client.TasksManager.DeleteTaskAsync("11111"); ``` ```js Node v4 theme={null} client.tasks.delete('11111') .then(() => { // deletion succeeded — no value returned }); ``` # Lists all tasks for a file Source: https://developer.box.com/guides/tasks/for-file To list all of the tasks for a specific file, call the `GET /files/:id/tasks` with the `id` of the file. ```sh cURL theme={null} curl -i -X GET "https://api.box.com/2.0/files/12345/tasks" \ -H "authorization: Bearer " ``` ```typescript Node/TypeScript v10 theme={null} await client.tasks.getFileTasks(file.id); ``` ```python Python v10 theme={null} client.tasks.get_file_tasks(file.id) ``` ```csharp .NET v10 theme={null} await client.Tasks.GetFileTasksAsync(fileId: file.Id); ``` ```swift Swift v10 theme={null} try await client.tasks.getFileTasks(fileId: file.id) ``` ```java Java v10 theme={null} client.getTasks().getFileTasks(file.getId()) ``` ```java Java v5 theme={null} BoxFile file = new BoxFile(api, "id"); List tasks = file.getTasks(); ``` ```py Python v4 theme={null} tasks = client.file(file_id='11111').get_tasks() for task in tasks: print(f'Task ID is {task.id} and the type is {task.type}') ``` ```csharp .NET v6 theme={null} BoxCollection tasks = await client.FilesManager.FilesManager.GetFileTasks("11111"); ``` ```js Node v4 theme={null} client.files.getTasks('11111') .then(tasks => { /* tasks -> { total_count: 1, entries: [ { type: 'task', id: '22222', item: { type: 'file', id: '11111', sequence_id: '6', etag: '6', sha1: '81cc829fb8366fcfc108aa6c5a9bde01a6a10c16', name: 'box-logo.png' }, due_at: null } ] } */ }); ``` # Get information about a task Source: https://developer.box.com/guides/tasks/get To get information about an assigned task, call the `GET /tasks/:task_id` API with the `id` of the task. ```sh cURL theme={null} curl -i -X GET "https://api.box.com/2.0/tasks/12345" \ -H "authorization: Bearer " ``` ```typescript Node/TypeScript v10 theme={null} await client.tasks.getTaskById(task.id!); ``` ```python Python v10 theme={null} client.tasks.get_task_by_id(task.id) ``` ```csharp .NET v10 theme={null} await client.Tasks.GetTaskByIdAsync(taskId: NullableUtils.Unwrap(task.Id)); ``` ```swift Swift v10 theme={null} try await client.tasks.getTaskById(taskId: task.id!) ``` ```java Java v10 theme={null} client.getTasks().getTaskById(task.getId()) ``` ```java Java v5 theme={null} BoxTask task = new BoxTask(api, "id"); BoxTask.Info info = task.getInfo(); ``` ```py Python v4 theme={null} task = client.task(task_id='12345').get() print(f'Task ID is {task.id} and the type is {task.type}') ``` ```csharp .NET v6 theme={null} BoxTask task = await client.TasksManager.GetTaskAsync("11111"); ``` ```js Node v4 theme={null} client.tasks.get('11111') .then(task => { /* task -> { type: 'task', id: '11111', item: { type: 'file', id: '22222', sequence_id: '0', etag: '0', sha1: '0bbd79a105c504f99573e3799756debba4c760cd', name: 'box-logo.png' }, due_at: '2014-04-03T11:09:43-07:00', action: 'review', message: 'Please review for publication!', task_assignment_collection: { total_count: 0, entries: [] }, is_completed: false, created_by: { type: 'user', id: '33333', name: 'Example User', login: 'user@example.com' }, created_at: '2013-04-03T11:12:54-07:00' } */ }); ``` # Tasks Source: https://developer.box.com/guides/tasks/index Tasks allow users to request collaborators on a file to review a file or complete a piece of work. Tasks can be used by developers to create file-centric workflows. Learn more about tasks from the [**Adding Comments and Tasks**][community] article on our support site. Box Tasks in UI ## Task actions Box currently supports two types of tasks defined by the `action` value: `review` tasks and `complete` tasks. The type of task determines the possible resolution states a task can be in and the interface shown to a user in the web and mobile apps. | Task action | Possible resolution states | | ----------- | ------------------------------------ | | `review` | `incomplete`, `approved`, `rejected` | | `complete` | `incomplete`, `complete` | A `review` task starts out in an `incomplete` state and can be marked as `incomplete`, `approved`, or `rejected`. In the user interface a user is provided with a text box and an pair of buttons to approve or reject the task. A `complete` task starts out in an `incomplete` state and can be marked `incomplete` or `completed`. Once a this task is marked completed, no further changes can be made to the task's state. In the user interface a user is provided with a text box and an button to mark the task as completed. ## Completion rules A task on a file can be assigned to more than one collaborator on the file, and a task has a `completion_rule` that can be used to define if all users who've been assigned the task (`all_assignees`) or only one assignee (`any_assignee`) need to complete the task. [community]: https://support.box.com/hc/en-us/articles/360043695954-Adding-Comments-and-Tasks # Make changes to an existing task Source: https://developer.box.com/guides/tasks/update To update a task in Box you will need to call the `PUT /tasks/:task_id` API with the ID of the task. This API can be used to change the `action` type of the task, add a `message`, or change the due date. ```sh cURL theme={null} curl -i -X PUT "https://api.box.com/2.0/tasks/12345" \ -H "authorization: Bearer " \ -H "content-type: application/json" \ -d '{ "action": "review" }' ``` ```typescript Node/TypeScript v10 theme={null} await client.tasks.updateTaskById(task.id!, { requestBody: { message: 'updated message', } satisfies UpdateTaskByIdRequestBody, } satisfies UpdateTaskByIdOptionalsInput); ``` ```python Python v10 theme={null} client.tasks.update_task_by_id(task.id, message="updated message") ``` ```csharp .NET v10 theme={null} await client.Tasks.UpdateTaskByIdAsync(taskId: NullableUtils.Unwrap(task.Id), requestBody: new UpdateTaskByIdRequestBody() { Message = "updated message" }); ``` ```swift Swift v10 theme={null} try await client.tasks.updateTaskById(taskId: task.id!, requestBody: UpdateTaskByIdRequestBody(message: "updated message")) ``` ```java Java v10 theme={null} client.getTasks().updateTaskById(task.getId(), new UpdateTaskByIdRequestBody.Builder().message("updated message").build()) ``` ```java Java v5 theme={null} BoxTask task = new BoxTask(api, "id"); BoxTask.Info info = task.new Info(); info.setMessage("An edited message."); task.updateInfo(info); ``` ```py Python v4 theme={null} task_update = {'message': 'New Message', 'due_at': '2014-04-03T11:09:43-10:00'} updated_task = client.task(task_id='12345').update_info(data=task_update) print(f'New task message is {updated_task.message} and the new due time is {updated_task.due_at}') ``` ```csharp .NET v6 theme={null} var updates = new BoxTaskUpdateRequest() { Id = "22222", Message = "Could you please review this?" }; BoxTask updatedTask = await client.TasksManager.UpdateTaskAsync(updates); ``` ```js Node v4 theme={null} client.tasks.update('11111', { message: 'Could you please review?' }) .then(task => { /* task -> { type: 'task', id: '11111', item: { type: 'file', id: '22222', sequence_id: '0', etag: '0', sha1: '0bbd79a105c504f99573e3799756debba4c760cd', name: 'box-logo.png' }, due_at: '2014-04-03T11:09:43-07:00', action: 'review', message: 'Could you please review?', task_assignment_collection: { total_count: 0, entries: [] }, is_completed: false, created_by: { type: 'user', id: '33333', name: 'Example User', login: 'user@example.com' }, created_at: '2013-04-03T11:12:54-07:00' } */ }); ``` ## Task actions Box currently supports two types of tasks defined by the `action` value: `review` tasks and `complete` tasks. The type of task determines the possible resolution states a task can be in and the interface shown to a user in the web and mobile apps. | Task action | Possible resolution states | | ----------- | ------------------------------------ | | `review` | `incomplete`, `approved`, `rejected` | | `complete` | `incomplete`, `complete` | A `review` task starts out in an `incomplete` state and can be marked as `incomplete`, `approved`, or `rejected`. In the user interface a user is provided with a text box and an pair of buttons to approve or reject the task. A `complete` task starts out in an `incomplete` state and can be marked `incomplete` or `completed`. Once a this task is marked completed, no further changes can be made to the task's state. In the user interface a user is provided with a text box and an button to mark the task as completed. ## Completion rules A task on a file can be assigned to more than one collaborator on the file, and a task has a `completion_rule` that can be used to define if all users who've been assigned the task (`all_assignees`) or only one assignee (`any_assignee`) need to complete the task. # Trash Source: https://developer.box.com/guides/trash/index Before items are deleted they might end up in a user's trash. The trash can be managed by a user through any of the Box apps, and by an application via the API. ## Two-stage Deletion Process Box uses a two-stage process to remove or **trash** [files], [folders], and [web links] before permanently deleting them. By default, items can be restored after they are **trashed** within a 30 day time frame before they are **purged**. The purge window can be modified by an enterprise administrator. More details can be found in the Box community article on [Managing Trash] [files]: /reference/delete-files-id [folders]: /reference/delete-folders-id [web links]: /reference/delete-web-links-id [Managing Trash]: https://support.box.com/hc/en-us/articles/360044196093-Manage-Trash # Permanently Delete File Source: https://developer.box.com/guides/trash/permanently-delete-file Once a file has been moved to the trash, it will stay in the trash for 30 days by default before being purged. Administrators of Business or Enterprise accounts can alter the purge window. If you wish to permanently delete the file from the trash before the purge window expires, make a `DELETE` request to `/files/:file_id/trash` using the trashed file's `ID`. ```sh cURL theme={null} curl -i -X DELETE "https://api.box.com/2.0/files/12345/trash" \ -H "authorization: Bearer " ``` ```typescript Node/TypeScript v10 theme={null} await client.trashedFiles.deleteTrashedFileById(file.id); ``` ```python Python v10 theme={null} client.trashed_files.delete_trashed_file_by_id(file.id) ``` ```cs .NET v10 theme={null} await client.TrashedFiles.DeleteTrashedFileByIdAsync(fileId: file.Id); ``` ```swift Swift v10 theme={null} try await client.trashedFiles.deleteTrashedFileById(fileId: file.id) ``` ```java Java v10 theme={null} client.getTrashedFiles().deleteTrashedFileById(file.getId()) ``` ```java Java v5 theme={null} String fileID = "87398"; BoxTrash trash = new BoxTrash(api); trash.deleteFile(fileID); ``` ```python Python v4 theme={null} file_to_delete = client.file(file_id='11111') client.trash().permanently_delete_item(file_to_delete) print('The file was deleted from trash!') ``` ```cs .NET v6 theme={null} await client.FilesManager.PurgeTrashedAsync("11111"); ``` ```javascript Node v4 theme={null} client.files.deletePermanently('11111') .then(() => { // deletion succeeded — no value returned }); ``` # Permanently Delete Folder Source: https://developer.box.com/guides/trash/permanently-delete-folder Once a folder has been moved to the trash, it will stay in the trash for 30 days by default before being purged. Administrators of Business or Enterprise accounts can alter the purge window. If you wish to permanently delete the folder from the trash before the purge window expires, make a `DELETE` request to `/folders/:folder_id/trash` using the trashed folder's `ID` . ```sh cURL theme={null} curl -i -X DELETE "https://api.box.com/2.0/folders/4353455/trash" \ -H "authorization: Bearer " ``` ```typescript Node/TypeScript v10 theme={null} await client.trashedFolders.deleteTrashedFolderById(folder.id); ``` ```python Python v10 theme={null} client.trashed_folders.delete_trashed_folder_by_id(folder.id) ``` ```cs .NET v10 theme={null} await client.TrashedFolders.DeleteTrashedFolderByIdAsync(folderId: folder.Id); ``` ```swift Swift v10 theme={null} try await client.trashedFolders.deleteTrashedFolderById(folderId: folder.id) ``` ```java Java v10 theme={null} client.getTrashedFolders().deleteTrashedFolderById(folder.getId()) ``` ```java Java v5 theme={null} String folder = "123456"; BoxTrash trash = new BoxTrash(api); trash.deleteFolder(folderID); ``` ```python Python v4 theme={null} folder = client.folder(folder_id='22222') client.trash().permanently_delete_item(folder) print('The folder was deleted from trash!') ``` ```cs .NET v6 theme={null} await client.FoldersManager.PurgeTrashedFolderAsync("22222"); ``` ```javascript Node v4 theme={null} client.folders.deletePermanently('22222') .then(() => { // deletion succeeded — no value returned }); ``` # Permanently Delete Web Link Source: https://developer.box.com/guides/trash/permanently-delete-web-link Once a web link has been moved to the trash, it will stay in the trash for 30 days by default before being purged. Administrators of Business or Enterprise accounts can alter the purge window. If you wish to permanently delete the web link from the trash before the purge window expires, make a `DELETE` request to `/web_links/:web_link_id/trash` using the trashed web link's `ID`. ```sh cURL theme={null} curl -i -X DELETE "https://api.box.com/2.0/web_links/12345/trash" \ -H "authorization: Bearer " ``` ```typescript Node/TypeScript v10 theme={null} await client.trashedWebLinks.deleteTrashedWebLinkById(weblink.id); ``` ```python Python v10 theme={null} client.trashed_web_links.delete_trashed_web_link_by_id(weblink.id) ``` ```cs .NET v10 theme={null} await client.TrashedWebLinks.DeleteTrashedWebLinkByIdAsync(webLinkId: weblink.Id); ``` ```swift Swift v10 theme={null} try await client.trashedWebLinks.deleteTrashedWebLinkById(webLinkId: weblink.id) ``` ```java Java v10 theme={null} client.getTrashedWebLinks().deleteTrashedWebLinkById(weblink.getId()) ``` ```python Python v4 theme={null} web_link = client.web_link(web_link_id='33333') client.trash().permanently_delete_item(web_link) print('The web link was deleted from trash!') ``` # Restore File Source: https://developer.box.com/guides/trash/restore-file To restore a file that has been moved to the trash, but has not yet been purged, make a `POST` request to the `/files/:file_id` endpoint. This will place the file in the original folder if it is still available, or you optionally can specify a `parent` folder. ```sh cURL theme={null} curl -i -X POST "https://api.box.com/2.0/files/12345" \ -H "authorization: Bearer " ``` ```typescript Node/TypeScript v10 theme={null} await client.trashedFiles.restoreFileFromTrash(file.id); ``` ```python Python v10 theme={null} client.trashed_files.restore_file_from_trash(file.id) ``` ```cs .NET v10 theme={null} await client.TrashedFiles.RestoreFileFromTrashAsync(fileId: file.Id); ``` ```swift Swift v10 theme={null} try await client.trashedFiles.restoreFileFromTrash(fileId: file.id) ``` ```java Java v10 theme={null} client.getTrashedFiles().restoreFileFromTrash(file.getId()) ``` ```java Java v5 theme={null} String fileID = "125367"; String newName = "Presentation 2018 ORIGINAL.pptx"; String newParentID = "98765"; BoxTrash trash = new BoxTrash(api); // Avoid conflicts at the original location trash.restoreFile(fileID, newName, newParentID); ``` ```python Python v4 theme={null} file_to_restore = client.file(file_id='11111') restored_file = client.trash().restore_item(file_to_restore) print(f'File ID is {restored_file.id} and name is {restored_file.name}') ``` ```cs .NET v6 theme={null} var requestParams = new BoxFileRequest() { Name = "Name in case of conflict", Parent = new BoxRequestEntity() { // File will be placed in this folder if original location no longer exists Id = "12345" } }; BoxFile restoredFile = await client.FilesManager.RestoreTrashedAsync(requestParams); ``` ```javascript Node v4 theme={null} client.files.restoreFromTrash( '11111', { // New name in case of conflict name: 'New Name', // File will be placed in this folder if original location no longer exists parent_id: '0' }) .then(restoredFile => { /* trashedFile -> { type: 'file', id: '11111', sequence_id: '2', etag: '2', sha1: '4bd9e98652799fc57cf9423e13629c151152ce6c', name: 'Screenshot_1_30_13_6_37_PM.png', description: '', size: 163265, path_collection: { total_count: 1, entries: [ { type: 'folder', id: '0', sequence_id: null, etag: null, name: 'All Files' } ] }, created_at: '2013-01-30T18:43:56-08:00', modified_at: '2013-01-30T18:44:00-08:00', trashed_at: null, purged_at: null, content_created_at: '2013-01-30T18:43:56-08:00', content_modified_at: '2013-01-30T18:44:00-08:00', created_by: { type: 'user', id: '33333', name: 'Example User', login: 'user@example.com' }, modified_by: { type: 'user', id: '33333', name: 'Example User', login: 'user@example.com' }, owned_by: { type: 'user', id: '33333', name: 'Example User', login: 'user@example.com' }, shared_link: null, parent: { type: 'folder', id: '0', sequence_id: null, etag: null, name: 'All Files' }, item_status: 'active' } */ }); ``` # Restore Folder Source: https://developer.box.com/guides/trash/restore-folder To restore a folder that has been moved to the trash, but has not yet been purged, make a `POST` request to the `/folders/:folder_id` endpoint. This will place the folder in the original parent folder if it is still available, or you optionally can specify a `parent` folder. ```sh cURL theme={null} curl -i -X POST "https://api.box.com/2.0/folders/4353455" \ -H "authorization: Bearer " ``` ```typescript Node/TypeScript v10 theme={null} await client.trashedFolders.restoreFolderFromTrash(folder.id); ``` ```python Python v10 theme={null} client.trashed_folders.restore_folder_from_trash(folder.id) ``` ```cs .NET v10 theme={null} await client.TrashedFolders.RestoreFolderFromTrashAsync(folderId: folder.Id); ``` ```swift Swift v10 theme={null} try await client.trashedFolders.restoreFolderFromTrash(folderId: folder.id) ``` ```java Java v10 theme={null} client.getTrashedFolders().restoreFolderFromTrash(folder.getId()) ``` ```java Java v5 theme={null} String folderID = "125367"; String newName = "My Documents ORIGINAL"; String newParentID = "98765"; BoxTrash trash = new BoxTrash(api); // Avoid conflicts at the original location trash.restoreFolder(folderID, newName, newParentID); ``` ```python Python v4 theme={null} folder_to_restore = client.folder(folder_id='22222') restored_folder = client.trash().restore_item(folder_to_restore) print(f'Folder ID is {restored_folder.id} and name is {restored_folder.name}') ``` ```cs .NET v6 theme={null} var requestParams = new BoxFolderRequest() { Name = "Name in case of conflict", Parent = new BoxRequestEntity() { // Folder will be placed in this parent folder if original location no longer exists Id = "12345" } }; BoxFolder restoredFolder = await client.FoldersManager.RestoreTrashedFolderAsync(requestParams); ``` ```javascript Node v4 theme={null} client.folders.restoreFromTrash( '22222', { // New name in case of conflict name: 'New Name', // Folder will be placed in this parent folder if the original parent no longer exists parent_id: '0' }) .then(restoredFolder => { /* trashedFolder -> { type: 'folder', id: '22222', sequence_id: '1', etag: '1', name: 'Old Files', created_at: '2013-05-06T22:37:30-07:00', modified_at: '2013-05-06T22:39:08-07:00', description: '', size: 18482, path_collection: { total_count: 1, entries: [ { type: 'folder', id: '0', sequence_id: null, etag: null, name: 'All Files' } ] }, created_by: { type: 'user', id: '33333', name: 'Example User', login: 'user@example.com' }, modified_by: { type: 'user', id: '33333', name: 'Example User', login: 'user@example.com' }, trashed_at: null, purged_at: null, content_created_at: '2013-05-06T22:37:30-07:00', content_modified_at: '2013-05-06T22:39:08-07:00', owned_by: { type: 'user', id: '33333', name: 'Example User', login: 'user@example.com' }, shared_link: null, folder_upload_email: null, parent: { type: 'folder', id: '0', sequence_id: null, etag: null, name: 'All Files' }, item_status: 'active' } */ }); ``` During a folder restoration operation, part of the file tree will be locked, such as the source folder for the request and all of its descendants, as well as the destination folder. During the restoration of the folder, no other move, copy, delete, or restore operation can be performed on the locked folders. # Restore Web Link Source: https://developer.box.com/guides/trash/restore-web-link To restore a web link that has been moved to the trash, but has not yet been purged, make a `POST` request to the `/web_links/:web_link_id` endpoint. This will place the web link in the original parent folder if it is still available, you optionally can specify a `parent` folder. ```sh cURL theme={null} curl -i -X POST "https://api.box.com/2.0/web_links/12345" \ -H "authorization: Bearer " ``` ```typescript Node/TypeScript v10 theme={null} await client.trashedWebLinks.restoreWeblinkFromTrash(weblink.id); ``` ```python Python v10 theme={null} client.trashed_web_links.restore_weblink_from_trash(weblink.id) ``` ```cs .NET v10 theme={null} await client.TrashedWebLinks.RestoreWeblinkFromTrashAsync(webLinkId: weblink.Id); ``` ```swift Swift v10 theme={null} try await client.trashedWebLinks.restoreWeblinkFromTrash(webLinkId: weblink.id) ``` ```java Java v10 theme={null} client.getTrashedWebLinks().restoreWeblinkFromTrash(weblink.getId()) ``` ```python Python v4 theme={null} web_link_to_restore = client.web_link(web_link_id='33333') restored_web_link = client.trash().restore_item(web_link_to_restore) print(f'Web link ID is {restored_web_link.id} and name is {restored_web_link.name}') ``` # Preflight Check Source: https://developer.box.com/guides/uploads/check The Pre-flight check API allows an application to verify that a file will be accepted by Box before it uploads any bytes. It can both be used for new files, as well as uploading new versions of existing files. ## Checklist Preflight checks perform all the same checks as if the file was actually uploaded including: * The permission of the application and the user to upload to the folder * Any file name collisions * Any file size caps and limits * Any folder and file name restrictions * Any folder and account storage quotas ## Check for new file To perform a check for a new file, call the `OPTIONS /files/content` API with the same parameters (except for the binary content) as if uploading an actual file. ```sh cURL theme={null} curl -i -X OPTIONS "https://api.box.com/2.0/files/content" \ -H "authorization: Bearer " \ -H "content-type: application/json" \ -d '{"name":"Contract.pdf", "parent":{"id":"11446498"}}' ``` ```typescript Node/TypeScript v10 theme={null} await client.uploads.preflightFileUploadCheck({ name: newFileName, size: 1024 * 1024, parent: { id: '0' } satisfies PreflightFileUploadCheckRequestBodyParentField, } satisfies PreflightFileUploadCheckRequestBody); ``` ```python Python v10 theme={null} client.uploads.preflight_file_upload_check( name=new_file_name, size=1024 * 1024, parent=PreflightFileUploadCheckParent(id="0") ) ``` ```cs .NET v10 theme={null} await client.Uploads.PreflightFileUploadCheckAsync(requestBody: new PreflightFileUploadCheckRequestBody() { Name = newFileName, Size = 1024 * 1024, Parent = new PreflightFileUploadCheckRequestBodyParentField() { Id = "0" } }); ``` ```java Java v10 theme={null} client.getUploads().preflightFileUploadCheck(new PreflightFileUploadCheckRequestBody.Builder().name(newFileName).size(1024 * 1024).parent(new PreflightFileUploadCheckRequestBodyParentField.Builder().id("0").build()).build()) ``` ```java Java v5 theme={null} String fileName = "My Doc.pdf"; BoxFolder rootFolder = BoxFolder.getRootFolder(api); try { folder.canUpload(fileName, 98734576); // If the file upload would not have succeeded, it will not be attempted folder.uploadFile(fileContents, fileName); } catch (BoxAPIException ex) ( ) ``` ```javascript Node v4 theme={null} // Verify that uploading a 200MB file named "Preso.ppt" to folder 12345 would succeed client.files.preflightUploadFile( '12345', { name: 'Preso.ppt', size: 200000000 }, null, callback ); ``` ## Check for new file version To perform a check for a new version of a file, call the `OPTIONS /files/:id/content` API with the same parameters (except for the binary content) as if uploading an actual file. ```sh cURL theme={null} curl -i -X OPTIONS "https://api.box.com/2.0/files/12345/content" \ -H "authorization: Bearer " \ -H "content-type: application/json" \ -d '{"name":"Contract.pdf", "parent":{"id":"11446498"}}' ``` ```javascript Node v4 theme={null} // Check if uploading a larger version of this file will succeed client.files.preflightUploadNewFileVersion('87646', {size: 300000000}, null, callback); ``` ## Checks & Chunk Uploads When performing a chunked upload, performing a preflight check is not required as creating an Upload Session also performs a preflight check. ## Response codes When the API call detects any problems, a HTTP `409 Conflict` status code is returned with a message to describe the possible conflict. If no problems were discovered, it returns a HTTP `200 OK` status code and the upload can proceed. A `200 OK` response does not guarantee that the upload call will actually succeed. Pre-flight checks have show to reduce failed uploads by over 99%, yet concurrency issues still come into play when uploading a file. Highly active folders, common filenames, and accounts near their quota limits may get a `200 OK` for the preflight check, and then have a real conflict during the actual upload. ## Response body In many cases, the preflight check will return valuable data in the API response when a conflict has been detected. For example, when a name collision has been detected, the application can use the `SHA-1` that is returned in the error response to check if the existing file is identical to the one it is trying to upload. # Commit Upload Session Source: https://developer.box.com/guides/uploads/chunked/commit-session The final step in a chunked upload is to commit the session. To commit a file upload session, call the `POST /files/upload_sessions/:id/commit` with a list of uploaded parts to commit. ```sh cURL theme={null} curl -i -X POST "https://upload.box.com/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD/commit" \ -H "authorization: Bearer " \ -H "digest: sha=fpRyg5eVQletdZqEKaFlqwBXJzM=" \ -H "content-type: application/json" \ -d '{ "parts": [ { "part_id": "BFDF5379", "offset": 0, "size": 8388608, "sha1": "134b65991ed521fcfe4724b7d814ab8ded5185dc" }, { "part_id": "E8A3ED8E", "offset": 8388608, "size": 1611392, "sha1": "234b65934ed521fcfe3424b7d814ab8ded5185dc" } ], "attributes": { "content_modified_at": "2017-04-08T00:58:08Z" } }' ``` ```typescript Node/TypeScript v10 theme={null} await client.chunkedUploads.createFileUploadSessionCommit( uploadSessionId, { parts: parts } satisfies CreateFileUploadSessionCommitRequestBody, { digest: digest } satisfies CreateFileUploadSessionCommitHeadersInput, ); ``` ```python Python v10 theme={null} client.chunked_uploads.create_file_upload_session_commit( upload_session_id, parts, digest ) ``` ```cs .NET v10 theme={null} await client.ChunkedUploads.CreateFileUploadSessionCommitAsync(uploadSessionId: uploadSessionId, requestBody: new CreateFileUploadSessionCommitRequestBody(parts: parts), headers: new CreateFileUploadSessionCommitHeaders(digest: digest)); ``` ```swift Swift v10 theme={null} try await client.chunkedUploads.createFileUploadSessionCommit(uploadSessionId: uploadSessionId, requestBody: CreateFileUploadSessionCommitRequestBody(parts: parts), headers: CreateFileUploadSessionCommitHeaders(digest: digest)) ``` ```java Java v10 theme={null} client.getChunkedUploads().createFileUploadSessionCommit(uploadSessionId, new CreateFileUploadSessionCommitRequestBody(parts), new CreateFileUploadSessionCommitHeaders(digest)) ``` ```java Java v5 theme={null} //Creates the file hash byte[] digestBytes = digest.digest(); //Base64 encoding of the hash String digestStr = Base64.encode(digestBytes); //Commit the upload session. If there is a failure, abort the commit. BoxFile.Info fileInfo = session.commit(digestStr, parts, null, null, null); ``` ```python Python v4 theme={null} import hashlib sha1 = hashlib.sha1() # sha1 should have been updated with all the bytes of the file file_atributes = { 'description': 'A file uploaded via Chunked Upload', } upload_session = client.upload_session('11493C07ED3EABB6E59874D3A1EF3581') uploaded_file = upload_session.commit(sha1.digest(), file_atributes=file_atributes) print(f'Successfully uploaded file {uploaded_file.id} with description {uploaded_file.description}') ``` ```javascript Node v4 theme={null} // Finalize upload session 93D9A837B45F client.files.commitUploadSession( '93D9A837B45F', fileHash.digest('base64'), {description: 'A file I uploaded in chunks!'}, callback ); ``` Additionally, any file `attributes` can be passed along with the `parts` to further add information to the file. See the `POST /files/content` API for more details. ## Response When successful, the API returns a HTTP `201 Created` status code with a `File` object. In some cases, creating the parts might not be ready yet and the API will return a `202 Accepted` status code instead. In this case the application should check the `retry-after` header and retry committing after the number of seconds specified. # Create Upload Session Source: https://developer.box.com/guides/uploads/chunked/create-session To create an upload session, call the `POST /files/upload_sessions` API with the desired `file_name` and `folder_id` to put the file in, as well as the `file_size` of the file to be uploaded. To create a session for a new version of an existing file, call the `POST /files/:id/upload_sessions` API instead. In this case, the `file_name` and `folder_id` are only required when renaming or moving the file in the process. ## Pre-flight Check Creating an upload session also performs a preflight check, making it unnecessary to do so separately when working with chunked uploads. ## Response When a session is created successfully the response includes an Upload Session that includes a session ID, the number of parts, the part sizes, as well as links to the relevant next API endpoints to use. ```json theme={null} { "id": "F971964745A5CD0C001BBE4E58196BFD", "type": "upload_session", "session_expires_at": "2012-12-12T10:53:43-08:00", "part_size": 1024, "total_parts": 1000, "num_parts_processed": 455, "session_endpoints": { "upload_part": "https://upload.box.com/api/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD", "commit": "https://upload.box.com/api/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD/commit", "abort": "https://upload.box.com/api/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD", "list_parts": "https://upload.box.com/api/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD/parts", "status": "https://upload.box.com/api/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD", "log_event": "https://upload.box.com/api/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD/log" } } ``` The upload session defines the size of the parts to use when uploading the individual parts. # Upload All Files in Folder Source: https://developer.box.com/guides/uploads/chunked/folder Sometimes an application might want to upload all files from a folder. To do so with the SDKs and the CLI requires traversing the folder tree, finding every file and uploading it accordingly. ```csharp theme={null} using System; using System.Collections.Generic; using System.Diagnostics; using System.Dynamic; using System.IO; using System.Linq; using System.Net; using System.Net.Sockets; using System.Runtime.InteropServices; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; using Box.V2; using Box.V2.Auth; using Box.V2.Config; using Box.V2.Converter; using Box.V2.Exceptions; using Box.V2.JWTAuth; using Box.V2.Models; using Newtonsoft.Json; namespace BoxPlayground { public class Program { static void Main (string[] args) { ExecuteMainAsync ().Wait (); } const long CHUNKED_UPLOAD_MINIMUM = 200000; private static async Task ExecuteMainAsync () { var directoryName = "dotnetUploadFolder"; var parentFolderId = "0"; var files = Directory.EnumerateFiles (directoryName); using (FileStream fs = new FileStream ("./config.json", FileMode.Open)) { var session = new BoxJWTAuth (BoxConfig.CreateFromJsonFile (fs)); var client = session.AdminClient (session.AdminToken ()); var folderId = ""; try { var createdFolder = await client.FoldersManager.CreateAsync ( new BoxFolderRequest { Parent = new BoxRequestEntity { Id = parentFolderId }, Name = directoryName }); folderId = createdFolder.Id; } catch (BoxConflictException e) { folderId = e.ConflictingItems.FirstOrDefault ().Id; System.Console.WriteLine ($"Found existing folder: {folderId}"); } var fileUploadTasks = new List> (); foreach (var file in files) { fileUploadTasks.Add (Task.Run ( async () => { System.Console.WriteLine (file); var fileName = file.Split (Path.DirectorySeparatorChar) .Where ((item) => { return item != directoryName; }).FirstOrDefault (); System.Console.WriteLine (fileName); var fileInfo = new FileInfo (file); var preflightRequest = new BoxPreflightCheckRequest { Name = fileName, Size = fileInfo.Length, Parent = new BoxRequestEntity { Id = folderId } }; using (FileStream toUpload = new FileStream (file, FileMode.Open)) { try { var preflightCheck = await client.FilesManager.PreflightCheck (preflightRequest); if (toUpload.Length < CHUNKED_UPLOAD_MINIMUM) { using (SHA1 sha1 = SHA1.Create ()) { var fileUploadRequest = new BoxFileRequest { Name = fileName, Parent = new BoxRequestEntity { Id = folderId } }; var fileSHA = sha1.ComputeHash (toUpload); System.Console.WriteLine (fileSHA); return await client.FilesManager.UploadAsync (fileRequest: fileUploadRequest, stream: toUpload, contentMD5: fileSHA); } } else { return await client.FilesManager.UploadUsingSessionAsync (stream: toUpload, fileName: fileName, folderId: folderId); } } catch (BoxPreflightCheckConflictException e) { if (toUpload.Length < CHUNKED_UPLOAD_MINIMUM) { using (SHA1 sha1 = SHA1.Create ()) { var fileSHA = sha1.ComputeHash (toUpload); return await client.FilesManager.UploadNewVersionAsync (fileName: e.ConflictingItem.Name, fileId: e.ConflictingItem.Id, stream: toUpload, contentMD5: fileSHA); } } else { await client.FilesManager.UploadFileVersionUsingSessionAsync (fileId: e.ConflictingItem.Id, stream: toUpload); return await client.FilesManager.GetInformationAsync (e.ConflictingItem.Id); } } } })); } var uploaded = await Task.WhenAll (fileUploadTasks); foreach (var file in uploaded) { System.Console.WriteLine (file.Id); } } } } } ``` ```java theme={null} public class UploadAllFilesInFolder { public static final int CHUNKED_UPLOAD_MINIMUM = 20000; public static void main(String[] args) throws Exception { String directoryName = "javaUploadFolder"; Path configPath = Paths.get("config.json"); Path uploadFolderPath = Paths.get(directoryName); try (BufferedReader reader = Files.newBufferedReader(configPath, Charset.forName("UTF-8"))) { BoxConfig boxConfig = BoxConfig.readFrom(reader); BoxDeveloperEditionAPIConnection client = BoxDeveloperEditionAPIConnection.getAppEnterpriseConnection(boxConfig); String parentFolderId = "0"; String createdFolderId; BoxFolder createFolderInParentFolder = new BoxFolder(client, parentFolderId); try { BoxFolder.Info createdFolder = createFolderInParentFolder.createFolder(directoryName); System.out.println("Creating folder..."); System.out.println(createdFolder.getID()); createdFolderId = createdFolder.getID(); } catch (BoxAPIException e) { String existingFolderId = getIdFromConflict(e.getMessage()); System.out.println("Found existing folder..."); System.out.println(existingFolderId); createdFolderId = existingFolderId; } ArrayList < BoxFile.Info > uploadedFiles = new ArrayList < > (); try (DirectoryStream < Path > directory = Files.newDirectoryStream(uploadFolderPath)) { for (Path path: directory) { String fileName = path.getFileName().toString(); System.out.println(path); System.out.println(fileName); byte[] fileBytes = Files.readAllBytes(path); int fileSize = fileBytes.length; boolean useChunkedUpload = (fileSize > CHUNKED_UPLOAD_MINIMUM) ? true : false; uploadedFiles.add(uploadEachFile(client, createdFolderId, fileName, fileSize, fileBytes, useChunkedUpload)); } } for (BoxFile.Info file: uploadedFiles) { System.out.println(file.getID()); } } } private static BoxFile.Info uploadEachFile(BoxDeveloperEditionAPIConnection client, String folderId, String fileName, int fileSize, byte[] fileBytes, boolean useChunkedUpload) throws IOException, InterruptedException, NoSuchAlgorithmException { try { BoxFolder folder = new BoxFolder(client, folderId); folder.canUpload(fileName, fileSize); if (useChunkedUpload) { System.out.println("Using chunked upload..."); return folder.uploadLargeFile(new ByteArrayInputStream(fileBytes), fileName, fileSize); } else { System.out.println("Using normal upload..."); MessageDigest md = MessageDigest.getInstance("SHA-1"); try (Formatter formatter = new Formatter()) { for (byte b: md.digest(fileBytes)) { formatter.format("%02x", b); } String fileSHA = formatter.toString(); FileUploadParams fileUpload = new FileUploadParams(); fileUpload.setContent(new ByteArrayInputStream(fileBytes)); fileUpload.setSHA1(fileSHA); fileUpload.setName(fileName); return folder.uploadFile(fileUpload); } } } catch (BoxAPIException e) { if (e.getResponseCode() == 409) { // You can use the ID returned from the conflict error to continue String conflictId = getIdFromConflict(e.getResponse()); System.out.println("Found existing file: " + conflictId); BoxFile uploadFileVersion = new BoxFile(client, conflictId); if (useChunkedUpload) { System.out.println("Using chunked upload..."); return uploadFileVersion.uploadLargeFile(new ByteArrayInputStream(fileBytes), fileSize); } else { System.out.println("Using normal upload..."); MessageDigest md = MessageDigest.getInstance("SHA-1"); try (Formatter formatter = new Formatter()) { for (byte b: md.digest(fileBytes)) { formatter.format("%02x", b); } String fileSHA = formatter.toString(); uploadFileVersion.uploadVersion(new ByteArrayInputStream(fileBytes), fileSHA); return uploadFileVersion.getInfo(); } } } else { throw e; } } } private static String getIdFromConflict(String message) { String id = ""; Pattern p = Pattern.compile("\"id\":\"[0-9]+\""); Pattern p2 = Pattern.compile("[0-9]+"); Matcher m = p.matcher(message); if (m.find()) { String sub = m.group(); Matcher m2 = p2.matcher(sub); if (m2.find()) { id = m2.group(); } } return id; } } ``` ```js theme={null} "use strict"; const fs = require("fs"); const path = require("path"); const box = require("box-node-sdk"); const crypto = require("crypto"); let configFile = fs.readFileSync("config.json"); configFile = JSON.parse(configFile); let session = box.getPreconfiguredInstance(configFile); let client = session.getAppAuthClient("enterprise"); const CHUNKED_UPLOAD_MINIMUM = 200000; const parentFolderId = "0"; const directoryName = "uploadFolder"; let files = []; fs.readdirSync(directoryName).forEach(file => { files.push({ fileName: file, content: fs.readFileSync(path.join(__dirname, directoryName, file)) }); }); client.folders .create(parentFolderId, directoryName) .then(createdFolder => { console.log(createdFolder); return processFiles(client, files, createdFolder.id); }) .catch(err => { let conflictId = handleFolderConflictError(err); if (conflictId) { console.log(`Found an existing folder: ${conflictId}`); return processFiles(client, files, conflictId); } else { throw err; } }) .then(results => { console.log(results); }) .catch(err => { console.log(err); }); function processFiles(client, files, folderId) { let fileUploadPromises = []; files.forEach(file => { fileUploadPromises.push( uploadAFile(client, folderId, file.fileName, file.content) ); }); return Promise.all(fileUploadPromises); } function uploadAFile(client, folderId, fileName, toUploadFile) { return client.files .preflightUploadFile(folderId, { name: fileName, size: toUploadFile.length }) .then(preflightResults => { console.log(preflightResults); if (toUploadFile.length < CHUNKED_UPLOAD_MINIMUM) { console.log("Using normal upload..."); let fileSha = crypto .createHash("sha1") .update(toUploadFile) .digest("hex"); client.setCustomHeader("content-md5", fileSha); return client.files.uploadFile(folderId, fileName, toUploadFile); } else { console.log("Using chunked upload..."); client.setCustomHeader("content-md5", null); return client.files .getChunkedUploader( folderId, toUploadFile.length, fileName, toUploadFile ) .then(uploader => { return new Promise((resolve, reject) => { uploader.on("error", err => { reject(err); }); uploader.on("chunkUploaded", part => { console.log("Part uploaded..."); console.log(part); }); uploader.on("uploadComplete", file => { console.log("File upload complete!"); resolve(file); }); console.log("Starting chunked uploader..."); uploader.start(); }); }); } }) .catch(err => { let conflictId = handleFileConflictError(err); if (conflictId) { console.log(`Found existing file with that name: ${conflictId}`); return uploadANewFileVersion(client, conflictId, toUploadFile); } else { throw err; } }); } function uploadANewFileVersion(client, conflictId, toUploadFile) { if (toUploadFile.length < CHUNKED_UPLOAD_MINIMUM) { console.log("Using normal upload..."); let fileSha = crypto .createHash("sha1") .update(toUploadFile) .digest("hex"); client.setCustomHeader("content-md5", fileSha); // You can optionally rename a folder while uploading a new version. // let newFileName = "ubuntu-no-gui.iso"; // let options = { // name: newFileName // } // return client.files.uploadNewFileVersion(conflictId, options, toUploadFile); return client.files.uploadNewFileVersion(conflictId, toUploadFile); } else { console.log("Using chunked upload..."); // You can optionally rename a folder while uploading a new version. // let newFileName = "ubuntu-no-gui.iso"; // let options = { // name: newFileName // } // return client.files.getNewVersionChunkedUploader(conflictId, toUploadFile.length, toUploadFile, options) client.setCustomHeader("content-md5", null); return client.files .getNewVersionChunkedUploader( conflictId, toUploadFile.length, toUploadFile, null ) .then(uploader => { return new Promise((resolve, reject) => { uploader.on("error", err => { reject(err); }); uploader.on("chunkUploaded", part => { console.log("Part uploaded..."); console.log(part); }); uploader.on("uploadComplete", file => { console.log("File upload complete!"); resolve(file); }); console.log("Starting chunked uploader..."); uploader.start(); }); }); } } function handleFileConflictError(e) { if (e && e.response && e.response.body) { let errorBody = e.response.body; if (errorBody.status === 409) { if ( errorBody.context_info && errorBody.context_info.conflicts && errorBody.context_info.conflicts ) { let conflict = errorBody.context_info.conflicts; if (conflict && conflict.id) { return conflict.id; } } } } } function handleFolderConflictError(e) { if (e && e.response && e.response.body) { let errorBody = e.response.body; if (errorBody.status === 409) { if ( errorBody.context_info && errorBody.context_info.conflicts && errorBody.context_info.conflicts.length > 0 ) { let conflict = errorBody.context_info.conflicts[0]; if (conflict && conflict.id) { return conflict.id; } } } } } ``` ```sh theme={null} box folders:upload ./folder_name_to_upload --parent-folder=$folder_id ``` ## Breakdown The scripts above use the Box SDKs and the CLI to upload an entire folder. For the SDK scripts, they start by creating a directory in Box to match the local folder. After the new directory is created, it uploads all files within the directory making sure to use all available Box features to make the uploads successful. Using the Preflight API the files are checked for conflicts and size restrictions before they are uploaded. If a naming conflict is found, the script instead uploads a new version of that file. Using the the `SHA` hash of the file the scripts add a `content-md5` header on upload to make sure the file is successfully uploaded to Box without any bytes lost or tampered with. Finally, if a file size exceeds 20MB\`, the script uses the Chunked Upload feature to make sure uploads are more reliable for larger files. # Chunked Uploads Source: https://developer.box.com/guides/uploads/chunked/index The Chunked Upload API provides a way to reliably upload large files to Box by chunking them into a sequence of parts that can be uploaded individually. By using this API the application uploads a file in part, allowing it to recover from a failed request more reliably. It means an application only needs to retry the upload of a single part instead of the entire file. An additional benefit of chunked uploads is that parts can be uploaded in parallel, allowing for a potential performance improvement. ## Overview Chunked uploads require a sequence of API calls to be made. 1. **Create an upload session**: The application creates an upload session for a new file or new version of a file. The session defines the (new) name of the file, its size, and the parent folder. 2. **Upload parts**: The application uploads the separate parts of the file as chunks. 3. **Commit session**: The application commits the session, at which moment the integrity of the file is checked before it is placed in the location specified when the session was created. Most of the Box SDKs support chunked uploads out of the Box, removing the complexity from the application code. ## Restrictions The Chunked Upload API is intended for large files with a minimum size of 20MB. The API does not support uploads of files with a size smaller than this. This API does not support re-uploading or overwriting of parts in a session. Once a part has been uploaded, it is immutable. The lifetime of an upload session is 7 days. During this time, the client can upload parts at their own pace. To avoid wasting resources, and avoid potential data corruption, client should make sure that the underlying file has not been changed on disk since beginning the upload. # Upload Part Source: https://developer.box.com/guides/uploads/chunked/upload-part When you want to upload a large file, you can split it into smaller parts and upload them using the Upload Part API. ## Create Upload Session First, create an upload session. The resulting object defines the size of each part and the number of parts to upload. ```json theme={null} { "id": "F971964745A5CD0C001BBE4E58196BFD", "type": "upload_session", "session_expires_at": "2012-12-12T10:53:43-08:00", "part_size": 1024, "total_parts": 1000, "num_parts_processed": 455, "session_endpoints": { "upload_part": "https://upload.box.com/api/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD", "commit": "https://upload.box.com/api/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD/commit", "abort": "https://upload.box.com/api/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD", "list_parts": "https://upload.box.com/api/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD/parts", "status": "https://upload.box.com/api/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD", "log_event": "https://upload.box.com/api/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD/log" } } ``` ## Split File Split the file into parts to be uploaded. If you want to use the command line, use the `split` command: ```bash theme={null} split -b ``` For example: ```bash theme={null} split -b 8388608 video.mp3 videopart ``` This will result in your file divided into several files. ## Get SHA Digest To get the value for the `SHA` digest, use the following openSSL command to encode the file part: ```bash theme={null} openssl sha1 -binary | base64 ``` For example: ```bash theme={null} openssl sha1 -binary videoparta | base64 ``` The result is a base-64 encoded message used to verify the upload. ## Upload Part Upload the bytes for the part you want to upload, specifying the byte range for the part and the `SHA` digest to ensure the content is uploaded correctly. ```sh cURL theme={null} curl -i -X PUT "https://upload.box.com/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD" \ -H "authorization: Bearer " \ -H "digest: sha=fpRyg5eVQletdZqEKaFlqwBXJzM=" \ -H "content-range: bytes 8388608-16777215/445856194" \ -H "content-type: application/octet-stream" \ --data-binary @ ``` ```typescript Node/TypeScript v10 theme={null} await client.chunkedUploads.uploadFilePart( acc.uploadSessionId, generateByteStreamFromBuffer(chunkBuffer), { digest: digest, contentRange: contentRange, } satisfies UploadFilePartHeadersInput, ); ``` ```python Python v10 theme={null} client.chunked_uploads.upload_file_part( acc.upload_session_id, generate_byte_stream_from_buffer(chunk_buffer), digest, content_range, ) ``` ```cs .NET v10 theme={null} await client.ChunkedUploads.UploadFilePartAsync(uploadSessionId: acc.UploadSessionId, requestBody: Utils.GenerateByteStreamFromBuffer(buffer: chunkBuffer), headers: new UploadFilePartHeaders(digest: digest, contentRange: contentRange)); ``` ```swift Swift v10 theme={null} try await client.chunkedUploads.uploadFilePart(uploadSessionId: acc.uploadSessionId, requestBody: Utils.generateByteStreamFromBuffer(buffer: chunkBuffer), headers: UploadFilePartHeaders(digest: digest, contentRange: contentRange)) ``` ```java Java v10 theme={null} client.getChunkedUploads().uploadFilePart(acc.getUploadSessionId(), generateByteStreamFromBuffer(chunkBuffer), new UploadFilePartHeaders(digest, contentRange)) ``` ```java Java v5 theme={null} //Reading a large file FileInputStream fis = new FileInputStream("My_Large_File.txt"); //Create the digest input stream to calculate the digest for the whole file. DigestInputStream dis = new DigestInputStream(fis, digest); List parts = new ArrayList(); //Get the part size. Each uploaded part should match the part size returned as part of the upload session. //The last part of the file can be less than part size if the remaining bytes of the last part is less than //the given part size long partSize = sessionInfo.getPartSize(); //Start byte of the part long offset = 0; //Overall of bytes processed so far long processed = 0; while (processed < fileSize) { long diff = fileSize - processed; //The size last part of the file can be less than the part size. if (diff < partSize) { partSize = diff; } //Upload a part. It can be uploaded asynchorously BoxFileUploadSessionPart part = session.uploadPart(dis, offset, (int)partSize, fileSize); parts.add(part); //Increase the offset and proceesed bytes to calculate the Content-Range header. processed += partSize; offset += partSize; } ``` ```python Python v4 theme={null} upload_session = client.upload_session('11493C07ED3EABB6E59874D3A1EF3581') offset = upload_session.part_size * 3 total_size = 26000000 part_bytes = b'abcdefgh' part = upload_session.upload_part_bytes(part_bytes, offset, total_size) print(f'Successfully uploaded part ID {part["part_id"]}') ``` ```javascript Node v4 theme={null} // Upload the part starting at byte offset 8388608 to upload session '93D9A837B45F' with part ID 'feedbeef' client.files.uploadPart('93D9A837B45F', part, 8388608, 2147483648, {part_id: 'feedbeef'}, callback); ``` ### Content Range Each part’s size must be exactly equal in size to the part size specified in the upload session that you created. One exception is the last part of the file, as this can be smaller. The `Content-Range` parameter definition follows this pattern: ```yaml theme={null} -H "Content-Range: bytes -/" ``` When providing the value for `Content-Range`, remember that: * The lower bound of each part's byte range must be a multiple of the part size. * The higher bound must be a multiple of the part size - 1. For example, if the part size is `8388608`, the content range for the first two parts will be: ```yaml theme={null} -H "Content-Range: bytes 0-8388607/32127641" \ ## first part -H "Content-Range: bytes 8388608-16777215/32127641" \ ## second part ``` ## Response After each upload, the resulting response includes the `ID` and `SHA` of the part uploaded. ```json theme={null} { "part_id": "6F2D3486", "offset": 16777216, "size": 3222784, "sha1": "134b65991ed521fcfe4724b7d814ab8ded5185dc" } ``` Keep all the JSON responses from all part uploads as they are needed to commit the session. ## Range Overlap If a part upload request fails with any error code `range_overlaps_existing_part` then the application made a mistake in cutting up the file into parts and tried to upload a part into a range that already had content uploaded for it. The application should assume that this last part was not persisted to the session. ## Parallel uploads Although you can upload the parts in parallel, try to upload them in order as much as is possible. Parts with a lower byte offset should be uploaded before parts with a higher byte offset. The recommended approach is to upload 3 to 5 parts in parallel from a queue of parts, ordered by byte offset. If a part upload fails, retry it before you upload further parts. # Chunked Upload with SDKs Source: https://developer.box.com/guides/uploads/chunked/with-sdks The Box SDKs make it possible to perform a chunked upload with the built-in SDK methods. The SDKs also support uploading new versions of files through similar methods. # Upload New File Source: https://developer.box.com/guides/uploads/direct/file To upload a file to Box via direct upload, make an API call to the `POST /files/content` API with the content of the file, the desired file name, and the folder ID. To upload files to the Archive folder, you need to first enable the Global Content Manager (GCM) scope in the Developer Console. ```sh cURL theme={null} curl -i -X POST "https://upload.box.com/api/2.0/files/content" \ -H "authorization: Bearer " \ -H "content-type: multipart/form-data" \ -F attributes='{"name":"Contract.pdf", "parent":{"id":"11446498"}}' \ -F file=@ ``` ```typescript Node/TypeScript v10 theme={null} const fs = require('fs'); const attrs = { name: 'filename.txt', parent: { id: '0' } }; const body = { attributes: attrs, file: fs.createReadStream('filename.txt'), }; const files = await client.uploads.uploadFile(body); const file = files.entries[0]; console.log(`File uploaded with id ${file.id}, name ${file.name}`); ``` ```python Python v10 theme={null} client.uploads.upload_file( UploadFileAttributes( name=new_file_name, parent=UploadFileAttributesParentField(id="0") ), file_content_stream, ) ``` ```cs .NET v10 theme={null} await client.Uploads.UploadFileAsync(requestBody: new UploadFileRequestBody(attributes: new UploadFileRequestBodyAttributesField(name: newFileName, parent: new UploadFileRequestBodyAttributesParentField(id: "0")), file: fileContentStream)); ``` ```swift Swift v10 theme={null} // Create InputStream for a file based on URL guard let fileStream = InputStream(url: URL(string: "")!) else { fatalError("Could not read a file") } // Create a request body with the required parameters let requestBody = UploadFileRequestBodyArg( attributes: UploadFileRequestBodyArgAttributesField( name: "filename.txt", parent: UploadFileRequestBodyArgAttributesFieldParentField(id: "0") ), file: fileStream ) // Call uploadFile method let files = try await client.uploads.uploadFile(requestBody: requestBody) // Print some data from the reponse if let file = files.entries?[0] { print("File uploaded with id \(file.id), name \(file.name!)") } ``` ```java Java v10 theme={null} client.getUploads().uploadFile(new UploadFileRequestBody(new UploadFileRequestBodyAttributesField(newFileName, new UploadFileRequestBodyAttributesParentField("0")), fileContentStream)) ``` ```java Java v5 theme={null} BoxFolder rootFolder = BoxFolder.getRootFolder(api); FileInputStream stream = new FileInputStream("My File.txt"); BoxFile.Info newFileInfo = rootFolder.uploadFile(stream, "My File.txt"); stream.close(); ``` ```python Python v4 theme={null} folder_id = '22222' new_file = client.folder(folder_id).upload('/home/me/document.pdf') print(f'File "{new_file.name}" uploaded to Box with file ID {new_file.id}') ``` ```cs .NET v6 theme={null} using (FileStream fileStream = new FileStream(filePath, FileMode.Open)) { BoxFileRequest requestParams = new BoxFileRequest() { Name = uploadFileName, Parent = new BoxRequestEntity() { Id = "0" } }; BoxFile file = await client.FilesManager.UploadAsync(requestParams, fileStream); } ``` ```javascript Node v4 theme={null} var fs = require('fs'); var stream = fs.createReadStream('/path/to/My File.pdf'); var folderID = '0' client.files.uploadFile(folderID, 'My File.pdf', stream) .then(file => { /* file -> { total_count: 1, entries: [ { type: 'file', id: '11111', file_version: { type: 'file_version', id: '22222', sha1: '0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33' }, sequence_id: '0', etag: '0', sha1: '0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33', name: 'My File.pdf', description: '', size: 68431, path_collection: { total_count: 1, entries: [ { type: 'folder', id: '0', sequence_id: null, etag: null, name: 'All Files' } ] }, created_at: '2017-05-16T15:18:02-07:00', modified_at: '2017-05-16T15:18:02-07:00', trashed_at: null, purged_at: null, content_created_at: '2017-05-16T15:18:02-07:00', content_modified_at: '2017-05-16T15:18:02-07:00', created_by: { type: 'user', id: '33333', name: 'Test User', login: 'test@example.com' }, modified_by: { type: 'user', id: '33333', name: 'Test User', login: 'test@example.com' }, owned_by: { type: 'user', id: '33333', name: 'Test User', login: 'test@example.com' }, shared_link: null, parent: { type: 'folder', id: '0', sequence_id: null, etag: null, name: 'All Files' } item_status: 'active' } ] } */ }); ``` **Preflight check** To prevent wasting time and bandwidth uploading a file that is going to be rejected it is recommended to perform a pre-flight check before uploading the file. ## Request Format The request body of this API uses a content type of `multipart/form-data`. This is used to transmit two parts, namely the file attributes and the file's actual content. The first part is called `attributes` and contains a JSON object with information about the file, including the name of the file and the `id` of the parent folder. The following is an example a `test.txt` being uploaded to the root folder of the user. ```sh theme={null} POST /api/2.0/files/content HTTP/1.1 Host: upload.box.com Authorization: Bearer [ACCESS_TOKEN] content-length: 343 content-type: multipart/form-data; boundary=------------------------9fd09388d840fef1 --------------------------9fd09388d840fef1 content-disposition: form-data; name="attributes" {"name":"test.txt", "parent":{"id":"0"}} --------------------------9fd09388d840fef1 content-disposition: form-data; name="file"; filename="test.txt" content-type: text/plain Test file text. --------------------------9fd09388d840fef1-- ``` The `attributes` JSON part of the multi-part body must come before the `file` part of the multipart form data. When out of order, the API will return a HTTP `400` status code with an error code of `metadata_after_file_contents`. ## Options To learn more about all the parameters available when uploading files, head over to the reference documentation for this API call. These parameters include a `content-md5` that can be set to ensure a file is not corrupted in transit, and the ability to explicitly specify the file creation time at a different time than the upload time. ## Restrictions Direct uploads are limited to a maximum file size of 50MB. For larger files, please use the chunked upload APIs. Upload limits are dictated by the type of account of the authenticated user. More information can be found [in our community article on this topic][fsizes]. [fsizes]: https://community.box.com/t5/Upload-and-Download-Files-and/Understand-the-Maximum-File-Size-You-Can-Upload-to-Box/ta-p/50590 # Upload File Version Source: https://developer.box.com/guides/uploads/direct/file-version To upload a new version of a file to Box via direct upload, make an API call to the `POST /files/:id/content` API with the content of the file, the desired file name, and the folder ID. ```sh cURL theme={null} curl -i -X POST "https://upload.box.com/api/2.0/files/12345/content" \ -H "authorization: Bearer " \ -H "content-type: multipart/form-data" \ -F attributes='{"name":"Contract.pdf", "parent":{"id":"11446498"}}' \ -F file=@ ``` ```typescript Node/TypeScript v10 theme={null} await client.uploads.uploadFileVersion(file.id, { attributes: { name: file.name!, } satisfies UploadFileVersionRequestBodyAttributesField, file: generateByteStream(20), } satisfies UploadFileVersionRequestBody); ``` ```python Python v10 theme={null} client.uploads.upload_file_version( uploaded_file.id, UploadFileVersionAttributes(name=new_file_version_name), new_file_content_stream, ) ``` ```cs .NET v10 theme={null} await client.Uploads.UploadFileVersionAsync(fileId: uploadedFile.Id, requestBody: new UploadFileVersionRequestBody(attributes: new UploadFileVersionRequestBodyAttributesField(name: newFileVersionName), file: newFileContentStream)); ``` ```java Java v10 theme={null} client.getUploads().uploadFileVersion(uploadedFile.getId(), new UploadFileVersionRequestBody(new UploadFileVersionRequestBodyAttributesField(newFileVersionName), newFileContentStream)) ``` ```java Java v5 theme={null} BoxFile file = new BoxFile(api, "id"); FileInputStream stream = new FileInputStream("My File.txt"); file.uploadNewVersion(stream); ``` ```python Python v4 theme={null} file_id = '11111' file_path = '/path/to/file.pdf' updated_file = client.file(file_id).update_contents(file_path) print(f'File "{updated_file.name}" has been updated') ``` ```cs .NET v6 theme={null} using (FileStream fileStream = new FileStream(filePath, FileMode.Open)) { BoxFile file = await client.FilesManager .UploadNewVersionAsync("File v2.pdf", "11111", fileStream); } ``` ```javascript Node v4 theme={null} var fs = require('fs'); var stream = fs.createReadStream('/path/to/file.pdf'); client.files.uploadNewFileVersion('11111', stream) .then(file => { /* file -> { total_count: 1, entries: [ { type: 'file', id: '11111', file_version: { type: 'file_version', id: '22222', sha1: '0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33' }, sequence_id: '0', etag: '0', sha1: '0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33', name: 'My File.pdf', description: '', size: 68431, path_collection: { total_count: 1, entries: [ { type: 'folder', id: '0', sequence_id: null, etag: null, name: 'All Files' } ] }, created_at: '2017-05-16T15:18:02-07:00', modified_at: '2017-05-16T15:18:02-07:00', trashed_at: null, purged_at: null, content_created_at: '2017-05-16T15:18:02-07:00', content_modified_at: '2017-05-16T15:18:02-07:00', created_by: { type: 'user', id: '33333', name: 'Test User', login: 'test@example.com' }, modified_by: { type: 'user', id: '33333', name: 'Test User', login: 'test@example.com' }, owned_by: { type: 'user', id: '33333', name: 'Test User', login: 'test@example.com' }, shared_link: null, parent: { type: 'folder', id: '0', sequence_id: null, etag: null, name: 'All Files' } item_status: 'active' } ] } */ }) ``` **Preflight check** To prevent wasting time and bandwidth uploading a file that is going to be rejected it is recommended to perform a pre-flight check before uploading the file. ## Request Format The request body of this API uses a content type of `multipart/form-data`. This is used to transmit two parts, namely the file attributes and the file's actual content. The first part is called `attributes` and contains a JSON object with information about the file, including the name of the file and the `id` of the parent folder. The following is an example a `test.txt` being uploaded to the root folder of the user. ```sh theme={null} POST /api/2.0/files/123/content HTTP/1.1 Host: upload.box.com Authorization: Bearer [ACCESS_TOKEN] content-length: 343 content-type: multipart/form-data; boundary=------------------------9fd09388d840fef1 --------------------------9fd09388d840fef1 content-disposition: form-data; name="attributes" {"name":"test.txt", "parent":{"id":"0"}} --------------------------9fd09388d840fef1 content-disposition: form-data; name="file"; filename="test.txt" content-type: text/plain Test file text. --------------------------9fd09388d840fef1-- ``` The `attributes` JSON part of the multi-part body must come before the `file` part of the multipart form data. When out of order, the API will return a HTTP `400` status code with an error code of `metadata_after_file_contents`. ## Options To learn more about all the parameters available when uploading files, head over to the reference documentation for this API call. These parameters include a `content-md5` that can be set to ensure a file is not corrupted in transit, and the ability to explicitly specify the file creation time at a different time than the upload time. For file versions an additional `if-match` header can be passed along to prevent overwriting a file that has already been updated since the application last inspected the content. ## Restrictions Direct uploads are limited to a maximum file size of 50MB. For larger files, please use the chunked upload APIs. Upload limits are dictated by the type of account of the authenticated user. More information can be found [in our community article on this topic][fsizes]. [fsizes]: https://support.box.com/hc/en-us/articles/360043697314-Understand-the-Maximum-File-Size-You-Can-Upload-to-Box # Direct Uploads Source: https://developer.box.com/guides/uploads/direct/index The most straightforward way to upload a file to Box is using a direct upload. Direct uploads allow an application to upload a file in one request. For file sizes over 50MB we recommend using the chunked upload endpoint. The maximum file size limit for uploads to Box varies depending on your account type. For more details, please refer to our [pricing comparison page][pcp]. * Free personal: 250 MB * Starter: 2 GB * Business: 5 GB * Business Plus: 15 GB * Enterprise: 50 GB * Digital Workplace Suite: 50 GB * Digital Workplace Global Suite: 50 GB * Digital Business Suite: 50 GB * Digital Business Global Suite: 50 GB * Enterprise Plus: 150 GB * Enterprise Advanced: 500 GB To confirm the file size limit for your account, log into Box. Click on the circle in the top right corner and select **Account Settings** from the dropdown menu. On the page that displays, scroll down to the **Account Details** section. Your **Max File Size** is listed here. ## Upload domain Uploads to Box happen via a different domain (`upload.box.com`) than regular API calls. This is something to keep in mind when writing your own upload code. All official Box SDKs will take care of choosing the right domain for each API call. [pcp]: https://www.box.com/pricing # Uploads Source: https://developer.box.com/guides/uploads/index The Box API supports two distinct methods of file upload. The direct file upload API supports files up to 50MB in size and sends all the binary data to the Box API in 1 API request. The chunked upload APIs support files from 20MB in size and allow an application to upload the file in parts, allowing for more control to catch any errors and retry parts individually. To upload files to the Archive folder, you need to first enable the Global Content Manager (GCM) scope in the Developer Console. ## Upload limits Upload limits are dictated by the type of account of the authenticated user. More information can be found [in our community article on this topic][fsizes]. ## Preflight check The Pre-flight check API allows an application to verify that a file will be accepted by Box before it uploads any bytes. It can both be used for new files, as well as uploading new versions of existing files. ## Upload domain Uploads to Box happen via a different domain (`upload.box.com`) than regular API calls. This is something to keep in mind when writing your own upload code. All the Box SDKs will take care of choosing the right domain for the right API call. [fsizes]: https://support.box.com/hc/en-us/articles/360043697314-Understand-the-Maximum-File-Size-You-Can-Upload-to-Box # Bulk delete external users Source: https://developer.box.com/guides/users/bulk-delete-external-users You can remove up to 100 external users from your enterprise using API. This API endpoint removes access to all types of content you invited the listed external users to collaborate on. To remove the external users, call the \[`POST /external_users/post_external_users_submit_delete_job`]. ```sh cURL theme={null} curl -X -L POST "https://api.box.com/2.0/external_users/external_users_submit_delete_job" \ -H "authorization: Bearer " \ -d '{ "external_users": "type": "array" "description": "List of external users to delete." "items": "$ref: #/components/schemas/UserReference" }' ``` This job runs in the background, and sends a completion report listing deletion status for each user when it's finished. When you delete external users, their pending collaboration invites are not deleted. # Create App User Source: https://developer.box.com/guides/users/create-app-user App Users are programmatic user accounts that may only be created by apps that are using JWT authentication. They are designed to allow for users, groups, or processes to be represented behind the scenes in an application without the need for the user to have a Box account to log in. App users can only be accessed by the Box application through the APIs and do not have credentials to log in to `box.com` directly. ## Common App User Patterns Typically app users are created for a number of different patterns: * To represent a single application user or group of users without a `box.com` account. * To represent an application process, such as having the app user monitor all events within an enterprise. * To provide the application with the ability to completely control the file and folder structure of a user account without the possibility of that content being modified through the `box.com` web app. ## Creating a New App User To generate a new app user, the minimal information that will be required will be a name for the app user. ```java Java v5 theme={null} BoxUser.Info createdUserInfo = BoxUser.createAppUser(api, "A User"); ``` ```python Python v4 theme={null} new_app_user = client.create_user('App User 123', login=None) ``` ```cs .NET v6 theme={null} var userParams = new BoxUserRequest() { Name = "App User 12", ExternalAppUserId = "external-id", IsPlatformAccessOnly = true }; BoxUser newUser = await client.UsersManager.CreateEnterpriseUserAsync(userParams); ``` To see all available optional parameters that may be set when creating an app user, see the create user endpoint. Before you can make any changes to the newly created account, you need to click the link you receive in the confirmation email. Once the app user is created a user object will be returned. Within the user object is an ID for the app user, which may be used to make API requests to modify the user in the future. # Create Managed User Source: https://developer.box.com/guides/users/create-managed-user To generate a new managed user, the minimal information that will be required will be a name and an email address for the managed user. The email address supplied when creating a managed user must be unique. It cannot already be associated with an existing Box user. ```sh cURL theme={null} curl -i -X POST "https://api.box.com/2.0/users" \ -H "authorization: Bearer " \ -H "content-type: application/json" \ -d '{ "login": "ceo@example.com", "name": "Aaron Levie" }' ``` ```typescript Node/TypeScript v10 theme={null} await client.users.createUser({ name: userName, login: userLogin, isPlatformAccessOnly: true, } satisfies CreateUserRequestBody); ``` ```python Python v10 theme={null} client.users.create_user(user_name, login=user_login, is_platform_access_only=True) ``` ```cs .NET v10 theme={null} await client.Users.CreateUserAsync(requestBody: new CreateUserRequestBody(name: userName) { Login = userLogin, IsPlatformAccessOnly = true }); ``` ```swift Swift v10 theme={null} try await client.users.createUser(requestBody: CreateUserRequestBody(name: userName, login: userLogin, isPlatformAccessOnly: true)) ``` ```java Java v10 theme={null} client.getUsers().createUser(new CreateUserRequestBody.Builder(userName).login(userLogin).isPlatformAccessOnly(true).build()) ``` ```java Java v5 theme={null} BoxUser.Info createdUserInfo = BoxUser.createEnterpriseUser(api, "user@example.com", "A User"); ``` ```python Python v4 theme={null} new_user = client.create_user('Temp User', 'user@example.com') ``` ```cs .NET v6 theme={null} var userParams = new BoxUserRequest() { Name = "Example User", Login = "user@example.com" }; BoxUser newUser = await client.UsersManager.CreateEnterpriseUserAsync(userParams); ``` ```javascript Node v4 theme={null} client.enterprise.addUser( 'eddard@winterfell.example.com', 'Ned Stark', { role: client.enterprise.userRoles.COADMIN, address: '555 Box Lane', status: client.enterprise.userStatuses.CANNOT_DELETE_OR_EDIT }) .then(user => { /* user -> { type: 'user', id: '44444', name: 'Ned Stark', login: 'eddard@winterfell.example.com', created_at: '2012-11-15T16:34:28-08:00', modified_at: '2012-11-15T16:34:29-08:00', role: 'coadmin', language: 'en', timezone: 'America/Los_Angeles', space_amount: 5368709120, space_used: 0, max_upload_size: 2147483648, status: 'active', job_title: '', phone: '', address: '555 Box Lane', avatar_url: 'https://www.box.com/api/avatar/large/deprecated' } */ }); ``` To see all available optional parameters that may be set when creating an app user, see the create user endpoint. Before you can make any changes to the newly created account, you need to click the link you receive in the confirmation email. A user object will be returned from the create user request. Within the user object is an ID for the managed user, which may be used to make API requests to modify the user in the future. Once a new managed user is created the email address used will receive an email from Box asking them to create a password for the account. The account will be in a `pending` state until that action has taken place. For security reasons passwords cannot be supplied when creating a new managed user # Delete User Source: https://developer.box.com/guides/users/delete-user The process for deleting both app and managed users is the same. To delete a user account, supply the user ID for the account that should be removed. ```sh cURL theme={null} curl -i -X DELETE "https://api.box.com/2.0/users/12345" \ -H "authorization: Bearer " ``` ```typescript Node/TypeScript v10 theme={null} await client.users.deleteUserById(user.id); ``` ```python Python v10 theme={null} client.users.delete_user_by_id(user.id) ``` ```cs .NET v10 theme={null} await client.Users.DeleteUserByIdAsync(userId: user.Id); ``` ```swift Swift v10 theme={null} try await client.users.deleteUserById(userId: user.id) ``` ```java Java v10 theme={null} client.getUsers().deleteUserById(user.getId()) ``` ```java Java v5 theme={null} BoxUser user = new BoxUser(api, "0"); user.delete(false, false); ``` ```python Python v4 theme={null} user_id = '33333' client.user(user_id).delete(force=True) ``` ```cs .NET v6 theme={null} await client.UsersManager.DeleteEnterpriseUserAsync("44444", notify: false, force: true); ``` ```javascript Node v4 theme={null} // Delete the user even if they still have files in their account client.users.delete('123', {force: true}) .then(() => { // deletion succeeded — no value returned }); ``` There are also two optional parameters that may be set when deleting a user account: * force: Whether the user should be deleted even if the account still has content in it. * notify: Whether the user will receive a notification that the account was deleted. The delete user request will fail if the user account still has content in it. To resolve this, either transfer all files or folders to another account or use the optional `force` parameter. # Deprovision Users Source: https://developer.box.com/guides/users/deprovision/index Part of regular Box enterprise maintenance is removing accounts for users that are no longer active in your enterprise. When removing a user from your enterprise, you'll need to move all content owned by the user into another account before deleting the user account. The delete user request will fail if the user account still has content in it. An optional `force` parameter is available in the API call, which will force delete the user account along with all content in the account. The standard best practice when decommissioning a user account is to move all content owned by that user into another admin level account or into the application service account. Once moved, you can transfer ownership of the content to a different user or collaborate a different user on the content if needed. ## Deprovisioning Example Use the following code samples to transfer a user's content and then delete the user. When content is being transferred, a new folder is created in the destination user's root folder following this pattern: `employee_email@email.com - employee_name's Files and Folders` ```js theme={null} 'use strict' const box = require('box-node-sdk'); const fs = require('fs'); let configFile = fs.readFileSync('config.json'); configFile = JSON.parse(configFile); let session = box.getPreconfiguredInstance(configFile); let serviceAccountClient = session.getAppAuthClient('enterprise'); const transferUserID = '3278487052'; (async () => { let serviceAccount = await serviceAccountClient.users.get('me'); let transferredFolder = await serviceAccountClient.enterprise.transferUserContent(transferUserID,serviceAccount.id); console.log(transferredFolder); await serviceAccountClient.users.delete(transferUserID, null); console.log('Completed'); })(); ``` ```java theme={null} Path configPath = Paths.get("config.json"); try (BufferedReader reader = Files.newBufferedReader(configPath,Charset.forName("UTF-8"))){ String transferUserId = "3277722534"; BoxConfig boxConfig = BoxConfig.readFrom(reader); BoxDeveloperEditionAPIConnection serviceAccountClient = BoxDeveloperEditionAPIConnection .getAppEnterpriseConnection(boxConfig); BoxUser destinationUser = new BoxUser(serviceAccountClient, BoxUser.getCurrentUser(serviceAccountClient).getID()); try { destinationUser.moveFolderToUser(transferUserId); } catch (BoxAPIException e) {} BoxUser removeUser = new BoxUser(serviceAccountClient, transferUserId); removeUser.delete(false, false); } ``` ```csharp theme={null} using(FileStream fs = new FileStream("./config.json", FileMode.Open)) { var config = BoxConfig.CreateFromJsonFile(fs); var session = new BoxJWTAuth(config); var serviceAccountClient = session.AdminClient(session.AdminToken()); var transferUserId = "3276247601"; var serviceAccount = await serviceAccountClient.UsersManager.GetCurrentUserInformationAsync(); var moveAction = await serviceAccountClient.UsersManager.MoveUserFolderAsync(transferUserId,serviceAccount.Id); System.Console.WriteLine(moveAction.Name); await serviceAccountClient.UsersManager.DeleteEnterpriseUserAsync(transferUserId,false,false); } ``` ```shell theme={null} box users:transfer-content $transfer_from_user_id $transfer_to_user_id box users:delete $transfer_from_user_id --yes ``` # Transfer Files & Folders Source: https://developer.box.com/guides/users/deprovision/transfer-folders As part of user account deprovisioning, a common requirement is to transfer all files and folders that are stored within the user account to another user account or into a location for long term storage, such as into the service account. There are two general methods that are employed to accomplish this within Box: * Using the direct transfer owned folders API, which will move all content from one user directly to another. * Using the collaboration transfer method to change ownership of one file or folder at a time from one user to another. Files owned by a user will be inaccessible while they are being transferred. This also means that any shared content owned by the user may be inaccessible during the move. Depending on the volume of content, this operation may take a significant amount of time. ## Transfer Owned Folders API Method The transfer owned folders endpoint is designed to move the entirety of content owned by one user over to another user. The transfer owned folders API is performed as a synchronous process, which might lead to a slow response when the source user has a large number of items in all of its folders. To call the transfer endpoint, you will supply the user ID to transfer from and the user ID to transfer to. ```typescript Node/TypeScript v10 theme={null} await client.transfer.transferOwnedFolder( sourceUser.id, { ownedBy: { id: targetUser.id, } satisfies TransferOwnedFolderRequestBodyOwnedByField, } satisfies TransferOwnedFolderRequestBody, { queryParams: { notify: false } satisfies TransferOwnedFolderQueryParams, } satisfies TransferOwnedFolderOptionalsInput, ); ``` ```python Python v10 theme={null} client.transfer.transfer_owned_folder( source_user.id, TransferOwnedFolderOwnedBy(id=target_user.id), notify=False ) ``` ```cs .NET v10 theme={null} await client.Transfer.TransferOwnedFolderAsync(userId: sourceUser.Id, requestBody: new TransferOwnedFolderRequestBody(ownedBy: new TransferOwnedFolderRequestBodyOwnedByField(id: targetUser.Id)), queryParams: new TransferOwnedFolderQueryParams() { Notify = false }); ``` ```swift Swift v10 theme={null} try await client.transfer.transferOwnedFolder(userId: sourceUser.id, requestBody: TransferOwnedFolderRequestBody(ownedBy: TransferOwnedFolderRequestBodyOwnedByField(id: targetUser.id)), queryParams: TransferOwnedFolderQueryParams(notify: false)) ``` ```java Java v10 theme={null} client.getTransfer().transferOwnedFolder(sourceUser.getId(), new TransferOwnedFolderRequestBody(new TransferOwnedFolderRequestBodyOwnedByField(targetUser.getId())), new TransferOwnedFolderQueryParams.Builder().notify(false).build()) ``` ```java Java v5 theme={null} String sourceUserID = "11111"; String destinationUserID = "22222"; BoxUser sourceUser = new BoxUser(api, sourceUserID); BoxFolder.Info transferredFolderInfo = sourceUser.transferContent(destinationUserID); ``` ```python Python v4 theme={null} source_user_id = '33333' destination_user_id = '44444' user = client.user(source_user_id) destination_user = client.user(destination_user_id) folder = user.transfer_content(destination_user) print(f'Created new folder "{folder.name}" in the account of user {destination_user.id}') ``` ```cs .NET v6 theme={null} var sourceUserId = "33333"; var destinationUserId = "44444"; BoxFolder movedFolder = await client.MoveUserFolderAsync(sourceUserId, destinationUserId); ``` ```javascript Node v4 theme={null} var sourceUserID = '33333'; var destinationUserID = '44444'; client.enterprise.transferUserContent(sourceUserID, destinationUserID) .then(movedFolder => { /* movedFolder -> { type: 'folder', id: '123456789', sequence_id: '1', etag: '1', name: 'Other User's Files and Folders', created_at: '2018-04-23T11:00:07-07:00', modified_at: '2018-04-23T11:00:07-07:00', description: 'This folder contains files previously owned by Other User, and were transferred to you by your enterprise administrator. If you have any questions, please contact Enterprise Admin (admin@example.com).', size: 0, path_collection: { total_count: 1, entries: [ { type: 'folder', id: '0', sequence_id: null, etag: null, name: 'All Files' } ] }, created_by: { type: 'user', id: '99999', name: 'Enterprise Admin', login: 'admin@example.com' }, modified_by: { type: 'user', id: '99999', name: 'Enterprise Admin', login: 'admin@example.com' }, trashed_at: null, purged_at: null, content_created_at: '2018-04-23T11:00:07-07:00', content_modified_at: '2018-04-23T11:00:07-07:00', owned_by: { type: 'user', id: '33333', name: 'Example User', login: 'user@example.com' }, shared_link: null, folder_upload_email: null, parent: { type: 'folder', id: '0', sequence_id: null, etag: null, name: 'All Files' }, item_status: 'active' } */ }); ``` ## Collaboration Transfer Method The collaboration transfer method is a process that uses the collaboration endpoint to change the ownership of a single file or folder from one user to another instantaneously. This method will perform an instantaneous transfer of ownership of a single file or folder, but **cannot** be used to transfer the root (all files and folders) from one user to another. The general process, between `transfer_from_user` to `transfer_to_user`, will follow these steps: ### Add Transfer To User as Co-Owner The first step is to add the `transfer_to_user` account as a collaborator with `co-owner` access on the file or folder that should be transferred. Making the call as the `transfer_from_user` account, add the `transfer_to_user` as a co-owner using the add collaboration endpoint. ```sh cURL theme={null} curl -i -X POST "https://api.box.com/2.0/collaborations" \ -H "authorization: Bearer " \ -H "content-type: application/json" \ -d '{ "item": { "type": "file", "id": "11446498" }, "accessible_by": { "type": "user", "login": "user@example.com" }, "role": "editor" }' ``` ```typescript Node/TypeScript v10 theme={null} await client.userCollaborations.createCollaboration({ item: { type: 'folder' as CreateCollaborationRequestBodyItemTypeField, id: folder.id, } satisfies CreateCollaborationRequestBodyItemField, accessibleBy: { type: 'user' as CreateCollaborationRequestBodyAccessibleByTypeField, id: user.id, } satisfies CreateCollaborationRequestBodyAccessibleByField, role: 'editor' as CreateCollaborationRequestBodyRoleField, } satisfies CreateCollaborationRequestBody); ``` ```python Python v10 theme={null} client.user_collaborations.create_collaboration( CreateCollaborationItem(type=CreateCollaborationItemTypeField.FOLDER, id=folder.id), CreateCollaborationAccessibleBy( type=CreateCollaborationAccessibleByTypeField.USER, id=user.id ), CreateCollaborationRole.EDITOR, ) ``` ```cs .NET v10 theme={null} await client.UserCollaborations.CreateCollaborationAsync(requestBody: new CreateCollaborationRequestBody(item: new CreateCollaborationRequestBodyItemField() { Type = CreateCollaborationRequestBodyItemTypeField.Folder, Id = folder.Id }, accessibleBy: new CreateCollaborationRequestBodyAccessibleByField(type: CreateCollaborationRequestBodyAccessibleByTypeField.User) { Id = user.Id }, role: CreateCollaborationRequestBodyRoleField.Editor)); ``` ```swift Swift v10 theme={null} try await client.userCollaborations.createCollaboration(requestBody: CreateCollaborationRequestBody(item: CreateCollaborationRequestBodyItemField(type: CreateCollaborationRequestBodyItemTypeField.folder, id: folder.id), accessibleBy: CreateCollaborationRequestBodyAccessibleByField(type: CreateCollaborationRequestBodyAccessibleByTypeField.user, id: user.id), role: CreateCollaborationRequestBodyRoleField.editor)) ``` ```java Java v10 theme={null} client.getUserCollaborations().createCollaboration(new CreateCollaborationRequestBody(new CreateCollaborationRequestBodyItemField.Builder().type(CreateCollaborationRequestBodyItemTypeField.FOLDER).id(folder.getId()).build(), new CreateCollaborationRequestBodyAccessibleByField.Builder(CreateCollaborationRequestBodyAccessibleByTypeField.USER).id(user.getId()).build(), CreateCollaborationRequestBodyRoleField.EDITOR)) ``` ```java Java v5 theme={null} BoxCollaborator user = new BoxUser(api, "user-id") BoxFolder folder = new BoxFolder(api, "folder-id"); folder.collaborate(user, BoxCollaboration.Role.EDITOR); ``` ```python Python v4 theme={null} from boxsdk.object.collaboration import CollaborationRole user = client.user(user_id='11111') collaboration = client.folder(folder_id='22222').collaborate(user, CollaborationRole.VIEWER) collaborator = collaboration.accessible_by item = collaboration.item has_accepted = 'has' if collaboration.status == 'accepted' else 'has not' print(f'{collaborator.name} {has_accepted} accepted the collaboration to folder "{item.name}"') ``` ```cs .NET v6 theme={null} // collaborate folder 11111 with user 22222 BoxCollaborationRequest requestParams = new BoxCollaborationRequest() { Item = new BoxRequestEntity() { Type = BoxType.folder, Id = "11111" }, Role = "editor", AccessibleBy = new BoxCollaborationUserRequest() { Type = BoxType.user, Id = "22222" } }; BoxCollaboration collab = await client.CollaborationsManager.AddCollaborationAsync(requestParams); ``` ```javascript Node v4 theme={null} // Invite user 123456 to collaborate on folder 987654 client.collaborations.createWithUserID('123456', '987654', client.collaborationRoles.EDITOR) .then(collaboration => { /* collaboration -> { type: 'collaboration', id: '11111', created_by: { type: 'user', id: '22222', name: 'Inviting User', login: 'inviter@example.com' }, created_at: '2016-11-16T21:33:31-08:00', modified_at: '2016-11-16T21:33:31-08:00', expires_at: null, status: 'accepted', accessible_by: { type: 'user', id: '123456', name: 'Collaborator User', login: 'collaborator@example.com' }, role: 'editor', acknowledged_at: '2016-11-16T21:33:31-08:00', item: { type: 'folder', id: '987654', sequence_id: '0', etag: '0', name: 'Collaborated Folder' } } */ }); ``` ### Fetch Collaboration ID as Transfer To User The next step is make a request to get the collaboration information, making the request as the `transfer_to_user` account. The collaboration object returned will include a collaboration ID, which is used for the last step. Making the call as the `transfer_to_user` account, get the collaboration on the file or folder ID being transferred, using the get collaboration endpoint. Capture the collaboration ID. ```sh cURL theme={null} curl -i -X GET "https://api.box.com/2.0/collaborations/1234" \ -H "authorization: Bearer " ``` ```typescript Node/TypeScript v10 theme={null} await client.userCollaborations.getCollaborationById(collaborationId); ``` ```python Python v10 theme={null} client.user_collaborations.get_collaboration_by_id(collaboration_id) ``` ```cs .NET v10 theme={null} await client.UserCollaborations.GetCollaborationByIdAsync(collaborationId: collaborationId); ``` ```swift Swift v10 theme={null} try await client.userCollaborations.getCollaborationById(collaborationId: collaborationId) ``` ```java Java v10 theme={null} client.getUserCollaborations().getCollaborationById(collaborationId) ``` ```cs .NET v6 theme={null} await client.UserCollaborations.GetCollaborationByIdAsync(collaborationId: collaborationId); ``` ```javascript Node v4 theme={null} await client.userCollaborations.getCollaborationById(collaborationId); ``` ### Remove Transfer From User as Owner The final step is to remove the `transfer_from_user` account as an owner of the file or folder, which is accomplished using the delete collaboration endpoint. Making call as the `transfer_to_user` account, remove the `transfer_from_user` as a collaborator on the file or folder. ```sh cURL theme={null} curl -i -X DELETE "https://api.box.com/2.0/collaborations/1234" \ -H "authorization: Bearer " ``` ```typescript Node/TypeScript v10 theme={null} await client.userCollaborations.deleteCollaborationById(collaborationId); ``` ```python Python v10 theme={null} client.user_collaborations.delete_collaboration_by_id(collaboration_id) ``` ```cs .NET v10 theme={null} await client.UserCollaborations.DeleteCollaborationByIdAsync(collaborationId: collaborationId); ``` ```swift Swift v10 theme={null} try await client.userCollaborations.deleteCollaborationById(collaborationId: collaborationId) ``` ```java Java v10 theme={null} client.getUserCollaborations().deleteCollaborationById(collaborationId) ``` ```cs .NET v6 theme={null} await client.UserCollaborations.DeleteCollaborationByIdAsync(collaborationId: collaborationId); ``` ```javascript Node v4 theme={null} await client.userCollaborations.getCollaborationById(collaborationId); ``` The file or folder is now owned by the `transfer_to_user` account, and the `transfer_from_user` account no longer has access. # Users Source: https://developer.box.com/guides/users/index The Box API supports a variety of users, ranging from real employees logging in with their Managed User account, to applications using App Users to drive powerful automation workflows. ## (De-)Provision Users Managing the onboarding and offboarding of employees, customers, and users is a common requirement in the lifespan of a Box application. During account provisioning the main tasks that will be needed will be: * How to create new app and managed user accounts to represent the users. * How to instantiate the new user account with common or repeatable folder and file architectures. During account deprovisioning the main tasks that will be needed will be: * How to transfer files and folders from one account to another for offboarding. * How to delete user accounts. # Create Architecture Skeleton Source: https://developer.box.com/guides/users/provision/architecture Our first requirement is to copy general files and folders into each individual user's root folder on account creation. This problem has been solved within standard Linux distributions through a directory called `/etc/skel`, which we'll emulate with a Box specific solution here. When adding a new user in Linux, the files and folders within `/etc/skel` are copied to the new user's home directory. When creating a JWT-based Box application, a Service Account is created within the Box Enterprise. A Service Account is similar in functionality to a co-admin within a Box Enterprise, and most useful to this use case, can own, copy, and collaborate other users on files and folders. More importantly, you don't have to use a Service Account strictly for developing platform applications for users, and instead, can use a Service Account in more of an automation capacity. **Box Platform Application Requirements** When creating your JWT-based custom Box application for this recipe, you'll need to enable the following scopes: **Manage users**, **Manage groups**, **Perform Actions as Users**, and **Generate User Access Tokens**. See JWT Application Setup for more information on creating a JWT-based Box application and the scopes in a Box application. We'll start by creating the `etc` and `skel` folders and granting ownership of the folders to the Service Account. ```json theme={null} { "name": "etc", "parent": { "id": "0" }, "children": [ { "name": "skel", "children": [] } ] } ``` ```json theme={null} [ { "name": "Market Research", "parent": { "id": "44884797174" }, "children": [ { "name": "Statistics", "children": [ { "name": "Computed", "children": [] } ] } ] }, { "name": "Sales Plays", "parent": { "id": "44884797174" }, "children": [ { "name": "Big Pharma", "children": [] } ] } ] ``` The code here can optionally be reused to build any folder structure formatted as the JSON objects above demonstrate. ```js theme={null} "use strict"; const fs = require("fs"); const box = require("box-node-sdk"); class BoxFolderTreeCreator { constructor(boxClient, options) { options = options || {}; if (options.boxClient) { throw new Error("Must include a boxClient field."); } options.boxFolderTreeName = options.boxFolderTreeName || "tree.json"; this.boxClient = boxClient; this.boxFolderTree = JSON.parse(fs.readFileSync(options.boxFolderTreeName)); this.createdBoxFolders = []; } async createFolderTree(branch = null, parentFolderId = "0") { this.createdBoxFolders = []; if (Array.isArray(this.boxFolderTree)) { let folderTasks = []; this.boxFolderTree.forEach(folder => { folderTasks.push(this._createFolder(folder, "")); }); await Promise.all(folderTasks); return this.createdBoxFolders; } else if (typeof this.boxFolderTree === "object") { console.log("Is object"); await this._createFolders(this.boxFolderTree, ""); return this.createdBoxFolders; } else { throw new Error("Incorrectly formatted JSON folder tree."); } } async _createFolders(branch, parentFolderId = "0") { if (branch.parent != null && branch.parent.id != null) { parentFolderId = branch.parent.id; } let folder; try { folder = await this.boxClient.folders.create(parentFolderId, branch.name); } catch (e) { let existingFolderId = BoxFolderTreeCreator.handleFolderConflictError(e); folder = await this.boxClient.folders.get(existingFolderId); } this.createdBoxFolders.push(folder); if (branch.children.length <= 0) { console.log("No more folders to create..."); return; } else { let createFolderTasks = []; branch.children.forEach(child => { console.log("Creating folder..."); console.log(child.name); createFolderTasks.push(this._createFolders(child, folder.id)); }); return await Promise.all(createFolderTasks); } } static handleFolderConflictError(e) { if (e && e.response && e.response.body) { let errorBody = e.response.body; if (errorBody.status === 409) { if ( errorBody.context_info && errorBody.context_info.conflicts && errorBody.context_info.conflicts.length > 0 ) { let conflict = errorBody.context_info.conflicts[0]; if (conflict && conflict.id) { return conflict.id; } } } } } } let configFile = fs.readFileSync("config.json"); configFile = JSON.parse(configFile); let session = box.getPreconfiguredInstance(configFile); let serviceAccountClient = session.getAppAuthClient("enterprise"); let treeCreator = new BoxFolderTreeCreator(serviceAccountClient); (async () => { let createdFolders = await treeCreator.createFolderTree(); console.log(createdFolders); })(); ``` ```java theme={null} package com.box; import java.io.BufferedReader; import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; import com.box.sdk.BoxAPIException; import com.box.sdk.BoxConfig; import com.box.sdk.BoxDeveloperEditionAPIConnection; import com.box.sdk.BoxFolder; import com.eclipsesource.json.JsonObject; import com.eclipsesource.json.JsonValue; public class BoxFolderTreeCreator { private BoxDeveloperEditionAPIConnection _boxClient; private JsonValue _boxFolderTree; private ArrayList _createdFolders; public BoxFolderTreeCreator(BoxDeveloperEditionAPIConnection boxClient) throws IOException { this(boxClient, "tree.json"); } public BoxFolderTreeCreator(BoxDeveloperEditionAPIConnection boxClient, String folderTreeFileName) throws IOException { this._boxClient = boxClient; try (BufferedReader tree = Files.newBufferedReader(Paths.get(folderTreeFileName))) { this._boxFolderTree = JsonValue.readFrom(tree); } this._createdFolders = new ArrayList<>(); } public ArrayList createFolderTree() { if (this._boxFolderTree.isArray()) { for (JsonValue folder: this._boxFolderTree.asArray()) { System.out.println("Processing this folder: " + folder); _createFolders(folder.asObject(), null); } return this._createdFolders; } else { _createFolders(this._boxFolderTree.asObject(), null); return this._createdFolders; } } private void _createFolders(JsonObject branch, String parentFolderID) { if (parentFolderID == null && branch.get("parent") != null && branch.get("parent").asObject().get("id") != null) { System.out.println("Looking for parent folder id..."); System.out.println(branch.get("parent").asObject().get("id").asString()); parentFolderID = branch.get("parent").asObject().get("id").asString(); } System.out.println("Folder name:"); System.out.println(branch.get("name")); System.out.println("Parent Folder ID:"); System.out.println(parentFolderID); BoxFolder.Info createdFolder; try { BoxFolder parent = new BoxFolder(this._boxClient, parentFolderID); createdFolder = parent.createFolder(branch.get("name").asString()); } catch (BoxAPIException e) { if (e.getResponseCode() == 409) { // Use the ID returned from the conflict error to continue String conflictId = getIdFromConflict(e.getResponse()); createdFolder = new BoxFolder(this._boxClient, conflictId).getInfo(); } else { throw e; } } this._createdFolders.add(createdFolder); if (!branch.get("children").asArray().isEmpty()) { for (JsonValue child: branch.get("children").asArray()) { _createFolders(child.asObject(), createdFolder.getID()); } } else { return; } } private static String getIdFromConflict(String message) { String id = ""; Pattern p = Pattern.compile("\"id\":\"[0-9]+\""); Pattern p2 = Pattern.compile("[0-9]+"); Matcher m = p.matcher(message); if (m.find()) { String sub = m.group(); Matcher m2 = p2.matcher(sub); if (m2.find()) { id = m2.group(); } } return id; } public static void main(String[] args) throws Exception { Path configPath = Paths.get("config.json"); try (BufferedReader reader = Files.newBufferedReader(configPath, Charset.forName("UTF-8"))) { BoxConfig boxConfig = BoxConfig.readFrom(reader); BoxDeveloperEditionAPIConnection serviceAccountClient = BoxDeveloperEditionAPIConnection .getAppEnterpriseConnection(boxConfig); BoxFolderTreeCreator treeBuilder = new BoxFolderTreeCreator(serviceAccountClient, "etc_skel.json"); ArrayList folders = treeBuilder.createFolderTree(); for (BoxFolder.Info folder: folders) { System.out.println(folder.getID()); } } } } ``` ```csharp theme={null} using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; using Box.V2; using Box.V2.Config; using Box.V2.Exceptions; using Box.V2.JWTAuth; using Box.V2.Models; using Newtonsoft.Json.Linq; namespace BoxPlayground { public class Program { static void Main(string[] args) { ExecuteMainAsync().Wait(); } private static async Task ExecuteMainAsync() { using(FileStream fs = new FileStream("./config.json", FileMode.Open)) { var session = new BoxJWTAuth(BoxConfig.CreateFromJsonFile(fs)); var client = session.AdminClient(session.AdminToken()); var treeCreator = new BoxFolderTreeCreator(client, "etc_skel.json"); var createdFolders = await treeCreator.CreateFolderTree(); foreach(var folder in createdFolders) { System.Console.WriteLine(folder.Name); System.Console.WriteLine(folder.Id); } } } public class BoxFolderTreeCreator { public BoxClient BoxClient { get; set; } public JToken BoxFolderTree { get; set; } public List < BoxFolder > CreatedBoxFolders { get; set; } public BoxFolderTreeCreator(BoxClient boxClient, string boxFolderTreeFileName = "tree.json") { this.BoxClient = boxClient; this.BoxFolderTree = JToken.Parse(File.ReadAllText(boxFolderTreeFileName)); this.CreatedBoxFolders = new List < BoxFolder > (); } public async Task < List < BoxFolder >> CreateFolderTree(dynamic branch = null, string parentFolderId = "0") { this.CreatedBoxFolders = new List < BoxFolder > (); if (this.BoxFolderTree is JArray) { var folderTasks = new List < Task > (); foreach(JObject folder in this.BoxFolderTree) { folderTasks.Add(_createFolder(folder, String.Empty)); } await Task.WhenAll(folderTasks); return this.CreatedBoxFolders; } else if (this.BoxFolderTree is JObject) { System.Console.WriteLine("Is object"); await _createFolder(this.BoxFolderTree as JObject, String.Empty); return this.CreatedBoxFolders; } else { throw new Exception("Incorrectly formatted JSON folder tree."); } } private async Task _createFolder(dynamic branch, string parentFolderId = "0") { if (branch.parent != null && branch.parent.id != null) { parentFolderId = branch.parent.id; } BoxFolder createdFolder; try { createdFolder = await this.BoxClient.FoldersManager.CreateAsync( new BoxFolderRequest { Parent = new BoxRequestEntity { Id = parentFolderId }, Name = branch.name }); } catch(BoxConflictException < BoxFolder > e) { createdFolder = await this.BoxClient.FoldersManager.GetInformationAsync(e.ConflictingItems.FirstOrDefault().Id); } this.CreatedBoxFolders.Add(createdFolder); if (branch.children.Count <= 0) { System.Console.WriteLine("No more folders to create..."); return; } else { var createFolderTasks = new List < Task > (); foreach(var child in branch.children) { System.Console.WriteLine("Creating folder..."); System.Console.WriteLine(child.name); createFolderTasks.Add(_createFolder(child as JObject, createdFolder.Id)); } await Task.WhenAll(createFolderTasks); } } } } } ``` # Provision Users Source: https://developer.box.com/guides/users/provision/index When setting up a brand new Box user account, a common need is to have that new account be populated with standard folders, collaborations, and group associations. Typically there are some common questions that may be asked about the user account to determine when standard setup may be needed for the account: * Will the user need access to standard company files or folders immediately? * Are collaborations associated individually or through groups? If through a group association, are there any standard groups that the user should be added to? * Should the user be assigned any tasks to complete? * Would any instructional comments on any files be helpful? **New User Password Resets and Email Confirmation** You may experience some errors when creating users and immediately trying to take actions with that user through the API. For example, a common error to receive is `user_email_confirmation_required` or `password_reset_required`. These kinds of errors may block some actions within the API, but you can still add the user as a collaborator on folders, add the user to groups, etc. ## Sample Overview In this scenario we'll focus on provisioning a new Box Managed User, as there are very different considerations when provisioning Box App User accounts. We'll start with solving the most repeatable aspects of provisioning a user's account, creating a general folder and file structure that everyone will have on first login, using groups to control access to shared files and folders for users. # Populate Content Source: https://developer.box.com/guides/users/provision/populate-content Once the architecture files have been defined through the `etc/skel` structure in your service account, you can now use the following script to copy anything under the `skel` directly to the new user's root directory. ```js theme={null} 'use strict' const box = require('box-node-sdk'); const fs = require('fs'); const skelFolderId = "45117847998"; const userID = "275111793"; let configFile = fs.readFileSync('config.json'); configFile = JSON.parse(configFile); let session = box.getPreconfiguredInstance(configFile); let serviceAccountClient = session.getAppAuthClient("enterprise"); (async () => { // The userID can be obtained when creating the user via the // API or by using the search users feature. // The skel folder ID shouldn't ever change unless it's deleted and recreated. await copySkelDirectoryForUser(userID, skelFolderId, serviceAccountClient); })(); async function copySkelDirectoryForUser(userID, skelFolderId, boxClient) { // Enable iterators in case there are more than the // default limit of items under the skel directory. boxClient._useIterators = true; // You collaborate the user temporarily on the skel directory // to copy all items into that user's root folder. let collabSkelFolder; try { collabSkelFolder = await boxClient.collaborations.createWithUserID(userID, skelFolderId, boxClient.collaborationRoles.EDITOR); } catch (e) { // Handle that the collaboration on the skel folder could already exist. if (e.response.body.code === 'user_already_collaborator') { let collaborationsIterator = await boxClient.folders.getCollaborations(skelFolderId); let collaborations = await autoPage(collaborationsIterator); let results = collaborations.filter((collaboration) => { return collaboration.accessible_by.id === userID; }); console.log(results); if (results.length > 0) { collabSkelFolder = results[0]; } else { throw new Error("Couldn't create new collaboration or located existing collaboration."); } } else { throw e; } } console.log(collabSkelFolder); // Switching context to make calls on behalf of the user. // To access this user's root folder, the boxClient needs // to be scoped to make API calls as the user. boxClient.asUser(userID); // Iterate over all the items under the skel directory. let skelFolderItemsIterator = await boxClient.folders.getItems(skelFolderId); let skelFolderCollection = await autoPage(skelFolderItemsIterator); console.log(skelFolderCollection); // Now, as the user, copy the folders and files into // the user's root folder -- folder ID '0'. let copyTasks = []; skelFolderCollection.forEach((item) => { if (item.type === 'folder') { copyTasks.push(boxClient.folders.copy(item.id, '0') .catch((e) => { let itemId = handleConflictError(e); if (itemId) { console.log(itemId); return boxClient.folders.get(itemId); } else { throw e; } })); } else if (item.type === 'file') { copyTasks.push(boxClient.files.copy(item.id, '0') .catch((e) => { let itemId = handleConflictError(e); if (itemId) { console.log(itemId); return boxClient.files.get(itemId); } else { throw e; } })); } else { console.log("Unable to resolve item type to known types..."); } }); let copiedItems = await Promise.all(copyTasks); console.log(copiedItems); // Switching the boxClient context back to that of the service account. boxClient.asSelf(); /* Since the service account owns the skel directory, boxClient needs to make API calls as the service account to remove the temporary collaboration on the skel directory. */ try { await boxClient.collaborations.delete(collabSkelFolder.id); console.log("Removed collaboration on skel..."); } catch (e) { console.log("Couldn't remove skel collaboration..."); console.log(e.respose.body); } function handleConflictError(e) { if (e && e.response && e.response.body) { let errorBody = e.response.body; if (errorBody.status === 409) { if (errorBody.context_info && errorBody.context_info.conflicts && errorBody.context_info.conflicts) { let conflict = errorBody.context_info.conflicts; if (conflict && conflict.id) { return conflict.id; } } } } } function autoPage(iterator, collection = []) { let moveToNextItem = async () => { let item = await iterator.next(); if (item.value) { collection.push(item.value); } if (item.done !== true) { return moveToNextItem(); } else { return collection; } } return moveToNextItem(); } } ``` ```java theme={null} package com.box; import java.io.BufferedReader; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collection; import java.util.Optional; import java.util.regex.Matcher; import java.util.regex.Pattern; import com.box.sdk.BoxAPIException; import com.box.sdk.BoxCollaboration; import com.box.sdk.BoxConfig; import com.box.sdk.BoxDeveloperEditionAPIConnection; import com.box.sdk.BoxFile; import com.box.sdk.BoxFolder; import com.box.sdk.BoxItem; import com.box.sdk.BoxUser; import com.eclipsesource.json.JsonObject; public class BoxPlayground { public static void main(String[] args) throws Exception { Path configPath = Paths.get("config.json"); try (BufferedReader reader = Files.newBufferedReader(configPath, Charset.forName("UTF-8"))) { String skelFolderId = "45117847998"; String userId = "275111793"; BoxConfig boxConfig = BoxConfig.readFrom(reader); BoxDeveloperEditionAPIConnection serviceAccountClient = BoxDeveloperEditionAPIConnection .getAppEnterpriseConnection(boxConfig); BoxDeveloperEditionAPIConnection userClient = BoxDeveloperEditionAPIConnection.getAppUserConnection(userId, boxConfig); BoxFolder skelFolder = new BoxFolder(serviceAccountClient, skelFolderId); BoxCollaboration.Info skelFolderCollaboration; try { skelFolderCollaboration = skelFolder.collaborate(new BoxUser(serviceAccountClient, userId), BoxCollaboration.Role.EDITOR); } catch (BoxAPIException e) { System.out.println("Searching for existing collaborator."); JsonObject errorMessage = JsonObject.readFrom(e.getResponse()); String code = errorMessage.get("code").asString().intern(); if (code == "user_already_collaborator") { System.out.println("Already collaborated..."); Collection collaborations = skelFolder.getCollaborations(); System.out.println(collaborations.size()); Optional results = collaborations.stream().filter(c -> { return c.getAccessibleBy().getID().intern() == userId; }).findFirst(); if (results.isPresent()) { skelFolderCollaboration = results.get(); } else { throw new Exception("Couldn't create new collaboration or find existing collaboration."); } } else { throw e; } } System.out.println(skelFolderCollaboration.getID()); BoxFolder collabedSkelFolder = new BoxFolder(userClient, skelFolderId); ArrayList copiedItems = new ArrayList<>(); for (BoxItem.Info itemInfo: collabedSkelFolder) { if (itemInfo instanceof BoxFile.Info) { BoxFile.Info fileInfo = (BoxFile.Info) itemInfo; BoxFile copyFile = new BoxFile(userClient, fileInfo.getID()); BoxFile.Info copiedFile; try { copiedFile = copyFile.copy(BoxFolder.getRootFolder(userClient)); } catch (BoxAPIException e) { System.out.println(e.getMessage()); String conflictId = getIdFromConflict(e.getMessage()); System.out.println(conflictId); copiedFile = new BoxFile(userClient, conflictId).getInfo(); } copiedItems.add((BoxItem.Info) copiedFile); } else if (itemInfo instanceof BoxFolder.Info) { BoxFolder.Info folderInfo = (BoxFolder.Info) itemInfo; BoxFolder copyFolder = new BoxFolder(userClient, folderInfo.getID()); BoxFolder.Info copiedFolder; try { copiedFolder = copyFolder.copy(BoxFolder.getRootFolder(userClient)); } catch (BoxAPIException e) { System.out.println(e.getMessage()); String conflictId = getIdFromConflict(e.getMessage()); System.out.println(conflictId); copiedFolder = new BoxFolder(userClient, conflictId).getInfo(); } copiedItems.add((BoxItem.Info) copiedFolder); } } System.out.println("Copied " + copiedItems.size() + " items from the skel directory."); BoxCollaboration tempSkelCollab = new BoxCollaboration(serviceAccountClient, skelFolderCollaboration.getID()); tempSkelCollab.delete(); System.out.println("Removed temporary skel directory collaboration."); } } private static String getIdFromConflict(String message) { String id = ""; Pattern p = Pattern.compile("\"id\":\"[0-9]+\""); Pattern p2 = Pattern.compile("[0-9]+"); Matcher m = p.matcher(message); if (m.find()) { String sub = m.group(); Matcher m2 = p2.matcher(sub); if (m2.find()) { id = m2.group(); } } return id; } } ``` ```csharp theme={null} using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; using Box.V2; using Box.V2.Config; using Box.V2.Exceptions; using Box.V2.JWTAuth; using Box.V2.Models; using Newtonsoft.Json.Linq; namespace BoxPlayground { public class Program { static void Main(string[] args) { ExecuteMainAsync().Wait(); } private static async Task ExecuteMainAsync() { using(FileStream fs = new FileStream("./config.json", FileMode.Open)) { var skelFolderId = "45117847998"; var userId = "275111793"; var session = new BoxJWTAuth(BoxConfig.CreateFromJsonFile(fs)); var client = session.AdminClient(session.AdminToken()); var userClient = session.UserClient(session.UserToken(userId), userId); BoxCollaboration collabSkelFolder; try { collabSkelFolder = await client.CollaborationsManager.AddCollaborationAsync( new BoxCollaborationRequest { AccessibleBy = new BoxCollaborationUserRequest { Id = userId }, Item = new BoxRequestEntity { Id = skelFolderId, Type = BoxType.folder }, Role = BoxCollaborationRole.Editor.ToString() }); } catch(BoxException e) { var errorMessage = JObject.Parse(e.Message); if (errorMessage.GetValue("code").ToString() == "user_already_collaborator") { System.Console.WriteLine("Already a collaborator"); var collaborations = await client.FoldersManager.GetCollaborationsAsync(skelFolderId); var existingCollab = collaborations.Entries.Find((collaboration) = >{ return collaboration.AccessibleBy.Id == userId; }); if (existingCollab != null) { collabSkelFolder = existingCollab; } else { throw new Exception("Couldn't create new collaboration or find existing collaboration"); } } else { throw e; } } var items = await userClient.FoldersManager.GetFolderItemsAsync(skelFolderId, limit: 1000, autoPaginate: true); var copyTasks = new List < Task < BoxItem >> (); items.Entries.ForEach((item) = >{ if (item.Type == BoxType.folder.ToString()) { copyTasks.Add(userClient.FoldersManager.CopyAsync(new BoxFolderRequest { Id = item.Id, Parent = new BoxRequestEntity { Id = "0" } }).ContinueWith((folder) = >{ try { return (BoxItem) folder.Result; } catch(Exception e) { var errorMessage = JObject.Parse(e.InnerException.Message); if (errorMessage.GetValue("status").ToObject < int > () == 409) { System.Console.WriteLine("Conflict found"); System.Console.WriteLine(errorMessage.SelectToken("context_info.conflicts.id")); return (BoxItem) userClient.FoldersManager.GetInformationAsync(errorMessage.SelectToken("context_info.conflicts.id").ToString()).Result; } else { throw e; } } })); } else if (item.Type == BoxType.file.ToString()) { copyTasks.Add(userClient.FilesManager.CopyAsync(new BoxFileRequest { Id = item.Id, Parent = new BoxRequestEntity { Id = "0" } }).ContinueWith((file) = >{ try { return (BoxItem) file.Result; } catch(Exception e) { var errorMessage = JObject.Parse(e.InnerException.Message); if (errorMessage.GetValue("status").ToObject < int > () == 409) { System.Console.WriteLine("Conflict found"); System.Console.WriteLine(errorMessage.SelectToken("context_info.conflicts.id")); return (BoxItem) userClient.FilesManager.GetInformationAsync(errorMessage.SelectToken("context_info.conflicts.id").ToString()).Result; } else { throw e; } } })); } else { System.Console.WriteLine("Couldn't process this item..."); } }); var copiedItems = await Task.WhenAll(copyTasks); System.Console.WriteLine($ "Copied {copiedItems.Count()} items from the skel directory."); if (await client.CollaborationsManager.RemoveCollaborationAsync(collabSkelFolder.Id)){ System.Console.WriteLine("Removed temporary skel directory collaboration..."); System.Console.WriteLine("Complete!"); } else { System.Console.WriteLine("Something went wrong when removing skel directory collaboration."); } } } } } ``` # Setup Shared Folders Source: https://developer.box.com/guides/users/provision/shared-folders As a final step to manage access to shared folders, we'll create the folder structures needed within the service account. Then, groups will map to the needed permissions based on user types and level of access needed to those folders. We'll use a Market Department as an example. ```json theme={null} { "name": "Marketing Department", "parent": { "id": "0" }, "children": [ { "name": "Projects", "children": [] }, { "name": "Newsletter", "children": [ { "name": "Drafts", "children": [] } ] } ] } ``` Working from this sample folder structure, we can use the folder tree creator code we used earlier to create the `etc/skel` structure. That code may be modified to make your own structure. Once created, we'll need the IDs of the folders that each group will need to access. For example, Marketing managers will likely have `editor` access to all folders within the Marketing Department. On the other hand, Marketing project managers will likely need `editor` access to only the `Projects` folder. We'll create two groups and give them these permissions. ```js theme={null} "use strict"; const fs = require("fs"); const box = require("box-node-sdk"); let configFile = fs.readFileSync("config.json"); configFile = JSON.parse(configFile); let session = box.getPreconfiguredInstance(configFile); let serviceAccountClient = session.getAppAuthClient("enterprise"); const marketingDeptFolderID = "45765309069"; const marketingProjectsFolderID = "45765461670"; const marketingManagersGroupName = "Marketing Managers"; const marketingProjectManagersGroupName = "Marketing Project Managers"; (async () => { let marketingManagerGroup; try { marketingManagerGroup = await serviceAccountClient.groups.create( marketingManagersGroupName, { description: "For Marketing department leadership team.", invitability_level: "admins_only", member_viewability_level: "admins_only" } ); } catch (e) { marketingManagerGroup = await handleGroupConflictError( e, marketingManagersGroupName, serviceAccountClient ); } console.log(marketingManagerGroup); let marketingProjectManagerGroup; try { marketingProjectManagerGroup = await serviceAccountClient.groups.create( marketingProjectManagersGroupName, { description: "All team members who manage Marketing projects.", invitability_level: "admins_and_members", member_viewability_level: "admins_and_members" } ); } catch (e) { marketingProjectManagerGroup = await handleGroupConflictError( e, marketingProjectManagersGroupName, serviceAccountClient ); } console.log(marketingProjectManagerGroup); let collabMarketingManagers; try { collabMarketingManagers = await serviceAccountClient.collaborations.createWithGroupID( marketingManagerGroup.id, marketingDeptFolderID, serviceAccountClient.collaborationRoles.EDITOR ); } catch (e) { collabMarketingManagers = await handleFolderCollaborationConflictError( e, marketingDeptFolderID, marketingManagerGroup.id, serviceAccountClient ); } console.log(collabMarketingManagers); let collabMarketingProjectManagers; try { collabMarketingProjectManagers = await serviceAccountClient.collaborations.createWithGroupID( marketingProjectManagerGroup.id, marketingProjectsFolderID, serviceAccountClient.collaborationRoles.EDITOR ); } catch (e) { collabMarketingProjectManagers = await handleFolderCollaborationConflictError( e, marketingProjectsFolderID, marketingProjectManagerGroup.id, serviceAccountClient ); } console.log(collabMarketingProjectManagers); })(); async function autoPage(iterator, collection = []) { let moveToNextItem = async () => { let item = await iterator.next(); if (item.value) { collection.push(item.value); } if (item.done !== true) { return moveToNextItem(); } else { return collection; } }; return moveToNextItem(); } async function handleGroupConflictError(e, groupName, boxClient) { let storeIteratorSetting = boxClient._useIterators; if (e && e.response && e.response.body && e.response.body.status === 409) { boxClient._useIterators = true; let groupsIterator = await boxClient.groups.getAll({ name: groupName }); let groups = await autoPage(groupsIterator); let results = groups.filter(group => { return group.name === groupName; }); if (results.length > 0) { boxClient._useIterators = storeIteratorSetting; return results[0]; } else { throw new Error("Couldn't create group or find existing group."); } } else { throw e; } } async function handleFolderCollaborationConflictError( e, folderID, groupID, boxClient ) { let storeIteratorSetting = boxClient._useIterators; if (e && e.response && e.response.body && e.response.body.status === 409) { boxClient._useIterators = true; let collaborationsIterator = await boxClient.folders.getCollaborations( folderID ); let collaborations = await autoPage(collaborationsIterator); let results = collaborations.filter(collaboration => { return collaboration.accessible_by.id === groupID; }); console.log(results); if (results.length > 0) { boxClient._useIterators = storeIteratorSetting; return results[0]; } else { throw new Error( "Couldn't create new collaboration or located existing collaboration." ); } } else { throw e; } } ``` ```java theme={null} package com.box; import java.io.BufferedReader; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Collection; import java.util.Optional; import com.box.sdk.BoxAPIException; import com.box.sdk.BoxCollaboration; import com.box.sdk.BoxConfig; import com.box.sdk.BoxDeveloperEditionAPIConnection; import com.box.sdk.BoxFolder; import com.box.sdk.BoxGroup; import com.eclipsesource.json.JsonObject; public class BoxPlayground { public static void main(String[] args) throws Exception { Path configPath = Paths.get("config.json"); try (BufferedReader reader = Files.newBufferedReader(configPath, Charset.forName("UTF-8"))) { String marketingDeptFolderID = "45765309069"; String marketingProjectsFolderID = "45765461670"; String marketingManagersGroupName = "Marketing Managers"; String marketingProjectManagersGroupName = "Marketing Project Managers"; BoxConfig boxConfig = BoxConfig.readFrom(reader); BoxDeveloperEditionAPIConnection serviceAccountClient = BoxDeveloperEditionAPIConnection .getAppEnterpriseConnection(boxConfig); BoxGroup.Info marketingManagerGroup; try { marketingManagerGroup = BoxGroup.createGroup(serviceAccountClient, marketingManagersGroupName, null, null, "For Marketing department leadership team.", "admins_only", "admins_only"); } catch (BoxAPIException e) { JsonObject errorMessage = JsonObject.readFrom(e.getResponse()); int status = errorMessage.get("status").asInt(); if (status == 409) { marketingManagerGroup = handleGroupConflictError(marketingManagersGroupName, serviceAccountClient); } else { throw e; } } System.out.println(marketingManagerGroup.getID()); BoxGroup.Info marketingProjectManagerGroup; try { marketingProjectManagerGroup = BoxGroup.createGroup(serviceAccountClient, marketingProjectManagersGroupName, null, null, "All team members who manage Marketing projects.", "admins_and_members", "admins_and_members"); } catch (BoxAPIException e) { JsonObject errorMessage = JsonObject.readFrom(e.getResponse()); int status = errorMessage.get("status").asInt(); if (status == 409) { marketingProjectManagerGroup = handleGroupConflictError(marketingProjectManagersGroupName, serviceAccountClient); } else { throw e; } } System.out.println(marketingProjectManagerGroup.getID()); BoxFolder marketDeptFolder = new BoxFolder(serviceAccountClient, marketingDeptFolderID); BoxCollaboration.Info marketingDeptFolderCollaboration; try { marketingDeptFolderCollaboration = marketDeptFolder.collaborate( new BoxGroup(serviceAccountClient, marketingManagerGroup.getID()), BoxCollaboration.Role.EDITOR); } catch (BoxAPIException e) { System.out.println("Searching for existing collaborator."); JsonObject errorMessage = JsonObject.readFrom(e.getResponse()); int status = errorMessage.get("status").asInt(); if (status == 409) { marketingDeptFolderCollaboration = handleFolderCollaborationConflict(marketDeptFolder, marketingManagerGroup.getID()); } else { throw e; } } System.out.println(marketingDeptFolderCollaboration.getID()); BoxFolder marketingProjectsFolder = new BoxFolder(serviceAccountClient, marketingProjectsFolderID); BoxCollaboration.Info marketingProjectsFolderCollaboration; try { marketingProjectsFolderCollaboration = marketingProjectsFolder.collaborate( new BoxGroup(serviceAccountClient, marketingProjectManagerGroup.getID()), BoxCollaboration.Role.EDITOR); } catch (BoxAPIException e) { System.out.println("Searching for existing collaborator."); JsonObject errorMessage = JsonObject.readFrom(e.getResponse()); int status = errorMessage.get("status").asInt(); if (status == 409) { marketingProjectsFolderCollaboration = handleFolderCollaborationConflict(marketingProjectsFolder, marketingProjectManagerGroup.getID()); } else { throw e; } } System.out.println(marketingProjectsFolderCollaboration.getID()); } } private static BoxCollaboration.Info handleFolderCollaborationConflict(BoxFolder folder, String groupID) throws Exception { System.out.println("Already collaborated..."); Collection collaborations = folder.getCollaborations(); Optional results = collaborations.stream().filter(c -> { return c.getAccessibleBy().getID().intern() == groupID.intern(); }).findFirst(); if (results.isPresent()) { return results.get(); } else { throw new Exception("Couldn't create new collaboration or find existing collaboration."); } } private static BoxGroup.Info handleGroupConflictError(String groupName, BoxDeveloperEditionAPIConnection boxClient) throws Exception { Iterable groups = BoxGroup.getAllGroupsByName(boxClient, groupName); BoxGroup.Info foundGroup = null; for (BoxGroup.Info group: groups) { if (group.getName().intern() == groupName) { foundGroup = group; break; } } if (foundGroup != null) { return foundGroup; } else { throw new Exception("Couldn't create group or find existing group."); } } } ``` ```csharp theme={null} using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; using Box.V2; using Box.V2.Config; using Box.V2.Exceptions; using Box.V2.JWTAuth; using Box.V2.Models; using Box.V2.Models.Request; using Newtonsoft.Json.Linq; namespace BoxPlayground { public class Program { static void Main(string[] args) { ExecuteMainAsync().Wait(); } private static async Task ExecuteMainAsync() { using(FileStream fs = new FileStream("./config.json", FileMode.Open)) { var marketingDeptFolderId = "45765309069"; var marketingProjectsFolderId = "45765461670"; var marketingManagersGroupName = "Marketing Managers"; var marketingProjectManagersGroupName = "Marketing Project Managers"; var session = new BoxJWTAuth(BoxConfig.CreateFromJsonFile(fs)); var serviceAccountClient = session.AdminClient(session.AdminToken()); BoxGroup marketingManagerGroup; try { marketingManagerGroup = await serviceAccountClient.GroupsManager.CreateAsync(new BoxGroupRequest { Name = marketingManagersGroupName, InvitabilityLevel = "admins_only", MemberViewabilityLevel = "admins_only" }); } catch(BoxException e) { var errorMessage = JObject.Parse(e.Message); if (errorMessage.GetValue("status").ToObject < int > () == 409) { marketingManagerGroup = await HandleGroupConflictError(marketingManagersGroupName, serviceAccountClient); } else { throw e; } } System.Console.WriteLine(marketingManagerGroup.Id); BoxGroup marketingProjectsManagerGroup; try { marketingProjectsManagerGroup = await serviceAccountClient.GroupsManager.CreateAsync(new BoxGroupRequest { Name = marketingProjectManagersGroupName, InvitabilityLevel = "admins_and_members", MemberViewabilityLevel = "admins_and_members" }); } catch(BoxException e) { var errorMessage = JObject.Parse(e.Message); if (errorMessage.GetValue("status").ToObject < int > () == 409) { marketingProjectsManagerGroup = await HandleGroupConflictError(marketingProjectManagersGroupName, serviceAccountClient); } else { throw e; } } System.Console.WriteLine(marketingProjectsManagerGroup.Id); BoxCollaboration marketingManagerCollab; try { marketingManagerCollab = await serviceAccountClient.CollaborationsManager.AddCollaborationAsync( new BoxCollaborationRequest { AccessibleBy = new BoxCollaborationUserRequest { Id = marketingManagerGroup.Id, Type = BoxType.group }, Item = new BoxRequestEntity { Id = marketingDeptFolderId, Type = BoxType.folder }, Role = BoxCollaborationRole.Editor.ToString() }); } catch(BoxException e) { var errorMessage = JObject.Parse(e.Message); if (errorMessage.GetValue("status").ToObject < int > () == 409) { marketingManagerCollab = await HandleFolderCollaborationConflictError(marketingDeptFolderId, marketingManagerGroup.Id, serviceAccountClient); } else { throw e; } } System.Console.WriteLine(marketingManagerCollab.Id); BoxCollaboration marketingProjectsManagerCollab; try { marketingProjectsManagerCollab = await serviceAccountClient.CollaborationsManager.AddCollaborationAsync( new BoxCollaborationRequest { AccessibleBy = new BoxCollaborationUserRequest { Id = marketingProjectsManagerGroup.Id, Type = BoxType.group }, Item = new BoxRequestEntity { Id = marketingProjectsFolderId, Type = BoxType.folder }, Role = BoxCollaborationRole.Editor.ToString() }); } catch(BoxException e) { var errorMessage = JObject.Parse(e.Message); if (errorMessage.GetValue("status").ToObject < int > () == 409) { marketingProjectsManagerCollab = await HandleFolderCollaborationConflictError(marketingProjectsFolderId, marketingProjectsManagerGroup.Id, serviceAccountClient); } else { throw e; } } System.Console.WriteLine(marketingProjectsManagerCollab.Id); } } public async static Task < BoxGroup > HandleGroupConflictError(string groupName, BoxClient boxClient) { System.Console.WriteLine("Found conflict."); var groups = await boxClient.GroupsManager.GetAllGroupsAsync(autoPaginate: true); return groups.Entries.Find((group) = >{ return group.Name == groupName; }); } public async static Task < BoxCollaboration > HandleFolderCollaborationConflictError(string folderId, string groupId, BoxClient boxClient) { System.Console.WriteLine("Already a collaborator"); var collaborations = await boxClient.FoldersManager.GetCollaborationsAsync(folderId); var existingCollab = collaborations.Entries.Find((collaboration) = >{ return collaboration.AccessibleBy.Id == groupId; }); if (existingCollab != null) { return existingCollab; } else { throw new Exception("Couldn't create new collaboration or find existing collaboration"); } } } } ``` ```shell theme={null} box groups:create "Marketing Managers" --invite=admins_only --view-members=admins_only box groups:create "Marketing Project Managers" --invite=admins_and_members --view-members=admins_and_members ``` Once the groups are created, add the user to that group and they will have the prescribed access to the shared folders created within the service account. ```js theme={null} 'use strict' const fs = require('fs'); const box = require('box-node-sdk'); let configFile = fs.readFileSync('config.json'); configFile = JSON.parse(configFile); let session = box.getPreconfiguredInstance(configFile); let serviceAccountClient = session.getAppAuthClient("enterprise"); const marketingManagerGroupID = "839790214"; const marketingManagerUserID = "275111793"; (async () => { let addedUser; try { addedUser = await serviceAccountClient.groups.addUser(marketingManagerGroupID, marketingManagerUserID, { role: serviceAccountClient.groups.userRoles.ADMIN }); } catch (e) { addedUser = await handleGroupMembershipConflictError(e, marketingManagerGroupID, marketingManagerUserID, serviceAccountClient); } console.log(addedUser); })(); async function autoPage(iterator, collection = []) { let moveToNextItem = async () => { let item = await iterator.next(); if (item.value) { collection.push(item.value); } if (item.done !== true) { return moveToNextItem(); } else { return collection; } } return moveToNextItem(); } async function handleGroupMembershipConflictError(e, groupID, userID, boxClient) { let storeIteratorSetting = boxClient._useIterators; if (e && e.response && e.response.body && e.response.body.status === 409) { boxClient._useIterators = true; let groupMembershipsIterator = await boxClient.groups.getMemberships(groupID); let groupMemberships = await autoPage(groupMembershipsIterator); let results = groupMemberships.filter((groupMembership) => { return groupMembership.user.id === userID; }); if (results.length > 0) { boxClient._useIterators = storeIteratorSetting; return results[0]; } else { throw new Error("Couldn't create group membership or find existing group membership."); } } else { throw e; } } ``` ```java theme={null} package com.box; import java.io.BufferedReader; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import com.box.sdk.BoxAPIException; import com.box.sdk.BoxConfig; import com.box.sdk.BoxDeveloperEditionAPIConnection; import com.box.sdk.BoxGroup; import com.box.sdk.BoxGroupMembership; import com.box.sdk.BoxUser; import com.box.sdk.BoxGroupMembership.Role; import com.eclipsesource.json.JsonObject; public class BoxPlayground { public static void main(String[] args) throws Exception { Path configPath = Paths.get("config.json"); try (BufferedReader reader = Files.newBufferedReader(configPath, Charset.forName("UTF-8"))) { String marketingManagerGroupID = "839982796"; String marketingManagerUserID = "275111793"; BoxConfig boxConfig = BoxConfig.readFrom(reader); BoxDeveloperEditionAPIConnection serviceAccountClient = BoxDeveloperEditionAPIConnection .getAppEnterpriseConnection(boxConfig); BoxGroupMembership.Info marketingManagerMembership = null; BoxGroup marketingManagerGroup = new BoxGroup(serviceAccountClient, marketingManagerGroupID); try { marketingManagerMembership = marketingManagerGroup .addMembership(new BoxUser(serviceAccountClient, marketingManagerUserID), Role.ADMIN); } catch (BoxAPIException e) { JsonObject errorMessage = JsonObject.readFrom(e.getResponse()); int status = errorMessage.get("status").asInt(); if (status == 409) { System.out.println("Found existing membership"); Iterable memberships = marketingManagerGroup.getAllMemberships(); for (BoxGroupMembership.Info membership: memberships) { if (membership.getUser().getID().intern() == marketingManagerUserID) { marketingManagerMembership = membership; break; } } if (marketingManagerMembership == null) { throw new Exception("Couldn't add user to group or find existing membership"); } } else { throw e; } } System.out.println(marketingManagerMembership.getID()); System.out.println(marketingManagerMembership.getRole()); } } } ``` ```csharp theme={null} using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; using Box.V2; using Box.V2.Config; using Box.V2.Exceptions; using Box.V2.JWTAuth; using Box.V2.Models; using Box.V2.Models.Request; using Newtonsoft.Json.Linq; namespace BoxPlayground { public class Program { static void Main(string[] args) { ExecuteMainAsync().Wait(); } private static async Task ExecuteMainAsync() { using(FileStream fs = new FileStream("./config.json", FileMode.Open)) { var marketingManagerGroupId = "839982796"; var marketingManagerUserId = "275111793"; var session = new BoxJWTAuth(BoxConfig.CreateFromJsonFile(fs)); var serviceAccountClient = session.AdminClient(session.AdminToken()); BoxGroupMembership marketingManagerMembership; try { marketingManagerMembership = await serviceAccountClient.GroupsManager.AddMemberToGroupAsync(new BoxGroupMembershipRequest { User = new BoxRequestEntity { Id = marketingManagerUserId }, Group = new BoxGroupRequest { Id = marketingManagerGroupId }, Role = "admin" }); } catch(BoxException e) { var errorMessage = JObject.Parse(e.Message); if (errorMessage.GetValue("status").ToObject < int > () == 409) { var groups = await serviceAccountClient.GroupsManager.GetAllGroupMembershipsForGroupAsync(marketingManagerGroupId, autoPaginate: true); marketingManagerMembership = groups.Entries.Find((group) = >{ return group.User.Id == marketingManagerUserId; }); if (marketingManagerMembership == null) { throw new Exception("Couldn't create new collaboration or find existing collaboration"); } } else { throw e; } } System.Console.WriteLine(marketingManagerMembership.Id); } } } } ``` ```shell theme={null} box groups:membership:add $user_id $group_id --role=admin ``` # Create Web Link Source: https://developer.box.com/guides/web-links/create To create a web link in Box, you will need to provide our API with a folder `id` and the `url` you want the web link to be linked to. The `url` must start with `http://` or `https://`. ```sh cURL theme={null} curl -i -X POST "https://api.box.com/2.0/web_links" \ -H "authorization: Bearer " \ -H "content-type: application/json" \ -d '{ "name": "Cloud Content Management", "url": "https://box.com", "parent": { "id": "0" } }' ``` ```typescript Node/TypeScript v10 theme={null} await client.webLinks.createWebLink({ url: 'https://www.box.com', parent: { id: parent.id } satisfies CreateWebLinkRequestBodyParentField, name: getUuid(), description: 'Weblink description', } satisfies CreateWebLinkRequestBody); ``` ```python Python v10 theme={null} client.web_links.create_web_link( "https://www.box.com", CreateWebLinkParent(id=parent.id), name=get_uuid(), description="Weblink description", ) ``` ```cs .NET v10 theme={null} await client.WebLinks.CreateWebLinkAsync(requestBody: new CreateWebLinkRequestBody(url: "https://www.box.com", parent: new CreateWebLinkRequestBodyParentField(id: parent.Id)) { Name = Utils.GetUUID(), Description = "Weblink description" }); ``` ```swift Swift v10 theme={null} try await client.webLinks.createWebLink(requestBody: CreateWebLinkRequestBody(url: "https://www.box.com", parent: CreateWebLinkRequestBodyParentField(id: parent.id), name: Utils.getUUID(), description: "Weblink description")) ``` ```java Java v10 theme={null} client.getWebLinks().createWebLink(new CreateWebLinkRequestBody.Builder(url, new CreateWebLinkRequestBodyParentField(parent.getId())).name(name).description(description).build()) ``` ```java Java v5 theme={null} BoxFolder folder = new BoxFolder(api, id); URL url = new URL("https://www.example.com"); folder.createWebLink("Link to Example", url, "This goes to an example page"); ``` ```python Python v4 theme={null} web_link = client.folder(folder_id='12345').create_web_link('https://example.com', 'Example Link', 'This is the description') print(f'Web Link url is {web_link.url} and its description is {web_link.description}') ``` ```cs .NET v6 theme={null} var weblinkParams = new BoxWebLinkRequest() { Url = new Uri("http://www.example.com"), Parent = new BoxRequestEntity() { Id = "22222" } }; BoxWebLink link = await client.WebLinksManager.CreateWebLinkAsync(weblinkParams); ``` ```javascript Node v4 theme={null} client.weblinks.create( 'https://www.box.com', '22222', { name: 'Box Website!', description: 'Cloud Content Management' }) .then(weblink => { /* weblink -> { type: 'web_link', id: '11111', sequence_id: '0', etag: '0', name: 'Box Website!', url: 'https://www.box.com', created_by: { type: 'user', id: '33333', name: 'Example User', login: 'user@example.com' }, created_at: '2015-05-07T15:00:01-07:00', modified_at: '2015-05-07T15:00:01-07:00', parent: { type: 'folder', id: '22222', sequence_id: '1', etag: '1', name: 'Bookmarks' }, description: 'Enterprise Cloud Content Management', item_status: 'active', trashed_at: null, purged_at: null, shared_link: null, path_collection: { total_count: 2, entries: [ { type: 'folder', id: '0', sequence_id: null, etag: null, name: 'All Files' }, { type: 'folder', id: '22222', sequence_id: '1', etag: '1', name: 'Bookmarks' } ] }, modified_by: { type: 'user', id: '33333', name: 'Example User', login: 'user@example.com' }, owned_by: { type: 'user', id: '33333', name: 'Example User', login: 'user@example.com' } } */ }); ``` # Delete Web Link Source: https://developer.box.com/guides/web-links/delete To remove a web link in Box you will need to provide our API with the ID of the web link. ```sh cURL theme={null} curl -i -X DELETE "https://api.box.com/2.0/web_links/12345" \ -H "authorization: Bearer " ``` ```typescript Node/TypeScript v10 theme={null} await client.webLinks.deleteWebLinkById(webLinkId); ``` ```python Python v10 theme={null} client.web_links.delete_web_link_by_id(web_link_id) ``` ```cs .NET v10 theme={null} await client.WebLinks.DeleteWebLinkByIdAsync(webLinkId: webLinkId); ``` ```swift Swift v10 theme={null} try await client.webLinks.deleteWebLinkById(webLinkId: webLinkId) ``` ```java Java v10 theme={null} client.getWebLinks().deleteWebLinkById(weblink.getId()) ``` ```java Java v5 theme={null} BoxWebLink webLink = new BoxWebLink(api, id); webLink.delete(); ``` ```python Python v4 theme={null} client.web_link('12345').delete() print('The web link was deleted!') ``` ```cs .NET v6 theme={null} await client.WebLinksManager.DeleteWebLinkAsync("11111"); ``` ```javascript Node v4 theme={null} client.weblinks.delete('11111') .then(() => { // deletion succeeded — no value returned }); ``` # Web Links Source: https://developer.box.com/guides/web-links/index Web links are objects that point to URLs. These objects are also known as bookmarks within the Box web application. Web Links are treated similarly to file objects, which means that they have the same support for creating shared links, allow for copying, permanent deletion, and restoration. # Webhooks Source: https://developer.box.com/guides/webhooks/index Webhooks allow you to monitor Box content for events, and receive notifications to a URL of your choice when they occur. For example, a workflow may include waiting for a file to be downloaded to delete a shared link. A webhook can be set on the file and upon notification of the download event, a script can launch to make an API call to delete the shared link.  Webhook developer console ## Versions There are two types of webhooks: V1 and V2, which are compared below. For the ease of use, better security, more event triggers to choose from, and automatic retries we recommend to use V2 webhooks. | V1 | V2 | | ------------------------------------------------------- | ---------------------------------------------------------------- | | Created in the [Developer Console][console]. | Created in the [Developer Console][console] or with an API call. | | Set at the root level. | Set on specific files/folders, but cannot set at the root. | | Select from 14 event triggers. | Select from 30+ event triggers. | | Provides selected callback parameters. | Payload includes full object response & additional context info. | | No retry mechanism after notification delivery failure. | Retries up to 10 times after notification delivery failure. | | Does not support payload verification. | Supports payload verification. | | Notification URL can be HTTP or HTTPS. | Notification URL must be HTTPS. | | Does not scale well. | Scales well and has increased reliability. | [console]: https://app.box.com/developers/console # Webhook Event Triggers Source: https://developer.box.com/guides/webhooks/triggers ## V2 ### Files and Folders The following is a list of events that can be configured to trigger a V2 webhook. Some events are only available for files, while others are only available for folders. | Event | Triggered | File? | Folder? | | -------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | ----- | ------- | | `COLLABORATION.CREATED` | A collaboration is created. | No | Yes | | `COLLABORATION.ACCEPTED` | A collaboration is accepted. | No | Yes | | `COLLABORATION.REJECTED` | A collaboration is rejected. | No | Yes | | `COLLABORATION.REMOVED` | A collaboration is removed. | No | Yes | | `COLLABORATION.UPDATED` | A collaboration is updated. | No | Yes | | `COMMENT.CREATED` | A comment object is created. | Yes | Yes | | `COMMENT.UPDATED` | A comment object is edited. | Yes | Yes | | `COMMENT.DELETED` | A comment object is removed. | Yes | Yes | | `DOCGEN_DOCUMENT_GENERATION_FAILED` | Doc Gen failed to generate a document. | Yes | No | | `DOCGEN_DOCUMENT_GENERATION_STARTED` | Doc Gen started to create a document. | Yes | No | | `DOCGEN_DOCUMENT_GENERATION_SUCCEEDED` | Doc Gen succeeded to create a document. | Yes | No | | `FILE.UPLOADED` | A file is uploaded or moved to this folder. | No | Yes | | `FILE.PREVIEWED` | A file is previewed. | Yes | Yes | | `FILE.DOWNLOADED` | A file is downloaded. | Yes | Yes | | `FILE.TRASHED` | A file is moved to trash. | Yes | Yes | | `FILE.DELETED` | A file is permanently deleted. | Yes | Yes | | `FILE.RESTORED` | A file is restored from trash. | Yes | Yes | | `FILE.COPIED` | A file is copied. | Yes | Yes | | `FILE.MOVED` | A file is moved from one folder to another. | Yes | Yes | | `FILE.LOCKED` | A file is locked. | Yes | Yes | | `FILE.UNLOCKED` | A file is unlocked. | Yes | Yes | | `FILE.RENAMED` | A file is renamed. | Yes | Yes | | `FOLDER.CREATED` | A folder is created. | No | Yes | | `FOLDER.RENAMED` | A folder is renamed. | No | Yes | | `FOLDER.DOWNLOADED` | A folder is downloaded. | No | Yes | | `FOLDER.RESTORED` | A folder is restored from trash. | No | Yes | | `FOLDER.DELETED` | A folder is permanently removed. | No | Yes | | `FOLDER.COPIED` | A folder is copied. | No | Yes | | `FOLDER.MOVED` | A folder is moved to a different folder. | No | Yes | | `FOLDER.TRASHED` | A folder is moved to trash. | No | Yes | | `METADATA_INSTANCE.CREATED` | A new metadata template instance is associated with a file or folder. | Yes | Yes | | `METADATA_INSTANCE.UPDATED` | An attribute (value) is updated/deleted for an existing metadata template instance associated with a file or folder. | Yes | Yes | | `METADATA_INSTANCE.DELETED` | An existing metadata template instance associated with a file or folder is deleted. | Yes | Yes | | `SHARED_LINK.DELETED` | A shared link is deleted. | Yes | Yes | | `SHARED_LINK.CREATED` | A shared link is created. | Yes | Yes | | `SHARED_LINK.UPDATED` | A shared link is updated. | Yes | Yes | | `TASK_ASSIGNMENT.CREATED` | A task is created. | Yes | Yes | | `TASK_ASSIGNMENT.UPDATED` | A task assignment is changed. | Yes | Yes | | `SIGN_REQUEST.COMPLETED` | A sign request is completed. | Yes | Yes | | `SIGN_REQUEST.DECLINED` | A sign request is declined. | Yes | Yes | | `SIGN_REQUEST.EXPIRED` | A sign request is expired. | Yes | Yes | | `SIGN_REQUEST.SIGNER_EMAIL_BOUNCED` | A signer's email is bounced. | Yes | Yes | | `SIGN_REQUEST.SIGNER_SIGNED` | A sign request is signed by a particular signer. | Yes | Yes | | `SIGN_REQUEST.SIGNATURE_REQUESTED` | A signature is requested from a signer. | Yes | Yes | | `SIGN_REQUEST.ERROR_FINALIZING` | An error occurred while finalizing a sign request. | Yes | Yes | | `WEBHOOK.DELETED` | A webhook is deleted. | No | No | ## V1 Events that can be configured to trigger a v1 webhook: * Sent, * Created, * Uploaded, * Commented, * Downloaded, * Previewed, * Moved, * Copied, * Task assigned, * Responded to task, * Locked, * Unlocked, * Deleted, * Collaborator added. # Create Webhooks Source: https://developer.box.com/guides/webhooks/v1/create-v1 V1 webhooks are created in the [Developer Console][devconsole] by following the steps below. 1. Navigate to your application in the [Developer Console][devconsole] 2. Select the **Webhooks** tab. 3. Click the **Create a new Webhook** button. 4. Fill in the form, including event triggers, an endpoint URL and one or more callback parameters. 5. Click **Save Webhook**. **Callback parameters** Unlike the V2 Webhooks, these manual webhooks need to be configured with the data you'd like. This data will be sent as a query string either in the body or as a query parameter, for example `name=Contract.pdf&type=file`. ## Developer Mode By default V1 webhooks only work for users that are listed as application collaborators in the **General Settings** tab in the Developer Console. To enable a webhooks for all users, please [contact support][support]. ## Enabling a webhook After creating a webhook, the application must be added to the user's account to begin use. To obtain the URL to add the app, follow the directions below for OAuth 2.0 authentication apps: 1. Navigate to the **Integrations** tab for the application in the [Developer Console][devconsole]. 2. Click **Submit My App**. Do not worry, you will not be completing the submission process! 3. At the bottom of the page, click **Preview**. 4. Click **Add** For all other authentication types, you will need to contact support to obtain this URL. Webhooks will now trigger for any configured events that are occur in the user's account. [devconsole]: https://app.box.com/developers/console [support]: https://support.box.com # Delete Webhooks Source: https://developer.box.com/guides/webhooks/v1/delete-v1 V1 webhooks cannot be fully deleted. Instead, the webhook can be set back to Developer Mode by [support][support]. Developers can also remove the application from their account by revisiting the enablement URL and clicking **Remove**. [support]: https://support.box.com/hc/en-us/requests/new # V1 Webhooks Source: https://developer.box.com/guides/webhooks/v1/index Webhooks created using the [Developer Console][console] monitor changes to all files and folders within a user's account. When creating one of these webhooks it is not possible specify a specific object to bind the webhook to. To create a webhook for a specific file or folder, you will need to leverage v2 webhooks. Webhooks created through this process will not show when listing all webhooks for a user via API call. All V1 webhooks are visible in the **Webhooks** tab in the [Developer Console][console]. [devconsole]: https://app.box.com/developers/console [list_webhooks]: /guides/webhooks/v2/list-v2 [console]: https://app.box.com/developers/console # Create Webhooks Source: https://developer.box.com/guides/webhooks/v2/create-v2 V2 webhooks can monitor specific files or folders. They can be created in the [Developer Console][console] and with API. ## Developer console V2 webhooks can be created only when the scope **Manage Webhooks** is selected and the application is authorized. See more about Required Access Scopes and authorization. To create a webhook follow the steps below. 1. Navigate to your application in the [Developer Console][console]. 2. Select the **Webhooks** tab. 3. Click the **Create webhook** button. 4. Select **V2** from the drop-down list. 5. Fill in the form. 6. Click **Create webhook** button to save your changes. ### Required fields | Field name | Description | Required | | ------------ | ------------------------------------------------------------ | -------- | | URL Address | URL address to be notified by the webhook. | Yes | | Content type | Type of content (file/folder) the webhook is configured for. | Yes | | Triggers | Different triggers that activate the webhook. | Yes | ## API This API requires the application to have the **Manage Webhooks** scope enabled. To attach a webhook to a folder, call the create webhook endpoint with the type of `folder`, the ID of the folder, a URL to send webhook notifications to, and a list of triggers. ```sh cURL theme={null} curl -i -X POST "https://api.box.com/2.0/webhooks" \ -H "authorization: Bearer " \ -H "content-type: application/json" \ -d '{ "target": { "id": "21322", "type": "file" }, "address": "https://example.com/webhooks", "triggers": [ "FILE.PREVIEWED" ] }' ``` ```typescript Node/TypeScript v10 theme={null} await client.webhooks.createWebhook({ target: { id: folder.id, type: 'folder' as CreateWebhookRequestBodyTargetTypeField, } satisfies CreateWebhookRequestBodyTargetField, address: 'https://example.com/new-webhook', triggers: ['FILE.UPLOADED' as CreateWebhookRequestBodyTriggersField], } satisfies CreateWebhookRequestBody); ``` ```python Python v10 theme={null} client.webhooks.create_webhook( CreateWebhookTarget(id=folder.id, type=CreateWebhookTargetTypeField.FOLDER), "https://example.com/new-webhook", [CreateWebhookTriggers.FILE_UPLOADED], ) ``` ```csharp .NET v10 theme={null} await client.Webhooks.CreateWebhookAsync(requestBody: new CreateWebhookRequestBody(target: new CreateWebhookRequestBodyTargetField() { Id = folder.Id, Type = CreateWebhookRequestBodyTargetTypeField.Folder }, address: "https://example.com/new-webhook", triggers: Array.AsReadOnly(new [] {new StringEnum(CreateWebhookRequestBodyTriggersField.FileUploaded)}))); ``` ```swift Swift v10 theme={null} try await client.webhooks.createWebhook(requestBody: CreateWebhookRequestBody(target: CreateWebhookRequestBodyTargetField(id: folder.id, type: CreateWebhookRequestBodyTargetTypeField.folder), address: "https://example.com/new-webhook", triggers: [CreateWebhookRequestBodyTriggersField.fileUploaded])) ``` ```java Java v10 theme={null} client.getWebhooks().createWebhook(new CreateWebhookRequestBody(new CreateWebhookRequestBodyTargetField.Builder().id(folder.getId()).type(CreateWebhookRequestBodyTargetTypeField.FOLDER).build(), "https://example.com/new-webhook", Arrays.asList(CreateWebhookRequestBodyTriggersField.FILE_UPLOADED))) ``` ```java Java v5 theme={null} // Listen for preview events for a file BoxFile file = new BoxFile(api, id); BoxWebHook.Info webhookInfo = BoxWebHook.create(file, url, BoxWebHook.Trigger.FILE.PREVIEWED); ``` ```py Python v4 theme={null} file = client.file(file_id='12345') webhook = client.create_webhook(file, ['FILE.PREVIEWED'], 'https://example.com') print(f'Webhook ID is {webhook.id} and the address is {webhook.address}') ``` ```csharp .NET v6 theme={null} var webhookParams = new BoxWebhookRequest() { Target = new BoxRequestEntity() { Type = BoxType.file, Id = "22222" }, Triggers = new List() { "FILE.PREVIEWED" }, Address = "https://example.com/webhook" }; BoxWebhook webhook = await client.WebhooksManager.CreateWebhookAsync(webhookParams); ``` ```js Node v4 theme={null} // Attach a webhook that sends a notification to https://example.com/webhook when // file 11111 is renamed or downloaded. client.webhooks.create( '11111', client.itemTypes.FILE, 'https://example.com/webhook', [ client.webhooks.triggerTypes.FILE.RENAMED, client.webhooks.triggerTypes.FILE.DOWNLOADED ]) .then(webhook => { /* webhook -> { id: '12345', type: 'webhook', target: { id: '11111', type: 'file' }, created_by: { type: 'user', id: '33333', name: 'Example User', login: 'user@example.com' }, created_at: '2016-05-09T17:41:27-07:00', address: 'https://example.com/webhook', triggers: [ 'FILE.RENAMED', 'FILE.UPLOADED' ] } */ }); ``` Webhooks do cascade, so if a webhook is set on a parent folder, it will also monitor sub-folders for the selected triggers. ## Ownership It is best practice and strongly recommended to create webhooks with a Service Account, or user that will not be deleted, to avoid potential issues with webhook delivery due to loss of access to content. Similar to files and folders, webhooks are owned by a user. If a user who owns a webhook is deleted, they will lose access to all files and folders that they previously had access to. Their webhooks will begin to fail validation, but the webhook service will continue to send events and require retries. ## Webhook address The notification URL specified in the `address` parameter must be a valid URL that you specify when you create a webhook. Every time one of the triggers is activated, this URL is called. The notification URL must use standard port `443` and should return an HTTP status in the range of `200` to `299` within 30 seconds of receiving the webhook payload. ## Webhook triggers The triggers are a list of strings that specify the events which cause the webhook to fire. For example, if you want the webhook to be triggered when a user uploads a file, use `FILE.UPLOADED`. You can find a list of available triggers in this guide. [console]: https://app.box.com/developers/console # Delete Webhooks Source: https://developer.box.com/guides/webhooks/v2/delete-v2 You can delete a webhook using the [Developer Console][console] or API. ## Developer Console To delete a webhook follow the steps below. 1. Navigate to the **Webhooks** tab in the [Developer Console][console]. 2. Select the webhook you want to delete by clicking on its ID. 3. Click the **Delete** button. 4. Confirm the action by clicking **Delete** under the warning message. ## API To remove a webhook from a file or folder, you need to use the remove webhook endpoint with the ID of the webhook. You can get this value using the list all webhooks endpoint. ```sh cURL theme={null} curl -i -X DELETE "https://api.box.com/2.0/webhooks/3321123" \ -H "authorization: Bearer " ``` ```typescript Node/TypeScript v10 theme={null} await client.webhooks.deleteWebhookById(webhook.id!); ``` ```python Python v10 theme={null} client.webhooks.delete_webhook_by_id(webhook.id) ``` ```csharp .NET v10 theme={null} await client.Webhooks.DeleteWebhookByIdAsync(webhookId: NullableUtils.Unwrap(webhook.Id)); ``` ```swift Swift v10 theme={null} try await client.webhooks.deleteWebhookById(webhookId: webhook.id!) ``` ```java Java v10 theme={null} client.getWebhooks().deleteWebhookById(webhook.getId()) ``` ```py Python v4 theme={null} client.webhook(webhook_id='12345').delete() print('The webhook was successfully deleted!') ``` ```csharp .NET v6 theme={null} await client.WebhooksManager.DeleteWebhookAsync("11111"); ``` ```js Node v4 theme={null} client.webhooks.delete('1234') .then(() => { // deletion succeeded — no value returned }); ``` ## Automatic webhook deletion Using this endpoint is not the only way a webhook can be deleted. The following reasons can cause webhooks to be deleted. * Deleting a Box application automatically deletes all webhooks associated with it. * Deleting all active Access Tokens associated with a webhook automatically deletes the webhook. This includes Developer Tokens and password. * The last successful notification was delivered 30 days ago to the set URL and the period between the last successful notification delivery and the last user trigger event date exceeds 14 days. Let's go through a scenario in which the user downloads a file. This action triggers the webhook to use the set URL to delete a shared link. The diagram illustrates this scenario, showing when the webhook will be deleted. Delete webhooks * **User event trigger**: when the user initiated the event, for example downloaded a file. * **Notification trigger**: when the notification was sent to the webhook, saying that the file was downloaded. * **Last notification delivery**: when the webhook sent a message to a specific URL, for example to delete a shared link. In all of these cases Box sends a webhook payload with the `WEBHOOK.DELETED` event name to the notification URL. The body of the payload includes the following additional information. ```json theme={null} "additional_info": { "reason": "auto_cleanup" } ``` [console]: https://app.box.com/developers/console # V2 Webhooks Source: https://developer.box.com/guides/webhooks/v2/index ## Flow
Webhook flow
When an event triggers a webhook for a file or a folder, it makes a HTTP call to the `address` specified when the webhook was created. The payload of this call contains some request headers, and a JSON body. ## Payload headers The payload sent by a webhook has the following Box-specific headers. | Header | Description | | ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `BOX-DELIVERY-ID` | A unique ID assigned by Box that identifies the delivered webhook payload. When Box retries a webhook this ID will change, while the ID in the payload body remains the same. | | `BOX-DELIVERY-TIMESTAMP` | An RFC-3339 timestamp that identifies when the payload was sent. | | `BOX-SIGNATURE-PRIMARY` | A signature created using the primary signature key configured for this webhook. | | `BOX-SIGNATURE-SECONDARY` | A signature created using the secondary signature key configured for this webhook. | | `BOX-SIGNATURE-VERSION` | Value is always `1`. | | `BOX-SIGNATURE-ALGORITHM` | Value is always `HmacSHA256` . | For example: ```shell theme={null} BOX-DELIVERY-ID: 673a081b-bb4b-4d45-b4f1-4131a29c1d07 BOX-DELIVERY-TIMESTAMP: 2016-07-11T10:10:33-07:00 BOX-SIGNATURE-PRIMARY: isCeDp7mLR41/MjcSEFLag9bWmpJkgmN80Je4VIESdo= BOX-SIGNATURE-SECONDARY: 1UbiiKS7/2o5vNIlyMh7e5QGCHq8lflWFgEF+YWBugI= BOX-SIGNATURE-VERSION: 1 BOX-SIGNATURE-ALGORITHM: HmacSHA256 USER-AGENT: Box-WH-Client/0.1 ``` We recommend setting up and verifying signatures of the webhook payloads. HTTP header names are case insensitive. Your client should convert all header names to a standardized lowercase or uppercase format before trying to determine the value of a header. ## Payload body The body of a webhook payload is a JSON object that describes the file or folder (target) that triggered the webhook, as well as the event that has been triggered. | Field | Description | | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `type` | Value is always `webhook_event`. | | `id` | A unique ID assigned by Box that identifies an event. When Box retries a webhook this ID will not change, while the ID in the header changes between calls. | | `created_at` | The time/date when an event was triggered at. | | `trigger` | The name of the action that triggered an event, for example `FILE.UPLOADED`. | | `webhook` | The webhook ID for which an event triggered. | | `created_by` | The user that triggered an event. | | `source` | The item that triggered an event, for example the file that was uploaded to the target folder. | Example: ```json theme={null} { "type": "webhook_event", "id": "eb0c4e06-751f-442c-86f8-fd5bb404dbec", "created_at": "2016-07-11T10:10:32-07:00", "trigger": "FILE.UPLOADED", "webhook": { "id": "53", "type": "webhook" }, "created_by": { "type": "user", "id": "226067247", "name": "John Q. Developer", "login": "johnq@dev.name" }, "source": { "id": "73835521473", "type": "file", "file_version": { "type": "file_version", "id": "78096737033", "sha1": "2c61623e86bee78e6ab444af456bccc7a1164095" }, "sequence_id": "0", "etag": "0", "sha1": "2c61623e86bee78e6ab444af456bccc7a1164095", "name": "Test-Image-3.png", "description": "", "size": 26458, "path_collection": { "total_count": 4, "entries": [ { "type": "folder", "id": "0", "sequence_id": null, "etag": null, "name": "All Files" }, { "type": "folder", "id": "2614853901", "sequence_id": "4", "etag": "4", "name": "Testing" }, { "type": "folder", "id": "8290186265", "sequence_id": "0", "etag": "0", "name": "Webhooks Base" }, { "type": "folder", "id": "8290188973", "sequence_id": "0", "etag": "0", "name": "Webhooks" } ] }, "created_at": "2016-07-11T10:10:32-07:00", "modified_at": "2016-07-11T10:10:32-07:00", "trashed_at": null, "purged_at": null, "content_created_at": "2016-06-08T11:14:04-07:00", "content_modified_at": "2016-06-08T11:14:04-07:00", "created_by": { "type": "user", "id": "226067247", "name": "John Q. Developer", "login": "johnq@dev.name" }, "modified_by": { "type": "user", "id": "226067247", "name": "John Q. Developer", "login": "johnq@dev.name" }, "owned_by": { "type": "user", "id": "226067247", "name": "John Q. Developer", "login": "johnq@dev.name" }, "shared_link": null, "parent": { "type": "folder", "id": "8290188973", "sequence_id": "0", "etag": "0", "name": "Webhooks" }, "item_status": "active" }, "additional_info": [] } ``` ## Retries Delivery of a webhook payload fails when Box does not receive a response with a HTTP status code in the `200` to `299` range within 30 seconds of sending the payload. Box will retry webhook deliveries up to 12 times over a period of 2 hours. These numbers could be subject to change. # Limitations Source: https://developer.box.com/guides/webhooks/v2/limitations-v2 ## One webhook per item There's a limit of one webhook for each item (file or folder), each application and each authenticated user. Once a webhook is attached to an item, no second webhook can be attached, even if the second webhook would respond to a different trigger event. Example: a webhook is set up by `John Doe` to watch `FILE.UPLOADED` events in a folder with the name `Junk`, for an application named `CleanupApp`. At that point, no second webhook can be added to the `Junk` folder by the `CleanupApp` by `John Doe`, even if it is to trigger for an `FILE.DOWNLOADED` event. To listen to another event, update the existing webhook or create a new application. ## 1000 webhooks limit There is a limit of 1000 webhooks for each application and each user. To create more webhooks for a user, create another application or update existing webhooks to apply to higher levels in the folder tree. ## Notification URL restrictions The notification URL or `address` for a webhook must be a valid HTTPS URL that resolves to a valid IP address. It needs to have a certificate signed by a reputable certificate authority. Box does not support self-signed SSL certificates. The IP address of the server must be publicly accessible from the internet and cannot be a `(*.)box.com` address. The port used in the URL must be the standard HTTPS port (`443`). Notifications will not be delivered to other ports. The supported TLS protocol versions are `TLS 1.2` and `TLS 1.3` with FIPS-compliant cipher suites. ## No webhooks on root folder V2 webhooks cannot be created on the root folder, which is the folder with ID `0`. Instead, you will need to use a v1 webhook. When the permissions on an item prevent an action from occurring, no notification is sent for the attempted action. ## `NO_ACTIVE_SESSION` is set in the webhook payload If the auth session (access token) for the app you used to create a webhook expires, that webhook no longer sends events with a full payload. In that case, the event trigger is `NO_ACTIVE_SESSION`. ### JWT Auth For webhooks created with the JWT Auth app, the session expires when you delete the app authorization for this app in the Admin Console. For more information, see [application authorization guide][app authorization]. ### OAuth 2.0 For webhooks created with OAuth 2.0 Auth app, the session expires when both the access token and the refresh token for the user and app used for creating that webhook expire. ### Developer token As the developer token cannot be refreshed and expires after 1 hour, the event trigger `NO_ACTIVE_SESSION` is set in the webhook payload after 1 hour. ## Reasons for webhook deletion The following reasons can cause webhooks to be deleted. 1. Deleting a Box application automatically deletes all webhooks associated with it. 2. Deleting all active Access Tokens associated with a webhook automatically deletes the webhook. This includes Developer Tokens and password. 3. A webhook is automatically deleted if the last successful delivery was 30 days ago and the period between the last successful delivery and the last trigger date is more than 14 days. In all of these cases Box sends a webhook payload with the `WEBHOOK.DELETED` event name to the notification URL. The body of the payload includes the following additional information. ```json theme={null} "additional_info": { "reason": "auto_cleanup" } ``` [app authorization]: https://support.box.com/hc/en-us/articles/360043697014-Authorizing-Apps-in-the-Box-App-Approval-Process # List Webhooks for a User Source: https://developer.box.com/guides/webhooks/v2/list-v2 To fetch all webhooks for the authenticated user, use the list all webhooks endpoint. ```sh cURL theme={null} curl -i -X GET "https://api.box.com/2.0/webhooks" \ -H "authorization: Bearer " ``` ```typescript Node/TypeScript v10 theme={null} await client.webhooks.getWebhooks(); ``` ```python Python v10 theme={null} client.webhooks.get_webhooks() ``` ```cs .NET v10 theme={null} await client.Webhooks.GetWebhooksAsync(); ``` ```swift Swift v10 theme={null} try await client.webhooks.getWebhooks() ``` ```java Java v10 theme={null} client.getWebhooks().getWebhooks() ``` ```java Java v5 theme={null} Iterable webhooks = BoxWebHook.all(api); for (BoxWebHook.Info webhookInfo: webhooks) { // Do something with the webhook. } ``` ```python Python v4 theme={null} webhooks = client.get_webhooks() for webhook in webhooks: print(f'The webhook ID is {webhook.id} and the address is {webhook.address}') ``` ```cs .NET v6 theme={null} BoxCollectionMarkerBased webhooks = await client.WebhooksManager.GetWebhooksAsync(); ``` ```javascript Node v4 theme={null} client.webhooks.getAll() .then(webhooks => { /* webhooks -> { next_marker: 'ZmlQZS0xLTE%3D', entries: [ { id: '1234', type: 'webhook', target: { id: '22222', type: 'folder' } }, { id: '5678', type: 'webhook', target: { id: '11111', type: 'file' } } ], limit: 2 } */ }); ``` This endpoint requires the application to have the **Manage Webhooks** scope enabled. This API call will only list the webhooks for the authenticated user, not for any other users in the enterprise. # Signature Verification Source: https://developer.box.com/guides/webhooks/v2/signatures-v2 Webhook signatures help ensure that a webhook payload was sent by Box and was not tampered with. Signatures greatly reduce the likelihood of a successful man-in-the-middle or replay attacks. When signatures are configured, Box generates a cryptographic digest of the notification's body and attaches it to the header of the webhook payload. When your application receives the payload, verify the signatures by calculating the same digest and comparing it to the one received. If the digests do not match, the payload should not be trusted. You can achieve an extra level of protection by frequently changing the signature keys. To enable a smooth transition between the old and new keys, Box supports two simultaneous signature keys. ## Signature configuration In order to attach signatures to an application's notifications, you must first generate signature keys for the application. To configure your application's keys follow the steps below. 1. Navigate to the application in the developer console. 2. Click on the **Webhooks** tab. 3. Click the **Manage signature keys** button. 4. Click the **Generate Key** button to configure your keys. Once generating the primary or secondary key, copy the value. You will need it to verify the webhook payloads. Every webhook will now include a `BOX-SIGNATURE-PRIMARY` and `BOX-SIGNATURE-SECONDARY` header payload. ## Signature verification with SDKs Although it is possible to verify signatures manually, methods are provided for your convenience in the official Box SDKs. ## Manual signature verification The following steps describe the basics of how to verify a signature. ### Timestamp validation Check if the timestamp in the `BOX-DELIVERY-TIMESTAMP` header of the payload is not older than ten minutes. ```js theme={null} var timestamp = headers['BOX-DELIVERY-TIMESTAMP']; var date = Date.parse(timestamp); var expired = Date.now() - date > 10*60*1000; ``` ```python theme={null} import dateutil.parser import pytz import datetime timestamp = headers["BOX-DELIVERY-TIMESTAMP"] date = dateutil.parser.parse(timestamp).astimezone(pytz.utc) now = datetime.datetime.now(pytz.utc) delta = datetime.timedelta(minutes=10) expiry_date = now - deltaMinutes expired = date >= expiry_date ``` ### Calculate HMAC signature Calculate the HMAC of the payload using either one of the two configured signatures for the application in the [Developer Console][console]. Ensure you append the bytes of the payload body first, and then the bytes of the timestamp found in the `BOX-DELIVERY-TIMESTAMP` header. ```js theme={null} var crypto = require('crypto'); var primaryKey = '...'; var secondaryKey = '...'; var payload = '{"type":"webhook_event"...}'; var hmac1 = crypto.createHmac('sha256', primaryKey); hmac1.update(payload); hmac1.update(timestamp); var hmac2 = crypto.createHmac('sha256', secondaryKey); hmac2.update(payload); hmac2.update(timestamp); ``` ```python theme={null} import hmac import hashlib primary_key = '...' secondary_key = '...' payload = "{\"type\":\"webhook_event\"...}" bytes = bytes(payload, 'utf-8') + bytes(timestamp, 'utf-8') hmac1 = hmac.new(primary_key, bytes, hashlib.sha256).digest() hmac2 = hmac.new(secondary_key, bytes, hashlib.sha256).digest() ``` ### Base64 Conversion Convert the HMAC to a `Base64` encoded digest. ```js theme={null} var digest1 = hmac1.digest('base64'); var digest2 = hmac2.digest('base64'); ``` ```python theme={null} import base64 digest1 = base64.b64encode(hmac1) digest2 = base64.b64encode(hmac2) ``` ### Signature comparison Compare the encoded digest with the value of the `BOX-SIGNATURE-PRIMARY` or `BOX-SIGNATURE-SECONDARY` headers. Compare the value of the `BOX-SIGNATURE-PRIMARY` header to the digest created with the primary key, and the value of the `BOX-SIGNATURE-SECONDARY` header to the digest created with the secondary key. Make sure to use a timing-safe comparison between signatures to prevent timing attacks. ```js theme={null} const crypto = require('crypto'); function compareSignatures(expectedSignature, receivedSignature) { const expectedBuffer = Buffer.from(expectedSignature, 'base64'); const receivedBuffer = Buffer.from(receivedSignature, 'base64'); if (expectedBuffer.length !== receivedBuffer.length) { return false; } return crypto.timingSafeEqual(expectedBuffer, receivedBuffer); } const signature1 = headers['BOX-SIGNATURE-SECONDARY']; const signature2 = headers['BOX-SIGNATURE-PRIMARY']; const primarySignatureValid = compareSignatures(digest1, signature1) const secondarySignatureValid = compareSignatures(digest2, signature2) const valid = !expired && (primarySignatureValid || secondarySignatureValid) ``` ```python theme={null} import hmac def compare_signatures(expected_signature: Optional[str], received_signature: Optional[str]) -> bool: if not expected_signature or not received_signature: return False if len(expected_signature) != len(received_signature): return False return hmac.compare_digest(expected_signature, received_signature) signature1 = headers["BOX-SIGNATURE-SECONDARY"] signature2 = headers["BOX-SIGNATURE-PRIMARY"] primary_sig_valid = compare_signatures(digest1, signature1) secondary_sig_valid = compare_signatures(digest2, signature2) valid = not expired and (primary_sig_valid or secondary_sig_valid) ``` HTTP header names are case insensitive. Your client should convert all header names to a standardized lowercase or uppercase format before trying to determine the value of a header. ## Rotate signatures When enabled, Box sends two signatures with every webhook payload. Your application can trust a payload as long as at least one of its signatures is valid. When updating one signature key at a time your application will always receive a payload with at least one valid signature. ### Rotation steps These instructions assume that you have already created a primary and secondary key in the [Developer Console][console] and you are ready to replace either of them. By following these steps you can configure your application with two new keys without any conflicts. 1. Go to the **Webhooks** tab in the [Developer Console][console]. 2. Click the **Manage signatures keys**. 3. Click the **Reset** button to change the primary key. 4. Update your application with the new primary key. Your application can still receive notifications with the old primary key, but your webhooks should be processed correctly since the secondary key is still valid. 5. Once you are confident that no webhooks with the old primary key are in-flight, you can update the secondary key using the same process. [console]: https://app.box.com/developers/console # Update Webhooks Source: https://developer.box.com/guides/webhooks/v2/update-v2 You can update a webhook using the [Developer Console][console] or API. ## Developer Console To update a webhook in the [Developer Console][console], follow the steps below. 1. Go to the **Webhooks** tab in the [Developer Console][console] to display all webhooks. 2. Select the webhook you want to update by clicking on its ID. 3. Click the **Edit webhook** button. 4. Fill in the data you want to update. 5. Click the **Update** button to save your changes. The list of webhooks contains the following fields: **ID**, **Address**, **Content**, **Created by**, and **Created date**. ## API To update a webhook, use the update webhook endpoint, which requires the webhook ID. To find the ID of the webhook, use the list all webhooks endpoint. ```sh cURL theme={null} curl -i -X PUT "https://api.box.com/2.0/webhooks/3321123" \ -H "authorization: Bearer " \ -H "content-type: application/json" \ -d '{ "triggers": [ "FILE.DOWNLOADED" ] }' ``` ```typescript Node/TypeScript v10 theme={null} await client.webhooks.updateWebhookById(webhook.id!, { requestBody: { address: 'https://example.com/updated-webhook', } satisfies UpdateWebhookByIdRequestBody, } satisfies UpdateWebhookByIdOptionalsInput); ``` ```python Python v10 theme={null} client.webhooks.update_webhook_by_id( webhook.id, address="https://example.com/updated-webhook" ) ``` ```csharp .NET v10 theme={null} await client.Webhooks.UpdateWebhookByIdAsync(webhookId: NullableUtils.Unwrap(webhook.Id), requestBody: new UpdateWebhookByIdRequestBody() { Address = "https://example.com/updated-webhook" }); ``` ```swift Swift v10 theme={null} try await client.webhooks.updateWebhookById(webhookId: webhook.id!, requestBody: UpdateWebhookByIdRequestBody(address: "https://example.com/updated-webhook")) ``` ```java Java v10 theme={null} client.getWebhooks().updateWebhookById(webhook.getId(), new UpdateWebhookByIdRequestBody.Builder().address("https://example.com/updated-webhook").build()) ``` ```java Java v5 theme={null} BoxWebHook webhook = new BoxWebHook(api, id); BoxWebHook.Info info = webhook.new Info(); info.setAddress(url); webhook.update(info); ``` ```py Python v4 theme={null} update_object = { 'triggers': ['FILE.COPIED'], 'address': 'https://newexample.com', } webhook = client.webhook(webhook_id='12345').update_info(data=update_object) print(f'Updated the webhook info for triggers: {webhook.triggers} and address: {webhook.address}') ``` ```csharp .NET v6 theme={null} var updates = new BoxWebhookRequest() { Id = "12345", Address = "https://example.com/webhooks/fileActions }; BoxWebhook updatedWebhook = await client.WebhooksManager.UpdateWebhookAsync(updates); ``` ```js Node v4 theme={null} client.webhooks.update('678901', {address: "https://example.com/webhooks/fileActions"}) .then(webhook => { /* webhook -> { id: '1234', type: 'webhook', target: { id: '22222', type: 'folder' }, created_by: { type: 'user', id: '33333', name: 'Example User', login: 'user@example.com' }, created_at: '2016-05-09T17:41:27-07:00', address: 'https://example.com/webhooks/fileActions', triggers: [ 'FILE.DOWNLOADED', 'FILE.UPLOADED' ] } */ }); ``` [console]: https://app.box.com/developers/console # Delete archive Source: https://developer.box.com/reference/v2025.0/delete-archives-id box-openapi-v2025.0.json delete /archives/{archive_id} Permanently deletes an archive. To learn more about the archive APIs, see the [Archive API Guide](https://developer.box.com/guides/archives). Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List archives Source: https://developer.box.com/reference/v2025.0/get-archives box-openapi-v2025.0.json get /archives Retrieves archives for an enterprise. To learn more about the archive APIs, see the [Archive API Guide](https://developer.box.com/guides/archives). Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get Box Doc Gen jobs by batch ID Source: https://developer.box.com/reference/v2025.0/get-docgen-batch-jobs-id box-openapi-v2025.0.json get /docgen_batch_jobs/{batch_id} Lists Box Doc Gen jobs in a batch. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List all Box Doc Gen jobs Source: https://developer.box.com/reference/v2025.0/get-docgen-jobs box-openapi-v2025.0.json get /docgen_jobs Lists all Box Doc Gen jobs for a user. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get Box Doc Gen job by ID Source: https://developer.box.com/reference/v2025.0/get-docgen-jobs-id box-openapi-v2025.0.json get /docgen_jobs/{job_id} Get details of the Box Doc Gen job. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # API Reference Source: https://developer.box.com/reference/v2025.0/index Create and manage Box Archive resources Generate documents programmatically from templates Manage document generation templates Manage collaborations for Box Hubs Manage items within Box Hubs Create and manage Box Hubs Configure enterprise-wide settings Manage external user access Manage access control lists # Create archive Source: https://developer.box.com/reference/v2025.0/post-archives box-openapi-v2025.0.json post /archives Creates an archive. To learn more about the archive APIs, see the [Archive API Guide](https://developer.box.com/guides/archives). Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Generate document using Box Doc Gen template Source: https://developer.box.com/reference/v2025.0/post-docgen-batches box-openapi-v2025.0.json post /docgen_batches Generates a document using a Box Doc Gen template. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update archive Source: https://developer.box.com/reference/v2025.0/put-archives-id box-openapi-v2025.0.json put /archives/{archive_id} Updates an archive. To learn more about the archive APIs, see the [Archive API Guide](https://developer.box.com/guides/archives). Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Archive Source: https://developer.box.com/reference/v2025.0/resources/archive # Archives Source: https://developer.box.com/reference/v2025.0/resources/archives # Box Doc Gen batch (Base) Source: https://developer.box.com/reference/v2025.0/resources/docgen-batch--base # Box Doc Gen job Source: https://developer.box.com/reference/v2025.0/resources/docgen-job # Box Doc Gen job (Base) Source: https://developer.box.com/reference/v2025.0/resources/docgen-job--base # Box Doc Gen job (Full) Source: https://developer.box.com/reference/v2025.0/resources/docgen-job--full # Box Doc Gen jobs Source: https://developer.box.com/reference/v2025.0/resources/docgen-jobs # Box Doc Gen jobs (Full) Source: https://developer.box.com/reference/v2025.0/resources/docgen-jobs--full # Box Doc Gen template tag Source: https://developer.box.com/reference/v2025.0/resources/docgen-tag # Box Doc Gen tags Source: https://developer.box.com/reference/v2025.0/resources/docgen-tags # Box Doc Gen tags processing message Source: https://developer.box.com/reference/v2025.0/resources/docgen-tags-processing-message # Box Doc Gen template Source: https://developer.box.com/reference/v2025.0/resources/docgen-template # Box Doc Gen templates Source: https://developer.box.com/reference/v2025.0/resources/docgen-templates # Delete AI agent Source: https://developer.box.com/reference/delete-ai-agents-id box-openapi.json delete /ai_agents/{agent_id} Deletes an AI agent using the provided parameters. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get AI agent default configuration Source: https://developer.box.com/reference/get-ai-agent-default box-openapi.json get /ai_agent_default Get the AI agent default config. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List AI agents Source: https://developer.box.com/reference/get-ai-agents box-openapi.json get /ai_agents Lists AI agents based on the provided parameters. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get AI agent by agent ID Source: https://developer.box.com/reference/get-ai-agents-id box-openapi.json get /ai_agents/{agent_id} Gets an AI Agent using the `agent_id` parameter. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Authorize user Source: https://developer.box.com/reference/get-authorize box-openapi.json get /authorize Authorize a user by sending them through the [Box](https://box.com) website and request their permission to act on their behalf. This is the first step when authenticating a user using OAuth 2.0. To request a user's authorization to use the Box APIs on their behalf you will need to send a user to the URL with this format. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List file app item associations Source: https://developer.box.com/reference/get-files-id-app-item-associations box-openapi.json get /files/{file_id}/app_item_associations **This is a beta feature, which means that its availability might be limited.** Returns all app items the file is associated with. This includes app items associated with ancestors of the file. Assuming the context user has access to the file, the type/ids are revealed even if the context user does not have **View** permission on the app item. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List folder app item associations Source: https://developer.box.com/reference/get-folders-id-app-item-associations box-openapi.json get /folders/{folder_id}/app_item_associations **This is a beta feature, which means that its availability might be limited.** Returns all app items the folder is associated with. This includes app items associated with ancestors of the folder. Assuming the context user has access to the folder, the type/ids are revealed even if the context user does not have **View** permission on the app item. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List Box Sign requests Source: https://developer.box.com/reference/get-sign-requests box-openapi.json get /sign_requests Gets signature requests created by a user. If the `sign_files` and/or `parent_folder` are deleted, the signature request will not return in the list. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get Box Sign request by ID Source: https://developer.box.com/reference/get-sign-requests-id box-openapi.json get /sign_requests/{sign_request_id} Gets a sign request by ID. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List Box Sign templates Source: https://developer.box.com/reference/get-sign-templates box-openapi.json get /sign_templates Gets Box Sign templates created by a user. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get Box Sign template by ID Source: https://developer.box.com/reference/get-sign-templates-id box-openapi.json get /sign_templates/{template_id} Fetches details of a specific Box Sign template. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # API Reference Source: https://developer.box.com/reference/index AI-powered features for asking questions and extracting data Build and manage custom AI agents Associate app items with files and folders OAuth 2.0 authorization and token management Create and manage e-signature requests Manage reusable e-signature templates Define and manage security classifications Apply classifications to files Apply classifications to folders Create and manage file/folder collaborations List collaborations for users, files, folders, and groups Organize content into collections Add and manage comments on files Manage device pinning for offline access Exempt users from domain restrictions Restrict collaborations to specific domains Download file content Manage user email aliases Monitor Box events and activity Create and manage file upload requests Apply legal holds to specific file versions Manage retention policies for file versions Access and manage file version history Core file operations and management Lock folders to prevent modifications Core folder operations and management Manage user membership in groups Create and manage user groups Map Box users to external integrations Invite users to join Box Define and manage legal hold policies Apply legal hold policies to content Auto-apply metadata to folder contents Manage metadata on files Manage metadata on folders Define custom metadata schemas Access recently accessed items Define content retention policies Apply retention policies to content Search for files and folders Terminate user or group sessions Access app items via shared links Create and manage shared links for files Create and manage shared links for folders Access web links via shared links Generate reports on information barriers Manage users in barrier segments Define restrictions between segments Create and manage barrier segments Implement information barriers for compliance Apply AI-powered skills to files Manage storage location policies Assign storage policies to users Assign tasks to users Create and manage file-based tasks Define enterprise terms of service Track user acceptance of terms Transfer folder ownership between users Manage files in trash Manage folders in trash List all items in trash Manage web links in trash Upload files to Box Upload large files in chunks Manage user profile images Create and manage users Apply watermarks to files Apply watermarks to folders Create and manage bookmarks Configure real-time event notifications Trigger and manage Box Relay workflows Download multiple items as zip archives # Create AI agent Source: https://developer.box.com/reference/post-ai-agents box-openapi.json post /ai_agents Creates an AI agent. At least one of the following capabilities must be provided: `ask`, `text_gen`, `extract`. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Ask question Source: https://developer.box.com/reference/post-ai-ask box-openapi.json post /ai/ask Sends an AI request to supported LLMs and returns an answer specifically focused on the user's question given the provided context. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Extract metadata (freeform) Source: https://developer.box.com/reference/post-ai-extract box-openapi.json post /ai/extract Sends an AI request to supported Large Language Models (LLMs) and extracts metadata in form of key-value pairs. In this request, both the prompt and the output can be freeform. Metadata template setup before sending the request is not required. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Extract metadata (structured) Source: https://developer.box.com/reference/post-ai-extract-structured box-openapi.json post /ai/extract_structured Sends an AI request to supported Large Language Models (LLMs) and returns extracted metadata as a set of key-value pairs. To define the extraction structure, provide either a metadata template or a list of fields. To learn more about creating templates, see [Creating metadata templates in the Admin Console](https://support.box.com/hc/en-us/articles/360044194033-Customizing-Metadata-Templates) or use the [metadata template API](https://developer.box.com/guides/metadata/templates/create). This endpoint also supports [Enhanced Extract Agent](https://developer.box.com/guides/box-ai/ai-tutorials/extract-metadata-structured#enhanced-extract-agent). For information about supported file formats and languages, see the [Extract metadata from file (structured)](https://developer.box.com/guides/box-ai/ai-tutorials/extract-metadata-structured) API guide. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Generate text Source: https://developer.box.com/reference/post-ai-text-gen box-openapi.json post /ai/text_gen Sends an AI request to supported Large Language Models (LLMs) and returns generated text based on the provided prompt. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Revoke access token Source: https://developer.box.com/reference/post-oauth2-revoke box-openapi.json post /oauth2/revoke Revoke an active Access Token, effectively logging a user out that has been previously authenticated. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Request access token Source: https://developer.box.com/reference/post-oauth2-token box-openapi.json post /oauth2/token Request an Access Token using either a client-side obtained OAuth 2.0 authorization code or a server-side JWT assertion. An Access Token is a string that enables Box to verify that a request belongs to an authorized session. In the normal order of operations you will begin by requesting authentication from the [authorize](https://developer.box.com/reference/get-authorize) endpoint and Box will send you an authorization code. You will then send this code to this endpoint to exchange it for an Access Token. The returned Access Token can then be used to to make Box API calls. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Refresh access token Source: https://developer.box.com/reference/post-oauth2-token--refresh box-openapi.json post /oauth2/token#refresh Refresh an Access Token using its client ID, secret, and refresh token. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create Box Sign request Source: https://developer.box.com/reference/post-sign-requests box-openapi.json post /sign_requests Creates a signature request. This involves preparing a document for signing and sending the signature request to signers. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Cancel Box Sign request Source: https://developer.box.com/reference/post-sign-requests-id-cancel box-openapi.json post /sign_requests/{sign_request_id}/cancel Cancels a sign request. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Resend Box Sign request Source: https://developer.box.com/reference/post-sign-requests-id-resend box-openapi.json post /sign_requests/{sign_request_id}/resend Resends a signature request email to all outstanding signers. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update AI agent Source: https://developer.box.com/reference/put-ai-agents-id box-openapi.json put /ai_agents/{agent_id} Updates an AI agent. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Access token Source: https://developer.box.com/reference/resources/access-token # AI agent for question requests Source: https://developer.box.com/reference/resources/ai-agent-ask # AI agent for extract requests Source: https://developer.box.com/reference/resources/ai-agent-extract # AI agent for structured extract request Source: https://developer.box.com/reference/resources/ai-agent-extract-structured # AI agent reference Source: https://developer.box.com/reference/resources/ai-agent-reference # AI agent for text generation requests Source: https://developer.box.com/reference/resources/ai-agent-text-gen # AI extract response Source: https://developer.box.com/reference/resources/ai-extract-response # AI extract structured response Source: https://developer.box.com/reference/resources/ai-extract-structured-response # AI agents list Source: https://developer.box.com/reference/resources/ai-multiple-agent-response # AI response Source: https://developer.box.com/reference/resources/ai-response # AI response (Full) Source: https://developer.box.com/reference/resources/ai-response--full # AI agent Source: https://developer.box.com/reference/resources/ai-single-agent-response # AI agent (Full) Source: https://developer.box.com/reference/resources/ai-single-agent-response--full # AI agent capability ask request Source: https://developer.box.com/reference/resources/ai-studio-agent-ask # AI agent capability ask Source: https://developer.box.com/reference/resources/ai-studio-agent-ask-response # AI agent capability extract request Source: https://developer.box.com/reference/resources/ai-studio-agent-extract # AI agent capability extract Source: https://developer.box.com/reference/resources/ai-studio-agent-extract-response # AI agent capability text generation request Source: https://developer.box.com/reference/resources/ai-studio-agent-text-gen # AI agent capability text generation Source: https://developer.box.com/reference/resources/ai-studio-agent-text-gen-response # App item Source: https://developer.box.com/reference/resources/app-item # App item association Source: https://developer.box.com/reference/resources/app-item-association # App item associations Source: https://developer.box.com/reference/resources/app-item-associations # OAuth 2.0 error Source: https://developer.box.com/reference/resources/oauth2-error # Box Sign request Source: https://developer.box.com/reference/resources/sign-request # Box Sign requests Source: https://developer.box.com/reference/resources/sign-requests # Box Sign template Source: https://developer.box.com/reference/resources/sign-template # Box Sign templates Source: https://developer.box.com/reference/resources/sign-templates # Delete Box Doc Gen template Source: https://developer.box.com/reference/v2025.0/delete-docgen-templates-id box-openapi-v2025.0.json delete /docgen_templates/{template_id} Unmarks file as Box Doc Gen template. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Remove Box Hub collaboration Source: https://developer.box.com/reference/v2025.0/delete-hub-collaborations-id box-openapi-v2025.0.json delete /hub_collaborations/{hub_collaboration_id} Deletes a single Box Hub collaboration. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Delete Box Hub Source: https://developer.box.com/reference/v2025.0/delete-hubs-id box-openapi-v2025.0.json delete /hubs/{hub_id} Deletes a single Box Hub. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Delete single shield list by shield list id Source: https://developer.box.com/reference/v2025.0/delete-shield-lists-id box-openapi-v2025.0.json delete /shield_lists/{shield_list_id} Delete a single shield list by its ID. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get list of all Box Doc Gen jobs for template Source: https://developer.box.com/reference/v2025.0/get-docgen-template-jobs-id box-openapi-v2025.0.json get /docgen_template_jobs/{template_id} Lists the users jobs which use this template. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List Box Doc Gen templates Source: https://developer.box.com/reference/v2025.0/get-docgen-templates box-openapi-v2025.0.json get /docgen_templates Lists Box Doc Gen templates on which the user is a collaborator. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get Box Doc Gen template by ID Source: https://developer.box.com/reference/v2025.0/get-docgen-templates-id box-openapi-v2025.0.json get /docgen_templates/{template_id} Lists details of a specific Box Doc Gen template. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List all Box Doc Gen template tags in template Source: https://developer.box.com/reference/v2025.0/get-docgen-templates-id-tags box-openapi-v2025.0.json get /docgen_templates/{template_id}/tags Lists all tags in a Box Doc Gen template. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get enterprise configuration Source: https://developer.box.com/reference/v2025.0/get-enterprise-configurations-id box-openapi-v2025.0.json get /enterprise_configurations/{enterprise_id} Retrieves the configuration for an enterprise. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List all Box Hubs for requesting enterprise Source: https://developer.box.com/reference/v2025.0/get-enterprise-hubs box-openapi-v2025.0.json get /enterprise_hubs Retrieves all Box Hubs for a given enterprise. Admins or Hub Co-admins of an enterprise with GCM scope can make this call. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get Box Hub collaborations Source: https://developer.box.com/reference/v2025.0/get-hub-collaborations box-openapi-v2025.0.json get /hub_collaborations Retrieves all collaborations for a Box Hub. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get Box Hub collaboration by collaboration ID Source: https://developer.box.com/reference/v2025.0/get-hub-collaborations-id box-openapi-v2025.0.json get /hub_collaborations/{hub_collaboration_id} Retrieves details for a Box Hub collaboration by collaboration ID. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get Box Hub items Source: https://developer.box.com/reference/v2025.0/get-hub-items box-openapi-v2025.0.json get /hub_items Retrieves all items associated with a Box Hub. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List all Box Hubs Source: https://developer.box.com/reference/v2025.0/get-hubs box-openapi-v2025.0.json get /hubs Retrieves all Box Hubs for requesting user. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get Box Hub information by ID Source: https://developer.box.com/reference/v2025.0/get-hubs-id box-openapi-v2025.0.json get /hubs/{hub_id} Retrieves details for a Box Hub by its ID. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get all shield lists in enterprise Source: https://developer.box.com/reference/v2025.0/get-shield-lists box-openapi-v2025.0.json get /shield_lists Retrieves all shield lists in the enterprise. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get single shield list by shield list id Source: https://developer.box.com/reference/v2025.0/get-shield-lists-id box-openapi-v2025.0.json get /shield_lists/{shield_list_id} Retrieves a single shield list by its ID. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create Box Doc Gen template Source: https://developer.box.com/reference/v2025.0/post-docgen-templates box-openapi-v2025.0.json post /docgen_templates Marks a file as a Box Doc Gen template. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Submit job to delete external users Source: https://developer.box.com/reference/v2025.0/post-external-users-submit-delete-job box-openapi-v2025.0.json post /external_users/submit_delete_job Delete external users from current user enterprise. This will remove each external user from all invited collaborations within the current enterprise. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create Box Hub collaboration Source: https://developer.box.com/reference/v2025.0/post-hub-collaborations box-openapi-v2025.0.json post /hub_collaborations Adds a collaboration for a single user or a single group to a Box Hub. Collaborations can be created using email address, user IDs, or group IDs. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create Box Hub Source: https://developer.box.com/reference/v2025.0/post-hubs box-openapi-v2025.0.json post /hubs Creates a new Box Hub. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Copy Box Hub Source: https://developer.box.com/reference/v2025.0/post-hubs-id-copy box-openapi-v2025.0.json post /hubs/{hub_id}/copy Creates a copy of a Box Hub. The original Box Hub will not be modified. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Manage Box Hub items Source: https://developer.box.com/reference/v2025.0/post-hubs-id-manage-items box-openapi-v2025.0.json post /hubs/{hub_id}/manage_items Adds and/or removes Box Hub items from a Box Hub. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create shield list Source: https://developer.box.com/reference/v2025.0/post-shield-lists box-openapi-v2025.0.json post /shield_lists Creates a shield list. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update Box Hub collaboration Source: https://developer.box.com/reference/v2025.0/put-hub-collaborations-id box-openapi-v2025.0.json put /hub_collaborations/{hub_collaboration_id} Updates a Box Hub collaboration. Can be used to change the Box Hub role. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update Box Hub information by ID Source: https://developer.box.com/reference/v2025.0/put-hubs-id box-openapi-v2025.0.json put /hubs/{hub_id} Updates a Box Hub. Can be used to change title, description, or Box Hub settings. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update shield list Source: https://developer.box.com/reference/v2025.0/put-shield-lists-id box-openapi-v2025.0.json put /shield_lists/{shield_list_id} Updates a shield list. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Enterprise configuration Source: https://developer.box.com/reference/v2025.0/resources/enterprise-configuration # Enterprise configuration content and sharing Source: https://developer.box.com/reference/v2025.0/resources/enterprise-configuration-content-and-sharing # Enterprise configuration security Source: https://developer.box.com/reference/v2025.0/resources/enterprise-configuration-security # Enterprise configuration shield Source: https://developer.box.com/reference/v2025.0/resources/enterprise-configuration-shield # Enterprise configuration user settings Source: https://developer.box.com/reference/v2025.0/resources/enterprise-configuration-user-settings # External Users Submit Delete Job Response Source: https://developer.box.com/reference/v2025.0/resources/external-users-submit-delete-job-response # Box Hub Source: https://developer.box.com/reference/v2025.0/resources/hub # Box Hub (Base) Source: https://developer.box.com/reference/v2025.0/resources/hub--base # Box Hub Collaboration Source: https://developer.box.com/reference/v2025.0/resources/hub-collaboration # Box Hub Collaborations Source: https://developer.box.com/reference/v2025.0/resources/hub-collaborations # Box Hub Item Source: https://developer.box.com/reference/v2025.0/resources/hub-item # Box Hub Items Source: https://developer.box.com/reference/v2025.0/resources/hub-items # Box Hub Items Manage Response Source: https://developer.box.com/reference/v2025.0/resources/hub-items-manage-response # Box Hubs Source: https://developer.box.com/reference/v2025.0/resources/hubs # Shield List Source: https://developer.box.com/reference/v2025.0/resources/shield-list # Shield List (Mini) Source: https://developer.box.com/reference/v2025.0/resources/shield-list--mini # Shield List Content (Country) Source: https://developer.box.com/reference/v2025.0/resources/shield-list-content--country # Shield List Content (Domain) Source: https://developer.box.com/reference/v2025.0/resources/shield-list-content--domains # Shield List Content (Email) Source: https://developer.box.com/reference/v2025.0/resources/shield-list-content--email # Shield List Content (Integration) Source: https://developer.box.com/reference/v2025.0/resources/shield-list-content--integration # Shield List Content (IP) Source: https://developer.box.com/reference/v2025.0/resources/shield-list-content--ip # List of Shield Lists Source: https://developer.box.com/reference/v2025.0/resources/shield-lists # Remove domain from list of allowed collaboration domains Source: https://developer.box.com/reference/delete-collaboration-whitelist-entries-id box-openapi.json delete /collaboration_whitelist_entries/{collaboration_whitelist_entry_id} Removes a domain from the list of domains that have been deemed safe to create collaborations for within the current enterprise. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Remove user from list of users exempt from domain restrictions Source: https://developer.box.com/reference/delete-collaboration-whitelist-exempt-targets-id box-openapi.json delete /collaboration_whitelist_exempt_targets/{collaboration_whitelist_exempt_target_id} Removes a user's exemption from the restrictions set out by the allowed list of domains for collaborations. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Remove collaboration Source: https://developer.box.com/reference/delete-collaborations-id box-openapi.json delete /collaborations/{collaboration_id} Deletes a single collaboration. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Remove comment Source: https://developer.box.com/reference/delete-comments-id box-openapi.json delete /comments/{comment_id} Permanently deletes a comment. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Remove device pin Source: https://developer.box.com/reference/delete-device-pinners-id box-openapi.json delete /device_pinners/{device_pinner_id} Deletes an individual device pin. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Delete file request Source: https://developer.box.com/reference/delete-file-requests-id box-openapi.json delete /file_requests/{file_request_id} Deletes a file request permanently. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Delete file Source: https://developer.box.com/reference/delete-files-id box-openapi.json delete /files/{file_id} Deletes a file, either permanently or by moving it to the trash. The enterprise settings determine whether the item will be permanently deleted from Box or moved to the trash. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Remove classification from file Source: https://developer.box.com/reference/delete-files-id-metadata-enterprise-securityClassification-6VMVochwUWo box-openapi.json delete /files/{file_id}/metadata/enterprise/securityClassification-6VMVochwUWo Removes any classifications from a file. This API can also be called by including the enterprise ID in the URL explicitly, for example `/files/:id//enterprise_12345/securityClassification-6VMVochwUWo`. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Remove file version Source: https://developer.box.com/reference/delete-files-id-versions-id box-openapi.json delete /files/{file_id}/versions/{file_version_id} Move a file version to the trash. Versions are only tracked for Box users with premium accounts. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Remove classification from folder Source: https://developer.box.com/reference/delete-folders-id-metadata-enterprise-securityClassification-6VMVochwUWo box-openapi.json delete /folders/{folder_id}/metadata/enterprise/securityClassification-6VMVochwUWo Removes any classifications from a folder. This API can also be called by including the enterprise ID in the URL explicitly, for example `/folders/:id/enterprise_12345/securityClassification-6VMVochwUWo`. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Remove email alias Source: https://developer.box.com/reference/delete-users-id-email-aliases-id box-openapi.json delete /users/{user_id}/email_aliases/{email_alias_id} Removes an email alias from a user. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List allowed collaboration domains Source: https://developer.box.com/reference/get-collaboration-whitelist-entries box-openapi.json get /collaboration_whitelist_entries Returns the list domains that have been deemed safe to create collaborations for within the current enterprise. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get allowed collaboration domain Source: https://developer.box.com/reference/get-collaboration-whitelist-entries-id box-openapi.json get /collaboration_whitelist_entries/{collaboration_whitelist_entry_id} Returns a domain that has been deemed safe to create collaborations for within the current enterprise. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List users exempt from collaboration domain restrictions Source: https://developer.box.com/reference/get-collaboration-whitelist-exempt-targets box-openapi.json get /collaboration_whitelist_exempt_targets Returns a list of users who have been exempt from the collaboration domain restrictions. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get user exempt from collaboration domain restrictions Source: https://developer.box.com/reference/get-collaboration-whitelist-exempt-targets-id box-openapi.json get /collaboration_whitelist_exempt_targets/{collaboration_whitelist_exempt_target_id} Returns a users who has been exempt from the collaboration domain restrictions. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List pending collaborations Source: https://developer.box.com/reference/get-collaborations box-openapi.json get /collaborations Retrieves all pending collaboration invites for this user. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get collaboration Source: https://developer.box.com/reference/get-collaborations-id box-openapi.json get /collaborations/{collaboration_id} Retrieves a single collaboration. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List all collections Source: https://developer.box.com/reference/get-collections box-openapi.json get /collections Retrieves all collections for a given user. Currently, only the `favorites` collection is supported. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get collection by ID Source: https://developer.box.com/reference/get-collections-id box-openapi.json get /collections/{collection_id} Retrieves a collection by its ID. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List collection items Source: https://developer.box.com/reference/get-collections-id-items box-openapi.json get /collections/{collection_id}/items Retrieves the files and/or folders contained within this collection. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get comment Source: https://developer.box.com/reference/get-comments-id box-openapi.json get /comments/{comment_id} Retrieves the message and metadata for a specific comment, as well as information on the user who created the comment. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get device pin Source: https://developer.box.com/reference/get-device-pinners-id box-openapi.json get /device_pinners/{device_pinner_id} Retrieves information about an individual device pin. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List enterprise device pins Source: https://developer.box.com/reference/get-enterprises-id-device-pinners box-openapi.json get /enterprises/{enterprise_id}/device_pinners Retrieves all the device pins within an enterprise. The user must have admin privileges, and the application needs the "manage enterprise" scope to make this call. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List user and enterprise events Source: https://developer.box.com/reference/get-events box-openapi.json get /events Returns up to a year of past events for a given user or for the entire enterprise. By default this returns events for the authenticated user. To retrieve events for the entire enterprise, set the `stream_type` to `admin_logs_streaming` for live monitoring of new events, or `admin_logs` for querying across historical events. The user making the API call will need to have admin privileges, and the application will need to have the scope `manage enterprise properties` checked. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get file request Source: https://developer.box.com/reference/get-file-requests-id box-openapi.json get /file_requests/{file_request_id} Retrieves the information about a file request. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List file version legal holds Source: https://developer.box.com/reference/get-file-version-legal-holds box-openapi.json get /file_version_legal_holds Get a list of file versions on legal hold for a legal hold assignment. Due to ongoing re-architecture efforts this API might not return all file versions for this policy ID. Instead, this API will only return file versions held in the legacy architecture. Two new endpoints will available to request any file versions held in the new architecture. For file versions held in the new architecture, the `GET /legal_hold_policy_assignments/:id/file_versions_on_hold` API can be used to return all past file versions available for this policy assignment, and the `GET /legal_hold_policy_assignments/:id/files_on_hold` API can be used to return any current (latest) versions of a file under legal hold. The `GET /legal_hold_policy_assignments?policy_id={id}` API can be used to find a list of policy assignments for a given policy ID. Once the re-architecture is completed this API will be deprecated. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get file version legal hold Source: https://developer.box.com/reference/get-file-version-legal-holds-id box-openapi.json get /file_version_legal_holds/{file_version_legal_hold_id} Retrieves information about the legal hold policies assigned to a file version. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List file version retentions Source: https://developer.box.com/reference/get-file-version-retentions box-openapi.json get /file_version_retentions Retrieves all file version retentions for the given enterprise. **Note**: File retention API is now **deprecated**. To get information about files and file versions under retention, see [files under retention](https://developer.box.com/reference/get-retention-policy-assignments-id-files-under-retention) or [file versions under retention](https://developer.box.com/reference/get-retention-policy-assignments-id-file-versions-under-retention) endpoints. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get retention on file Source: https://developer.box.com/reference/get-file-version-retentions-id box-openapi.json get /file_version_retentions/{file_version_retention_id} Returns information about a file version retention. **Note**: File retention API is now **deprecated**. To get information about files and file versions under retention, see [files under retention](https://developer.box.com/reference/get-retention-policy-assignments-id-files-under-retention) or [file versions under retention](https://developer.box.com/reference/get-retention-policy-assignments-id-file-versions-under-retention) endpoints. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get file information Source: https://developer.box.com/reference/get-files-id box-openapi.json get /files/{file_id} Retrieves the details about a file. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List file collaborations Source: https://developer.box.com/reference/get-files-id-collaborations box-openapi.json get /files/{file_id}/collaborations Retrieves a list of pending and active collaborations for a file. This returns all the users that have access to the file or have been invited to the file. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List file comments Source: https://developer.box.com/reference/get-files-id-comments box-openapi.json get /files/{file_id}/comments Retrieves a list of comments for a file. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Download file Source: https://developer.box.com/reference/get-files-id-content box-openapi.json get /files/{file_id}/content Returns the contents of a file in binary format. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get classification on file Source: https://developer.box.com/reference/get-files-id-metadata-enterprise-securityClassification-6VMVochwUWo box-openapi.json get /files/{file_id}/metadata/enterprise/securityClassification-6VMVochwUWo Retrieves the classification metadata instance that has been applied to a file. This API can also be called by including the enterprise ID in the URL explicitly, for example `/files/:id//enterprise_12345/securityClassification-6VMVochwUWo`. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get file thumbnail Source: https://developer.box.com/reference/get-files-id-thumbnail-id box-openapi.json get /files/{file_id}/thumbnail.{extension} Retrieves a thumbnail, or smaller image representation, of a file. Sizes of `32x32`,`64x64`, `128x128`, and `256x256` can be returned in the `.png` format and sizes of `32x32`, `160x160`, and `320x320` can be returned in the `.jpg` format. Thumbnails can be generated for the image and video file formats listed [found on our community site][1]. [1]: https://community.box.com/t5/Migrating-and-Previewing-Content/File-Types-and-Fonts-Supported-in-Box-Content-Preview/ta-p/327 This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List all file versions Source: https://developer.box.com/reference/get-files-id-versions box-openapi.json get /files/{file_id}/versions Retrieve a list of the past versions for a file. Versions are only tracked by Box users with premium accounts. To fetch the ID of the current version of a file, use the `GET /file/:id` API. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get file version Source: https://developer.box.com/reference/get-files-id-versions-id box-openapi.json get /files/{file_id}/versions/{file_version_id} Retrieve a specific version of a file. Versions are only tracked for Box users with premium accounts. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List folder locks Source: https://developer.box.com/reference/get-folder-locks box-openapi.json get /folder_locks Retrieves folder lock details for a given folder. You must be authenticated as the owner or co-owner of the folder to use this endpoint. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List folder collaborations Source: https://developer.box.com/reference/get-folders-id-collaborations box-openapi.json get /folders/{folder_id}/collaborations Retrieves a list of pending and active collaborations for a folder. This returns all the users that have access to the folder or have been invited to the folder. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get classification on folder Source: https://developer.box.com/reference/get-folders-id-metadata-enterprise-securityClassification-6VMVochwUWo box-openapi.json get /folders/{folder_id}/metadata/enterprise/securityClassification-6VMVochwUWo Retrieves the classification metadata instance that has been applied to a folder. This API can also be called by including the enterprise ID in the URL explicitly, for example `/folders/:id/enterprise_12345/securityClassification-6VMVochwUWo`. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List group collaborations Source: https://developer.box.com/reference/get-groups-id-collaborations box-openapi.json get /groups/{group_id}/collaborations Retrieves all the collaborations for a group. The user must have admin permissions to inspect enterprise's groups. Each collaboration object has details on which files or folders the group has access to and with what role. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List all classifications Source: https://developer.box.com/reference/get-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema box-openapi.json get /metadata_templates/enterprise/securityClassification-6VMVochwUWo/schema Retrieves the classification metadata template and lists all the classifications available to this enterprise. This API can also be called by including the enterprise ID in the URL explicitly, for example `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List user's email aliases Source: https://developer.box.com/reference/get-users-id-email-aliases box-openapi.json get /users/{user_id}/email_aliases Retrieves all email aliases for a user. The collection does not include the primary login for the user. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get events long poll endpoint Source: https://developer.box.com/reference/options-events box-openapi.json options /events This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Add domain to list of allowed collaboration domains Source: https://developer.box.com/reference/post-collaboration-whitelist-entries box-openapi.json post /collaboration_whitelist_entries Creates a new entry in the list of allowed domains to allow collaboration for. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create user exemption from collaboration domain restrictions Source: https://developer.box.com/reference/post-collaboration-whitelist-exempt-targets box-openapi.json post /collaboration_whitelist_exempt_targets Exempts a user from the restrictions set out by the allowed list of domains for collaborations. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create collaboration Source: https://developer.box.com/reference/post-collaborations box-openapi.json post /collaborations Adds a collaboration for a single user or a single group to a file or folder. Collaborations can be created using email address, user IDs, or a group IDs. If a collaboration is being created with a group, access to this endpoint is dependent on the group's ability to be invited. If collaboration is in `pending` status, the following fields are redacted: - `login` and `name` are hidden if a collaboration was created using `user_id`, - `name` is hidden if a collaboration was created using `login`. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create comment Source: https://developer.box.com/reference/post-comments box-openapi.json post /comments Adds a comment by the user to a specific file, or as a reply to an other comment. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Copy file request Source: https://developer.box.com/reference/post-file-requests-id-copy box-openapi.json post /file_requests/{file_request_id}/copy Copies an existing file request that is already present on one folder, and applies it to another folder. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Copy file Source: https://developer.box.com/reference/post-files-id-copy box-openapi.json post /files/{file_id}/copy Creates a copy of a file. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Add classification to file Source: https://developer.box.com/reference/post-files-id-metadata-enterprise-securityClassification-6VMVochwUWo box-openapi.json post /files/{file_id}/metadata/enterprise/securityClassification-6VMVochwUWo Adds a classification to a file by specifying the label of the classification to add. This API can also be called by including the enterprise ID in the URL explicitly, for example `/files/:id//enterprise_12345/securityClassification-6VMVochwUWo`. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Promote file version Source: https://developer.box.com/reference/post-files-id-versions-current box-openapi.json post /files/{file_id}/versions/current Promote a specific version of a file. If previous versions exist, this method can be used to promote one of the older versions to the top of the version history. This creates a new copy of the old version and puts it at the top of the versions history. The file will have the exact same contents as the older version, with the same hash digest, `etag`, and name as the original. Other properties such as comments do not get updated to their former values. Don't use this endpoint to restore Box Notes, as it works with file formats such as PDF, DOC, PPTX or similar. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create folder lock Source: https://developer.box.com/reference/post-folder-locks box-openapi.json post /folder_locks Creates a folder lock on a folder, preventing it from being moved and/or deleted. You must be authenticated as the owner or co-owner of the folder to use this endpoint. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Add classification to folder Source: https://developer.box.com/reference/post-folders-id-metadata-enterprise-securityClassification-6VMVochwUWo box-openapi.json post /folders/{folder_id}/metadata/enterprise/securityClassification-6VMVochwUWo Adds a classification to a folder by specifying the label of the classification to add. This API can also be called by including the enterprise ID in the URL explicitly, for example `/folders/:id/enterprise_12345/securityClassification-6VMVochwUWo`. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Add initial classifications Source: https://developer.box.com/reference/post-metadata-templates-schema--classifications box-openapi.json post /metadata_templates/schema#classifications When an enterprise does not yet have any classifications, this API call initializes the classification template with an initial set of classifications. If an enterprise already has a classification, the template will already exist and instead an API call should be made to add additional classifications. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create email alias Source: https://developer.box.com/reference/post-users-id-email-aliases box-openapi.json post /users/{user_id}/email_aliases Adds a new email alias to a user account.. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update collaboration Source: https://developer.box.com/reference/put-collaborations-id box-openapi.json put /collaborations/{collaboration_id} Updates a collaboration. Can be used to change the owner of an item, or to accept collaboration invites. In case of accepting collaboration invite, role is not required. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update comment Source: https://developer.box.com/reference/put-comments-id box-openapi.json put /comments/{comment_id} Update the message of a comment. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update file request Source: https://developer.box.com/reference/put-file-requests-id box-openapi.json put /file_requests/{file_request_id} Updates a file request. This can be used to activate or deactivate a file request. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update file Source: https://developer.box.com/reference/put-files-id box-openapi.json put /files/{file_id} Updates a file. This can be used to rename or move a file, create a shared link, or lock a file. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update classification on file Source: https://developer.box.com/reference/put-files-id-metadata-enterprise-securityClassification-6VMVochwUWo box-openapi.json put /files/{file_id}/metadata/enterprise/securityClassification-6VMVochwUWo Updates a classification on a file. The classification can only be updated if a classification has already been applied to the file before. When editing classifications, only values are defined for the enterprise will be accepted. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Restore file version Source: https://developer.box.com/reference/put-files-id-versions-id box-openapi.json put /files/{file_id}/versions/{file_version_id} Restores a specific version of a file after it was deleted. Don't use this endpoint to restore Box Notes, as it works with file formats such as PDF, DOC, PPTX or similar. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update classification on folder Source: https://developer.box.com/reference/put-folders-id-metadata-enterprise-securityClassification-6VMVochwUWo box-openapi.json put /folders/{folder_id}/metadata/enterprise/securityClassification-6VMVochwUWo Updates a classification on a folder. The classification can only be updated if a classification has already been applied to the folder before. When editing classifications, only values are defined for the enterprise will be accepted. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Add classification Source: https://developer.box.com/reference/put-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema--add box-openapi.json put /metadata_templates/enterprise/securityClassification-6VMVochwUWo/schema#add Adds one or more new classifications to the list of classifications available to the enterprise. This API can also be called by including the enterprise ID in the URL explicitly, for example `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update classification Source: https://developer.box.com/reference/put-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema--update box-openapi.json put /metadata_templates/enterprise/securityClassification-6VMVochwUWo/schema#update Updates the labels and descriptions of one or more classifications available to the enterprise. This API can also be called by including the enterprise ID in the URL explicitly, for example `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Classification Source: https://developer.box.com/reference/resources/classification # Classification Template Source: https://developer.box.com/reference/resources/classification-template # Collaboration Source: https://developer.box.com/reference/resources/collaboration # Allowed collaboration domains Source: https://developer.box.com/reference/resources/collaboration-allowlist-entries # Allowed collaboration domain Source: https://developer.box.com/reference/resources/collaboration-allowlist-entry # Allowed collaboration domains user exemption Source: https://developer.box.com/reference/resources/collaboration-allowlist-exempt-target # Allowed collaboration domains user exemptions Source: https://developer.box.com/reference/resources/collaboration-allowlist-exempt-targets # Collaborations Source: https://developer.box.com/reference/resources/collaborations # Collaborations Source: https://developer.box.com/reference/resources/collaborations-offset-paginated # Collection Source: https://developer.box.com/reference/resources/collection # Collections Source: https://developer.box.com/reference/resources/collections # Comment Source: https://developer.box.com/reference/resources/comment # Comment (Base) Source: https://developer.box.com/reference/resources/comment--base # Comment (Full) Source: https://developer.box.com/reference/resources/comment--full # Comments Source: https://developer.box.com/reference/resources/comments # Device pinner Source: https://developer.box.com/reference/resources/device-pinner # Device pinners Source: https://developer.box.com/reference/resources/device-pinners # Email alias Source: https://developer.box.com/reference/resources/email-alias # Email aliases Source: https://developer.box.com/reference/resources/email-aliases # Event Source: https://developer.box.com/reference/resources/event # Events Source: https://developer.box.com/reference/resources/events # File Source: https://developer.box.com/reference/resources/file # File (Base) Source: https://developer.box.com/reference/resources/file--base # File (Full) Source: https://developer.box.com/reference/resources/file--full # File (Mini) Source: https://developer.box.com/reference/resources/file--mini # File Request Source: https://developer.box.com/reference/resources/file-request # File version legal hold Source: https://developer.box.com/reference/resources/file-version-legal-hold # File version legal holds Source: https://developer.box.com/reference/resources/file-version-legal-holds # File version retention Source: https://developer.box.com/reference/resources/file-version-retention # File version retentions Source: https://developer.box.com/reference/resources/file-version-retentions # File versions Source: https://developer.box.com/reference/resources/file-versions # Files Source: https://developer.box.com/reference/resources/files # Folder Lock Source: https://developer.box.com/reference/resources/folder-lock # Folder Locks Source: https://developer.box.com/reference/resources/folder-locks # Real-time servers Source: https://developer.box.com/reference/resources/realtime-servers # Remove metadata instance from file Source: https://developer.box.com/reference/delete-files-id-metadata-id-id box-openapi.json delete /files/{file_id}/metadata/{scope}/{template_key} Deletes a piece of file metadata. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Delete folder lock Source: https://developer.box.com/reference/delete-folder-locks-id box-openapi.json delete /folder_locks/{folder_lock_id} Deletes a folder lock on a given folder. You must be authenticated as the owner or co-owner of the folder to use this endpoint. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Delete folder Source: https://developer.box.com/reference/delete-folders-id box-openapi.json delete /folders/{folder_id} Deletes a folder, either permanently or by moving it to the trash. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Remove metadata instance from folder Source: https://developer.box.com/reference/delete-folders-id-metadata-id-id box-openapi.json delete /folders/{folder_id}/metadata/{scope}/{template_key} Deletes a piece of folder metadata. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Remove user from group Source: https://developer.box.com/reference/delete-group-memberships-id box-openapi.json delete /group_memberships/{group_membership_id} Deletes a specific group membership. Only admins of this group or users with admin-level permissions will be able to use this API. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Remove group Source: https://developer.box.com/reference/delete-groups-id box-openapi.json delete /groups/{group_id} Permanently deletes a group. Only users with admin-level permissions will be able to use this API. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Delete Slack integration mapping Source: https://developer.box.com/reference/delete-integration-mappings-slack-id box-openapi.json delete /integration_mappings/slack/{integration_mapping_id} Deletes a [Slack integration mapping](https://support.box.com/hc/en-us/articles/4415585987859-Box-as-the-Content-Layer-for-Slack). You need Admin or Co-Admin role to use this endpoint. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Delete Teams integration mapping Source: https://developer.box.com/reference/delete-integration-mappings-teams-id box-openapi.json delete /integration_mappings/teams/{integration_mapping_id} Deletes a [Teams integration mapping](https://support.box.com/hc/en-us/articles/360044681474-Using-Box-for-Teams). You need Admin or Co-Admin role to use this endpoint. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Remove legal hold policy Source: https://developer.box.com/reference/delete-legal-hold-policies-id box-openapi.json delete /legal_hold_policies/{legal_hold_policy_id} Delete an existing legal hold policy. This is an asynchronous process. The policy will not be fully deleted yet when the response returns. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Unassign legal hold policy Source: https://developer.box.com/reference/delete-legal-hold-policy-assignments-id box-openapi.json delete /legal_hold_policy_assignments/{legal_hold_policy_assignment_id} Remove a legal hold from an item. This is an asynchronous process. The policy will not be fully removed yet when the response returns. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Remove metadata cascade policy Source: https://developer.box.com/reference/delete-metadata-cascade-policies-id box-openapi.json delete /metadata_cascade_policies/{metadata_cascade_policy_id} Deletes a metadata cascade policy. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List metadata instances on file Source: https://developer.box.com/reference/get-files-id-metadata box-openapi.json get /files/{file_id}/metadata Retrieves all metadata for a given file. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get metadata instance on file Source: https://developer.box.com/reference/get-files-id-metadata-id-id box-openapi.json get /files/{file_id}/metadata/{scope}/{template_key} Retrieves the instance of a metadata template that has been applied to a file. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get folder information Source: https://developer.box.com/reference/get-folders-id box-openapi.json get /folders/{folder_id} Retrieves details for a folder, including the first 100 entries in the folder. Passing `sort`, `direction`, `offset`, and `limit` parameters in query allows you to manage the list of returned [folder items](https://developer.box.com/reference/resources/folder--full#param-item-collection). To fetch more items within the folder, use the [Get items in a folder](https://developer.box.com/reference/get-folders-id-items) endpoint. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List items in folder Source: https://developer.box.com/reference/get-folders-id-items box-openapi.json get /folders/{folder_id}/items Retrieves a page of items in a folder. These items can be files, folders, and web links. To request more information about the folder itself, like its size, use the [Get a folder](https://developer.box.com/reference/get-folders-id) endpoint instead. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List metadata instances on folder Source: https://developer.box.com/reference/get-folders-id-metadata box-openapi.json get /folders/{folder_id}/metadata Retrieves all metadata for a given folder. This can not be used on the root folder with ID `0`. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get metadata instance on folder Source: https://developer.box.com/reference/get-folders-id-metadata-id-id box-openapi.json get /folders/{folder_id}/metadata/{scope}/{template_key} Retrieves the instance of a metadata template that has been applied to a folder. This can not be used on the root folder with ID `0`. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get group membership Source: https://developer.box.com/reference/get-group-memberships-id box-openapi.json get /group_memberships/{group_membership_id} Retrieves a specific group membership. Only admins of this group or users with admin-level permissions will be able to use this API. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List groups for enterprise Source: https://developer.box.com/reference/get-groups box-openapi.json get /groups Retrieves all of the groups for a given enterprise. The user must have admin permissions to inspect enterprise's groups. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get group Source: https://developer.box.com/reference/get-groups-id box-openapi.json get /groups/{group_id} Retrieves information about a group. Only members of this group or users with admin-level permissions will be able to use this API. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List members of group Source: https://developer.box.com/reference/get-groups-id-memberships box-openapi.json get /groups/{group_id}/memberships Retrieves all the members for a group. Only members of this group or users with admin-level permissions will be able to use this API. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List Slack integration mappings Source: https://developer.box.com/reference/get-integration-mappings-slack box-openapi.json get /integration_mappings/slack Lists [Slack integration mappings](https://support.box.com/hc/en-us/articles/4415585987859-Box-as-the-Content-Layer-for-Slack) in a users' enterprise. You need Admin or Co-Admin role to use this endpoint. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List Teams integration mappings Source: https://developer.box.com/reference/get-integration-mappings-teams box-openapi.json get /integration_mappings/teams Lists [Teams integration mappings](https://support.box.com/hc/en-us/articles/360044681474-Using-Box-for-Teams) in a users' enterprise. You need Admin or Co-Admin role to use this endpoint. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get user invite status Source: https://developer.box.com/reference/get-invites-id box-openapi.json get /invites/{invite_id} Returns the status of a user invite. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List all legal hold policies Source: https://developer.box.com/reference/get-legal-hold-policies box-openapi.json get /legal_hold_policies Retrieves a list of legal hold policies that belong to an enterprise. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get legal hold policy Source: https://developer.box.com/reference/get-legal-hold-policies-id box-openapi.json get /legal_hold_policies/{legal_hold_policy_id} Retrieve a legal hold policy. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List legal hold policy assignments Source: https://developer.box.com/reference/get-legal-hold-policy-assignments box-openapi.json get /legal_hold_policy_assignments Retrieves a list of items a legal hold policy has been assigned to. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get legal hold policy assignment Source: https://developer.box.com/reference/get-legal-hold-policy-assignments-id box-openapi.json get /legal_hold_policy_assignments/{legal_hold_policy_assignment_id} Retrieve a legal hold policy assignment. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List previous file versions for legal hold policy assignment Source: https://developer.box.com/reference/get-legal-hold-policy-assignments-id-file-versions-on-hold box-openapi.json get /legal_hold_policy_assignments/{legal_hold_policy_assignment_id}/file_versions_on_hold Get a list of previous file versions for a legal hold assignment. In some cases you may only need the latest file versions instead. In these cases, use the `GET /legal_hold_policy_assignments/:id/files_on_hold` API instead to return any current (latest) versions of a file for this legal hold policy assignment. Due to ongoing re-architecture efforts this API might not return all files held for this policy ID. Instead, this API will only return past file versions held in the newly developed architecture. The `GET /file_version_legal_holds` API can be used to fetch current and past versions of files held within the legacy architecture. This endpoint does not support returning any content that is on hold due to a Custodian collaborating on a Hub. The `GET /legal_hold_policy_assignments?policy_id={id}` API can be used to find a list of policy assignments for a given policy ID. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List files with current file versions for legal hold policy assignment Source: https://developer.box.com/reference/get-legal-hold-policy-assignments-id-files-on-hold box-openapi.json get /legal_hold_policy_assignments/{legal_hold_policy_assignment_id}/files_on_hold Get a list of files with current file versions for a legal hold assignment. In some cases you may want to get previous file versions instead. In these cases, use the `GET /legal_hold_policy_assignments/:id/file_versions_on_hold` API instead to return any previous versions of a file for this legal hold policy assignment. Due to ongoing re-architecture efforts this API might not return all file versions held for this policy ID. Instead, this API will only return the latest file version held in the newly developed architecture. The `GET /file_version_legal_holds` API can be used to fetch current and past versions of files held within the legacy architecture. This endpoint does not support returning any content that is on hold due to a Custodian collaborating on a Hub. The `GET /legal_hold_policy_assignments?policy_id={id}` API can be used to find a list of policy assignments for a given policy ID. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List metadata cascade policies Source: https://developer.box.com/reference/get-metadata-cascade-policies box-openapi.json get /metadata_cascade_policies Retrieves a list of all the metadata cascade policies that are applied to a given folder. This can not be used on the root folder with ID `0`. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get metadata cascade policy Source: https://developer.box.com/reference/get-metadata-cascade-policies-id box-openapi.json get /metadata_cascade_policies/{metadata_cascade_policy_id} Retrieve a specific metadata cascade policy assigned to a folder. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get metadata taxonomies for namespace Source: https://developer.box.com/reference/get-metadata-taxonomies-id box-openapi.json get /metadata_taxonomies/{namespace} Used to retrieve all metadata taxonomies in a namespace. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get metadata taxonomy by taxonomy key Source: https://developer.box.com/reference/get-metadata-taxonomies-id-id box-openapi.json get /metadata_taxonomies/{namespace}/{taxonomy_key} Used to retrieve a metadata taxonomy by taxonomy key. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List metadata taxonomy nodes Source: https://developer.box.com/reference/get-metadata-taxonomies-id-id-nodes box-openapi.json get /metadata_taxonomies/{namespace}/{taxonomy_key}/nodes Used to retrieve metadata taxonomy nodes based on the parameters specified. Results are sorted in lexicographic order unless a `query` parameter is passed. With a `query` parameter specified, results are sorted in order of relevance. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get metadata taxonomy node by ID Source: https://developer.box.com/reference/get-metadata-taxonomies-id-id-nodes-id box-openapi.json get /metadata_taxonomies/{namespace}/{taxonomy_key}/nodes/{node_id} Retrieves a metadata taxonomy node by its identifier. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List metadata template's options for taxonomy field Source: https://developer.box.com/reference/get-metadata-templates-id-id-fields-id-options box-openapi.json get /metadata_templates/{namespace}/{template_key}/fields/{field_key}/options Used to retrieve metadata taxonomy nodes which are available for the taxonomy field based on its configuration and the parameters specified. Results are sorted in lexicographic order unless a `query` parameter is passed. With a `query` parameter specified, results are sorted in order of relevance. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List user's groups Source: https://developer.box.com/reference/get-users-id-memberships box-openapi.json get /users/{user_id}/memberships Retrieves all the groups for a user. Only members of this group or users with admin-level permissions will be able to use this API. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create metadata instance on file Source: https://developer.box.com/reference/post-files-id-metadata-id-id box-openapi.json post /files/{file_id}/metadata/{scope}/{template_key} Applies an instance of a metadata template to a file. In most cases only values that are present in the metadata template will be accepted, except for the `global.properties` template which accepts any key-value pair. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create folder Source: https://developer.box.com/reference/post-folders box-openapi.json post /folders Creates a new empty folder within the specified parent folder. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Copy folder Source: https://developer.box.com/reference/post-folders-id-copy box-openapi.json post /folders/{folder_id}/copy Creates a copy of a folder within a destination folder. The original folder will not be changed. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create metadata instance on folder Source: https://developer.box.com/reference/post-folders-id-metadata-id-id box-openapi.json post /folders/{folder_id}/metadata/{scope}/{template_key} Applies an instance of a metadata template to a folder. In most cases only values that are present in the metadata template will be accepted, except for the `global.properties` template which accepts any key-value pair. To display the metadata template in the Box web app the enterprise needs to be configured to enable **Cascading Folder Level Metadata** for the user in the admin console. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Add user to group Source: https://developer.box.com/reference/post-group-memberships box-openapi.json post /group_memberships Creates a group membership. Only users with admin-level permissions will be able to use this API. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create group Source: https://developer.box.com/reference/post-groups box-openapi.json post /groups Creates a new group of users in an enterprise. Only users with admin permissions can create new groups. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create Slack integration mapping Source: https://developer.box.com/reference/post-integration-mappings-slack box-openapi.json post /integration_mappings/slack Creates a [Slack integration mapping](https://support.box.com/hc/en-us/articles/4415585987859-Box-as-the-Content-Layer-for-Slack) by mapping a Slack channel to a Box item. You need Admin or Co-Admin role to use this endpoint. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create Teams integration mapping Source: https://developer.box.com/reference/post-integration-mappings-teams box-openapi.json post /integration_mappings/teams Creates a [Teams integration mapping](https://support.box.com/hc/en-us/articles/360044681474-Using-Box-for-Teams) by mapping a Teams channel to a Box item. You need Admin or Co-Admin role to use this endpoint. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create user invite Source: https://developer.box.com/reference/post-invites box-openapi.json post /invites Invites an existing external user to join an enterprise. The existing user can not be part of another enterprise and must already have a Box account. Once invited, the user will receive an email and are prompted to accept the invitation within the Box web application. This method requires the "Manage An Enterprise" scope enabled for the application, which can be enabled within the developer console. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create legal hold policy Source: https://developer.box.com/reference/post-legal-hold-policies box-openapi.json post /legal_hold_policies Create a new legal hold policy. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Assign legal hold policy Source: https://developer.box.com/reference/post-legal-hold-policy-assignments box-openapi.json post /legal_hold_policy_assignments Assign a legal hold to a file, file version, folder, or user. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create metadata cascade policy Source: https://developer.box.com/reference/post-metadata-cascade-policies box-openapi.json post /metadata_cascade_policies Creates a new metadata cascade policy that applies a given metadata template to a given folder and automatically cascades it down to any files within that folder. In order for the policy to be applied a metadata instance must first be applied to the folder the policy is to be applied to. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Force-apply metadata cascade policy to folder Source: https://developer.box.com/reference/post-metadata-cascade-policies-id-apply box-openapi.json post /metadata_cascade_policies/{metadata_cascade_policy_id}/apply Force the metadata on a folder with a metadata cascade policy to be applied to all of its children. This can be used after creating a new cascade policy to enforce the metadata to be cascaded down to all existing files within that folder. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create metadata taxonomy Source: https://developer.box.com/reference/post-metadata-taxonomies box-openapi.json post /metadata_taxonomies Creates a new metadata taxonomy that can be used in metadata templates. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create metadata taxonomy levels Source: https://developer.box.com/reference/post-metadata-taxonomies-id-id-levels box-openapi.json post /metadata_taxonomies/{namespace}/{taxonomy_key}/levels Creates new metadata taxonomy levels. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Add metadata taxonomy level Source: https://developer.box.com/reference/post-metadata-taxonomies-id-id-levels:append box-openapi.json post /metadata_taxonomies/{namespace}/{taxonomy_key}/levels:append Creates a new metadata taxonomy level and appends it to the existing levels. If there are no levels defined yet, this will create the first level. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update metadata instance on file Source: https://developer.box.com/reference/put-files-id-metadata-id-id box-openapi.json put /files/{file_id}/metadata/{scope}/{template_key} Updates a piece of metadata on a file. The metadata instance can only be updated if the template has already been applied to the file before. When editing metadata, only values that match the metadata template schema will be accepted. The update is applied atomically. If any errors occur during the application of the operations, the metadata instance will not be changed. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update folder Source: https://developer.box.com/reference/put-folders-id box-openapi.json put /folders/{folder_id} Updates a folder. This can be also be used to move the folder, create shared links, update collaborations, and more. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update metadata instance on folder Source: https://developer.box.com/reference/put-folders-id-metadata-id-id box-openapi.json put /folders/{folder_id}/metadata/{scope}/{template_key} Updates a piece of metadata on a folder. The metadata instance can only be updated if the template has already been applied to the folder before. When editing metadata, only values that match the metadata template schema will be accepted. The update is applied atomically. If any errors occur during the application of the operations, the metadata instance will not be changed. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update group membership Source: https://developer.box.com/reference/put-group-memberships-id box-openapi.json put /group_memberships/{group_membership_id} Updates a user's group membership. Only admins of this group or users with admin-level permissions will be able to use this API. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update group Source: https://developer.box.com/reference/put-groups-id box-openapi.json put /groups/{group_id} Updates a specific group. Only admins of this group or users with admin-level permissions will be able to use this API. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update Slack integration mapping Source: https://developer.box.com/reference/put-integration-mappings-slack-id box-openapi.json put /integration_mappings/slack/{integration_mapping_id} Updates a [Slack integration mapping](https://support.box.com/hc/en-us/articles/4415585987859-Box-as-the-Content-Layer-for-Slack). Supports updating the Box folder ID and options. You need Admin or Co-Admin role to use this endpoint. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update Teams integration mapping Source: https://developer.box.com/reference/put-integration-mappings-teams-id box-openapi.json put /integration_mappings/teams/{integration_mapping_id} Updates a [Teams integration mapping](https://support.box.com/hc/en-us/articles/360044681474-Using-Box-for-Teams). Supports updating the Box folder ID and options. You need Admin or Co-Admin role to use this endpoint. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update legal hold policy Source: https://developer.box.com/reference/put-legal-hold-policies-id box-openapi.json put /legal_hold_policies/{legal_hold_policy_id} Update legal hold policy. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # File versions on hold Source: https://developer.box.com/reference/resources/file-versions-on-hold # Files on hold Source: https://developer.box.com/reference/resources/files-on-hold # Folder Source: https://developer.box.com/reference/resources/folder # Folder (Base) Source: https://developer.box.com/reference/resources/folder--base # Folder (Full) Source: https://developer.box.com/reference/resources/folder--full # Folder (Mini) Source: https://developer.box.com/reference/resources/folder--mini # Group Source: https://developer.box.com/reference/resources/group # Group (Base) Source: https://developer.box.com/reference/resources/group--base # Group (Full) Source: https://developer.box.com/reference/resources/group--full # Group (Mini) Source: https://developer.box.com/reference/resources/group--mini # Group membership Source: https://developer.box.com/reference/resources/group-membership # Group memberships Source: https://developer.box.com/reference/resources/group-memberships # Groups Source: https://developer.box.com/reference/resources/groups # Integration mapping Slack Source: https://developer.box.com/reference/resources/integration-mapping-slack # Integration mapping Teams Source: https://developer.box.com/reference/resources/integration-mapping-teams # Integration mappings Slack Source: https://developer.box.com/reference/resources/integration-mappings-slack # Integration mappings Teams Source: https://developer.box.com/reference/resources/integration-mappings-teams # Invite Source: https://developer.box.com/reference/resources/invite # Items Source: https://developer.box.com/reference/resources/items # Items Source: https://developer.box.com/reference/resources/items-offset-paginated # Legal hold policies Source: https://developer.box.com/reference/resources/legal-hold-policies # Legal hold policy Source: https://developer.box.com/reference/resources/legal-hold-policy # Legal hold policy (Mini) Source: https://developer.box.com/reference/resources/legal-hold-policy--mini # Legal hold policy assignment Source: https://developer.box.com/reference/resources/legal-hold-policy-assignment # Legal hold policy assignment (Base) Source: https://developer.box.com/reference/resources/legal-hold-policy-assignment--base # Legal hold policy assignments Source: https://developer.box.com/reference/resources/legal-hold-policy-assignments # Metadata instance Source: https://developer.box.com/reference/resources/metadata # Metadata instance (Base) Source: https://developer.box.com/reference/resources/metadata--base # Metadata instance (Full) Source: https://developer.box.com/reference/resources/metadata--full # Metadata cascade policies Source: https://developer.box.com/reference/resources/metadata-cascade-policies # Metadata cascade policy Source: https://developer.box.com/reference/resources/metadata-cascade-policy # Metadata taxonomies Source: https://developer.box.com/reference/resources/metadata-taxonomies # Metadata taxonomy Source: https://developer.box.com/reference/resources/metadata-taxonomy # Metadata taxonomy level Source: https://developer.box.com/reference/resources/metadata-taxonomy-level # Metadata taxonomy levels Source: https://developer.box.com/reference/resources/metadata-taxonomy-levels # Metadata taxonomy node Source: https://developer.box.com/reference/resources/metadata-taxonomy-node # Metadata taxonomy nodes Source: https://developer.box.com/reference/resources/metadata-taxonomy-nodes # Metadata instances Source: https://developer.box.com/reference/resources/metadatas # Remove metadata taxonomy Source: https://developer.box.com/reference/delete-metadata-taxonomies-id-id box-openapi.json delete /metadata_taxonomies/{namespace}/{taxonomy_key} Delete a metadata taxonomy. This deletion is permanent and cannot be reverted. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Remove metadata taxonomy node Source: https://developer.box.com/reference/delete-metadata-taxonomies-id-id-nodes-id box-openapi.json delete /metadata_taxonomies/{namespace}/{taxonomy_key}/nodes/{node_id} Delete a metadata taxonomy node. This deletion is permanent and cannot be reverted. Only metadata taxonomy nodes without any children can be deleted. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Remove metadata template Source: https://developer.box.com/reference/delete-metadata-templates-id-id-schema box-openapi.json delete /metadata_templates/{scope}/{template_key}/schema Delete a metadata template and its instances. This deletion is permanent and can not be reversed. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Delete retention policy Source: https://developer.box.com/reference/delete-retention-policies-id box-openapi.json delete /retention_policies/{retention_policy_id} Permanently deletes a retention policy. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Remove retention policy assignment Source: https://developer.box.com/reference/delete-retention-policy-assignments-id box-openapi.json delete /retention_policy_assignments/{retention_policy_assignment_id} Removes a retention policy assignment applied to content. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Delete shield information barrier segment member by ID Source: https://developer.box.com/reference/delete-shield-information-barrier-segment-members-id box-openapi.json delete /shield_information_barrier_segment_members/{shield_information_barrier_segment_member_id} Deletes a shield information barrier segment member based on provided ID. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Delete shield information barrier segment restriction by ID Source: https://developer.box.com/reference/delete-shield-information-barrier-segment-restrictions-id box-openapi.json delete /shield_information_barrier_segment_restrictions/{shield_information_barrier_segment_restriction_id} Delete shield information barrier segment restriction based on provided ID. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Delete shield information barrier segment Source: https://developer.box.com/reference/delete-shield-information-barrier-segments-id box-openapi.json delete /shield_information_barrier_segments/{shield_information_barrier_segment_id} Deletes the shield information barrier segment based on provided ID. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get shared link for file Source: https://developer.box.com/reference/get-files-id--get-shared-link box-openapi.json get /files/{file_id}#get_shared_link Gets the information for a shared link on a file. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get shared link for folder Source: https://developer.box.com/reference/get-folders-id--get-shared-link box-openapi.json get /folders/{folder_id}#get_shared_link Gets the information for a shared link on a folder. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Find metadata template by instance ID Source: https://developer.box.com/reference/get-metadata-templates box-openapi.json get /metadata_templates Finds a metadata template by searching for the ID of an instance of the template. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List all metadata templates for enterprise Source: https://developer.box.com/reference/get-metadata-templates-enterprise box-openapi.json get /metadata_templates/enterprise Used to retrieve all metadata templates created to be used specifically within the user's enterprise. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List all global metadata templates Source: https://developer.box.com/reference/get-metadata-templates-global box-openapi.json get /metadata_templates/global Used to retrieve all generic, global metadata templates available to all enterprises using Box. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get metadata template by ID Source: https://developer.box.com/reference/get-metadata-templates-id box-openapi.json get /metadata_templates/{template_id} Retrieves a metadata template by its ID. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get metadata template by name Source: https://developer.box.com/reference/get-metadata-templates-id-id-schema box-openapi.json get /metadata_templates/{scope}/{template_key}/schema Retrieves a metadata template by its `scope` and `templateKey` values. To find the `scope` and `templateKey` for a template, list all templates for an enterprise or globally, or list all templates applied to a file or folder. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List recently accessed items Source: https://developer.box.com/reference/get-recent-items box-openapi.json get /recent_items Returns information about the recent items accessed by a user, either in the last 90 days or up to the last 1000 items accessed. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List retention policies Source: https://developer.box.com/reference/get-retention-policies box-openapi.json get /retention_policies Retrieves all of the retention policies for an enterprise. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get retention policy Source: https://developer.box.com/reference/get-retention-policies-id box-openapi.json get /retention_policies/{retention_policy_id} Retrieves a retention policy. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List retention policy assignments Source: https://developer.box.com/reference/get-retention-policies-id-assignments box-openapi.json get /retention_policies/{retention_policy_id}/assignments Returns a list of all retention policy assignments associated with a specified retention policy. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get retention policy assignment Source: https://developer.box.com/reference/get-retention-policy-assignments-id box-openapi.json get /retention_policy_assignments/{retention_policy_assignment_id} Retrieves a retention policy assignment. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get file versions under retention Source: https://developer.box.com/reference/get-retention-policy-assignments-id-file-versions-under-retention box-openapi.json get /retention_policy_assignments/{retention_policy_assignment_id}/file_versions_under_retention Returns a list of file versions under retention for a retention policy assignment. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get files under retention Source: https://developer.box.com/reference/get-retention-policy-assignments-id-files-under-retention box-openapi.json get /retention_policy_assignments/{retention_policy_assignment_id}/files_under_retention Returns a list of files under retention for a retention policy assignment. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Search for content Source: https://developer.box.com/reference/get-search box-openapi.json get /search Searches for files, folders, web links, and shared files across the users content or across the entire enterprise. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Find file for shared link Source: https://developer.box.com/reference/get-shared-items box-openapi.json get /shared_items Returns the file represented by a shared link. A shared file can be represented by a shared link, which can originate within the current enterprise or within another. This endpoint allows an application to retrieve information about a shared file when only given a shared link. The `shared_link_permission_options` array field can be returned by requesting it in the `fields` query parameter. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Find app item for shared link Source: https://developer.box.com/reference/get-shared-items--app-items box-openapi.json get /shared_items#app_items Returns the app item represented by a shared link. The link can originate from the current enterprise or another. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Find folder for shared link Source: https://developer.box.com/reference/get-shared-items--folders box-openapi.json get /shared_items#folders Return the folder represented by a shared link. A shared folder can be represented by a shared link, which can originate within the current enterprise or within another. This endpoint allows an application to retrieve information about a shared folder when only given a shared link. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Find web link for shared link Source: https://developer.box.com/reference/get-shared-items--web-links box-openapi.json get /shared_items#web_links Returns the web link represented by a shared link. A shared web link can be represented by a shared link, which can originate within the current enterprise or within another. This endpoint allows an application to retrieve information about a shared web link when only given a shared link. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List shield information barrier reports Source: https://developer.box.com/reference/get-shield-information-barrier-reports box-openapi.json get /shield_information_barrier_reports Lists shield information barrier reports. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get shield information barrier report by ID Source: https://developer.box.com/reference/get-shield-information-barrier-reports-id box-openapi.json get /shield_information_barrier_reports/{shield_information_barrier_report_id} Retrieves a shield information barrier report by its ID. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List shield information barrier segment members Source: https://developer.box.com/reference/get-shield-information-barrier-segment-members box-openapi.json get /shield_information_barrier_segment_members Lists shield information barrier segment members based on provided segment IDs. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get shield information barrier segment member by ID Source: https://developer.box.com/reference/get-shield-information-barrier-segment-members-id box-openapi.json get /shield_information_barrier_segment_members/{shield_information_barrier_segment_member_id} Retrieves a shield information barrier segment member by its ID. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List shield information barrier segment restrictions Source: https://developer.box.com/reference/get-shield-information-barrier-segment-restrictions box-openapi.json get /shield_information_barrier_segment_restrictions Lists shield information barrier segment restrictions based on provided segment ID. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get shield information barrier segment restriction by ID Source: https://developer.box.com/reference/get-shield-information-barrier-segment-restrictions-id box-openapi.json get /shield_information_barrier_segment_restrictions/{shield_information_barrier_segment_restriction_id} Retrieves a shield information barrier segment restriction based on provided ID. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List shield information barrier segments Source: https://developer.box.com/reference/get-shield-information-barrier-segments box-openapi.json get /shield_information_barrier_segments Retrieves a list of shield information barrier segment objects for the specified Information Barrier ID. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get shield information barrier segment with specified ID Source: https://developer.box.com/reference/get-shield-information-barrier-segments-id box-openapi.json get /shield_information_barrier_segments/{shield_information_barrier_segment_id} Retrieves shield information barrier segment based on provided ID.. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List shield information barriers Source: https://developer.box.com/reference/get-shield-information-barriers box-openapi.json get /shield_information_barriers Retrieves a list of shield information barrier objects for the enterprise of JWT. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get shield information barrier with specified ID Source: https://developer.box.com/reference/get-shield-information-barriers-id box-openapi.json get /shield_information_barriers/{shield_information_barrier_id} Get shield information barrier based on provided ID. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get shared link for web link Source: https://developer.box.com/reference/get-web-links-id--get-shared-link box-openapi.json get /web_links/{web_link_id}#get_shared_link Gets the information for a shared link on a web link. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update metadata taxonomy Source: https://developer.box.com/reference/patch-metadata-taxonomies-id-id box-openapi.json patch /metadata_taxonomies/{namespace}/{taxonomy_key} Updates an existing metadata taxonomy. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update metadata taxonomy level Source: https://developer.box.com/reference/patch-metadata-taxonomies-id-id-levels-id box-openapi.json patch /metadata_taxonomies/{namespace}/{taxonomy_key}/levels/{level_index} Updates an existing metadata taxonomy level. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update metadata taxonomy node Source: https://developer.box.com/reference/patch-metadata-taxonomies-id-id-nodes-id box-openapi.json patch /metadata_taxonomies/{namespace}/{taxonomy_key}/nodes/{node_id} Updates an existing metadata taxonomy node. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create jobs to terminate user group session Source: https://developer.box.com/reference/post-groups-terminate-sessions box-openapi.json post /groups/terminate_sessions Validates the roles and permissions of the group, and creates asynchronous jobs to terminate the group's sessions. Returns the status for the POST request. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Query files/folders by metadata Source: https://developer.box.com/reference/post-metadata-queries-execute-read box-openapi.json post /metadata_queries/execute_read Create a search using SQL-like syntax to return items that match specific metadata. By default, this endpoint returns only the most basic info about the items for which the query matches. To get additional fields for each item, including any of the metadata, use the `fields` attribute in the query. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Delete metadata taxonomy level Source: https://developer.box.com/reference/post-metadata-taxonomies-id-id-levels:trim box-openapi.json post /metadata_taxonomies/{namespace}/{taxonomy_key}/levels:trim Deletes the last level of the metadata taxonomy. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create metadata taxonomy node Source: https://developer.box.com/reference/post-metadata-taxonomies-id-id-nodes box-openapi.json post /metadata_taxonomies/{namespace}/{taxonomy_key}/nodes Creates a new metadata taxonomy node. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create metadata template Source: https://developer.box.com/reference/post-metadata-templates-schema box-openapi.json post /metadata_templates/schema Creates a new metadata template that can be applied to files and folders. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create retention policy Source: https://developer.box.com/reference/post-retention-policies box-openapi.json post /retention_policies Creates a retention policy. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Assign retention policy Source: https://developer.box.com/reference/post-retention-policy-assignments box-openapi.json post /retention_policy_assignments Assigns a retention policy to an item. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create shield information barrier report Source: https://developer.box.com/reference/post-shield-information-barrier-reports box-openapi.json post /shield_information_barrier_reports Creates a shield information barrier report for a given barrier. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create shield information barrier segment member Source: https://developer.box.com/reference/post-shield-information-barrier-segment-members box-openapi.json post /shield_information_barrier_segment_members Creates a new shield information barrier segment member. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create shield information barrier segment restriction Source: https://developer.box.com/reference/post-shield-information-barrier-segment-restrictions box-openapi.json post /shield_information_barrier_segment_restrictions Creates a shield information barrier segment restriction object. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create shield information barrier segment Source: https://developer.box.com/reference/post-shield-information-barrier-segments box-openapi.json post /shield_information_barrier_segments Creates a shield information barrier segment. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Add changed status of shield information barrier with specified ID Source: https://developer.box.com/reference/post-shield-information-barriers-change-status box-openapi.json post /shield_information_barriers/change_status Change status of shield information barrier with the specified ID. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create jobs to terminate users session Source: https://developer.box.com/reference/post-users-terminate-sessions box-openapi.json post /users/terminate_sessions Validates the roles and permissions of the user, and creates asynchronous jobs to terminate the user's sessions. Returns the status for the POST request. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Add shared link to file Source: https://developer.box.com/reference/put-files-id--add-shared-link box-openapi.json put /files/{file_id}#add_shared_link Adds a shared link to a file. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Remove shared link from file Source: https://developer.box.com/reference/put-files-id--remove-shared-link box-openapi.json put /files/{file_id}#remove_shared_link Removes a shared link from a file. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update shared link on file Source: https://developer.box.com/reference/put-files-id--update-shared-link box-openapi.json put /files/{file_id}#update_shared_link Updates a shared link on a file. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Add shared link to folder Source: https://developer.box.com/reference/put-folders-id--add-shared-link box-openapi.json put /folders/{folder_id}#add_shared_link Adds a shared link to a folder. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Remove shared link from folder Source: https://developer.box.com/reference/put-folders-id--remove-shared-link box-openapi.json put /folders/{folder_id}#remove_shared_link Removes a shared link from a folder. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update shared link on folder Source: https://developer.box.com/reference/put-folders-id--update-shared-link box-openapi.json put /folders/{folder_id}#update_shared_link Updates a shared link on a folder. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update metadata template Source: https://developer.box.com/reference/put-metadata-templates-id-id-schema box-openapi.json put /metadata_templates/{scope}/{template_key}/schema Updates a metadata template. The metadata template can only be updated if the template already exists. The update is applied atomically. If any errors occur during the application of the operations, the metadata template will not be changed. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update retention policy Source: https://developer.box.com/reference/put-retention-policies-id box-openapi.json put /retention_policies/{retention_policy_id} Updates a retention policy. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update shield information barrier segment with specified ID Source: https://developer.box.com/reference/put-shield-information-barrier-segments-id box-openapi.json put /shield_information_barrier_segments/{shield_information_barrier_segment_id} Updates the shield information barrier segment based on provided ID.. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Add shared link to web link Source: https://developer.box.com/reference/put-web-links-id--add-shared-link box-openapi.json put /web_links/{web_link_id}#add_shared_link Adds a shared link to a web link. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Remove shared link from web link Source: https://developer.box.com/reference/put-web-links-id--remove-shared-link box-openapi.json put /web_links/{web_link_id}#remove_shared_link Removes a shared link from a web link. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update shared link on web link Source: https://developer.box.com/reference/put-web-links-id--update-shared-link box-openapi.json put /web_links/{web_link_id}#update_shared_link Updates a shared link on a web link. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Files under retention Source: https://developer.box.com/reference/resources/files-under-retention # Metadata filter Source: https://developer.box.com/reference/resources/metadata-filter # Metadata query search results Source: https://developer.box.com/reference/resources/metadata-query-results # Metadata template Source: https://developer.box.com/reference/resources/metadata-template # Metadata templates Source: https://developer.box.com/reference/resources/metadata-templates # Recent item Source: https://developer.box.com/reference/resources/recent-item # Retention policies Source: https://developer.box.com/reference/resources/retention-policies # Retention policy Source: https://developer.box.com/reference/resources/retention-policy # Retention policy (Base) Source: https://developer.box.com/reference/resources/retention-policy--base # Retention policy (Mini) Source: https://developer.box.com/reference/resources/retention-policy--mini # Retention policy assignment Source: https://developer.box.com/reference/resources/retention-policy-assignment # Retention policy assignments Source: https://developer.box.com/reference/resources/retention-policy-assignments # Search Result (including Shared Link) Source: https://developer.box.com/reference/resources/search-result-with-shared-link # Search Results Source: https://developer.box.com/reference/resources/search-results # Search Results (including Shared Links) Source: https://developer.box.com/reference/resources/search-results-with-shared-links # Session termination message Source: https://developer.box.com/reference/resources/session-termination # Shield information barrier Source: https://developer.box.com/reference/resources/shield-information-barrier # Shield information barrier (Base) Source: https://developer.box.com/reference/resources/shield-information-barrier--base # Shield information barrier reference Source: https://developer.box.com/reference/resources/shield-information-barrier-reference # Shield information barrier report Source: https://developer.box.com/reference/resources/shield-information-barrier-report # Shield information barrier report (Base) Source: https://developer.box.com/reference/resources/shield-information-barrier-report--base # Shield information barrier report details Source: https://developer.box.com/reference/resources/shield-information-barrier-report-details # List of Shield Information Barrier Reports Source: https://developer.box.com/reference/resources/shield-information-barrier-reports # Shield information barrier segment Source: https://developer.box.com/reference/resources/shield-information-barrier-segment # Shield information barrier segment member Source: https://developer.box.com/reference/resources/shield-information-barrier-segment-member # Shield information barrier segment member (Base) Source: https://developer.box.com/reference/resources/shield-information-barrier-segment-member--base # Shield information barrier segment member (Mini) Source: https://developer.box.com/reference/resources/shield-information-barrier-segment-member--mini # List of Shield Information Barrier Segment Members Source: https://developer.box.com/reference/resources/shield-information-barrier-segment-members # Shield information barrier segment restriction Source: https://developer.box.com/reference/resources/shield-information-barrier-segment-restriction # Shield information barrier segment restriction (Base) Source: https://developer.box.com/reference/resources/shield-information-barrier-segment-restriction--base # Shield information barrier segment restriction (Mini) Source: https://developer.box.com/reference/resources/shield-information-barrier-segment-restriction--mini # List of Shield Information Barrier Segment Restrictions Source: https://developer.box.com/reference/resources/shield-information-barrier-segment-restrictions # List of Shield Information Barrier Segments Source: https://developer.box.com/reference/resources/shield-information-barrier-segments # List of Shield Information Barriers Source: https://developer.box.com/reference/resources/shield-information-barriers # Remove Box Skill cards from file Source: https://developer.box.com/reference/delete-files-id-metadata-global-boxSkillsCards box-openapi.json delete /files/{file_id}/metadata/global/boxSkillsCards Removes any Box Skills cards metadata from a file. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Permanently remove file Source: https://developer.box.com/reference/delete-files-id-trash box-openapi.json delete /files/{file_id}/trash Permanently deletes a file that is in the trash. This action cannot be undone. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Remove upload session Source: https://developer.box.com/reference/delete-files-upload-sessions-id box-openapi.json delete /files/upload_sessions/{upload_session_id} Abort an upload session and discard all data uploaded. This cannot be reversed. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Permanently remove folder Source: https://developer.box.com/reference/delete-folders-id-trash box-openapi.json delete /folders/{folder_id}/trash Permanently deletes a folder that is in the trash. This action cannot be undone. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Unassign storage policy Source: https://developer.box.com/reference/delete-storage-policy-assignments-id box-openapi.json delete /storage_policy_assignments/{storage_policy_assignment_id} Delete a storage policy assignment. Deleting a storage policy assignment on a user will have the user inherit the enterprise's default storage policy. There is a rate limit for calling this endpoint of only twice per user in a 24 hour time frame. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Unassign task Source: https://developer.box.com/reference/delete-task-assignments-id box-openapi.json delete /task_assignments/{task_assignment_id} Deletes a specific task assignment. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Remove task Source: https://developer.box.com/reference/delete-tasks-id box-openapi.json delete /tasks/{task_id} Removes a task from a file. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Delete user Source: https://developer.box.com/reference/delete-users-id box-openapi.json delete /users/{user_id} Deletes a user. By default, this operation fails if the user still owns any content, was recently active, or recently joined the enterprise from a free account. To proceed, move their owned content first, or use the `force` parameter to delete the user and their files. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Delete user avatar Source: https://developer.box.com/reference/delete-users-id-avatar box-openapi.json delete /users/{user_id}/avatar Removes an existing user avatar. You cannot reverse this operation. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Permanently remove web link Source: https://developer.box.com/reference/delete-web-links-id-trash box-openapi.json delete /web_links/{web_link_id}/trash Permanently deletes a web link that is in the trash. This action cannot be undone. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List Box Skill cards on file Source: https://developer.box.com/reference/get-files-id-metadata-global-boxSkillsCards box-openapi.json get /files/{file_id}/metadata/global/boxSkillsCards List the Box Skills metadata cards that are attached to a file. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List tasks on file Source: https://developer.box.com/reference/get-files-id-tasks box-openapi.json get /files/{file_id}/tasks Retrieves a list of all the tasks for a file. This endpoint does not support pagination. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get trashed file Source: https://developer.box.com/reference/get-files-id-trash box-openapi.json get /files/{file_id}/trash Retrieves a file that has been moved to the trash. Please note that only if the file itself has been moved to the trash can it be retrieved with this API call. If instead one of its parent folders was moved to the trash, only that folder can be inspected using the [`GET /folders/:id/trash`](https://developer.box.com/reference/get-folders-id-trash) API. To list all items that have been moved to the trash, please use the [`GET /folders/trash/items`](https://developer.box.com/reference/get-folders-trash-items/) API. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get upload session Source: https://developer.box.com/reference/get-files-upload-sessions-id box-openapi.json get /files/upload_sessions/{upload_session_id} Return information about an upload session. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) endpoint. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List parts Source: https://developer.box.com/reference/get-files-upload-sessions-id-parts box-openapi.json get /files/upload_sessions/{upload_session_id}/parts Return a list of the chunks uploaded to the upload session so far. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get trashed folder Source: https://developer.box.com/reference/get-folders-id-trash box-openapi.json get /folders/{folder_id}/trash Retrieves a folder that has been moved to the trash. Please note that only if the folder itself has been moved to the trash can it be retrieved with this API call. If instead one of its parent folders was moved to the trash, only that folder can be inspected using the [`GET /folders/:id/trash`](https://developer.box.com/reference/get-folders-id-trash) API. To list all items that have been moved to the trash, please use the [`GET /folders/trash/items`](https://developer.box.com/reference/get-folders-trash-items/) API. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List trashed items Source: https://developer.box.com/reference/get-folders-trash-items box-openapi.json get /folders/trash/items Retrieves the files and folders that have been moved to the trash. Any attribute in the full files or folders objects can be passed in with the `fields` parameter to retrieve those specific attributes that are not returned by default. This endpoint defaults to use offset-based pagination, yet also supports marker-based pagination using the `marker` parameter. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List storage policies Source: https://developer.box.com/reference/get-storage-policies box-openapi.json get /storage_policies Fetches all the storage policies in the enterprise. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get storage policy Source: https://developer.box.com/reference/get-storage-policies-id box-openapi.json get /storage_policies/{storage_policy_id} Fetches a specific storage policy. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List storage policy assignments Source: https://developer.box.com/reference/get-storage-policy-assignments box-openapi.json get /storage_policy_assignments Fetches all the storage policy assignment for an enterprise or user. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get storage policy assignment Source: https://developer.box.com/reference/get-storage-policy-assignments-id box-openapi.json get /storage_policy_assignments/{storage_policy_assignment_id} Fetches a specific storage policy assignment. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get task assignment Source: https://developer.box.com/reference/get-task-assignments-id box-openapi.json get /task_assignments/{task_assignment_id} Retrieves information about a task assignment. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get task Source: https://developer.box.com/reference/get-tasks-id box-openapi.json get /tasks/{task_id} Retrieves information about a specific task. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List task assignments Source: https://developer.box.com/reference/get-tasks-id-assignments box-openapi.json get /tasks/{task_id}/assignments Lists all of the assignments for a given task. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List terms of service user statuses Source: https://developer.box.com/reference/get-terms-of-service-user-statuses box-openapi.json get /terms_of_service_user_statuses Retrieves an overview of users and their status for a terms of service, including Whether they have accepted the terms and when. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List terms of services Source: https://developer.box.com/reference/get-terms-of-services box-openapi.json get /terms_of_services Returns the current terms of service text and settings for the enterprise. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get terms of service Source: https://developer.box.com/reference/get-terms-of-services-id box-openapi.json get /terms_of_services/{terms_of_service_id} Fetches a specific terms of service. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # List enterprise users Source: https://developer.box.com/reference/get-users box-openapi.json get /users Returns a list of all users for the Enterprise along with their `user_id`, `public_name`, and `login`. The application and the authenticated user need to have the permission to look up users in the entire enterprise. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get user Source: https://developer.box.com/reference/get-users-id box-openapi.json get /users/{user_id} Retrieves information about a user in the enterprise. The application and the authenticated user need to have the permission to look up users in the entire enterprise. This endpoint also returns a limited set of information for external users who are collaborated on content owned by the enterprise for authenticated users with the right scopes. In this case, disallowed fields will return null instead. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get user avatar Source: https://developer.box.com/reference/get-users-id-avatar box-openapi.json get /users/{user_id}/avatar Retrieves an image of a the user's avatar. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get current user Source: https://developer.box.com/reference/get-users-me box-openapi.json get /users/me Retrieves information about the user who is currently authenticated. In the case of a client-side authenticated OAuth 2.0 application this will be the user who authorized the app. In the case of a JWT, server-side authenticated application this will be the service account that belongs to the application by default. Use the `As-User` header to change who this API call is made on behalf of. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Get trashed web link Source: https://developer.box.com/reference/get-web-links-id-trash box-openapi.json get /web_links/{web_link_id}/trash Retrieves a web link that has been moved to the trash. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Preflight check before upload Source: https://developer.box.com/reference/options-files-content box-openapi.json options /files/content This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Upload file Source: https://developer.box.com/reference/post-files-content box-openapi.json post /files/content Uploads a small file to Box. For file sizes over 50MB we recommend using the Chunk Upload APIs. The `attributes` part of the body must come **before** the `file` part. Requests that do not follow this format when uploading the file will receive a HTTP `400` error with a `metadata_after_file_contents` error code. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Restore file Source: https://developer.box.com/reference/post-files-id box-openapi.json post /files/{file_id} Restores a file that has been moved to the trash. An optional new parent ID can be provided to restore the file to in case the original folder has been deleted. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Upload file version Source: https://developer.box.com/reference/post-files-id-content box-openapi.json post /files/{file_id}/content Update a file's content. For file sizes over 50MB we recommend using the Chunk Upload APIs. The `attributes` part of the body must come **before** the `file` part. Requests that do not follow this format when uploading the file will receive a HTTP `400` error with a `metadata_after_file_contents` error code. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create Box Skill cards on file Source: https://developer.box.com/reference/post-files-id-metadata-global-boxSkillsCards box-openapi.json post /files/{file_id}/metadata/global/boxSkillsCards Applies one or more Box Skills metadata cards to a file. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create upload session for existing file Source: https://developer.box.com/reference/post-files-id-upload-sessions box-openapi.json post /files/{file_id}/upload_sessions Creates an upload session for an existing file. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create upload session Source: https://developer.box.com/reference/post-files-upload-sessions box-openapi.json post /files/upload_sessions Creates an upload session for a new file. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Commit upload session Source: https://developer.box.com/reference/post-files-upload-sessions-id-commit box-openapi.json post /files/upload_sessions/{upload_session_id}/commit Close an upload session and create a file from the uploaded chunks. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Restore folder Source: https://developer.box.com/reference/post-folders-id box-openapi.json post /folders/{folder_id} Restores a folder that has been moved to the trash. An optional new parent ID can be provided to restore the folder to in case the original folder has been deleted. During this operation, part of the file tree will be locked, mainly the source folder and all of its descendants, as well as the destination folder. For the duration of the operation, no other move, copy, delete, or restore operation can performed on any of the locked folders. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create shield information barrier Source: https://developer.box.com/reference/post-shield-information-barriers box-openapi.json post /shield_information_barriers Creates a shield information barrier to separate individuals/groups within the same firm and prevents confidential information passing between them. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Assign storage policy Source: https://developer.box.com/reference/post-storage-policy-assignments box-openapi.json post /storage_policy_assignments Creates a storage policy assignment for an enterprise or user. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Assign task Source: https://developer.box.com/reference/post-task-assignments box-openapi.json post /task_assignments Assigns a task to a user. A task can be assigned to more than one user by creating multiple assignments. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create task Source: https://developer.box.com/reference/post-tasks box-openapi.json post /tasks Creates a single task on a file. This task is not assigned to any user and will need to be assigned separately. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create terms of service status for new user Source: https://developer.box.com/reference/post-terms-of-service-user-statuses box-openapi.json post /terms_of_service_user_statuses Sets the status for a terms of service for a user. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create terms of service Source: https://developer.box.com/reference/post-terms-of-services box-openapi.json post /terms_of_services Creates a terms of service for a given enterprise and type of user. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Create user Source: https://developer.box.com/reference/post-users box-openapi.json post /users Creates a new managed user in an enterprise. This endpoint is only available to users and applications with the right admin permissions. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Add or update user avatar Source: https://developer.box.com/reference/post-users-id-avatar box-openapi.json post /users/{user_id}/avatar Adds or updates a user avatar. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Restore web link Source: https://developer.box.com/reference/post-web-links-id box-openapi.json post /web_links/{web_link_id} Restores a web link that has been moved to the trash. An optional new parent ID can be provided to restore the web link to in case the original folder has been deleted. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update Box Skill cards on file Source: https://developer.box.com/reference/put-files-id-metadata-global-boxSkillsCards box-openapi.json put /files/{file_id}/metadata/global/boxSkillsCards Updates one or more Box Skills metadata cards to a file. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Upload part of file Source: https://developer.box.com/reference/put-files-upload-sessions-id box-openapi.json put /files/upload_sessions/{upload_session_id} Uploads a chunk of a file for an upload session. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update all Box Skill cards on file Source: https://developer.box.com/reference/put-skill-invocations-id box-openapi.json put /skill_invocations/{skill_id} An alternative method that can be used to overwrite and update all Box Skill metadata cards on a file. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update storage policy assignment Source: https://developer.box.com/reference/put-storage-policy-assignments-id box-openapi.json put /storage_policy_assignments/{storage_policy_assignment_id} Updates a specific storage policy assignment. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update task assignment Source: https://developer.box.com/reference/put-task-assignments-id box-openapi.json put /task_assignments/{task_assignment_id} Updates a task assignment. This endpoint can be used to update the state of a task assigned to a user. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update task Source: https://developer.box.com/reference/put-tasks-id box-openapi.json put /tasks/{task_id} Updates a task. This can be used to update a task's configuration, or to update its completion state. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update terms of service status for existing user Source: https://developer.box.com/reference/put-terms-of-service-user-statuses-id box-openapi.json put /terms_of_service_user_statuses/{terms_of_service_user_status_id} Updates the status for a terms of service for a user. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update terms of service Source: https://developer.box.com/reference/put-terms-of-services-id box-openapi.json put /terms_of_services/{terms_of_service_id} Updates a specific terms of service. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Update user Source: https://developer.box.com/reference/put-users-id box-openapi.json put /users/{user_id} Updates a managed or app user in an enterprise. This endpoint is only available to users and applications with the right admin permissions. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Transfer owned folders Source: https://developer.box.com/reference/put-users-id-folders-0 box-openapi.json put /users/{user_id}/folders/0 Move all of the items (files, folders and workflows) owned by a user into another user's account. Only the root folder (`0`) can be transferred. Folders can only be moved across users by users with administrative permissions. All existing shared links and folder-level collaborations are transferred during the operation. Please note that while collaborations at the individual file-level are transferred during the operation, the collaborations are deleted when the original user is deleted. If the user has a large number of items across all folders, the call will be run asynchronously. If the operation is not completed within 10 minutes, the user will receive a 200 OK response, and the operation will continue running. If the destination path has a metadata cascade policy attached to any of the parent folders, a metadata cascade operation will be kicked off asynchronously. There is currently no way to check for when this operation is finished. The destination folder's name will be in the format `{User}'s Files and Folders`, where `{User}` is the display name of the user. To make this API call your application will need to have the "Read and write all files and folders stored in Box" scope enabled. Please make sure the destination user has access to `Relay` or `Relay Lite`, and has access to the files and folders involved in the workflows being transferred. Admins will receive an email when the operation is completed. This endpoint is in the version **2024.0**. No changes are required to continue using it. For more details, see **[Box API versioning](/guides/api-calls/api-versioning-strategy)**. Learn more about [Box SDK versioning strategy](/guides/tooling/sdks/sdk-versioning/). # Conflict error Source: https://developer.box.com/reference/resources/conflict-error # Keyword Skill Card Source: https://developer.box.com/reference/resources/keyword-skill-card # Skills metadata instance Source: https://developer.box.com/reference/resources/skill-cards-metadata # Status Skill Card Source: https://developer.box.com/reference/resources/status-skill-card # Storage policies Source: https://developer.box.com/reference/resources/storage-policies # Storage policy Source: https://developer.box.com/reference/resources/storage-policy # Storage policy (Mini) Source: https://developer.box.com/reference/resources/storage-policy--mini # Storage policy assignment Source: https://developer.box.com/reference/resources/storage-policy-assignment # Storage policy assignments Source: https://developer.box.com/reference/resources/storage-policy-assignments # Task Source: https://developer.box.com/reference/resources/task # Task assignment Source: https://developer.box.com/reference/resources/task-assignment # Task assignments Source: https://developer.box.com/reference/resources/task-assignments # Tasks Source: https://developer.box.com/reference/resources/tasks # Terms of service Source: https://developer.box.com/reference/resources/terms-of-service # Terms of service (Base) Source: https://developer.box.com/reference/resources/terms-of-service--base # Terms of service user status Source: https://developer.box.com/reference/resources/terms-of-service-user-status # Terms of services Source: https://developer.box.com/reference/resources/terms-of-services # Terms of service user statuses Source: https://developer.box.com/reference/resources/terms-of-services-user-statuses # Timeline Skill Card Source: https://developer.box.com/reference/resources/timeline-skill-card # Transcript Skill Card. Source: https://developer.box.com/reference/resources/transcript-skill-card # Trashed File Source: https://developer.box.com/reference/resources/trash-file # Trashed File (Restored) Source: https://developer.box.com/reference/resources/trash-file-restored # Trashed Folder Source: https://developer.box.com/reference/resources/trash-folder # Trashed Folder (Restored) Source: https://developer.box.com/reference/resources/trash-folder-restored # Trashed Web Link Source: https://developer.box.com/reference/resources/trash-web-link # Trashed Web Link (Restored) Source: https://developer.box.com/reference/resources/trash-web-link-restored # Upload part Source: https://developer.box.com/reference/resources/upload-part # Upload part (Mini) Source: https://developer.box.com/reference/resources/upload-part--mini # Upload parts Source: https://developer.box.com/reference/resources/upload-parts # Upload session Source: https://developer.box.com/reference/resources/upload-session # Upload URL Source: https://developer.box.com/reference/resources/upload-url # Uploaded part Source: https://developer.box.com/reference/resources/uploaded-part # User Source: https://developer.box.com/reference/resources/user # User (Base) Source: https://developer.box.com/reference/resources/user--base # User (Full) Source: https://developer.box.com/reference/resources/user--full # User (Mini) Source: https://developer.box.com/reference/resources/user--mini # User avatar Source: https://developer.box.com/reference/resources/user-avatar # User (Collaborations) Source: https://developer.box.com/reference/resources/user-collaborations # User (Integration Mappings) Source: https://developer.box.com/reference/resources/user-integration-mappings-reference # Users Source: https://developer.box.com/reference/resources/users # Box AI Source: https://developer.box.com/ai-dev-zone

This page features quick start guides, sample code, and tools for building AI agents and intelligent workflows. Explore use cases, get hands-on experience with Box AI API, and build agents with Box AI Studio.

## Follow quick starts Box AI API is available to all customers Business and above. ## Documentation These resources will get you up and running with Box AI API. ## MCP Servers These resources will get you up and running with Box MCP server. ## AI agents Learn how to create advanced AI agents with Box. ## Box for AI Integrations Use Box for AI Integrations to extend LLM models' existing knowledge bases. # Changelog Source: https://developer.box.com/changelog/index ## ChatGPT for remote Box MCP server released We’ve added the ability to [integrate ChatGPT with the Remote Box MCP Server][gpt-remote-box-mcp]. This allows ChatGPT to securely access Box content through a custom Model Context Protocol (MCP) connector using OAuth and the MCP. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][forum] for any help needed. [forum]: https://forum.box.com/ [gpt-remote-box-mcp]: https://developer.box.com/guides/box-mcp/remote#chatgpt ## Box iOS SDK `6.3.0` released ### Bug Fixes * **boxsdkgen:** Add taxonomy to Metadata Field (read) definition (box/box-openapi[#572][1]) ([#1334][2]) ([`373240a`][3]) * **boxsdkgen:** Fix `RetryAfter` function when there's no `Retry-After` header (box/box-codegen[#903][4]) ([#1312][5]) ([`783ef91`][6]) ### New Features and Enhancements * **boxsdkgen:** Add Metadata Taxonomies API (box/box-openapi[#569][7]) ([#1320][8]) ([`2b52332`][9]) * **boxsdkgen:** Text input validation for Box Sign (box/box-openapi[#568][10]) ([#1314][11]) ([`bebd148`][12]) * **boxsdkgen:** Treat `nullable` fields as Optional (box/box-codegen[#906][13]) ([#1324][14]) ([`c17e23a`][15]) [1]: https://github.com/box/box-ios-sdk/issues/572 [2]: https://github.com/box/box-ios-sdk/issues/1334 [3]: https://github.com/box/box-ios-sdk/commit/373240ae0884f94c64a0caa2951f29212becd0fd [4]: https://github.com/box/box-ios-sdk/issues/903 [5]: https://github.com/box/box-ios-sdk/issues/1312 [6]: https://github.com/box/box-ios-sdk/commit/783ef91c6744caeddb4fda3d83c070095733f6c1 [7]: https://github.com/box/box-ios-sdk/issues/569 [8]: https://github.com/box/box-ios-sdk/issues/1320 [9]: https://github.com/box/box-ios-sdk/commit/2b52332460bb03412bd96df77e8cf45bb8abf35f [10]: https://github.com/box/box-ios-sdk/issues/568 [11]: https://github.com/box/box-ios-sdk/issues/1314 [12]: https://github.com/box/box-ios-sdk/commit/bebd148378927efc4d015f88914d2b0a5915c41d [13]: https://github.com/box/box-ios-sdk/issues/906 [14]: https://github.com/box/box-ios-sdk/issues/1324 [15]: https://github.com/box/box-ios-sdk/commit/c17e23af55829f182e3d302682d0444520693217 ## Box Java SDK `v5.3.0` released ### New Features and Enhancements * **boxsdkgen:** Add Metadata Taxonomies API (box/box-openapi[#569][1]) ([#1629][2]) ([`7236f16`][3]) * **boxsdkgen:** Text input validation for Box Sign (box/box-openapi[#568][4]) ([#1623][5]) ([`a5d74ee`][6]) * **boxsdkgen:** Treat `nullable` fields as Optional (box/box-codegen[#906][7]) ([#1633][8]) ([`e14e97b`][9]) ### Bug Fixes * **boxsdkgen:** Add taxonomy to Metadata Field (read) definition (box/box-openapi[#572][10]) ([#1643][11]) ([`492684e`][12]) * **boxsdkgen:** Fix `RetryAfter` function when there's no `Retry-After` header (box/box-codegen[#903][13]) ([#1621][14]) ([`af4861f`][15]) [1]: https://github.com/box/box-java-sdk/issues/569 [2]: https://github.com/box/box-java-sdk/issues/1629 [3]: https://github.com/box/box-java-sdk/commit/7236f16bf39a3376eaad4ba6e143633cc5c2f4b2 [4]: https://github.com/box/box-java-sdk/issues/568 [5]: https://github.com/box/box-java-sdk/issues/1623 [6]: https://github.com/box/box-java-sdk/commit/a5d74eeb4b9b053ab00ebf33cf4f9b862ea4b586 [7]: https://github.com/box/box-java-sdk/issues/906 [8]: https://github.com/box/box-java-sdk/issues/1633 [9]: https://github.com/box/box-java-sdk/commit/e14e97bb7a53c967851f7b92bc43400bdfc8da8b [10]: https://github.com/box/box-java-sdk/issues/572 [11]: https://github.com/box/box-java-sdk/issues/1643 [12]: https://github.com/box/box-java-sdk/commit/492684e45730b7f56bc1539c4086be45b30127ae [13]: https://github.com/box/box-java-sdk/issues/903 [14]: https://github.com/box/box-java-sdk/issues/1621 [15]: https://github.com/box/box-java-sdk/commit/af4861f832e03d68614d6bd3c9852ca48a49ae0f ## Box iOS SDK `10.3.0` released ### Bug Fixes * Add taxonomy to Metadata Field (read) definition (box/box-openapi[#572][1]) ([#1335][2]) ([`3dae5b0`][3]) * Fix `RetryAfter` function when there's no `Retry-After` header (box/box-codegen[#903][4]) ([#1313][5]) ([`52a72ad`][6]) ### New Features and Enhancements * Add Metadata Taxonomies API (box/box-openapi[#569][7]) ([#1321][8]) ([`20497cc`][9]) * Text input validation for Box Sign (box/box-openapi[#568][10]) ([#1315][11]) ([`7ffe641`][12]) * Treat `nullable` fields as Optional (box/box-codegen[#906][13]) ([#1325][14]) ([`af828ea`][15]) [1]: https://github.com/box/box-ios-sdk/issues/572 [2]: https://github.com/box/box-ios-sdk/issues/1335 [3]: https://github.com/box/box-ios-sdk/commit/3dae5b0335474a8b2a01f41d5ca71e21d0d77366 [4]: https://github.com/box/box-ios-sdk/issues/903 [5]: https://github.com/box/box-ios-sdk/issues/1313 [6]: https://github.com/box/box-ios-sdk/commit/52a72ad706de7b9079df55d5be5dd9e1fab247c3 [7]: https://github.com/box/box-ios-sdk/issues/569 [8]: https://github.com/box/box-ios-sdk/issues/1321 [9]: https://github.com/box/box-ios-sdk/commit/20497cce040703560a686b5640b943fb3f363f0d [10]: https://github.com/box/box-ios-sdk/issues/568 [11]: https://github.com/box/box-ios-sdk/issues/1315 [12]: https://github.com/box/box-ios-sdk/commit/7ffe641fda1a0a3ffe5a3eded0c8cafc840bb76f [13]: https://github.com/box/box-ios-sdk/issues/906 [14]: https://github.com/box/box-ios-sdk/issues/1325 [15]: https://github.com/box/box-ios-sdk/commit/af828ea1d2585b3d117035722028f28a2ad3dcbc ## Box Java SDK `v10.4.0` released ### Bug Fixes * Add taxonomy to Metadata Field (read) definition (box/box-openapi[#572][1]) ([#1644][2]) ([`61235da`][3]) * Fix `RetryAfter` function when there's no `Retry-After` header (box/box-codegen[#903][4]) ([#1622][5]) ([`f135e2b`][6]) ### New Features and Enhancements * Add Metadata Taxonomies API (box/box-openapi[#569][7]) ([#1630][8]) ([`d1e8924`][9]) * Text input validation for Box Sign (box/box-openapi[#568][10]) ([#1624][11]) ([`8c5b5c1`][12]) * Treat `nullable` fields as Optional (box/box-codegen[#906][13]) ([#1634][14]) ([`cacc729`][15]) [1]: https://github.com/box/box-java-sdk/issues/572 [2]: https://github.com/box/box-java-sdk/issues/1644 [3]: https://github.com/box/box-java-sdk/commit/61235da7d51a64845d344a8286821e59b217a848 [4]: https://github.com/box/box-java-sdk/issues/903 [5]: https://github.com/box/box-java-sdk/issues/1622 [6]: https://github.com/box/box-java-sdk/commit/f135e2b62d4b2d2d266ab40b3b366c8c7968d2db [7]: https://github.com/box/box-java-sdk/issues/569 [8]: https://github.com/box/box-java-sdk/issues/1630 [9]: https://github.com/box/box-java-sdk/commit/d1e8924ad123e5fcbf014be50fbbf52ea45d546b [10]: https://github.com/box/box-java-sdk/issues/568 [11]: https://github.com/box/box-java-sdk/issues/1624 [12]: https://github.com/box/box-java-sdk/commit/8c5b5c17285c1c0d4a644eb8187dac92f1f96f28 [13]: https://github.com/box/box-java-sdk/issues/906 [14]: https://github.com/box/box-java-sdk/issues/1634 [15]: https://github.com/box/box-java-sdk/commit/cacc729dc246c914eb1a6d8281f4261c96711dc1 ## Box Python SDK `v10.3.0` released ### Bug Fixes * Add taxonomy to Metadata Field (read) definition (box/box-openapi[#572][1]) ([#1269][2]) ([`7bb9bdc`][3]) * Fix `RetryAfter` function when there's no `Retry-After` header (box/box-codegen[#903][4]) ([#1244][5]) ([`d7cc019`][6]) ### New Features and Enhancements * Add Metadata Taxonomies API (box/box-openapi[#569][7]) ([#1252][8]) ([`7850463`][9]) * Text input validation for Box Sign (box/box-openapi[#568][10]) ([#1246][11]) ([`f99512f`][12]) * Treat `nullable` fields as Optional (box/box-codegen[#906][13]) ([#1256][14]) ([`12c05dc`][15]) [1]: https://github.com/box/box-python-sdk/issues/572 [2]: https://github.com/box/box-python-sdk/issues/1269 [3]: https://github.com/box/box-python-sdk/commit/7bb9bdc894cb6d765a09ecbedda58b6edb9181d0 [4]: https://github.com/box/box-python-sdk/issues/903 [5]: https://github.com/box/box-python-sdk/issues/1244 [6]: https://github.com/box/box-python-sdk/commit/d7cc019dd186ef3cdb6214a6cf1625ec49c1fd37 [7]: https://github.com/box/box-python-sdk/issues/569 [8]: https://github.com/box/box-python-sdk/issues/1252 [9]: https://github.com/box/box-python-sdk/commit/7850463204ef9f7802a759ef69a3b7f4b6dd328b [10]: https://github.com/box/box-python-sdk/issues/568 [11]: https://github.com/box/box-python-sdk/issues/1246 [12]: https://github.com/box/box-python-sdk/commit/f99512fcfca75edae48bb5a1b6a1897d330f5dd3 [13]: https://github.com/box/box-python-sdk/issues/906 [14]: https://github.com/box/box-python-sdk/issues/1256 [15]: https://github.com/box/box-python-sdk/commit/12c05dcebae13a696956288f41ec55fed8a4011e ## New developer documentation site (beta) We are excited to announce the beta launch of the new Box developer documentation site. This release provides access to the redesigned, AI-first, purpose-built developer experience platform. ## What’s included in this launch New design aligned with developer workflows: * Refreshed homepage * Intuitive landing pages * Interactive API testing experience * Improved readability and accessibility: * Enhanced navigation * Clear, responsive book structure with global and single-page tables of contents * Light and dark modes AI-first functionality: * AI-powered search with generative answers and aggregated results from across Box sites * Contextual menu options to integrate with leading AI tools and copy pages as Markdown * Box Dev Docs MCP server ## Developer impact The new site delivers our up-to-date developer documentation in an entirely new experience. Some UX features are still in their beta shape and will continue to be refined in the next few weeks, so you may encounter occasional changes or improvements as we gather feedback and iterate. We encourage you to engage with the new functionality and share your comments. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum](https://community.box.com/box-platform-5) for any help needed. ## Box Windows SDK `v6.3.0` released ### **New Features and Enhancements:** * **boxsdkgen:** Remove `confidence_score` and `include_confidence_score` from AI extract (box/box-openapi[#567][1]) ([#1314][2]) ([`1733727`][3]) ### **Bug Fixes:** * **boxsdkgen:** fix `RetryAfter` function when there's no Retry-After header (box/box-codegen[#903][4]) ([#1319][5]) ([`1647641`][6]) * **boxsdkgen:** remove duplicate optional tag (box/box-codegen[#898][7]) ([#1313][8]) ([`5c3cca9`][9]) [1]: https://github.com/box/box-windows-sdk-v2/issues/567 [2]: https://github.com/box/box-windows-sdk-v2/issues/1314 [3]: https://github.com/box/box-windows-sdk-v2/commit/1733727b25c9e7b5a8995daa0e5aa5c63860e77f [4]: https://github.com/box/box-windows-sdk-v2/issues/903 [5]: https://github.com/box/box-windows-sdk-v2/issues/1319 [6]: https://github.com/box/box-windows-sdk-v2/commit/164764159a2f041253ebf0b665286a06526fb3b2 [7]: https://github.com/box/box-windows-sdk-v2/issues/898 [8]: https://github.com/box/box-windows-sdk-v2/issues/1313 [9]: https://github.com/box/box-windows-sdk-v2/commit/5c3cca937949a52502848d92080aa3d69f891208 ## Box Windows SDK `v10.4.0` released ### Bug Fixes * fix `RetryAfter` function when there's no Retry-After header (box/box-codegen[#903][1]) ([#1320][2]) ([`5030d1c`][3]) * remove duplicate optional tag (box/box-codegen[#898][4]) ([#1312][5]) ([`17b2851`][6]) ### New Features and Enhancements * Remove `confidence_score` and `include_confidence_score` from AI extract (box/box-openapi[#567][7]) ([#1315][8]) ([`b4af239`][9]) [1]: https://github.com/box/box-windows-sdk-v2/issues/903 [2]: https://github.com/box/box-windows-sdk-v2/issues/1320 [3]: https://github.com/box/box-windows-sdk-v2/commit/5030d1c5747afd8f85a54fcccf5695ca5f3ea836 [4]: https://github.com/box/box-windows-sdk-v2/issues/898 [5]: https://github.com/box/box-windows-sdk-v2/issues/1312 [6]: https://github.com/box/box-windows-sdk-v2/commit/17b285197cf276870ec2f3f881e4e03b28d915cc [7]: https://github.com/box/box-windows-sdk-v2/issues/567 [8]: https://github.com/box/box-windows-sdk-v2/issues/1315 [9]: https://github.com/box/box-windows-sdk-v2/commit/b4af2395e45a9a94083e689ff8c30c2c22bda669 ## Box Sign Text Input Validations for Public API and Template Tags We've extended Box Sign's text input validation capabilities to support both Public API and template tags. This enables developers and users to apply validation rules programmatically and through templates, closing a critical feature gap for enterprise workflows. ## What's new Text input validation is now supported through: * **Public API**: Create signature requests with validation rules using the Sign API endpoints. * **Template tags**: Apply validation rules directly in document templates for use with Public API, Doc Gen, and Salesforce integrations. * **Custom regex patterns**: Define custom validation patterns beyond the predefined validation types. ## Why it matters This update addresses key integration needs: * **Public API developers** can programmatically create signature requests with validation rules, including custom regex, ensuring data quality at scale. * **Salesforce integration** users can now leverage text input validation rules for fields that sync back to Salesforce. * **Doc Gen users** can apply validation to fields in automated document workflows. Template Tags with validation support particularly benefits workflows where templates are used programmatically through integrations, eliminating the previous gap where validation was only available through the web interface. ## API updates The following endpoints now support text input validation: * [`POST /sign_requests`][1] — Create sign request with validation. * [`GET /:sign_request_id`][2] — Get sign request details including validation. * [`GET /sign_requests`][3] — List sign requests with validation info. * [`GET /:template_id`][4] — Get template with validation rules. * [`GET /sign_templates`][5] — List templates with validation info. ## Getting started To use text input validation: 1. Review the [Create sign request endpoint][1] for adding validation to signature requests. 2. Check out the Box Sign documentation for [applying validation in Template Tags][6]. 3. Explore [custom regex patterns][7] for advanced validation scenarios. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][8] for any help needed. [1]: /reference/post-sign-requests [2]: /reference/get-sign-requests-id [3]: /reference/get-sign-requests [4]: /reference/get-sign-templates-id [5]: /reference/get-sign-templates [6]: https://support.box.com/hc/en-us/articles/4404085855251-Creating-templates-using-tags [7]: https://support.box.com/hc/en-us/articles/42924560611603-Using-Input-Text-Validation [8]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## Box Python SDK `v4.2.0` released ### New Features and Enhancements * **boxsdkgen:** Remove `confidence_score` and `include_confidence_score` from AI extract (box/box-openapi[#567][1]) ([#1237][2]) ([`2ac9408`][3]) * **boxsdkgen:** Support new sign request metadata (box/box-openapi[#565][4]) ([#1221][5]) ([`56a93ac`][6]) [1]: https://github.com/box/box-python-sdk/issues/567 [2]: https://github.com/box/box-python-sdk/issues/1237 [3]: https://github.com/box/box-python-sdk/commit/2ac9408be69a86b7f57e7efdb433c8c049568fad [4]: https://github.com/box/box-python-sdk/issues/565 [5]: https://github.com/box/box-python-sdk/issues/1221 [6]: https://github.com/box/box-python-sdk/commit/56a93ac02fd746799ec8a831b61e06b2b7464479 ## Box Python SDK `v10.2.0` released ### New Features and Enhancements * Remove `confidence_score` and `include_confidence_score` from AI extract (box/box-openapi[#567][1]) ([#1238][2]) ([`66267ba`][3]) * Support new sign request metadata (box/box-openapi[#565][4]) ([#1222][5]) ([`6c3d332`][6]) [1]: https://github.com/box/box-python-sdk/issues/567 [2]: https://github.com/box/box-python-sdk/issues/1238 [3]: https://github.com/box/box-python-sdk/commit/66267bae7395ce2886cc4cd7504a51d22394b738 [4]: https://github.com/box/box-python-sdk/issues/565 [5]: https://github.com/box/box-python-sdk/issues/1222 [6]: https://github.com/box/box-python-sdk/commit/6c3d3325a19b3217225a80c2cd5d15c7bb068494 ## Box Node SDK `v4.2.0` released ### Bug Fixes * **boxsdkgen:** Remove duplicated in union type (box/box-codegen[#898][1]) ([#1241][2]) ([`c56f808`][3]) * bump `jsonwebtoken` dependency ([#1244][4]) ([`49692e3`][5]) ### New Features and Enhancements * **boxsdkgen:** Remove `confidence_score` and `include_confidence_score` from AI extract (box/box-openapi[#567][6]) ([#1245][7]) ([`3a74388`][8]) * **boxsdkgen:** support `includeConfidenceScore` and `includeConfidenceScore` fields in AI extract structured (box/box-openapi[#566][9]) ([#1227][10]) ([`8e2b109`][11]) * **boxsdkgen:** Support new sign request metadata (box/box-openapi[#565][12]) ([#1225][13]) ([`955b6ba`][14]) * **boxsdkgen:** update error message on exception (box/box-codegen[#896][15]) ([#1232][16]) ([`b140428`][17]) [1]: https://github.com/box/box-node-sdk/issues/898 [2]: https://github.com/box/box-node-sdk/issues/1241 [3]: https://github.com/box/box-node-sdk/commit/c56f808315fab6da134de17517bbb33067523859 [4]: https://github.com/box/box-node-sdk/issues/1244 [5]: https://github.com/box/box-node-sdk/commit/49692e3724c9aa40a855f85a7b0771db1c984b6f [6]: https://github.com/box/box-node-sdk/issues/567 [7]: https://github.com/box/box-node-sdk/issues/1245 [8]: https://github.com/box/box-node-sdk/commit/3a74388b46e4842708c11ada8f931b810c0b3230 [9]: https://github.com/box/box-node-sdk/issues/566 [10]: https://github.com/box/box-node-sdk/issues/1227 [11]: https://github.com/box/box-node-sdk/commit/8e2b109ebacd48ed268a9310cb01d8f6ae5ebca4 [12]: https://github.com/box/box-node-sdk/issues/565 [13]: https://github.com/box/box-node-sdk/issues/1225 [14]: https://github.com/box/box-node-sdk/commit/955b6ba5df942c5c1c0340c307cefad70549db53 [15]: https://github.com/box/box-node-sdk/issues/896 [16]: https://github.com/box/box-node-sdk/issues/1232 [17]: https://github.com/box/box-node-sdk/commit/b140428c303de789bc1cee49c1e8c03139602c65 ## Box Node SDK `v10.2.0` released ### Bug Fixes * Remove duplicated in union type (box/box-codegen[#898][1]) ([#1240][2]) ([`0b03b60`][3]) ### New Features and Enhancements * Remove `confidence_score` and `include_confidence_score` from AI extract (box/box-openapi[#567][4]) ([#1243][5]) ([`55d6cd0`][6]) * support `includeConfidenceScore` and `includeConfidenceScore` fields in AI extract structured (box/box-openapi[#566][7]) ([#1228][8]) ([`4bf9f46`][9]) * Support new sign request metadata (box/box-openapi[#565][10]) ([#1226][11]) ([`8dfc1cc`][12]) * update error message on exception (box/box-codegen[#896][13]) ([#1233][14]) ([`b298afa`][15]) [1]: https://github.com/box/box-node-sdk/issues/898 [2]: https://github.com/box/box-node-sdk/issues/1240 [3]: https://github.com/box/box-node-sdk/commit/0b03b607789ccf6a94253101760aa530a9737e78 [4]: https://github.com/box/box-node-sdk/issues/567 [5]: https://github.com/box/box-node-sdk/issues/1243 [6]: https://github.com/box/box-node-sdk/commit/55d6cd00790a81fa5c54379c045b4e652173dcb8 [7]: https://github.com/box/box-node-sdk/issues/566 [8]: https://github.com/box/box-node-sdk/issues/1228 [9]: https://github.com/box/box-node-sdk/commit/4bf9f46baaeaa213878c9102c0628e3c351c7b3c [10]: https://github.com/box/box-node-sdk/issues/565 [11]: https://github.com/box/box-node-sdk/issues/1226 [12]: https://github.com/box/box-node-sdk/commit/8dfc1ccc9c600c24d4d5e7879eaebfd6bf1f9a0e [13]: https://github.com/box/box-node-sdk/issues/896 [14]: https://github.com/box/box-node-sdk/issues/1233 [15]: https://github.com/box/box-node-sdk/commit/b298afa69fce884f7def10a8022aa67dc58ac949 ## Box Java SDK `v5.2.0` released ### New Features and Enhancements * **boxsdkgen:** Remove `confidence_score` and `include_confidence_score` from AI extract (box/box-openapi[#567][1]) ([#1614][2]) ([`e5e9545`][3]) * **boxsdkgen:** Support new sign request metadata (box/box-openapi[#565][4]) ([#1598][5]) ([`87d1182`][6]) [1]: https://github.com/box/box-java-sdk/issues/567 [2]: https://github.com/box/box-java-sdk/issues/1614 [3]: https://github.com/box/box-java-sdk/commit/e5e9545cc539c6c8f3ce4e99926840529437039b [4]: https://github.com/box/box-java-sdk/issues/565 [5]: https://github.com/box/box-java-sdk/issues/1598 [6]: https://github.com/box/box-java-sdk/commit/87d1182ec362bfbf800edda79360a2446ba7eaab ## Box Java SDK `v10.3.0` released ### New Features and Enhancements * Remove `confidence_score` and `include_confidence_score` from AI extract (box/box-openapi[#567][1]) ([#1615][2]) ([`0a069cd`][3]) * Support new sign request metadata (box/box-openapi[#565][4]) ([#1599][5]) ([`b3c46bb`][6]) [1]: https://github.com/box/box-java-sdk/issues/567 [2]: https://github.com/box/box-java-sdk/issues/1615 [3]: https://github.com/box/box-java-sdk/commit/0a069cdecc4837d8bdb6f1e91401d88c58af5a92 [4]: https://github.com/box/box-java-sdk/issues/565 [5]: https://github.com/box/box-java-sdk/issues/1599 [6]: https://github.com/box/box-java-sdk/commit/b3c46bbf2f2f7b9b25befcd6442a4e5c9a92e790 ## Box iOS SDK `6.2.0` released ### Bug Fixes * **boxsdkgen:** Remove duplicate optional wrapping (box/box-codegen[#898][1]) ([#1302][2]) ([`4fae34a`][3]) ### New Features and Enhancements * **boxsdkgen:** Remove `confidence_score` and `include_confidence_score` from AI extract (box/box-openapi[#567][4]) ([#1304][5]) ([`143ef03`][6]) * **boxsdkgen:** Support new sign request metadata (box/box-openapi[#565][7]) ([#1286][8]) ([`e6c0826`][9]) [1]: https://github.com/box/box-ios-sdk/issues/898 [2]: https://github.com/box/box-ios-sdk/issues/1302 [3]: https://github.com/box/box-ios-sdk/commit/4fae34add0569ac907d2f50e1ab2a7da7a223f6b [4]: https://github.com/box/box-ios-sdk/issues/567 [5]: https://github.com/box/box-ios-sdk/issues/1304 [6]: https://github.com/box/box-ios-sdk/commit/143ef03119c6ac6f7f4bff198ce8578a78abd353 [7]: https://github.com/box/box-ios-sdk/issues/565 [8]: https://github.com/box/box-ios-sdk/issues/1286 [9]: https://github.com/box/box-ios-sdk/commit/e6c082659f65bfcc8eb17de1552d23d07eeb7d56 ## Box iOS SDK `10.2.0` released ### Bug Fixes * Remove duplicate optional wrapping (box/box-codegen[#898][1]) ([#1301][2]) ([`0fff45e`][3]) ### New Features and Enhancements * Remove `confidence_score` and `include_confidence_score` from AI extract (box/box-openapi[#567][4]) ([#1305][5]) ([`702de7b`][6]) * Support new sign request metadata (box/box-openapi[#565][7]) ([#1285][8]) ([`d541f12`][9]) [1]: https://github.com/box/box-ios-sdk/issues/898 [2]: https://github.com/box/box-ios-sdk/issues/1301 [3]: https://github.com/box/box-ios-sdk/commit/0fff45ed3139ffebaafc9af4113bbb61d7fd3945 [4]: https://github.com/box/box-ios-sdk/issues/567 [5]: https://github.com/box/box-ios-sdk/issues/1305 [6]: https://github.com/box/box-ios-sdk/commit/702de7b8bba3e423b749b9cf11a5bbb77fc1ad41 [7]: https://github.com/box/box-ios-sdk/issues/565 [8]: https://github.com/box/box-ios-sdk/issues/1285 [9]: https://github.com/box/box-ios-sdk/commit/d541f128badac0929d586fe2de2f8e2a2c5a786b ## Box UI Elements `v25.4.0` released ### [25.4.0][1] (2025-12-09) ### Bug Fixes * bump node-forge version ([#4386][2]) ([`5f46b8b`][3]) * **i18n:** update translations ([#4369][4]) ([`abc11ee`][5]) * **i18n:** update translations ([#4372][6]) ([`8dd5f9f`][7]) * **i18n:** update translations ([#4374][8]) ([`7f37b4b`][9]) * **i18n:** update translations ([#4375][10]) ([`df948b4`][11]) * **i18n:** update translations ([#4377][12]) ([`7e61a9c`][13]) * improve accessibility in sidebar content and tags components ([#4363][14]) ([`35080aa`][15]) * **metadata-editor:** Preserve field order when fetching taxonomy levels for fields ([#4378][16]) ([`fbd155e`][17]) * **video-annotations:** Add version links for video annotations ([#4379][18]) ([`8bf7c63`][19]) ### Features * **deps:** No-op to trigger release for blueprint-web upgrades ([#4368][20]) ([`58b9697`][21]) * **form-elements:** Remove Form legacy context ([#4383][22]) ([`62c77b4`][23]) * **hotkeys:** Remove legacy context from Hotkeys ([#4382][24]) ([`5db66df`][25]) * **presence-avatar-list:** add BP tooltip to `presenceAvatarList` (`WEBAPP-41740`) ([#4384][26]) ([`5653500`][27]) * **preview-modernization:** BP `AddTaskButton` ([#4366][28]) ([`f76ed73`][29]) * **preview-modernization:** Update Sidebar Nav icons and tooltips ([#4373][30]) ([`60eda40`][31]) * **preview-modernization:** Update Sidebar Nav overflow separator ([#4370][32]) ([`671a067`][33]) * **preview-optimizations:** modernize Versions sidebar ([#4381][34]) ([`2b136e4`][35]) * **`SecurityControls`:** Add Shared Link Auto-Expiration restriction ([#4365][36]) ([`40ff462`][37]) [1]: https://github.com/box/box-ui-elements/compare/v25.3.0...v25.4.0 [2]: https://github.com/box/box-ui-elements/issues/4386 [3]: https://github.com/box/box-ui-elements/commit/5f46b8bb57c879f1fb5ca0a0dfc00138b90e8273 [4]: https://github.com/box/box-ui-elements/issues/4369 [5]: https://github.com/box/box-ui-elements/commit/abc11eeb509583c80e3d76d8fb6341eeb3cbcf24 [6]: https://github.com/box/box-ui-elements/issues/4372 [7]: https://github.com/box/box-ui-elements/commit/8dd5f9feab11b5214a9f1038717916f80d89f697 [8]: https://github.com/box/box-ui-elements/issues/4374 [9]: https://github.com/box/box-ui-elements/commit/7f37b4bdf0059f40eea2182f85a5579b06884740 [10]: https://github.com/box/box-ui-elements/issues/4375 [11]: https://github.com/box/box-ui-elements/commit/df948b4042fa706b944e2a1c2532c8e2827f8f24 [12]: https://github.com/box/box-ui-elements/issues/4377 [13]: https://github.com/box/box-ui-elements/commit/7e61a9c45b2da90af47723b14b7d5f04cce6322f [14]: https://github.com/box/box-ui-elements/issues/4363 [15]: https://github.com/box/box-ui-elements/commit/35080aababcf3457f9d9d898709b9ef8a4acf743 [16]: https://github.com/box/box-ui-elements/issues/4378 [17]: https://github.com/box/box-ui-elements/commit/fbd155e170cf5f5ea3e77d78e9614a3055cb7fe0 [18]: https://github.com/box/box-ui-elements/issues/4379 [19]: https://github.com/box/box-ui-elements/commit/8bf7c631acbebf37674d556c5c1480c7fa626ce4 [20]: https://github.com/box/box-ui-elements/issues/4368 [21]: https://github.com/box/box-ui-elements/commit/58b9697331a5d913a83acd1d78ed71ebab8d2835 [22]: https://github.com/box/box-ui-elements/issues/4383 [23]: https://github.com/box/box-ui-elements/commit/62c77b4ce9f1995e1194319343fd39fb6371bf80 [24]: https://github.com/box/box-ui-elements/issues/4382 [25]: https://github.com/box/box-ui-elements/commit/5db66df5d4335531ce829e51a1e83e4ab3abb35a [26]: https://github.com/box/box-ui-elements/issues/4384 [27]: https://github.com/box/box-ui-elements/commit/565350009c5f8b94c4ad01bad5232931997cc0c0 [28]: https://github.com/box/box-ui-elements/issues/4366 [29]: https://github.com/box/box-ui-elements/commit/f76ed73eb99176c80393a42d4d80ba75025e6f1f [30]: https://github.com/box/box-ui-elements/issues/4373 [31]: https://github.com/box/box-ui-elements/commit/60eda4000ba9884c70696d829f42c1b3fd6f7423 [32]: https://github.com/box/box-ui-elements/issues/4370 [33]: https://github.com/box/box-ui-elements/commit/671a0676fbfa9a86c07a381691c9938880934aee [34]: https://github.com/box/box-ui-elements/issues/4381 [35]: https://github.com/box/box-ui-elements/commit/2b136e46398ddaeb8b773e8a23323a986220dfd7 [36]: https://github.com/box/box-ui-elements/issues/4365 [37]: https://github.com/box/box-ui-elements/commit/40ff462fb4630911d7ab7e2f0d36d415ead010af ## Box Windows SDK `v6.2.0` released ### **New Features and Enhancements:** * **boxsdkgen:** Support long polling event for dotnet (box/box-codegen[#893][1]) ([#1297][2]) ([`d064e76`][3]) * **boxsdkgen:** Support new sign request metadata (box/box-openapi[#565][4]) ([#1293][5]) ([`3efe490`][6]) ### **Bug Fixes:** * **boxsdkgen:** fix string extension in dotnet (box/box-codegen[#899][7]) ([#1306][8]) ([`b97f971`][9]) [1]: https://github.com/box/box-windows-sdk-v2/issues/893 [2]: https://github.com/box/box-windows-sdk-v2/issues/1297 [3]: https://github.com/box/box-windows-sdk-v2/commit/d064e76e5d047a4f28cad5c4aa597365e46aba26 [4]: https://github.com/box/box-windows-sdk-v2/issues/565 [5]: https://github.com/box/box-windows-sdk-v2/issues/1293 [6]: https://github.com/box/box-windows-sdk-v2/commit/3efe4903bfe94984db2b29f8ec80eb7c32cb1038 [7]: https://github.com/box/box-windows-sdk-v2/issues/899 [8]: https://github.com/box/box-windows-sdk-v2/issues/1306 [9]: https://github.com/box/box-windows-sdk-v2/commit/b97f971dc50ffcabc3376c73ca83290ff70f0899 ## Box Windows SDK `v10.3.0` released ### Bug Fixes * fix string extension in dotnet (box/box-codegen[#899][1]) ([#1307][2]) ([`8c46af4`][3]) ### New Features and Enhancements * Support long polling event for dotnet (box/box-codegen[#893][4]) ([#1298][5]) ([`e35cd67`][6]) * Support new sign request metadata (box/box-openapi[#565][7]) ([#1294][8]) ([`da19f7c`][9]) [1]: https://github.com/box/box-windows-sdk-v2/issues/899 [2]: https://github.com/box/box-windows-sdk-v2/issues/1307 [3]: https://github.com/box/box-windows-sdk-v2/commit/8c46af45398c2002b5de8475672923bac524e4d1 [4]: https://github.com/box/box-windows-sdk-v2/issues/893 [5]: https://github.com/box/box-windows-sdk-v2/issues/1298 [6]: https://github.com/box/box-windows-sdk-v2/commit/e35cd67fe29d9af969ac88dee30896303d4fdc79 [7]: https://github.com/box/box-windows-sdk-v2/issues/565 [8]: https://github.com/box/box-windows-sdk-v2/issues/1294 [9]: https://github.com/box/box-windows-sdk-v2/commit/da19f7cdd4df6537acec50463330944e9d6d4632 ## Ransomware Activity detection rule The Ransomware Activity detection rule, available in Box Shield Pro, monitors user activity and leverages Box machine learning to identify suspicious file extensions that may indicate a ransomware attack. ### Fighting ransomware With the Ransomware Activity detection rule, you can better protect yourself by: * [Creating and editing the detection rule][1] * [Viewing alerts][2] * [Taking action to remediate threats][3] To learn more about using the Ransomware Activity detection rule, visit our [support documentation][4]. [1]: https://support.box.com/hc/en-us/articles/46976660378643-Create-Edit-and-Delete-a-Threat-Detection-Rule [2]: https://support.box.com/hc/en-us/articles/44263782754323-Ransomware-Activity-Detection-Rule#h_01KBCKYECWTA6RCBSZYMD2CNTX [3]: https://support.box.com/hc/en-us/articles/44263782754323-Ransomware-Activity-Detection-Rule#h_01KBCKYPP2R903PZMB1VBA5XEM [4]: https://support.box.com/hc/en-us/articles/44263782754323-Ransomware-Activity-Detection-Rule ## Box AI API — new AI models available and default models update The list of [available AI models][supported-models] has been recently updated with the following models: * [OpenAI GPT-5.1][gpt-5-1] * [OpenAI GPT-5 mini][gpt-5-mini] * [Gemini 3 Pro][gemini-3-pro] * [Llama 4 Maverick][llama-4-maverick] Additionally, default AI models have been updated for Box AI features: * [Gemini 2.5 Pro][gemini-2-5-pro] is now the default model for Box AI Enhanced Extract. * [Gemini 2.5 Flash][gemini-2-5-flash] is now the default model for Box AI Standard Extract. * [OpenAI GPT-5][gpt-5] is now the default model for Box AI Advanced Agent for Hubs, Documents, and Notes Q\&A. * [OpenAI GPT-5 mini][gpt-5-mini] is now the default model for Box AI for Hubs, Documents, and Notes Q\&A. **Note:** Models offered in **Preview** mode have not been fully performance-tested at scale and are provided on an as-is basis. You may experience variability in model/output quality, availability, and accuracy. You can use the provided models to [override the default model][override] used in the AI agent configuration. For further details on Box AI API, see the [guides][ai-guides] and [API reference][api]. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][forum] for any help needed. [supported-models]: https://developer.box.com/guides/box-ai/supported-models/ [override]: https://developer.box.com/guides/box-ai/ai-agents/ai-agent-overrides/ [ai-guides]: https://developer.box.com/guides/box-ai [api]: https://developer.box.com/reference/post-ai-ask/ [forum]: https://forum.box.com/ [gpt-5]: https://developer.box.com/guides/box-ai/ai-models/openai-gpt-5-model-card/ [gpt-5-1]: https://developer.box.com/guides/box-ai/ai-models/openai-gpt-5-1-model-card/ [gpt-5-mini]: https://developer.box.com/guides/box-ai/ai-models/openai-gpt-5-mini-model-card/ [gemini-3-pro]: https://developer.box.com/guides/box-ai/ai-models/google-gemini-3-pro-model-card/ [llama-4-maverick]: https://developer.box.com/guides/box-ai/ai-models/ibm-llama-4-maverick-model-card/ [gemini-2-5-pro]: https://developer.box.com/guides/box-ai/ai-models/google-gemini-2-5-pro-model-card/ [gemini-2-5-flash]: https://developer.box.com/guides/box-ai/ai-models/google-gemini-2-5-flash-model-card/ ## Box iOS SDK 6.1.0 released ### New Features and Enhancements * **boxsdkgen:** Support GET enterprise configuration API (box/box-openapi[#559][1]) ([#1190][2]) ([`c91bb4f`][3]) * **boxsdkgen:** Support Archive API (box/box-openapi[#563][4]) ([#1237][5]) ([`07aaf3a`][6]) [1]: https://github.com/box/box-ios-sdk/issues/559 [2]: https://github.com/box/box-ios-sdk/issues/1190 [3]: https://github.com/box/box-ios-sdk/commit/c91bb4fa1b5907698fd6d0fd38560501c4d0274b [4]: https://github.com/box/box-ios-sdk/issues/563 [5]: https://github.com/box/box-ios-sdk/issues/1237 [6]: https://github.com/box/box-ios-sdk/commit/07aaf3adde1ec46ed6f2423093b451b975005368 ## Box iOS SDK 10.1.0 released ### New Features and Enhancements * Support GET enterprise configuration API (box/box-openapi[#559][1]) ([#1179][2]) ([`936edf7`][3]) * Support Archive API (box/box-openapi[#563][4]) ([#1238][5]) ([`a2662e3`][6]) [1]: https://github.com/box/box-ios-sdk/issues/559 [2]: https://github.com/box/box-ios-sdk/issues/1179 [3]: https://github.com/box/box-ios-sdk/commit/936edf7532765dfe3c0ccb7175966ee4ec265cf3 [4]: https://github.com/box/box-ios-sdk/issues/563 [5]: https://github.com/box/box-ios-sdk/issues/1238 [6]: https://github.com/box/box-ios-sdk/commit/a2662e3bd088956769ed95d588e71623d0537c40 ## Box CLI v4.5.0 released ### New Features and Enhancements * support auto update using Github releases ([#603][1]) ([`2460e1b`][2]) ### Bug Fixes * update dependencies to fix `tmp` vulnerability ([#600][3]) ([`7e270eb`][4]) [1]: https://github.com/box/boxcli/issues/603 [2]: https://github.com/box/boxcli/commit/2460e1b51002e94c3a16356099c4511faa96b87c [3]: https://github.com/box/boxcli/issues/600 [4]: https://github.com/box/boxcli/commit/7e270eb8daf254a64eb3ce373444e9ad96e5e5be ## Box Windows SDK v6.1.0 released ### New Features and Enhancements * **boxsdkgen:** Support Archive API (box/box-codegen[#865][1]) ([#1270][2]) ([`307a5d4`][3]) * **boxsdkgen:** Support GET enterprise configuration API (box/box-openapi[#559][4]) ([#1212][5]) ([`0d97d4d`][6]) * **boxsdkgen:** Use generated `RetryStrategy` for retrying requests (box/box-codegen[#872][7]) ([#1227][8]) ([`5b42a3e`][9]) [1]: https://github.com/box/box-windows-sdk-v2/issues/865 [2]: https://github.com/box/box-windows-sdk-v2/issues/1270 [3]: https://github.com/box/box-windows-sdk-v2/commit/307a5d43f8ba2b93ce35b3607026b4232cc92042 [4]: https://github.com/box/box-windows-sdk-v2/issues/559 [5]: https://github.com/box/box-windows-sdk-v2/issues/1212 [6]: https://github.com/box/box-windows-sdk-v2/commit/0d97d4d858c4bba8b3df0d01234691294a7c8998 [7]: https://github.com/box/box-windows-sdk-v2/issues/872 [8]: https://github.com/box/box-windows-sdk-v2/issues/1227 [9]: https://github.com/box/box-windows-sdk-v2/commit/5b42a3e666751f1a1e529b875eafa8e7b0fbe930 ## Box Windows SDK v10.2.0 released ### New Features and Enhancements * Support Archive API (box/box-codegen[#865][1]) ([#1266][2]) ([`bca0473`][3]) * Support GET enterprise configuration API (box/box-openapi[#559][4]) ([#1198][5]) ([`426aaed`][6]) * Include `pdb` files when packing .net root project (box/box-codegen[#859][7]) ([#1169][8]) ([`8b7e7c8`][9]) * Use generated `RetryStrategy` for retrying requests (box/box-codegen[#872][10]) ([#1232][11]) ([`5567fef`][12]) [1]: https://github.com/box/box-windows-sdk-v2/issues/865 [2]: https://github.com/box/box-windows-sdk-v2/issues/1266 [3]: https://github.com/box/box-windows-sdk-v2/commit/bca0473d9ff02f286f3face267a30c2ab17d5b7b [4]: https://github.com/box/box-windows-sdk-v2/issues/559 [5]: https://github.com/box/box-windows-sdk-v2/issues/1198 [6]: https://github.com/box/box-windows-sdk-v2/commit/426aaed8418baf6cbd31dbe884aa91ce9bb7ef52 [7]: https://github.com/box/box-windows-sdk-v2/issues/859 [8]: https://github.com/box/box-windows-sdk-v2/issues/1169 [9]: https://github.com/box/box-windows-sdk-v2/commit/8b7e7c89f9f533ee09a8c096afd141abbbc72080 [10]: https://github.com/box/box-windows-sdk-v2/issues/872 [11]: https://github.com/box/box-windows-sdk-v2/issues/1232 [12]: https://github.com/box/box-windows-sdk-v2/commit/5567feff459b91e7b018bda5def60ad45548599f ## Box Python SDK v10.1.0 released ### New Features and Enhancements * Support GET enterprise configuration API (box/box-openapi[#559][1]) ([#1134][2]) ([`1106d32`][3]) * Support Archive API (box/box-openapi[#563][4]) ([#1174][5]) ([`d21ec4d`][6]) [1]: https://github.com/box/box-python-sdk/issues/559 [2]: https://github.com/box/box-python-sdk/issues/1134 [3]: https://github.com/box/box-python-sdk/commit/1106d325973df9704f5102538ac0130bda6e9c38 [4]: https://github.com/box/box-python-sdk/issues/563 [5]: https://github.com/box/box-python-sdk/issues/1174 [6]: https://github.com/box/box-python-sdk/commit/d21ec4df82ab43539ff07d306cf304f86bbb0593 ## Box Node SDK v4.1.1 released ### Bug Fixes * **boxsdkgen:** Fix error propagation and empty fetch response handling in node SDK (box/box-codegen[#883][1]) ([#1196][2]) ([`9615a34`][3]) [1]: https://github.com/box/box-node-sdk/issues/883 [2]: https://github.com/box/box-node-sdk/issues/1196 [3]: https://github.com/box/box-node-sdk/commit/9615a3480686eb8af9374691a2ec1de82688eaa1 ## Box Node SDK v10.1.0 released ### Bug Fixes * Fix error handling in TS (box/box-codegen[#882][1]) ([#1180][2]) ([`2b68145`][3]) * Fix error propagation and empty fetch response handling in node SDK (box/box-codegen[#883][4]) ([#1192][5]) ([`5664231`][6]) * Remove enum types from GET enterprise configurations endpoint (box/box-openapi[#560][7]) ([#1155][8]) ([`3ba01aa`][9]), closes [`box/box-openapi#558`][10] [`box/box-openapi#558`][10] [`box/box-openapi#559`][11] [`box/box-codegen#869`][12] [`box/box-codegen#871`][13] [`box/box-codegen#872`][14] ### New Features and Enhancements * Add GET enterprise configuration endpoint (box/box-openapi[#559][15]) ([#1143][16]) ([`5eeeb4f`][17]) * support delete Archive endpoint (box/box-openapi[#563][18]) ([#1173][19]) ([`7dc774d`][20]) [1]: https://github.com/box/box-node-sdk/issues/882 [2]: https://github.com/box/box-node-sdk/issues/1180 [3]: https://github.com/box/box-node-sdk/commit/2b68145d9d8e46e26d08b8bc774ba757ef3b444f [4]: https://github.com/box/box-node-sdk/issues/883 [5]: https://github.com/box/box-node-sdk/issues/1192 [6]: https://github.com/box/box-node-sdk/commit/56642319c5b77ab0113ed4e1af5df30100449fcd [7]: https://github.com/box/box-node-sdk/issues/560 [8]: https://github.com/box/box-node-sdk/issues/1155 [9]: https://github.com/box/box-node-sdk/commit/3ba01aaac7861ce3f0578af65d838f61b78b7dcb [10]: https://github.com/box/box-openapi/issues/558 [11]: https://github.com/box/box-openapi/issues/559 [12]: https://github.com/box/box-codegen/issues/869 [13]: https://github.com/box/box-codegen/issues/871 [14]: https://github.com/box/box-codegen/issues/872 [15]: https://github.com/box/box-node-sdk/issues/559 [16]: https://github.com/box/box-node-sdk/issues/1143 [17]: https://github.com/box/box-node-sdk/commit/5eeeb4fe7d0fff376cb31b820597e63d71dd0b69 [18]: https://github.com/box/box-node-sdk/issues/563 [19]: https://github.com/box/box-node-sdk/issues/1173 [20]: https://github.com/box/box-node-sdk/commit/7dc774d8764a3a0b3f60525e416ed5345d4a71b1 ## Box UI Elements v25.3.0 released ### [25.3.0][1] (2025-11-07) ### Features * **deps:** Upgrade blueprint-web to 12.93.5 ([#4362][2]) ([`84aaf2f`][3]) * **metadata:** enable multilevel taxonomy field filter in preview ([#4354][4]) ([`4851c37`][5]) [1]: https://github.com/box/box-ui-elements/compare/v25.2.0...v25.3.0 [2]: https://github.com/box/box-ui-elements/issues/4362 [3]: https://github.com/box/box-ui-elements/commit/84aaf2ffc0234b5728188df6944a48679eca4976 [4]: https://github.com/box/box-ui-elements/issues/4354 [5]: https://github.com/box/box-ui-elements/commit/4851c3776fbbef1220029234d01bc0ab6354b17c ## Box UI Elements v25.2.0 released ### [25.2.0][1] (2025-11-04) ### Bug Fixes * **classification:** Fix flaky ai-icon check ([#4323][2]) ([`0061f34`][3]) * **content-picker:** folder nav ([#4329][4]) ([`8053fa7`][5]) * **content-picker:** Upgrade blueprint to fix scrolling issue ([#4349][6]) ([`d0ce8a6`][7]) * **content-sharing:** Collaborator current user ([#4328][8]) ([`2e9dd6a`][9]) * **content-sharing:** null sharingServiceProps ([#4352][10]) ([`4ea0f83`][11]) * **content-sharing:** Shared link modal and collaborators ([#4360][12]) ([`76e94f1`][13]) * Fix modernization hook for ContentSharing v2 ([#4339][14]) ([`e0a67e0`][15]) * **i18n:** update translations ([#4321][16]) ([`4d89663`][17]) * **i18n:** update translations ([#4325][18]) ([`3e8eeea`][19]) * **i18n:** update translations ([#4330][20]) ([`bd0dd5f`][21]) * **i18n:** update translations ([#4333][22]) ([`b2a4e01`][23]) * **i18n:** update translations ([#4343][24]) ([`847557b`][25]) * **i18n:** update translations ([#4348][26]) ([`d4eae4b`][27]) * **i18n:** update translations ([#4353][28]) ([`e3f4cf9`][29]) * **i18n:** update translations ([#4355][30]) ([`094e633`][31]) * **i18n:** update translations ([#4357][32]) ([`a817d9c`][33]) * **i18n:** update translations ([#4358][34]) ([`33a5861`][35]) * **storybook:** update brand url ([#4337][36]) ([`c73965b`][37]) * **video-annotations:** fixing mentions not being properly parsed ([#4351][38]) ([`6bb2b15`][39]) ### Features * **api:** respect hidden collaborators ([#4346][40]) ([`955e6cb`][41]) * **content-explorer:** Disable selection while editing ([#4317][42]) ([`c08d9b5`][43]) * **content-sharing:** convert api response for collabs ([#4322][44]) ([`6937b60`][45]) * **content-sharing:** Create contact service getContactByEmail ([#4342][46]) ([`05b50cd`][47]) * **content-sharing:** Create contact service getContacts ([#4338][48]) ([`8ae6ccc`][49]) * **content-sharing:** Create contact service getContactsAvatarUrls ([#4345][50]) ([`6f9260b`][51]) * **content-sharing:** Create sharing service changeSharedLinkPermission ([#4332][52]) ([`e64a61b`][53]) * **content-sharing:** Create sharing service sendInvitations ([#4344][54]) ([`d497350`][55]) * **content-sharing:** Define sharing service for shared link and access ([#4340][56]) ([`2f7185d`][57]) * **content-sharing:** Handle error when fetch init data failed ([#4350][58]) ([`f0c9efd`][59]) * **content-sharing:** Render notification for sendInvitations ([#4347][60]) ([`051bd7c`][61]) * **content-sharing:** Sharing service updateSharedLink ([#4336][62]) ([`b39a482`][63]) * **deps:** upgrade package dependencies ([#4359][64]) ([`2f025e3`][65]) ### Reverts * "feat(content-sidebar): implement for custom sidebar panels (#… ([#4320][66]) ([`230f417`][67]), closes [#4239][68] [1]: https://github.com/box/box-ui-elements/compare/v25.1.0...v25.2.0 [2]: https://github.com/box/box-ui-elements/issues/4323 [3]: https://github.com/box/box-ui-elements/commit/0061f34e9e7f4613f5b15f83eeccde3b518940cb [4]: https://github.com/box/box-ui-elements/issues/4329 [5]: https://github.com/box/box-ui-elements/commit/8053fa70127203f5d70818228b70272d869965ff [6]: https://github.com/box/box-ui-elements/issues/4349 [7]: https://github.com/box/box-ui-elements/commit/d0ce8a60056cc2272c96828219897189449fb6ad [8]: https://github.com/box/box-ui-elements/issues/4328 [9]: https://github.com/box/box-ui-elements/commit/2e9dd6ab3ce63b974241566f3d1c24e401005e96 [10]: https://github.com/box/box-ui-elements/issues/4352 [11]: https://github.com/box/box-ui-elements/commit/4ea0f8376ff34a650b4ad16af91a39e1becbe4d7 [12]: https://github.com/box/box-ui-elements/issues/4360 [13]: https://github.com/box/box-ui-elements/commit/76e94f12fcc6a57809165bebb145fa57560afe56 [14]: https://github.com/box/box-ui-elements/issues/4339 [15]: https://github.com/box/box-ui-elements/commit/e0a67e0618fdbfa6f13cdb58fdba6a6c18a89c47 [16]: https://github.com/box/box-ui-elements/issues/4321 [17]: https://github.com/box/box-ui-elements/commit/4d89663b5481463353cb39f0828304ca1744a07c [18]: https://github.com/box/box-ui-elements/issues/4325 [19]: https://github.com/box/box-ui-elements/commit/3e8eeea3d203d316b9e3f099f6de06759a56810b [20]: https://github.com/box/box-ui-elements/issues/4330 [21]: https://github.com/box/box-ui-elements/commit/bd0dd5fa8778e77eb53785fb91b4ab0bdfcb2adf [22]: https://github.com/box/box-ui-elements/issues/4333 [23]: https://github.com/box/box-ui-elements/commit/b2a4e01003f4b66faea00633e2bc2b3f4c7e13f7 [24]: https://github.com/box/box-ui-elements/issues/4343 [25]: https://github.com/box/box-ui-elements/commit/847557b53bf89ad591e4cb2116d3b0f267b8e757 [26]: https://github.com/box/box-ui-elements/issues/4348 [27]: https://github.com/box/box-ui-elements/commit/d4eae4bed33a7ae4e01565eb7809b2f579bd6066 [28]: https://github.com/box/box-ui-elements/issues/4353 [29]: https://github.com/box/box-ui-elements/commit/e3f4cf90382c2ef531df909c4d7202dfab1126d8 [30]: https://github.com/box/box-ui-elements/issues/4355 [31]: https://github.com/box/box-ui-elements/commit/094e633f76df79bb14d0f193f1a126d93e371324 [32]: https://github.com/box/box-ui-elements/issues/4357 [33]: https://github.com/box/box-ui-elements/commit/a817d9c616f9100f9f6fbe21dadb1cd578a45f39 [34]: https://github.com/box/box-ui-elements/issues/4358 [35]: https://github.com/box/box-ui-elements/commit/33a5861d34e914e037e3a35597b28956f69db6ab [36]: https://github.com/box/box-ui-elements/issues/4337 [37]: https://github.com/box/box-ui-elements/commit/c73965b87c172bbe59adc456fe64a9d92dd7316d [38]: https://github.com/box/box-ui-elements/issues/4351 [39]: https://github.com/box/box-ui-elements/commit/6bb2b15c5e0886861c73c1478a05fd30b3bf1832 [40]: https://github.com/box/box-ui-elements/issues/4346 [41]: https://github.com/box/box-ui-elements/commit/955e6cb06cd2d903c7c85e47f005f83c2818c890 [42]: https://github.com/box/box-ui-elements/issues/4317 [43]: https://github.com/box/box-ui-elements/commit/c08d9b5fdd8b20d95f747198c5bbac8204e97bf2 [44]: https://github.com/box/box-ui-elements/issues/4322 [45]: https://github.com/box/box-ui-elements/commit/6937b60ba181e2300eab98934a930d1456ce50e0 [46]: https://github.com/box/box-ui-elements/issues/4342 [47]: https://github.com/box/box-ui-elements/commit/05b50cdd62e7e7d4a59073cf152305fa7ff969fb [48]: https://github.com/box/box-ui-elements/issues/4338 [49]: https://github.com/box/box-ui-elements/commit/8ae6cccf0c11b1ebc750934c5d23c42a99dae41d [50]: https://github.com/box/box-ui-elements/issues/4345 [51]: https://github.com/box/box-ui-elements/commit/6f9260b8256aee8c710f24e3e10d5711c5abc19a [52]: https://github.com/box/box-ui-elements/issues/4332 [53]: https://github.com/box/box-ui-elements/commit/e64a61bcb92f2de6b75e218ae99a55dde82835c4 [54]: https://github.com/box/box-ui-elements/issues/4344 [55]: https://github.com/box/box-ui-elements/commit/d49735065dd73c4a6e3a85ffa99f3b24537c4b48 [56]: https://github.com/box/box-ui-elements/issues/4340 [57]: https://github.com/box/box-ui-elements/commit/2f7185de2d10fe62dba8e8a4f2bc8235009e0b5e [58]: https://github.com/box/box-ui-elements/issues/4350 [59]: https://github.com/box/box-ui-elements/commit/f0c9efd404abfe29b69bb28e7d3caeba367a9b92 [60]: https://github.com/box/box-ui-elements/issues/4347 [61]: https://github.com/box/box-ui-elements/commit/051bd7c5cccdaebd1d7bcda55de014c6db75f75f [62]: https://github.com/box/box-ui-elements/issues/4336 [63]: https://github.com/box/box-ui-elements/commit/b39a4824486062c34378ce9a8fbbe34cd6042d3c [64]: https://github.com/box/box-ui-elements/issues/4359 [65]: https://github.com/box/box-ui-elements/commit/2f025e3765c26bc206440458aaa632dddd36d83b [66]: https://github.com/box/box-ui-elements/issues/4320 [67]: https://github.com/box/box-ui-elements/commit/230f417c9407c4bbe4705ec8f200c53f572a798a [68]: https://github.com/box/box-ui-elements/issues/4239 ## Box AI API — new AI models available and default model update The list of [available AI models][supported-models] has been recently updated with the following models: * [Mistral Medium 3][mistral-medium] * [Mistral Small 3.1][mistral-small] * [Claude Haiku 4.5][claude-haiku] Additionally, [OpenAI GPT 5][gpt-5] is now the default model for Box AI (Box AI for Hubs, Box AI for Documents, and Box AI for Notes Q\&A). **Note:** Models offered in **Preview** mode have not been fully performance-tested at scale and are provided on an as-is basis. You may experience variability in model/output quality, availability, and accuracy. You can use the provided models to [override the default model][override] used in the AI agent configuration. For further details on Box AI API, see the [guides][ai-guides] and [API reference][api]. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][forum] for any help needed. [supported-models]: https://developer.box.com/guides/box-ai/supported-models/ [override]: https://developer.box.com/guides/box-ai/ai-agents/ai-agent-overrides/ [ai-guides]: https://developer.box.com/guides/box-ai [api]: https://developer.box.com/reference/post-ai-ask/ [forum]: https://forum.box.com/ [mistral-medium]: https://developer.box.com/guides/box-ai/ai-models/ibm-mistral-medium-3-model-card/ [mistral-small]: https://developer.box.com/guides/box-ai/ai-models/ibm-mistral-small-3-1-model-card/ [claude-haiku]: https://developer.box.com/guides/box-ai/ai-models/aws-claude-4-5-haiku-model-card/ [gpt-5]: https://developer.box.com/guides/box-ai/ai-models/openai-gpt-5-model-card/ ## Box Windows SDK v6.0.0 released Introducing a new major version of Box Windows SDK V2 `v6` that includes two `namespaces` - the manually maintained `namespace` and the generated `namespace`. The coexisting `namespaces` provide easier access to the latest Box API features and support gradual migration to the standalone generated `namespace`. ### Breaking Changes * With `v6` of Box Windows SDK V2, support for .NET 6 has been dropped. We follow the official [.NET Release Lifecycle][1]. Since November 12, 2024, .NET 6 is no longer officially supported. While it may still be possible to compile and use this SDK under .NET 6, we do not provide support for issues encountered on that version. For more information about migrating to `v6` visit [`v5` to `v6` migration guide][2] ### What's New in `v6` With this SDK version, alongside the existing `Box.V2` `namespace`, we're introducing a new `Box.Sdk.Gen` `namespace`, which gives you access to: * **Full API Support** — Complete coverage of the Box API ecosystem, giving you access to all the latest features and functionalities to build feature-rich applications. * **Rapid API Updates** — Our new auto-generation approach enables Box API additions within days, ensuring you can leverage the most up-to-date features without delay. * **Embedded Documentation** — All objects and parameters are documented directly in the SDK source code, keeping essential information in one place. * **Enhanced Convenience Methods** — New methods for authentication, chunk uploads, automatic retries, retry strategy, and more. ### Important Notes This version allows you to gradually migrate your code base to the `Box.Sdk.Gen` `namespace`. The key differences between the `namespaces` are documented in the [`namespace` migration guide][3]. Ultimately, we recommend to migrate to `v10` which includes only the generated `namespace` `Box.Sdk.Gen`. To migrate from `v6` to `v10` follow this [migration guide][4]. For more information, see the [SDK versioning strategy document][5]. Follow developer changelog for future updates. [1]: https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core [2]: https://github.com/box/box-windows-sdk-v2/blob/combined-sdk/migration-guides/from-v5-to-v6.md [3]: https://github.com/box/box-windows-sdk-v2/blob/combined-sdk/migration-guides/from-box-v2-to-box-sdk-gen-namespace.md [4]: https://github.com/box/box-windows-sdk-v2/blob/combined-sdk/migration-guides/from-v6-to-v10.md [5]: https://developer.box.com/guides/tooling/sdks/sdk-versioning/ ## Box SDKs major version Introducing a new major release of Box SDKs that includes two packages — the manually maintained package and the generated package. The coexisting packages provide easier access to the latest Box API features and support gradual migration to the standalone generated package. ## Overview To facilitate this migration process, there are two actively maintained major Box core SDK versions: * **The latest major version that follows sequential versioning and includes** the manually maintained package and the generated one. This SDK version enables leveraging coexisting packages at the same time, and serves as a transition phase. Support for the consolidated version of each Box core SDK will continue in 2027. * `v10` that includes **only the generated package**, a consistent version number across all Box SDK artifacts. ## Additional information and migration guides For additional information on recommended actions and migration guides, visit [Box SDK versioning strategy page][1]. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][2] or report issues directly in the individual Box SDK repositories on GitHub. [1]: https://developer.box.com/guides/tooling/sdks/sdk-versioning/ [2]: https://forum.box.com/ ## Box Python SDK v4.0.0 released Introducing a new major version of Box Python SDK `v4` that includes two packages — the manually maintained `boxsdk` package and the generated `box_sdk_gen` package. The coexisting packages provide easier access to the latest Box API features and support gradual migration to the standalone generated package. ### Breaking Changes * `v4` of Box Python SDK supports Python versions: 3.8+. Compared to `v3`, Python 3.6 and 3.7 are no longer supported. For more information about migrating to `v4` visit [`v3` to `v4` migration guide][1] ### What's New in `v4` With this SDK version, alongside the existing `boxsdk` package, we’re introducing a new `box_sdk_gen` package, which gives you access to: * **Full API Support** — Complete coverage of the Box API ecosystem, giving you access to all the latest features and functionalities to build feature-rich applications. * **Rapid API Updates** — Our new auto-generation approach enables Box API additions within days, ensuring you can leverage the most up-to-date features without delay. * **Embedded Documentation** — All objects and parameters are documented directly in the SDK source code, keeping essential information in one place. * **Enhanced Convenience Methods** — New methods for authentication, chunk uploads, automatic retries, retry strategy, and more. ### Important Notes This version allows you to gradually migrate your code base to the `box_sdk_gen` package. The key differences between the packages are documented in the [package migration guide][2]. Ultimately, we recommend to migrate to `v10` which includes only the generated `box_sdk_gen` package. To migrate from `v4` to `v10` follow this [migration guide][3]. For more information, see the [SDK versioning strategy document][4]. Follow developer changelog for future updates. [1]: https://github.com/box/box-python-sdk/blob/combined-sdk/migration-guides/from-v3-to-v4.md [2]: https://github.com/box/box-python-sdk/blob/combined-sdk/migration-guides/from-boxsdk-to-box_sdk_gen.md [3]: https://github.com/box/box-python-sdk/blob/combined-sdk/migration-guides/from-v4-to-v10.md [4]: https://developer.box.com/guides/tooling/sdks/sdk-versioning/ ## Box Node SDK v4.0.0 released Introducing a new major version of Box Node SDK `v4` that includes two modules — the manually maintained module and the generated module. The coexisting modules provide easier access to the latest Box API features and support gradual migration to the standalone generated module. ### Breaking Changes * With `v4` of Box Node SDK, support for Node version below 18 has been dropped. While it may still be possible to download and use this SDK under Node below 18, we do not provide support for issues encountered on that version. * We have updated the module export style in the manually maintained `box-node-sdk` module to support the ES module and be more consistent with the generated `sdk-gen` module. Classes in the manual SDK are now exported as default exports from their respective files. When importing with `CommonJS` (`require`), use `.default` to access the class (e.g., `const BoxSDK = require('box-node-sdk').default;`). For more information about migrating to `v4` visit [`v3` to `v4` migration guide][1] ### What's New in `v4` With this SDK version, alongside the existing manually maintained module, we’re introducing a new generated `sdk-gen` module under `box-node-sdk/sdk-gen` import path, which gives you access to: * **Full API Support** — Complete coverage of the Box API ecosystem, giving you access to all the latest features and functionalities to build feature-rich applications. * **Rapid API Updates** — Our new auto-generation approach enables Box API additions within days, ensuring you can leverage the most up-to-date features without delay. * **Embedded Documentation** — All objects and parameters are documented directly in the SDK source code, keeping essential information in one place. * **Enhanced Convenience Methods** — New methods for authentication, chunk uploads, automatic retries, retry strategy, and more. ### Important Notes This version allows you to gradually migrate your code base to the `sdk-gen` module. The key differences between the modules are documented in the [module migration guide][2]. Ultimately, we recommend to migrate to `v10` which includes only the generated `sdk-gen` module. To migrate from `v4` to `v10` follow this [migration guide][3]. For more information, see the [SDK versioning strategy document][4]. Follow developer changelog for future updates. [1]: https://github.com/box/box-node-sdk/blob/combined-sdk/migration-guides/from-v3-to-v4.md [2]: https://github.com/box/box-node-sdk/blob/combined-sdk/migration-guides/from-box-node-sdk-to-sdk-gen.md [3]: https://github.com/box/box-node-sdk/blob/combined-sdk/migration-guides/from-v4-to-v10.md [4]: https://developer.box.com/guides/tooling/sdks/sdk-versioning/ ## Box Java SDK v5.0.0 released Introducing a new major version of Box Java SDK `v5` that includes two packages — the manually maintained `com.box.sdk` package and the generated `com.box.sdkgen` package. The coexisting packages provide easier access to the latest Box API features and support gradual migration to the standalone generated package. There are no breaking changes between `v4` and `v5` of Box Java SDK. For more information about migrating to `v5` visit [`v4` to `v5` migration guide][1] ### What's New in `v5` With this SDK version, alongside the existing `com.box.sdk` package, we’re introducing a new `com.box.sdkgen` package, which gives you access to: * **Full API Support** — Complete coverage of the Box API ecosystem, giving you access to all the latest features and functionalities to build feature-rich applications. * **Rapid API Updates** — Our new auto-generation approach enables Box API additions within days, ensuring you can leverage the most up-to-date features without delay. * **Embedded Documentation** — All objects and parameters are documented directly in the SDK source code, keeping essential information in one place. * **Enhanced Convenience Methods** — New methods for authentication, chunk uploads, automatic retries, retry strategy, and more. ### Important Notes This version allows you to gradually migrate your code base to the `com.box.sdkgen` package. The key differences between the packages are documented in the [package migration guide][2]. Ultimately, we recommend to migrate to `v10` which includes only the generated `com.box.sdkgen` package. To migrate from `v5` to `v10` follow this [migration guide][3]. For more information, see the [SDK versioning strategy document][4]. Follow developer changelog for future updates. [1]: https://github.com/box/box-java-sdk/blob/combined-sdk/migration-guides/from-v4-to-v5.md [2]: https://github.com/box/box-java-sdk/blob/combined-sdk/migration-guides/from-com-box-sdk-to-com-box-sdkgen.md [3]: https://github.com/box/box-java-sdk/blob/combined-sdk/migration-guides/from-v5-to-v10.md [4]: https://developer.box.com/guides/tooling/sdks/sdk-versioning/ ## Box iOS SDK 6.0.0 released Introducing a new major version of Box iOS SDK `v6` that includes two modules — the manually maintained module and the generated module. The coexisting modules provide easier access to the latest Box API features and support gradual migration to the standalone generated module. ### Breaking Changes * With `v6` of Box iOS SDK, support for `iOS 11.0`, `macOS 10.13`, `tvOS 11.0` and `watchOS 4.0` has been dropped. Starting with `v6`, the minimum supported versions are `iOS 13.0`, `macOS 10.15`, `tvOS 13.0`, and `watchOS 6.0`. This update aligns the SDK with current Apple development standards and is required to adopt the new features available in the BoxSdkGen module. For the latest submission and SDK `toolchain` requirements, see Apple’s SDK minimum requirements [Apple Developer][1]. For more information about migrating to `v6` visit [`v5` to `v6` migration guide][2]. ### What's New in `v6` With this SDK version, alongside the existing `BoxSDK` module, we’re introducing a new `BoxSdkGen` module, which gives you access to: * **Full API Support** — Complete coverage of the Box API ecosystem, giving you access to all the latest features and functionalities to build feature-rich applications. * **Rapid API Updates** — Our new auto-generation approach enables Box API additions within days, ensuring you can leverage the most up-to-date features without delay. * **Embedded Documentation** — All objects and parameters are documented directly in the SDK source code, keeping essential information in one place. * **Enhanced Convenience Methods** — New methods for authentication, chunk uploads, automatic retries, retry strategy, and more. ### Important Notes This version allows you to gradually migrate your code base to the `BoxSdkGen` module. The key differences between the modules are documented in the [module migration guide][3]. Ultimately, we recommend to migrate to `v10` which includes only the generated module `BoxSdkGen`. To migrate from `v6` to `v10` follow this [migration guide][4]. For more information, see the [SDK versioning strategy document][5]. Follow developer changelog for future updates. [1]: https://developer.apple.com/news/upcoming-requirements/?id=02212025a [2]: https://github.com/box/box-ios-sdk/blob/combined-sdk/migration-guides/from-v5-to-v6.md [3]: https://github.com/box/box-ios-sdk/blob/combined-sdk/migration-guides/from-BoxSDK-to-BoxSdkGen.md [4]: https://github.com/box/box-ios-sdk/blob/combined-sdk/migration-guides/from-v6-to-v10.md [5]: https://developer.box.com/guides/tooling/sdks/sdk-versioning/ ## Box CLI v4.4.1 released ### Bug Fixes * Fix the `--exempt-from-2fa` flag in `create` and `update` users commands ([#598][1]) ([`8f897fe`][2]) [1]: https://github.com/box/boxcli/issues/598 [2]: https://github.com/box/boxcli/commit/8f897feb677a0089e7854aaf8ef6b2babb70ab16 ## Box CLI v4.4.0 released ### New Features and Enhancements * Support update users notification email ([#596][1]) ([`49356f4`][2]) [1]: https://github.com/box/boxcli/issues/596 [2]: https://github.com/box/boxcli/commit/49356f4ad954caf0c0d60646debc2bc047bddf7a ## Box Windows SDK v10.1.0 released ### Bug Fixes * Allow flexible key-value data in `AiExtractResponse.answer` and `Event.additionalDetails` (box/box-openapi[#556][1]) ([#1147][2]) ([`c41a444`][3]) * Make `role` parameter of update collaboration optional (box/box-openapi[#557][4]) ([#1156][5]) ([`8247918`][6]) ### New Features and Enhancements * Handle Dictionary with object values deserialization (box/box-codegen[#850][7]) ([#1144][8]) ([`611b474`][9]) [1]: https://github.com/box/box-windows-sdk-v2/issues/556 [2]: https://github.com/box/box-windows-sdk-v2/issues/1147 [3]: https://github.com/box/box-windows-sdk-v2/commit/c41a4449a27be4484f986c3260950ae863c1285c [4]: https://github.com/box/box-windows-sdk-v2/issues/557 [5]: https://github.com/box/box-windows-sdk-v2/issues/1156 [6]: https://github.com/box/box-windows-sdk-v2/commit/824791817bd4c65770f2ef65bb7b0eb3b48b892b [7]: https://github.com/box/box-windows-sdk-v2/issues/850 [8]: https://github.com/box/box-windows-sdk-v2/issues/1144 [9]: https://github.com/box/box-windows-sdk-v2/commit/611b47424ff8773b9aabfb772a65f0ebca754e9e ## Box Python SDK v10.0.1 released ### Bug Fixes * Allow flexible key-value data in `AiExtractResponse.answer` and `Event.additionalDetails` (box/box-openapi[#556][1]) ([#1084][2]) ([`f63cffe`][3]) * Make `role` parameter of update collaboration optional (box/box-openapi[#557][4]) ([#1093][5]) ([`5c21907`][6]) [1]: https://github.com/box/box-python-sdk/issues/556 [2]: https://github.com/box/box-python-sdk/issues/1084 [3]: https://github.com/box/box-python-sdk/commit/f63cffec92ccf98af21d6227328aab00fa159187 [4]: https://github.com/box/box-python-sdk/issues/557 [5]: https://github.com/box/box-python-sdk/issues/1093 [6]: https://github.com/box/box-python-sdk/commit/5c21907869d359fdb8fe4c83317a9eca5aeffdc3 ## Box Node SDK v10.0.1 released ### Bug Fixes * Allow flexible key-value data in `AiExtractResponse.answer` and `Event.additionalDetails` (box/box-openapi[#556][1]) ([#1051][2]) ([`70a2275`][3]) * Make `role` parameter of update collaboration optional (box/box-openapi[#557][4]) ([#1068][5]) ([`3992171`][6]) * Relax JSON deserialization guard by removing strict `content-type` check (box/box-codegen[#844][7]) ([#1033][8]) ([`1eb2c32`][9]) [1]: https://github.com/box/box-node-sdk/issues/556 [2]: https://github.com/box/box-node-sdk/issues/1051 [3]: https://github.com/box/box-node-sdk/commit/70a2275ada40f079178166d60c7f5d0a48bd5e40 [4]: https://github.com/box/box-node-sdk/issues/557 [5]: https://github.com/box/box-node-sdk/issues/1068 [6]: https://github.com/box/box-node-sdk/commit/3992171af8587d9f43888ecd2fcbcd70a9f1b2b6 [7]: https://github.com/box/box-node-sdk/issues/844 [8]: https://github.com/box/box-node-sdk/issues/1033 [9]: https://github.com/box/box-node-sdk/commit/1eb2c32a923be1762bf9dfbb2dfdb9e5b3e78af5 ## Box Java SDK v10.1.0 released ### Bug Fixes * Allow flexible key-value data in `AiExtractResponse.answer` and `Event.additionalDetails` (box/box-openapi[#556][1]) ([#1470][2]) ([`e215a5f`][3]) * Make `role` parameter of update collaboration optional (box/box-openapi[#557][4]) ([#1479][5]) ([`6896386`][6]) ### New Features and Enhancements * Add `Javadoc` comments (box/box-codegen[#839][7]) ([#1465][8]) ([`c72407d`][9]) [1]: https://github.com/box/box-java-sdk/issues/556 [2]: https://github.com/box/box-java-sdk/issues/1470 [3]: https://github.com/box/box-java-sdk/commit/e215a5f2502e694421a05d8da550d2b305c09460 [4]: https://github.com/box/box-java-sdk/issues/557 [5]: https://github.com/box/box-java-sdk/issues/1479 [6]: https://github.com/box/box-java-sdk/commit/6896386c6086996399066b09b5afc998a5a95ca4 [7]: https://github.com/box/box-java-sdk/issues/839 [8]: https://github.com/box/box-java-sdk/issues/1465 [9]: https://github.com/box/box-java-sdk/commit/c72407dc77cc67f3a178d607a2b1bd4e90e832a8 ## Box iOS SDK 10.0.1 released ### Bug Fixes * Allow flexible key-value data in `AiExtractResponse.answer` and `Event.additionalDetails` (box/box-openapi[#556][1]) ([#1128][2]) ([`3e9a78c`][3]) * Make `role` parameter of update collaboration optional (box/box-openapi[#557][4]) ([#1138][5]) ([`3fc5dc9`][6]) [1]: https://github.com/box/box-ios-sdk/issues/556 [2]: https://github.com/box/box-ios-sdk/issues/1128 [3]: https://github.com/box/box-ios-sdk/commit/3e9a78ce710b0161e0912d1ee6af0b7758875fbc [4]: https://github.com/box/box-ios-sdk/issues/557 [5]: https://github.com/box/box-ios-sdk/issues/1138 [6]: https://github.com/box/box-ios-sdk/commit/3fc5dc9a62bd0cabc8987d56c0d63b94fa7ef14d ## Box Java SDK v4.16.4 released ### Bug Fixes * Bump Bouncy Castle to fix `CVE-2025-8916` ([#1454][1]) ([`a3605f4`][2]) [1]: https://github.com/box/box-java-sdk/issues/1454 [2]: https://github.com/box/box-java-sdk/commit/a3605f47b4c5ee6b053f0940f9a06cba0a5c2584 ## Salesforce Developer Toolkit updates The developer guides for the [Salesforce Developer Toolkit][7] have been updated to include: * Methods and operations for [Box Sign][1] and [Box Hubs][2] * Code samples for [Box Sign][3] and [Box Hubs][4] * All methods that can be invoked in [Salesforce Flows][5] * Methods in Agentforce Flows for [Box Hubs][6] [1]: https://developer.box.com/guides/tooling/salesforce-toolkit/methods/#box-sign [2]: https://developer.box.com/guides/tooling/salesforce-toolkit/methods/#box-hubs [3]: https://developer.box.com/guides/tooling/salesforce-toolkit/samples/#create-a-sign-request [4]: https://developer.box.com/guides/tooling/salesforce-toolkit/samples/#get-box-hubs [5]: https://developer.box.com/guides/tooling/salesforce-toolkit/flow-actions/#methods-in-salesforce-flows [6]: https://developer.box.com/guides/tooling/salesforce-toolkit/box-agentforce-package/#box-hubs [7]: https://developer.box.com/guides/tooling/salesforce-toolkit/ ## Box UI Elements v25.1.0 released ### [25.1.0][1] (2025-10-01) ### Bug Fixes * **i18n:** update translations ([#4298][2]) ([`86df699`][3]) * **security-cloud-game:** Use nodeRef in DragCloud for React 19 ([#4286][4]) ([`ee8cba8`][5]) ### Features * **content-sharing:** Convert Content Sharing V2 API Response ([#4285][6]) ([`6730ffe`][7]) * **content-sidebar:** handle success event for creating metadata instance ([#4284][8]) ([`371c1a9`][9]) * **content-sidebar:** implement for custom sidebar panels ([#4239][10]) ([`750737c`][11]) * **item-properties:** Add files count for folder in item properties ([#4283][12]) ([`f12340a`][13]) * **video-annotations:** sidebar support for video annotations ([#4318][14]) ([`aa5fc16`][15]) ### Reverts * "chore(mergify): update circleci and mergify configuration ([#4][16]… ([#4296][17]) ([`b915e45`][18]), closes [#4295][19] [1]: https://github.com/box/box-ui-elements/compare/v25.0.0...v25.1.0 [2]: https://github.com/box/box-ui-elements/issues/4298 [3]: https://github.com/box/box-ui-elements/commit/86df69972d8e2ea1c176daf4ba9b2b8484fd8504 [4]: https://github.com/box/box-ui-elements/issues/4286 [5]: https://github.com/box/box-ui-elements/commit/ee8cba848001708bd98ec889523527185a12c1ff [6]: https://github.com/box/box-ui-elements/issues/4285 [7]: https://github.com/box/box-ui-elements/commit/6730ffe42cbdddae325f196875b8765405ca3186 [8]: https://github.com/box/box-ui-elements/issues/4284 [9]: https://github.com/box/box-ui-elements/commit/371c1a9843f31af78b667b3f80dd6319b1c5d6ff [10]: https://github.com/box/box-ui-elements/issues/4239 [11]: https://github.com/box/box-ui-elements/commit/750737cb6c0b3fb10e7794183fde8c63373ee673 [12]: https://github.com/box/box-ui-elements/issues/4283 [13]: https://github.com/box/box-ui-elements/commit/f12340a30286781d5a35ed57dcf59ccca2499c99 [14]: https://github.com/box/box-ui-elements/issues/4318 [15]: https://github.com/box/box-ui-elements/commit/aa5fc1667f8693ba11b072aa35075e1f073a0241 [16]: https://github.com/box/box-ui-elements/issues/4 [17]: https://github.com/box/box-ui-elements/issues/4296 [18]: https://github.com/box/box-ui-elements/commit/b915e45fd8abc702fbdd99eb0bb4b411e00e7ef2 [19]: https://github.com/box/box-ui-elements/issues/4295 ## Box AI API - AWS Claude 4.5 Sonnet now available The list of [available AI models][1] has been recently updated with AWS Claude 4.5 Sonnet. Models offered in **Preview** mode have not been fully performance-tested at scale and are made available on an as-is basis. You may experience variability in model/output quality, availability, and accuracy. You can use the provided models to [override the default model][1] used in the AI agent configuration. For further details on Box AI API, see the [guides][2] and [API reference][3]. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][4] for any help needed. [1]: https://developer.box.com/guides/box-ai/supported-models/ [2]: https://developer.box.com/guides/box-ai [3]: https://developer.box.com/reference/post-ai-ask/ [4]: https://forum.box.com/ ## Box CLI v4.3.1 released ### Bug Fixes * Fix multi item mode in `ai:ask` command ([#593][1]) ([`5081d43`][2]) [1]: https://github.com/box/boxcli/issues/593 [2]: https://github.com/box/boxcli/commit/5081d432d8ded16c8bf759352d28be0214fbe4ec ## Box UI Elements v25.0.0 released ### [25.0.0][1] (2025-09-26) ### Bug Fixes * **classification:** use `AsyncLoad` for `AppliedByAiClassificationReason` ([#4274][2]) ([`b80df38`][3]) * **common:** Remove `findDOMNode` from `makeDroppable` (BREAKING CHANGE) ([#4276][4]) ([`c3bcad3`][5]) * **i18n:** update translations ([#4269][6]) ([`d27c054`][7]) * **i18n:** update translations ([#4272][8]) ([`9f3520b`][9]) * **i18n:** update translations ([#4277][10]) ([`23b27f6`][11]) * **i18n:** update translations ([#4280][12]) ([`7c633b8`][13]) * **i18n:** update translations ([#4289][14]) ([`8453128`][15]) * **metadata-view:** show error state when exception is thrown ([#4270][16]) ([`246f2df`][17]) * **metadataeditor:** portal dropdown to preview container ([#4273][18]) ([`540a957`][19]) ### Features * **classification:** `AppliedByAiClassificationReason` card to support empty reason ([#4279][20]) ([`cb04234`][21]) * **classification:** support AI reasoning and new applied by labels ([#4271][22]) ([`681bace`][23]) * **content-sharing:** Create `ContentSharingV2` component ([#4282][24]) ([`ef49c77`][25]) * **metadata-view:** bump metadata view version ([#4287][26]) ([`f5887d7`][27]) * **metadata-view:** update blueprint web version ([#4288][28]) ([`6d599a3`][29]) * **timestamped-comments:** enable timestamp handling in sidebar ([#4275][30]) ([`7f9defa`][31]), closes [#4226][32] [#4230][33] [#4274][2] * **timestamped-comments:** timestamped comments editor updates ([#4244][34]) ([`6e1bd80`][35]), closes [#4226][32] [#4230][33] ### BREAKING CHANGES * **common:** Wrapped component of `makeDroppable` must have ref prop, for example with `React.forwardRef` * fix: Clean up tests [1]: https://github.com/box/box-ui-elements/compare/v24.0.0...v25.0.0 [2]: https://github.com/box/box-ui-elements/issues/4274 [3]: https://github.com/box/box-ui-elements/commit/b80df3853c94a93fecac1d242bea11fce51cef00 [4]: https://github.com/box/box-ui-elements/issues/4276 [5]: https://github.com/box/box-ui-elements/commit/c3bcad39d81692c1d831e090ff3664c07e0ae987 [6]: https://github.com/box/box-ui-elements/issues/4269 [7]: https://github.com/box/box-ui-elements/commit/d27c054e985386fcce723c8929a33eb5c0f1500f [8]: https://github.com/box/box-ui-elements/issues/4272 [9]: https://github.com/box/box-ui-elements/commit/9f3520b8f63aa7445a83ece2cf0e12610484c506 [10]: https://github.com/box/box-ui-elements/issues/4277 [11]: https://github.com/box/box-ui-elements/commit/23b27f6ef48d4928a7f685ec084174f4b0e7e322 [12]: https://github.com/box/box-ui-elements/issues/4280 [13]: https://github.com/box/box-ui-elements/commit/7c633b85f7c75e0948e7d38db0417f40e7c79f7c [14]: https://github.com/box/box-ui-elements/issues/4289 [15]: https://github.com/box/box-ui-elements/commit/8453128761a7d239f24654d59992ab38ac9ca501 [16]: https://github.com/box/box-ui-elements/issues/4270 [17]: https://github.com/box/box-ui-elements/commit/246f2dfb3d12f1805ffac279eeceb1f9d59daef8 [18]: https://github.com/box/box-ui-elements/issues/4273 [19]: https://github.com/box/box-ui-elements/commit/540a9575b3e16b23a8affb7ec12dad0ad7406735 [20]: https://github.com/box/box-ui-elements/issues/4279 [21]: https://github.com/box/box-ui-elements/commit/cb04234576cfc65c61402035c03d4a026a5eb08b [22]: https://github.com/box/box-ui-elements/issues/4271 [23]: https://github.com/box/box-ui-elements/commit/681bace22e3b2c7cc381c73855c1d1dd6b4f1548 [24]: https://github.com/box/box-ui-elements/issues/4282 [25]: https://github.com/box/box-ui-elements/commit/ef49c773b63fb240c115308c48030f46d46971a5 [26]: https://github.com/box/box-ui-elements/issues/4287 [27]: https://github.com/box/box-ui-elements/commit/f5887d74f689dd79e41ca2979d3a2430fc8b8bda [28]: https://github.com/box/box-ui-elements/issues/4288 [29]: https://github.com/box/box-ui-elements/commit/6d599a3f7a3cc7f8f9f7a724e1d5a7b29522351a [30]: https://github.com/box/box-ui-elements/issues/4275 [31]: https://github.com/box/box-ui-elements/commit/7f9defa1dae1faff823b414b708f164913aa701e [32]: https://github.com/box/box-ui-elements/issues/4226 [33]: https://github.com/box/box-ui-elements/issues/4230 [34]: https://github.com/box/box-ui-elements/issues/4244 [35]: https://github.com/box/box-ui-elements/commit/6e1bd8060212d35529fcb0dcc4b7abd77470941d ## Metadata view v2 in Content Explorer We introduced `v2` of the [metadata view in the Box Content Explorer][1] UI element. It's a ground-up redesign of the original version, introducing a streamlined interface tailored for metadata-driven workflows. ## Key features * filtering and editing interfaces with dedicated UI for each metadata field type, * flexible display options with list and grid views, * pagination support. ## Migration from `v1` to `v2` The `v1` of the metadata view Content Explorer has reached end of support and it will no longer receive bug fixes or new features. We recommend to migrate to the new `v2` metadata view. See the [migration guide][3] for a detailed instruction. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][2] for any help needed. [1]: /guides/embed/ui-elements/explorer-metadata-v2 [2]: https://community.box.com/ [3]: /guides/embed/ui-elements/explorer-metadata-v2/#migrating-from-v1-to-v2 ## Box Windows SDK v10.0.0 released Introducing **`Box SDK v10`**, a major release designed to elevate your developer experience and streamline integration with Box Content Cloud. Currently available as a separate [`sdk-gen`][1] branch, `v10` will ultimately become the main branch. ### Breaking Changes * This SDK version is auto-generated and introduces a new interface for all methods. Extensive documentation is available [here][2]. ### What's New in `v10` * **Full API Support** — Complete coverage of the Box API ecosystem, giving you access to all the latest features and functionalities to build feature-rich applications. * **Rapid API Updates** — Our new auto-generation approach enables Box API additions within days, ensuring you can leverage the most up-to-date features without delay. * **Embedded Documentation** — All objects and parameters are documented directly in the SDK source code, keeping essential information in one place. * **Enhanced Convenience Methods** — New methods for authentication, chunk uploads, automatic retries, retry strategy, and more. ### Important Notes This version includes the Box Next Generation SDK artifact, previously developed in parallel to core Box SDKs. To facilitate migration and provide access to the newest features, we'll soon release an additional major version combining both artifacts. Migration to `v10` includes breaking changes, please review the [migration guide][3] for details. For more information, see the [SDK versioning strategy document][4]. Follow developer changelog for future updates. *** ### What’s New Compared to [Dotnet SDK Gen][5] `v1.12.0` #### ⚠ BREAKING CHANGES * Change names of unions (box/box-openapi[#549][6]) ([#1007][7]) ([`fcef4ec`][8]) * Remove unused models from schemas (box/box-openapi[#547][9]) ([#999][10]) ([`ffcb488`][11]) #### Bug Fixes * Fix `net462` debug build ([#1020][12]) ([`04f8343`][13]) * Rename external user deletion method (box/box-codegen[#796][14]) ([#1024][15]) ([`13928c5`][16]) #### New Features and Enhancements * Add External User Deletion API (box/box-openapi[#550][17]) ([#1009][18]) ([`2178bc8`][19]) * Add missing webhook events (box/box-openapi[#554][20]) ([#1068][21]) ([`7fe3b99`][22]) * Add Net Framework 462 support for `v10` (box/box-codegen[#773][23]) ([#986][24]) ([`67366c7`][25]) * Allow injecting custom decryption mechanism for `jwt` ([#974][26]) ([`b877355`][27]) For more details check [migration guide][28] from `box-dotnet-sdk-gen` `v1` to `box-windows-sdk-v2` `v10`. [1]: https://github.com/box/box-windows-sdk-v2/tree/sdk-gen [2]: https://github.com/box/box-windows-sdk-v2/tree/sdk-gen/docs [3]: https://github.com/box/box-windows-sdk-v2/blob/sdk-gen/migration-guides/from-v5-to-v10.md [4]: https://developer.box.com/guides/tooling/sdks/sdk-versioning/ [5]: https://github.com/box/box-dotnet-sdk-gen [6]: https://github.com/box/box-windows-sdk-v2/issues/549 [7]: https://github.com/box/box-windows-sdk-v2/issues/1007 [8]: https://github.com/box/box-windows-sdk-v2/commit/fcef4ecab38435fb4a79e2db8fcf2c5ad931986b [9]: https://github.com/box/box-windows-sdk-v2/issues/547 [10]: https://github.com/box/box-windows-sdk-v2/issues/999 [11]: https://github.com/box/box-windows-sdk-v2/commit/ffcb4888e6ad52f10028f92c49b5d919cb1ac620 [12]: https://github.com/box/box-windows-sdk-v2/issues/1020 [13]: https://github.com/box/box-windows-sdk-v2/commit/04f8343c200e45ebe65bd29f03f55a44e76bcbde [14]: https://github.com/box/box-windows-sdk-v2/issues/796 [15]: https://github.com/box/box-windows-sdk-v2/issues/1024 [16]: https://github.com/box/box-windows-sdk-v2/commit/13928c559bd3e97d060c48997b05ca384333d03d [17]: https://github.com/box/box-windows-sdk-v2/issues/550 [18]: https://github.com/box/box-windows-sdk-v2/issues/1009 [19]: https://github.com/box/box-windows-sdk-v2/commit/2178bc87c8b724598616e99f0a528c7b21ff12c6 [20]: https://github.com/box/box-windows-sdk-v2/issues/554 [21]: https://github.com/box/box-windows-sdk-v2/issues/1068 [22]: https://github.com/box/box-windows-sdk-v2/commit/7fe3b99cae1cf5be9ad3ec7bec54c97f198fd8c7 [23]: https://github.com/box/box-windows-sdk-v2/issues/773 [24]: https://github.com/box/box-windows-sdk-v2/issues/986 [25]: https://github.com/box/box-windows-sdk-v2/commit/67366c7274faa5c758490d393605c76220aa6a79 [26]: https://github.com/box/box-windows-sdk-v2/issues/974 [27]: https://github.com/box/box-windows-sdk-v2/commit/b877355493b60dc6f9c1a576927d6e0c62ec27f3 [28]: https://github.com/box/box-windows-sdk-v2/blob/sdk-gen/migration-guides/from-dotnet-sdk-gen-v1-to-box-windows-sdk-v10.md ## Box SDKs v10 Introducing Box SDKs `v10`, a major release designed to elevate your developer experience and streamline integration with Box Content Cloud. Currently available as a separate branch for each SDK, `v10` will ultimately become the main branch. What's new in `v10`: * Full API support — Complete coverage of the Box API ecosystem, giving you access to all the latest features and functionalities to build feature-rich applications. * Rapid API updates — Our new auto-generation approach enables Box API additions within days, ensuring that you can leverage the most up-to-date features without delay. * Embedded documentation — All objects and parameters are documented directly in the SDK source code, keeping essential information in one place. * Enhanced convenience methods — New methods for authentication, chunk uploads, automatic retries, retry strategy, and more. This version includes the Box Next Generation SDK artifact, previously developed in parallel to Box core SDKs. To facilitate migration and provide access to the newest features, we'll soon release an additional major version containing both artifacts. No immediate action required — If you're using the current SDK version, your existing code will continue to work without changes. However, migrating to `v10` includes breaking changes. For more information and migration guides, see the [SDK versioning strategy document][versioning]. Follow the developer changelog for future updates. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][2] for any help needed. [versioning]: https://developer.box.com/guides/tooling/sdks/sdk-versioning [2]: https://community.box.com/ ## Box Next Generation SDK deprecation As of September 17, 2025 Box Next Generation SDKs are no longer supported as separate artifacts. Don’t worry, your existing code will continue to work without changes. You can still use your applications based on Box Next Generation SDKs with no impact, but you won't receive new features, updates, or bug fixes. In keeping with industry best practices, we are consolidating the Box Next Generation SDKs and Box core SDKs into a single package for each programming language. This makes migration efforts much easier and allows seamless addition of new capabilities to existing applications still powered by Box core SDKs, which were maintained manually. All future development, including new features and updates for the Next Generation SDKs, will be delivered through Box core SDKs starting with version `v10`. Currently, `v10` is available as a separate branch. For more information and migration guides, see the [SDK versioning strategy document][versioning]. Follow the developer changelog for future updates. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][2] for any help needed. [versioning]: https://developer.box.com/guides/tooling/sdks/sdk-versioning [2]: https://community.box.com/ ## Box Java SDK v10.0.0 released Introducing **`Box SDK v10`**, a major release designed to elevate your developer experience and streamline integration with Box Content Cloud. Currently available as a separate [`sdk-gen`][1] branch, `v10` will ultimately become the main branch. ### Breaking Changes * This SDK version is auto-generated and introduces a new interface for all methods. Extensive documentation is available [here][2]. ### What's New in `v10` * **Full API Support** — Complete coverage of the Box API ecosystem, giving you access to all the latest features and functionalities to build feature-rich applications. * **Rapid API Updates** — Our new auto-generation approach enables Box API additions within days, ensuring you can leverage the most up-to-date features without delay. * **Embedded Documentation** — All objects and parameters are documented directly in the SDK source code, keeping essential information in one place. * **Enhanced Convenience Methods** — New methods for authentication, chunk uploads, automatic retries, retry strategy, and more. ### Important Notes This version includes the Box Next Generation SDK artifact, previously developed in parallel to core Box SDKs. To facilitate migration and provide access to the newest features, we'll soon release an additional major version combining both artifacts. Migration to `v10` includes breaking changes, please review the [migration guide][3] for details. For more information, see the [SDK versioning strategy document][4]. Follow developer changelog for future updates. *** ### What’s New Compared to [Java SDK Gen][5] `v0.8.1` #### ⚠ BREAKING CHANGES * Change names of unions (box/box-codegen[#787][6]) ([#1359][7]) ([`114e778`][8]) * Remove unused models from schemas (box/box-openapi[#547][9]) ([#1354][10]) ([`e031308`][11]), closes [box/`box-openapi#542`][12] [box/`box-openapi#544`][13] [box/`box-codegen#781`][14] [box/`box-openapi#545`][15] [`box/box-codegen#782`][16] * Replace `Date` with `OffsetDateTime` (box/box-codegen[#826][17]) ([#1419][18]) ([`ed04407`][19]) #### New Features and Enhancements * Add proxy support (box/box-codegen[#830][20]) ([#1424][21]) ([`cc53247`][22]) For more details check [migration guide][23] from `box-java-sdk-gen` `v0` to `box-java-sdk` `v10`. [1]: https://github.com/box/box-java-sdk/tree/sdk-gen [2]: https://github.com/box/box-java-sdk/tree/sdk-gen/docs [3]: https://github.com/box/box-java-sdk/blob/sdk-gen/migration-guides/from-v4-to-v10.md [4]: https://developer.box.com/tooling/sdks/sdk-versioning [5]: https://github.com/box/box-java-sdk-gen [6]: https://github.com/box/box-java-sdk/issues/787 [7]: https://github.com/box/box-java-sdk/issues/1359 [8]: https://github.com/box/box-java-sdk/commit/114e7785031e19fb58933f231e656a991b5effb7 [9]: https://github.com/box/box-java-sdk/issues/547 [10]: https://github.com/box/box-java-sdk/issues/1354 [11]: https://github.com/box/box-java-sdk/commit/e031308f102137351238bf3823372150d3927442 [12]: https://github.com/box/box-openapi/issues/542 [13]: https://github.com/box/box-openapi/issues/544 [14]: https://github.com/box/box-codegen/issues/781 [15]: https://github.com/box/box-openapi/issues/545 [16]: https://github.com/box/box-codegen/issues/782 [17]: https://github.com/box/box-java-sdk/issues/826 [18]: https://github.com/box/box-java-sdk/issues/1419 [19]: https://github.com/box/box-java-sdk/commit/ed04407e8effa8811bc85023783097f8a95e5223 [20]: https://github.com/box/box-java-sdk/issues/830 [21]: https://github.com/box/box-java-sdk/issues/1424 [22]: https://github.com/box/box-java-sdk/commit/cc532475cdaf5ec3fd710149b41a6e7b04dcd32f [23]: https://github.com/box/box-java-sdk/blob/sdk-gen/migration-guides/from-box-java-sdk-gen-v0-to-box-java-sdk-v10.md ## Box iOS SDK 10.0.0 released Introducing **`Box iOS SDK v10`**, a major release designed to elevate your developer experience and streamline integration with Box Content Cloud. Currently available as a separate [`sdk-gen`][1] branch, `v10` will ultimately become the main branch. ### Breaking Changes * This SDK version is auto-generated and introduces a new interface for all methods. Extensive documentation is available [here][2]. ### What's New in `v10` * **Full API Support** — Complete coverage of the Box API ecosystem, giving you access to all the latest features and functionalities to build feature-rich applications. * **Rapid API Updates** — Our new auto-generation approach enables Box API additions within days, ensuring you can leverage the most up-to-date features without delay. * **Embedded Documentation** — All objects and parameters are documented directly in the SDK source code, keeping essential information in one place. * **Enhanced Convenience Methods** — New methods for authentication, chunk uploads, automatic retries, retry strategy, and more. ### Important Notes This version includes the Box Next Generation SDK artifact, previously developed in parallel to core Box SDKs. To facilitate migration and provide access to the newest features, we'll soon release an additional major version combining both artifacts. Migration to `v10` includes breaking changes, please review the [migration guide][3] for details. For more information, see the [SDK versioning strategy document][4]. Follow developer changelog for future updates. *** ### What’s New Compared to [Box Swift SDK Gen][5] `v0.6.3` ### New Features and Enhancements * Add External User Deletion API (box/box-codegen[#550][6]) ([`74571fb`][7]) * Add missing webhook events (box/box-openapi[#554][8]) ([#1048][9]) ([`b8bf1ad`][10]) * Retry requests for network errors in Swift (box/box-codegen[#820][11]) ([#1051][12]) ([`ba21450`][13]) For more details check [migration guide][14] from `box-swift-sdk-gen` `v0` to `box-ios-sdk` `v10`. [1]: https://github.com/box/box-ios-sdk/tree/sdk-gen [2]: https://github.com/box/box-ios-sdk/tree/sdk-gen/docs [3]: https://github.com/box/box-ios-sdk/blob/sdk-gen/migration-guides/from-v5-to-v10.md [4]: https://developer.box.com/tooling/sdks/sdk-versioning [5]: https://github.com/box/box-swift-sdk-gen [6]: https://github.com/box/box-ios-sdk/issues/969 [7]: https://github.com/box/box-ios-sdk/commit/74571fb6675d0ff90d0ec4ef2baf7113816093f8 [8]: https://github.com/box/box-ios-sdk/issues/554 [9]: https://github.com/box/box-ios-sdk/issues/1048 [10]: https://github.com/box/box-ios-sdk/commit/b8bf1add360119f70a626f663cd810f9598ec794 [11]: https://github.com/box/box-ios-sdk/issues/820 [12]: https://github.com/box/box-ios-sdk/issues/1051 [13]: https://github.com/box/box-ios-sdk/commit/ba214507b37d2a842bcf044b5b4392b442486d6f [14]: https://github.com/box/box-ios-sdk/blob/sdk-gen/migration-guides/from-box-swift-sdk-gen-v0-to-box-ios-sdk-v10.md ## Box TypeScript SDK Generated v1.19.1 released ### Bug Fixes * Fix ESM build and add test set (box/box-codegen[#828][1]) ([#768][2]) ([`c198527`][3]) [1]: https://github.com/box/box-typescript-sdk-gen/issues/828 [2]: https://github.com/box/box-typescript-sdk-gen/issues/768 [3]: https://github.com/box/box-typescript-sdk-gen/commit/c19852701d4e14eb6f6a9c7f24b4621d57a08b60 ## Box UI Elements v24.0.0 released ### [24.0.0][1] (2025-09-05) ### Bug Fixes * **blueprint-web:** Upgrade blueprint-web packages ([#4261][2]) ([`ac48f93`][3]) * **blueprint:** Blueprint Modernization ([#4204][4]) ([`29030a9`][5]) * **box-ai:** Fix suggested questions not appearing ([#4249][6]) ([`0c63595`][7]) * **box-ai:** Update box-ai-content-answers peer dependency version ([#4238][8]) ([`8967acf`][9]) * **content-explorer:** Fix flaky SubheaderV2 folder title ([#4229][10]) ([`330ae33`][11]) * **content-explorer:** Fix grid selection ([#4267][12]) ([`4beb05d`][13]) * **content-explorer:** Validate selected item ids after item changes ([#4268][14]) ([`baaaa83`][15]) * **i18n:** update translations ([#4241][16]) ([`5e7030a`][17]) * **i18n:** update translations ([#4247][18]) ([`29f266c`][19]) * **i18n:** update translations ([#4253][20]) ([`f9e4e79`][21]) * **i18n:** update translations ([#4254][22]) ([`59e30e3`][23]) * **i18n:** update translations ([#4258][24]) ([`2522af9`][25]) * **i18n:** update translations ([#4259][26]) ([`d3c5a78`][27]) * **i18n:** update translations ([#4264][28]) ([`8118ab6`][29]) * **metadata-view:** default iconcolumnvariant ([#4262][30]) ([`141cf6e`][31]) * **metadata-view:** Enable sorting dropdown ([#4265][32]) ([`fac795f`][33]) * **metadata-view:** fix filtering file extensions and filters visibility ([#4257][34]) ([`504aed7`][35]) * **metadata-view:** fix filtering folders and files ([#4255][36]) ([`bdd6d1d`][37]) * **metadata-view:** Hide keyword and location filters ([#4260][38]) ([`1ca5029`][39]) * **metadata-view:** Use internal pagination ([#4263][40]) ([`b274e73`][41]) * set version in release assets ([#4266][42]) ([`1ba15df`][43]) ### Features * add client version to element api calls ([#4198][44]) ([`468d6c1`][45]) * **box-ai:** Bump box-ai-content-answers version ([#4233][46]) ([`47cea9f`][47]) * **classification:** implement AppliedByAiClassificationReason ([#4250][48]) ([`e23fbf3`][49]) * **content-explorer:** Add initial filter values to Metadata View ([#4225][50]) ([`b68cd70`][51]) * **metadata-instance-editor:** remove ai agent selector split and fi… ([#4226][52]) ([`1f953c0`][53]) * **metadata-view:** Add Filtering ([#4235][54]) ([`2f5e42b`][55]) * **metadata-view:** bulk custom actions ([#4227][56]) ([`371ad5e`][57]) * **metadata-view:** default sortBy ([#4232][58]) ([`1a86aa5`][59]) * **metadata-view:** Implement metadata sidepanel ([#4230][60]) ([`4f89946`][61]) * **metadata-view:** Multi value display and onSave in metadata sidepanel ([#4245][62]) ([`7ddea1e`][63]) * **metadata-view:** pass-thru onSortChange ([#4248][64]) ([`1a8a59f`][65]) * **router:** withRouterIfEnabled ([#4221][66]) ([`f969170`][67]) * **timestamped-comments:** enabling time stamped video comments ([#4228][68]) ([`31b580d`][69]), closes [#4226][52] [#4230][60] ### BREAKING CHANGES * **box-ai:** isResetChatEnabled prop removed [1]: https://github.com/box/box-ui-elements/compare/v23.4.0...v24.0.0 [2]: https://github.com/box/box-ui-elements/issues/4261 [3]: https://github.com/box/box-ui-elements/commit/ac48f9313b4603cbae3ac7daf8be36cf84d0bdb1 [4]: https://github.com/box/box-ui-elements/issues/4204 [5]: https://github.com/box/box-ui-elements/commit/29030a9a8c50eaa3b94c463993bc44dd2cc439ff [6]: https://github.com/box/box-ui-elements/issues/4249 [7]: https://github.com/box/box-ui-elements/commit/0c63595299ea25408cabe6a4d846e7a34df74ee9 [8]: https://github.com/box/box-ui-elements/issues/4238 [9]: https://github.com/box/box-ui-elements/commit/8967acf340eb96c4a50e11934c022cd10af1c42b [10]: https://github.com/box/box-ui-elements/issues/4229 [11]: https://github.com/box/box-ui-elements/commit/330ae3398998c7e05778a52f15f2e5d0f815a0b3 [12]: https://github.com/box/box-ui-elements/issues/4267 [13]: https://github.com/box/box-ui-elements/commit/4beb05d307a142331d55030fe35154c26dd4b1a5 [14]: https://github.com/box/box-ui-elements/issues/4268 [15]: https://github.com/box/box-ui-elements/commit/baaaa83462ef6b307992a9f6d800e62c8c668d16 [16]: https://github.com/box/box-ui-elements/issues/4241 [17]: https://github.com/box/box-ui-elements/commit/5e7030adc2e0ad683c11329dc00ab8dbd911aea7 [18]: https://github.com/box/box-ui-elements/issues/4247 [19]: https://github.com/box/box-ui-elements/commit/29f266cbaa554d528766207ca22d9ab544686e36 [20]: https://github.com/box/box-ui-elements/issues/4253 [21]: https://github.com/box/box-ui-elements/commit/f9e4e7922d4efda3addbea621f71aaee38475385 [22]: https://github.com/box/box-ui-elements/issues/4254 [23]: https://github.com/box/box-ui-elements/commit/59e30e3ac5eb1798456f228558f30f42d1b4ac2d [24]: https://github.com/box/box-ui-elements/issues/4258 [25]: https://github.com/box/box-ui-elements/commit/2522af9d1ee562ec8f838263422c5ce30edc6be0 [26]: https://github.com/box/box-ui-elements/issues/4259 [27]: https://github.com/box/box-ui-elements/commit/d3c5a78fb8962acb92cdd91dccc497f05abdf164 [28]: https://github.com/box/box-ui-elements/issues/4264 [29]: https://github.com/box/box-ui-elements/commit/8118ab6ae814daad43848e626b711fe3e92b00e8 [30]: https://github.com/box/box-ui-elements/issues/4262 [31]: https://github.com/box/box-ui-elements/commit/141cf6e1cc7c61a989c7bffbc5215d02c6d4f4c5 [32]: https://github.com/box/box-ui-elements/issues/4265 [33]: https://github.com/box/box-ui-elements/commit/fac795f44248bb444c489d0512344a9f72b188d7 [34]: https://github.com/box/box-ui-elements/issues/4257 [35]: https://github.com/box/box-ui-elements/commit/504aed76ea4fab168ec9ad8b5190f1dfc15c781c [36]: https://github.com/box/box-ui-elements/issues/4255 [37]: https://github.com/box/box-ui-elements/commit/bdd6d1d6c521cf147a6fa89428560e1b9f65b9b7 [38]: https://github.com/box/box-ui-elements/issues/4260 [39]: https://github.com/box/box-ui-elements/commit/1ca5029a5287f7aad3aefe5d2e4cfed26c301e5e [40]: https://github.com/box/box-ui-elements/issues/4263 [41]: https://github.com/box/box-ui-elements/commit/b274e73216a5f8195f1f15cd82414ae19d1273e8 [42]: https://github.com/box/box-ui-elements/issues/4266 [43]: https://github.com/box/box-ui-elements/commit/1ba15dfbb119b82515d263a5610a0725d6819949 [44]: https://github.com/box/box-ui-elements/issues/4198 [45]: https://github.com/box/box-ui-elements/commit/468d6c13d5e1b5c574f99442a22cdbb362d24485 [46]: https://github.com/box/box-ui-elements/issues/4233 [47]: https://github.com/box/box-ui-elements/commit/47cea9f604fafd686c03aeb42b9b14893d7dae0e [48]: https://github.com/box/box-ui-elements/issues/4250 [49]: https://github.com/box/box-ui-elements/commit/e23fbf303609bf6ee03ac35135dda57060346660 [50]: https://github.com/box/box-ui-elements/issues/4225 [51]: https://github.com/box/box-ui-elements/commit/b68cd705b2720125c9b132a81ff6dd2f4abe3efc [52]: https://github.com/box/box-ui-elements/issues/4226 [53]: https://github.com/box/box-ui-elements/commit/1f953c08decd3113f855aceada1a8513e74582f9 [54]: https://github.com/box/box-ui-elements/issues/4235 [55]: https://github.com/box/box-ui-elements/commit/2f5e42b9e36618dc6d9880812ee425eb5c799b29 [56]: https://github.com/box/box-ui-elements/issues/4227 [57]: https://github.com/box/box-ui-elements/commit/371ad5eeb38cabe162d1b8bb0ab9eb6f8378deab [58]: https://github.com/box/box-ui-elements/issues/4232 [59]: https://github.com/box/box-ui-elements/commit/1a86aa587b47e149d4e9430a3720492d4bffb2a4 [60]: https://github.com/box/box-ui-elements/issues/4230 [61]: https://github.com/box/box-ui-elements/commit/4f8994652f45b34abd22d5347ecfd7642ce47fa2 [62]: https://github.com/box/box-ui-elements/issues/4245 [63]: https://github.com/box/box-ui-elements/commit/7ddea1e9ae6c0f5686fb8efa501619da61f41818 [64]: https://github.com/box/box-ui-elements/issues/4248 [65]: https://github.com/box/box-ui-elements/commit/1a8a59f66740eeb0313e4a64d2793f1bd5ea22c8 [66]: https://github.com/box/box-ui-elements/issues/4221 [67]: https://github.com/box/box-ui-elements/commit/f96917063feedb5ee681935b1551d8fa7555e74e [68]: https://github.com/box/box-ui-elements/issues/4228 [69]: https://github.com/box/box-ui-elements/commit/31b580d3dd7411f25b0f6841ab56eb91fb425fc1 ## Box TypeScript SDK Generated v1.19.0 released ### Bug Fixes * Remove private access modifiers (box/box-codegen[#815][1]) ([#747][2]) ([`1693ddc`][3]) ### New Features and Enhancements * Add missing webhook events (box/box-openapi[#554][4]) ([#753][5]) ([`2b77c98`][6]) [1]: https://github.com/box/box-typescript-sdk-gen/issues/815 [2]: https://github.com/box/box-typescript-sdk-gen/issues/747 [3]: https://github.com/box/box-typescript-sdk-gen/commit/1693ddc114b1c0452b2eddd6b4837a308155678a [4]: https://github.com/box/box-typescript-sdk-gen/issues/554 [5]: https://github.com/box/box-typescript-sdk-gen/issues/753 [6]: https://github.com/box/box-typescript-sdk-gen/commit/2b77c982d549ef8ad84d8c6b69f9afb37e53197e ## Box Swift SDK Generated 0.6.3 released ### New Features and Enhancements * Add missing webhook events (box/box-openapi[#554][1]) ([#581][2]) ([`966d171`][3]) [1]: https://github.com/box/box-swift-sdk-gen/issues/554 [2]: https://github.com/box/box-swift-sdk-gen/issues/581 [3]: https://github.com/box/box-swift-sdk-gen/commit/966d171baa3f6fa1139732b05081000e44b0e08a ## Box Python SDK Generated v1.17.0 released ### New Features and Enhancements * Add missing webhook events (box/box-openapi[#554][1]) ([#708][2]) ([`3d25542`][3]) * Support event with long polling (box/box-codegen[#757][4]) ([#673][5]) ([`481fbeb`][6]) [1]: https://github.com/box/box-python-sdk-gen/issues/554 [2]: https://github.com/box/box-python-sdk-gen/issues/708 [3]: https://github.com/box/box-python-sdk-gen/commit/3d2554239b0bede7a3158cf88913592643c3e22b [4]: https://github.com/box/box-python-sdk-gen/issues/757 [5]: https://github.com/box/box-python-sdk-gen/issues/673 [6]: https://github.com/box/box-python-sdk-gen/commit/481fbeb1412ecc137c0090dd4b37fe9ad75db6b0 ## Box Dotnet SDK Generated v1.12.0 released ### New Features and Enhancements * Add missing webhook events (box/box-openapi[#554][1]) ([#600][2]) ([`46c6d33`][3]) [1]: https://github.com/box/box-dotnet-sdk-gen/issues/554 [2]: https://github.com/box/box-dotnet-sdk-gen/issues/600 [3]: https://github.com/box/box-dotnet-sdk-gen/commit/46c6d33238b7a97352a434333e18054d8adccd03 ## Box TypeScript SDK Generated v1.18.1 released ### Bug Fixes * correct import and export handling (box/box-codegen[#801][1]) ([#738][2]) ([`cea513f`][3]) [1]: https://github.com/box/box-typescript-sdk-gen/issues/801 [2]: https://github.com/box/box-typescript-sdk-gen/issues/738 [3]: https://github.com/box/box-typescript-sdk-gen/commit/cea513fcf3ed79b930e7067f06282c5bb08d8bd6 ## Box TypeScript SDK Generated v1.18.0 released ### Bug Fixes * bump form-data to 4.0.4 and types/node-fetch to 2.6.13 (box/box-codegen[#808][1]) ([#735][2]) ([`7330b95`][3]) * Fix serialization for `MetadataFilterValue` (box/box-codegen[#800][4]) ([#727][5]) ([`d046405`][6]) ### New Features and Enhancements * Support event with long polling in Python and TS (box/box-codegen[#757][7]) ([#712][8]) ([`6f25fda`][9]) [1]: https://github.com/box/box-typescript-sdk-gen/issues/808 [2]: https://github.com/box/box-typescript-sdk-gen/issues/735 [3]: https://github.com/box/box-typescript-sdk-gen/commit/7330b95dc18baa56a24a06657f2cb3cc3f4c7c46 [4]: https://github.com/box/box-typescript-sdk-gen/issues/800 [5]: https://github.com/box/box-typescript-sdk-gen/issues/727 [6]: https://github.com/box/box-typescript-sdk-gen/commit/d046405e644d5533e07ac42411c176527efdd1fb [7]: https://github.com/box/box-typescript-sdk-gen/issues/757 [8]: https://github.com/box/box-typescript-sdk-gen/issues/712 [9]: https://github.com/box/box-typescript-sdk-gen/commit/6f25fdaf48b3538b3a7ba370d677454f6f0d2631 ## Bulk delete external users You can now [bulk delete][1] up to 100 external user accounts through the public API. This job runs in the background, and sends a completion report when it's finished. The report contains details identifying which user deletions succeeded and which failed. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][2] for any help needed. [1]: /guides/users/bulk-delete-external-users [2]: https://community.box.com/ ## Box Swift SDK Generated 0.6.2 released ### Bug Fixes * Fix downscope token to use `retrieveToken` method for token retrieval (box/box-codegen[#731][1]) ([#459][2]) ([`8992b32`][3]) * Fix parsing `Date` into query parameters (box/box-codegen[#729][4]) ([#449][5]) ([`1a95d0c`][6]) * Specify events `next_stream_position` property type as `int64` (box/box-openapi[#535][7]) ([#502][8]) ([`795fe1c`][9]) ### New Features and Enhancements * Add `downloadZip` method (box/box-codegen[#765][10]) ([#505][11]) ([`c03589d`][12]) * Add `rawData` property (box/box-codegen[#724][13]) ([#445][14]) ([`77405ad`][15]) * add AI agents warnings; allow for more types of metadata value (box/box-openapi[#520][16]) ([#435][17]) ([`af1dc12`][18]) * add AI spreadsheet processor (box/box-openapi[#533][19]) ([#484][20]) ([`14726d1`][21]) * Add Archive Public API (box/box-openapi[#540][22]) ([#509][23]) ([`8266386`][24]) * Add CI for swift (box/box-codegen[#755][25]) ([#494][26]) ([`76a3337`][27]) * add hubs API beta endpoints (box/box-openapi[#531][28]) ([#476][29]) ([`a05aa5f`][30]) * Add new Hubs APIs and Hubs items API (box/box-openapi[#538][31]) ([#503][32]) ([`9058c45`][33]) * Add new schema for `Metadata Error` (box/box-openapi[#539][34]) ([#504][35]) ([`2e9ecf9`][36]) * Add security settings properties on sign template schema (box/box-openapi[#518][37]) ([#426][38]) ([`a741a73`][39]) * add Shield Lists APIs (box/box-openapi[#528][40]) ([#462][41]) ([`b5993b0`][42]) * Add support for `additionalProperties` with Any value (box/box-codegen[#711][43]) ([#427][44]) ([`7fbf706`][45]) * Add support for `nullable` fields (box/box-codegen[#700][46]) ([#420][47]) ([`5d0ff41`][48]) * add support of IBM models to AI API (box/box-openapi[#522][49]) ([#436][50]) ([`0717222`][51]) * Expose `makeRequest` method in `BoxClient` (box/box-codegen[#687][52]) ([#408][53]) ([`7ba7d09`][54]) * Improve AI integration test (box/box-codegen[#758][55]) ([#499][56]) ([`3c7e717`][57]) * Sanitize response body when throwing `BoxAPIError` (box/box-codegen[#760][58]) ([#498][59]) ([`2afc793`][60]) * Support `getDownloadUrl` in Swift (box/box-codegen[#751][61]) ([#491][62]) ([`5916ede`][63]) * Support new tools in AI Studio (box/box-openapi[#534][64]) ([#485][65]) ([`e793d7b`][66]) * Support sensitive data sanitization in errors (box/box-codegen[#695][67]) ([#415][68]) ([`330ca9a`][69]) * Update legal holds and AI models (box/box-openapi[#526][70]) ([#460][71]) ([`caa848a`][72]) [1]: https://github.com/box/box-swift-sdk-gen/issues/731 [2]: https://github.com/box/box-swift-sdk-gen/issues/459 [3]: https://github.com/box/box-swift-sdk-gen/commit/8992b32e9dd058fc77b4d68418da81b162aea315 [4]: https://github.com/box/box-swift-sdk-gen/issues/729 [5]: https://github.com/box/box-swift-sdk-gen/issues/449 [6]: https://github.com/box/box-swift-sdk-gen/commit/1a95d0c80e0bd29dc1b467e7e98e6f5e6196ddfb [7]: https://github.com/box/box-swift-sdk-gen/issues/535 [8]: https://github.com/box/box-swift-sdk-gen/issues/502 [9]: https://github.com/box/box-swift-sdk-gen/commit/795fe1c7f0aa6074145b675fce4dd8e1432b0a64 [10]: https://github.com/box/box-swift-sdk-gen/issues/765 [11]: https://github.com/box/box-swift-sdk-gen/issues/505 [12]: https://github.com/box/box-swift-sdk-gen/commit/c03589d6add3ee6d548f10b5380031cd38284e42 [13]: https://github.com/box/box-swift-sdk-gen/issues/724 [14]: https://github.com/box/box-swift-sdk-gen/issues/445 [15]: https://github.com/box/box-swift-sdk-gen/commit/77405adc986adb8a1ce3bcff051ea8c481dbfd9d [16]: https://github.com/box/box-swift-sdk-gen/issues/520 [17]: https://github.com/box/box-swift-sdk-gen/issues/435 [18]: https://github.com/box/box-swift-sdk-gen/commit/af1dc12763f9a84691573fd3ba8307925fc017d6 [19]: https://github.com/box/box-swift-sdk-gen/issues/533 [20]: https://github.com/box/box-swift-sdk-gen/issues/484 [21]: https://github.com/box/box-swift-sdk-gen/commit/14726d1952f5ddb2414f723a0b18fa5226269a64 [22]: https://github.com/box/box-swift-sdk-gen/issues/540 [23]: https://github.com/box/box-swift-sdk-gen/issues/509 [24]: https://github.com/box/box-swift-sdk-gen/commit/82663868c61a31f43b229c6f24e29737913662a0 [25]: https://github.com/box/box-swift-sdk-gen/issues/755 [26]: https://github.com/box/box-swift-sdk-gen/issues/494 [27]: https://github.com/box/box-swift-sdk-gen/commit/76a3337bed9bfc4629ec7dcb9af86bec4aa710f3 [28]: https://github.com/box/box-swift-sdk-gen/issues/531 [29]: https://github.com/box/box-swift-sdk-gen/issues/476 [30]: https://github.com/box/box-swift-sdk-gen/commit/a05aa5fe2aaade1d7bdd7acb90c82fcb3a3bf262 [31]: https://github.com/box/box-swift-sdk-gen/issues/538 [32]: https://github.com/box/box-swift-sdk-gen/issues/503 [33]: https://github.com/box/box-swift-sdk-gen/commit/9058c45c0bcd3e7f294a1bedac151637001aec63 [34]: https://github.com/box/box-swift-sdk-gen/issues/539 [35]: https://github.com/box/box-swift-sdk-gen/issues/504 [36]: https://github.com/box/box-swift-sdk-gen/commit/2e9ecf9477854656958b715674b8aa0413508d31 [37]: https://github.com/box/box-swift-sdk-gen/issues/518 [38]: https://github.com/box/box-swift-sdk-gen/issues/426 [39]: https://github.com/box/box-swift-sdk-gen/commit/a741a7305e2b2d174bc325e35ea9b77548a38095 [40]: https://github.com/box/box-swift-sdk-gen/issues/528 [41]: https://github.com/box/box-swift-sdk-gen/issues/462 [42]: https://github.com/box/box-swift-sdk-gen/commit/b5993b096b4fceb77301f76eba1c17225b2844d6 [43]: https://github.com/box/box-swift-sdk-gen/issues/711 [44]: https://github.com/box/box-swift-sdk-gen/issues/427 [45]: https://github.com/box/box-swift-sdk-gen/commit/7fbf7069eff66afddc328066f8aeb7321b249eea [46]: https://github.com/box/box-swift-sdk-gen/issues/700 [47]: https://github.com/box/box-swift-sdk-gen/issues/420 [48]: https://github.com/box/box-swift-sdk-gen/commit/5d0ff414b325db92db44c580cebb5636ab33553f [49]: https://github.com/box/box-swift-sdk-gen/issues/522 [50]: https://github.com/box/box-swift-sdk-gen/issues/436 [51]: https://github.com/box/box-swift-sdk-gen/commit/071722246402e0ec2439ae1e5e3d26bca45a049f [52]: https://github.com/box/box-swift-sdk-gen/issues/687 [53]: https://github.com/box/box-swift-sdk-gen/issues/408 [54]: https://github.com/box/box-swift-sdk-gen/commit/7ba7d091b0c832276daa571fad2a7db75469676d [55]: https://github.com/box/box-swift-sdk-gen/issues/758 [56]: https://github.com/box/box-swift-sdk-gen/issues/499 [57]: https://github.com/box/box-swift-sdk-gen/commit/3c7e717c6ca076caf1a963b3f60d3bd88f8c4bff [58]: https://github.com/box/box-swift-sdk-gen/issues/760 [59]: https://github.com/box/box-swift-sdk-gen/issues/498 [60]: https://github.com/box/box-swift-sdk-gen/commit/2afc7936dac87dee22adff3e22def92913f5854c [61]: https://github.com/box/box-swift-sdk-gen/issues/751 [62]: https://github.com/box/box-swift-sdk-gen/issues/491 [63]: https://github.com/box/box-swift-sdk-gen/commit/5916ede7454a1926de195e77b9a158c2af0fae2b [64]: https://github.com/box/box-swift-sdk-gen/issues/534 [65]: https://github.com/box/box-swift-sdk-gen/issues/485 [66]: https://github.com/box/box-swift-sdk-gen/commit/e793d7b3a03e8d58ce6adb63a894a0330ae154d1 [67]: https://github.com/box/box-swift-sdk-gen/issues/695 [68]: https://github.com/box/box-swift-sdk-gen/issues/415 [69]: https://github.com/box/box-swift-sdk-gen/commit/330ca9ad17cbc79c93ffb114fd56c09a41f92694 [70]: https://github.com/box/box-swift-sdk-gen/issues/526 [71]: https://github.com/box/box-swift-sdk-gen/issues/460 [72]: https://github.com/box/box-swift-sdk-gen/commit/caa848ac977c7fedeacbe018339d27b9d948bb1e ## Box UI Elements v23.4.0 released ### [23.4.0][1] (2025-08-12) ### Bug Fixes * **`ai-sidebar`:** Add callback for selected agent ([#4115][2]) ([`8bdbf3e`][3]) * **`blueprint`:** Bump blueprint ([#4205][4]) ([`5e7f4b2`][5]) * **`breadcrumb`:** Add missing key property ([#4170][6]) ([`c10b059`][7]) * **`content-preview`:** prevent item icon shrinking on small screens ([#4111][8]) ([`e5004f7`][9]) * **`gh-pages`:** deploy storybook from docs folder ([#4100][10]) ([`dd34522`][11]) * **`header-flyout`:** remove animation on \< medium screen size ([#4163][12]) ([`cf3123e`][13]) * **`i18n`:** update translations ([#4105][14]) ([`df61d95`][15]) * **`i18n`:** update translations ([#4108][16]) ([`e702f97`][17]) * **`i18n`:** update translations ([#4113][18]) ([`196beee`][19]) * **`i18n`:** update translations ([#4119][20]) ([`113915b`][21]) * **`i18n`:** update translations ([#4121][22]) ([`02cb22e`][23]) * **`i18n`:** update translations ([#4130][24]) ([`ff8f322`][25]) * **`i18n`:** update translations ([#4139][26]) ([`47b7690`][27]) * **`i18n`:** update translations ([#4185][28]) ([`fef4134`][29]) * **`i18n`:** update translations ([#4196][30]) ([`dd19958`][31]) * **`i18n`:** update translations ([#4203][32]) ([`bd31196`][33]) * **`i18n`:** update translations ([#4208][34]) ([`95b3cc6`][35]) * **`i18n`:** update translations ([#4211][36]) ([`bee412f`][37]) * **`i18n`:** update translations ([#4216][38]) ([`da932f1`][39]) * **`i18n`:** update translations ([#4219][40]) ([`d8a8fcb`][41]) * **`metadata-editor`:** package bump for bug fixes ([#4171][42]) ([`51dd7ca`][43]) * **`metadata-instance-fields`:** add minimal taxonomy support in `metada-instance-field`s ([#4133][44]) ([`0dff276`][45]) * resolve CVE-2025-7783 `form-data` vulnerability ([#4213][46]) ([`96252db`][47]) * resolve incorrect type import ([#4132][48]) ([`8b5eec6`][49]) * Throttle create folder to avoid rapid clicks ([#4193][50]) ([`67ec941`][51]) * **`uploads`:** handle rate limit errors with retries ([#4134][52]) ([`eb3e3da`][53]) ### Features * **`boxai-sidebar`:** Add logic to render remote sidebar from prop ([#4106][54]) ([`7f8802a`][55]) * **`cascadepolicy`:** disable inputs if cascade policy exists ([#4175][56]) ([`b6d778c`][57]) * **`header-flyout`:** add opening animation ([#4159][58]) ([`3b417ba`][59]) * **`header-flyout`:** optionally allow header actions ([#4164][60]) ([`8f3ad6e`][61]) * **`mergify`:** update rule to require conversation resolution ([#4142][62]) ([`ef3291e`][63]) * `metadata-edito`r and `blueprint-web-assets` package bump ([#4137][64]) ([`070ff74`][65]) * **`metadata-editor`:** expose advanced metadata extract agent props ([#4128][66]) ([`f59b0aa`][67]) * **`metadata-editor`:** expose custom agent in `extractStructured` payload ([#4135][68]) ([`076e719`][69]), closes [#4102][70] * **`metadata-editor`:** Metadata API adjustments ([#4192][71]) ([`6112967`][72]) * **`metadata-editor`:** package bump for new icons ([#4195][73]) ([`1506020`][74]) * **`metadata-instance-editor`:** add enhanced ai extract support ([#4197][75]) ([`540026a`][76]) * **`metadata-instance-editor`:** allow hydration of enhanced ai extract ([#4217][77]) ([`5a93a16`][78]) * **`metadata-view`:** Add `MetadataView` V2 ([#4191][79]) ([`c0ab1e7`][80]) * **`metadata-view`:** Add Subheader for Metadata View v2 ([#4202][81]) ([`ab12626`][82]) * **`metadata-view`:** Added Metadata V2 button ([#4174][83]) ([`d8ec9c7`][84]) * **`metadata-view`:** custom actions ([#4215][85]) ([`88a5187`][86]) * **`metadataeditor`:** enable ai folder extraction through API ([#4102][70]) ([`6ebec78`][87]) * **`metadataeditor`:** remove ai pricing notice ([#4107][88]) ([`4bd24bc`][89]) * **`notification-redesign`:** Add logic for use of BP icons ([#4103][90]) ([`7907136`][91]) * **`router`:** added router-less logic to `VersionsSidebarContainer` ([#4209][92]) ([`0f46866`][93]) * **`router`:** Merging `NavButton` functionality into `SidebarNavButton` ([#4150][94]) ([`814035d`][95]) * **`router`:** optional router in `ActivitySidebar` ([#4199][96]) ([`435c75a`][97]) * **`router`:** optional router in `AddTaskButton` ([#4176][98]) ([`90537b4`][99]) * **`router`:** optional router in `NavRouter` and `withNavRouter` ([#4161][100]) ([`7f9cad4`][101]) * **`router`:** optional router in `SidebarNav`, `SidebarNavTablist` ([#4177][102]) ([`d14e06e`][103]) * **`router`:** optional router in `SidebarNavButton` ([#4156][104]) ([`dc8af3b`][105]) * **`router`:** optional router in `SidebarNavigation` ([#4194][106]) ([`e25e0e1`][107]) * **`router`:** optional router in `SidebarToggle` ([#4160][108]) ([`12c9a3a`][109]) * **`router`:** optional router in `StaticVersionSidebar` and `VersionsSid…` ([#4152][110]) ([`a456f3d`][111]) * **`router`:** optional router in `VersionsList` ([#4144][112]) ([`15c5d8d`][113]) * **`router`:** optional router in `withAnnotatorContext` and `withAnnotations` ([#4136][114]) ([`d08545e`][115]) * **`router`:** optional router in `withRouterAndRef` hoc ([#4162][116]) ([`32b08b9`][117]) * **`router`:** optional router in `withSidebarAnnotations` ([#4206][118]) ([`782877d`][119]) * **`router`:** Removed router functionality from `BackButton` component ([#4141][120]) ([`f01364c`][121]) * upgrade blueprint packages ([#4123][122]) ([`c166d7d`][123]) * upgrade react-virtualized for react 19 support ([#4157][124]) ([`269f585`][125]) * **`uploads`:** add option to error on name conflicts ([#4117][126]) ([`463839e`][127]) [1]: https://github.com/box/box-ui-elements/compare/v23.3.0...v23.4.0 [2]: https://github.com/box/box-ui-elements/issues/4115 [3]: https://github.com/box/box-ui-elements/commit/8bdbf3eee149e3a6dbc3431792509f3005371561 [4]: https://github.com/box/box-ui-elements/issues/4205 [5]: https://github.com/box/box-ui-elements/commit/5e7f4b21f47d6be7416e06a1554bc58c0b150395 [6]: https://github.com/box/box-ui-elements/issues/4170 [7]: https://github.com/box/box-ui-elements/commit/c10b05951c6efa185b0a04517d4cf91349f8a545 [8]: https://github.com/box/box-ui-elements/issues/4111 [9]: https://github.com/box/box-ui-elements/commit/e5004f785d38fe6681dcd70b11842e413fef55bb [10]: https://github.com/box/box-ui-elements/issues/4100 [11]: https://github.com/box/box-ui-elements/commit/dd345227b8cb864cb42eabdbefd4208cfdd690c2 [12]: https://github.com/box/box-ui-elements/issues/4163 [13]: https://github.com/box/box-ui-elements/commit/cf3123e802fdd64d794087d7dd7551a3b5b28c32 [14]: https://github.com/box/box-ui-elements/issues/4105 [15]: https://github.com/box/box-ui-elements/commit/df61d95591f74c44351e083fd139aed0bcf5e92a [16]: https://github.com/box/box-ui-elements/issues/4108 [17]: https://github.com/box/box-ui-elements/commit/e702f9773ae876c9355ebb9a02221e7f935f729e [18]: https://github.com/box/box-ui-elements/issues/4113 [19]: https://github.com/box/box-ui-elements/commit/196beee85ebdcea2cfbc92ef70c1332d9b8ea25c [20]: https://github.com/box/box-ui-elements/issues/4119 [21]: https://github.com/box/box-ui-elements/commit/113915b34d9f4895bae0b3085544bcd34dd7794c [22]: https://github.com/box/box-ui-elements/issues/4121 [23]: https://github.com/box/box-ui-elements/commit/02cb22e1727821da51e366bdd8e70ab56e6c8a45 [24]: https://github.com/box/box-ui-elements/issues/4130 [25]: https://github.com/box/box-ui-elements/commit/ff8f3223c72e7f6aaea5d571fd5cf3bcd71b5857 [26]: https://github.com/box/box-ui-elements/issues/4139 [27]: https://github.com/box/box-ui-elements/commit/47b76902799c69d1d5cd54965fb37d5781451423 [28]: https://github.com/box/box-ui-elements/issues/4185 [29]: https://github.com/box/box-ui-elements/commit/fef4134a26b59ee7bbb3e9da13ae488a98e6fa52 [30]: https://github.com/box/box-ui-elements/issues/4196 [31]: https://github.com/box/box-ui-elements/commit/dd19958289d113f4272559edbd1307e4d81e3137 [32]: https://github.com/box/box-ui-elements/issues/4203 [33]: https://github.com/box/box-ui-elements/commit/bd31196e11bcae1b2efa732255697751c25644a4 [34]: https://github.com/box/box-ui-elements/issues/4208 [35]: https://github.com/box/box-ui-elements/commit/95b3cc6b48ea7850e348936d040e4fda4f64e4df [36]: https://github.com/box/box-ui-elements/issues/4211 [37]: https://github.com/box/box-ui-elements/commit/bee412f1bad7e647b814d7601ddd04fe2d2421d1 [38]: https://github.com/box/box-ui-elements/issues/4216 [39]: https://github.com/box/box-ui-elements/commit/da932f18801e936cffe7951a95639af2e52e05d8 [40]: https://github.com/box/box-ui-elements/issues/4219 [41]: https://github.com/box/box-ui-elements/commit/d8a8fcbc6ad3cbf11fec25949374bb73dce01d56 [42]: https://github.com/box/box-ui-elements/issues/4171 [43]: https://github.com/box/box-ui-elements/commit/51dd7caf8b273e0c0adba948f58e4b69be3a708e [44]: https://github.com/box/box-ui-elements/issues/4133 [45]: https://github.com/box/box-ui-elements/commit/0dff276da6b497220f762fd917c421db4d5cf343 [46]: https://github.com/box/box-ui-elements/issues/4213 [47]: https://github.com/box/box-ui-elements/commit/96252db2ca2cad6b9b07787621e027e0a8ac7c84 [48]: https://github.com/box/box-ui-elements/issues/4132 [49]: https://github.com/box/box-ui-elements/commit/8b5eec6b4eda2a8291a8fda142b33ba6ba4498c0 [50]: https://github.com/box/box-ui-elements/issues/4193 [51]: https://github.com/box/box-ui-elements/commit/67ec94170a855e6ec62064f51e0b2e5d6d5aa729 [52]: https://github.com/box/box-ui-elements/issues/4134 [53]: https://github.com/box/box-ui-elements/commit/eb3e3da1c5b145f07994c5bb1eec38567de78187 [54]: https://github.com/box/box-ui-elements/issues/4106 [55]: https://github.com/box/box-ui-elements/commit/7f8802a4997322503e5f31bb86aaeb252b99ef70 [56]: https://github.com/box/box-ui-elements/issues/4175 [57]: https://github.com/box/box-ui-elements/commit/b6d778c6d3b0778a3e2f786b4b53d6d7ce045076 [58]: https://github.com/box/box-ui-elements/issues/4159 [59]: https://github.com/box/box-ui-elements/commit/3b417ba0a71d10026ba1c1857a974487eaf27f86 [60]: https://github.com/box/box-ui-elements/issues/4164 [61]: https://github.com/box/box-ui-elements/commit/8f3ad6e9f39d5fd8a5dcc54691bca6360af74dc6 [62]: https://github.com/box/box-ui-elements/issues/4142 [63]: https://github.com/box/box-ui-elements/commit/ef3291ed0f65122bfdaf9dd0fb51cfb6fc8acd64 [64]: https://github.com/box/box-ui-elements/issues/4137 [65]: https://github.com/box/box-ui-elements/commit/070ff749e085283ad97487a8a7daf6b44807fa94 [66]: https://github.com/box/box-ui-elements/issues/4128 [67]: https://github.com/box/box-ui-elements/commit/f59b0aa998fea1d54e2bc14a841dbfd3adc8be65 [68]: https://github.com/box/box-ui-elements/issues/4135 [69]: https://github.com/box/box-ui-elements/commit/076e719857d17bd52de52f904bf5ee2763bc0ef7 [70]: https://github.com/box/box-ui-elements/issues/4102 [71]: https://github.com/box/box-ui-elements/issues/4192 [72]: https://github.com/box/box-ui-elements/commit/6112967007196e2c91ca54ed7a7ce3afc5ab994b [73]: https://github.com/box/box-ui-elements/issues/4195 [74]: https://github.com/box/box-ui-elements/commit/150602092e957693b7fbd227e92adac8110ac327 [75]: https://github.com/box/box-ui-elements/issues/4197 [76]: https://github.com/box/box-ui-elements/commit/540026a28bb805dd06d4b3f22c868ed0edd3f56e [77]: https://github.com/box/box-ui-elements/issues/4217 [78]: https://github.com/box/box-ui-elements/commit/5a93a16c29187618429b8f0e4a53b8140a11b5f1 [79]: https://github.com/box/box-ui-elements/issues/4191 [80]: https://github.com/box/box-ui-elements/commit/c0ab1e7670e5f7c7ae8ff7572709ac19c9788a46 [81]: https://github.com/box/box-ui-elements/issues/4202 [82]: https://github.com/box/box-ui-elements/commit/ab1262690196a3ebb220250b1ad0243cd18932ce [83]: https://github.com/box/box-ui-elements/issues/4174 [84]: https://github.com/box/box-ui-elements/commit/d8ec9c75d6c7d2fa502d7d44aad2e7cd0ad1721e [85]: https://github.com/box/box-ui-elements/issues/4215 [86]: https://github.com/box/box-ui-elements/commit/88a518723c44bcf6a6d0762c1ff8e16ebcdb5fd6 [87]: https://github.com/box/box-ui-elements/commit/6ebec78fff6ece2f1ea3c4bc20ef7409e33f27fd [88]: https://github.com/box/box-ui-elements/issues/4107 [89]: https://github.com/box/box-ui-elements/commit/4bd24bcf59489f7aaac381d9c66b7e1b9d2a64df [90]: https://github.com/box/box-ui-elements/issues/4103 [91]: https://github.com/box/box-ui-elements/commit/79071362aea99c02993ed89cd9bee34bbe196b25 [92]: https://github.com/box/box-ui-elements/issues/4209 [93]: https://github.com/box/box-ui-elements/commit/0f46866a9490bd8c9872f9e76147ed72d9d7a287 [94]: https://github.com/box/box-ui-elements/issues/4150 [95]: https://github.com/box/box-ui-elements/commit/814035d73280b7d1e0e9a068876ca3c0cf471b94 [96]: https://github.com/box/box-ui-elements/issues/4199 [97]: https://github.com/box/box-ui-elements/commit/435c75a9bce168c8206597da804b7ce55c97467d [98]: https://github.com/box/box-ui-elements/issues/4176 [99]: https://github.com/box/box-ui-elements/commit/90537b471fce6643dd5eaecf1e5b0a1e3f196012 [100]: https://github.com/box/box-ui-elements/issues/4161 [101]: https://github.com/box/box-ui-elements/commit/7f9cad4b85f96d8d65f11c30ae3a45f2a3c96e40 [102]: https://github.com/box/box-ui-elements/issues/4177 [103]: https://github.com/box/box-ui-elements/commit/d14e06eb47083160dcf04055d3f418c4457d1255 [104]: https://github.com/box/box-ui-elements/issues/4156 [105]: https://github.com/box/box-ui-elements/commit/dc8af3b1dda45b1617aeac5a2d04af07af7e1e21 [106]: https://github.com/box/box-ui-elements/issues/4194 [107]: https://github.com/box/box-ui-elements/commit/e25e0e1174efd262f93e70619ff5f9a79d168fd8 [108]: https://github.com/box/box-ui-elements/issues/4160 [109]: https://github.com/box/box-ui-elements/commit/12c9a3a840545048f53ebae7b278208981ed1a55 [110]: https://github.com/box/box-ui-elements/issues/4152 [111]: https://github.com/box/box-ui-elements/commit/a456f3d677c3ad15e5ec2e052dcedf93d0d612f3 [112]: https://github.com/box/box-ui-elements/issues/4144 [113]: https://github.com/box/box-ui-elements/commit/15c5d8dfed2b2cc777344d0e0ef10da8c3525434 [114]: https://github.com/box/box-ui-elements/issues/4136 [115]: https://github.com/box/box-ui-elements/commit/d08545ef0650ad7082040d74acddb365bc8122f4 [116]: https://github.com/box/box-ui-elements/issues/4162 [117]: https://github.com/box/box-ui-elements/commit/32b08b929acbd906b2a348b8939234c980f1b642 [118]: https://github.com/box/box-ui-elements/issues/4206 [119]: https://github.com/box/box-ui-elements/commit/782877d2dcfa6d928da884055f1cc4bb17745d18 [120]: https://github.com/box/box-ui-elements/issues/4141 [121]: https://github.com/box/box-ui-elements/commit/f01364c73117a4d0638b28d4e3c6e832b1c27a62 [122]: https://github.com/box/box-ui-elements/issues/4123 [123]: https://github.com/box/box-ui-elements/commit/c166d7d49373168daed0eab315f2e90d4b0532a9 [124]: https://github.com/box/box-ui-elements/issues/4157 [125]: https://github.com/box/box-ui-elements/commit/269f5854c5c15a48c971207cf00bc2f1a98ccb97 [126]: https://github.com/box/box-ui-elements/issues/4117 [127]: https://github.com/box/box-ui-elements/commit/463839ee00c901cd9752106ca1a44e7a3906dc0b ## Box TypeScript SDK Generated v1.17.1 released ### Bug Fixes * Fix exports syntax when importing from `lib` ([#700][1]) ([`782a287`][2]) [1]: https://github.com/box/box-typescript-sdk-gen/issues/700 [2]: https://github.com/box/box-typescript-sdk-gen/commit/782a287efd3481fc056effcf83886f05bc9adbf9 ## Box CLI v4.3.0 released ### New Features and Enhancements * add agent support to `ai:ask` command ([#589][1]) ([`095f411`][2]) ### Bug Fixes * Fix support metadata query array ([#583][3]) ([`112db16`][4]) * Remove `description` flag from folders:create command ([#587][5]) ([`adca76b`][6]) [1]: https://github.com/box/boxcli/issues/589 [2]: https://github.com/box/boxcli/commit/095f4110274f67c5b1024de49a256b5bbe35cf18 [3]: https://github.com/box/boxcli/issues/583 [4]: https://github.com/box/boxcli/commit/112db160230e5bb75f84e44cb86a8372341dd8ad [5]: https://github.com/box/boxcli/issues/587 [6]: https://github.com/box/boxcli/commit/adca76b5fb03f62daf2104500b87f8a962382a35 ## Box TypeScript SDK Generated v1.17.0 released ### Bug Fixes * Bump `cypress` to resolve `CVE-2025-7783` in `form-data` (box/box-codegen[#769][1]) ([#677][2]) ([`077413e`][3]) ### New Features and Enhancements * Add AI spreadsheet processor (box/box-openapi[#533][4]) ([#649][5]) ([`254fb54`][6]) * Add Archive Public API (box/box-openapi[#540][7]) ([#674][8]) ([`1cbb124`][9]) * Add new Hubs APIs and Hubs items API (box/box-openapi[#538][10]) ([#666][11]) ([`25c9596`][12]) * Add new schema for `Metadata Error` (box/box-openapi[#539][13]) ([#667][14]) ([`9af46ab`][15]) * Allow injecting private key decryption mechanism for JWT (box/box-codegen[#754][16]) ([#656][17]) ([`cb0c35d`][18]) * Improve webhook validation checks (box/box-codegen[#745][19]) ([#647][20]) ([`98b3b92`][21]) * Retry request on network exception (box/box-codegen[#776][22]) ([#684][23]) ([`c0c4dba`][24]) * Support ESM build and tree-shaking (box/box-codegen[#762][25]) ([#663][26]) ([`8ca3302`][27]) * Support Hubs beta endpoints (box/box-openapi[#531][28]) ([#641][29]) ([`d8c7bb6`][30]) * Support new tools in AI Studio (box/box-openapi[#534][31]) ([#652][32]) ([`db2501b`][33]) [1]: https://github.com/box/box-typescript-sdk-gen/issues/769 [2]: https://github.com/box/box-typescript-sdk-gen/issues/677 [3]: https://github.com/box/box-typescript-sdk-gen/commit/077413ec525fad4d8ebc4c7209fce20046731295 [4]: https://github.com/box/box-typescript-sdk-gen/issues/533 [5]: https://github.com/box/box-typescript-sdk-gen/issues/649 [6]: https://github.com/box/box-typescript-sdk-gen/commit/254fb54d928ec3a76304674f341be1c67d78a143 [7]: https://github.com/box/box-typescript-sdk-gen/issues/540 [8]: https://github.com/box/box-typescript-sdk-gen/issues/674 [9]: https://github.com/box/box-typescript-sdk-gen/commit/1cbb12485a417b813df8b6918cf3721ae781a286 [10]: https://github.com/box/box-typescript-sdk-gen/issues/538 [11]: https://github.com/box/box-typescript-sdk-gen/issues/666 [12]: https://github.com/box/box-typescript-sdk-gen/commit/25c9596bc71fe88e0a2b6d5e01c65fa682c2fd38 [13]: https://github.com/box/box-typescript-sdk-gen/issues/539 [14]: https://github.com/box/box-typescript-sdk-gen/issues/667 [15]: https://github.com/box/box-typescript-sdk-gen/commit/9af46abe837ee0d812bcc15f1edf0d5a6530bfe0 [16]: https://github.com/box/box-typescript-sdk-gen/issues/754 [17]: https://github.com/box/box-typescript-sdk-gen/issues/656 [18]: https://github.com/box/box-typescript-sdk-gen/commit/cb0c35df4a5b3f9b8c611006dd33d480949a0d36 [19]: https://github.com/box/box-typescript-sdk-gen/issues/745 [20]: https://github.com/box/box-typescript-sdk-gen/issues/647 [21]: https://github.com/box/box-typescript-sdk-gen/commit/98b3b9293ff3f0e5922d0772d87504770bb9303c [22]: https://github.com/box/box-typescript-sdk-gen/issues/776 [23]: https://github.com/box/box-typescript-sdk-gen/issues/684 [24]: https://github.com/box/box-typescript-sdk-gen/commit/c0c4dbac40970d34da4c9e52fc43f029ae2f91a6 [25]: https://github.com/box/box-typescript-sdk-gen/issues/762 [26]: https://github.com/box/box-typescript-sdk-gen/issues/663 [27]: https://github.com/box/box-typescript-sdk-gen/commit/8ca33023d904edd596819c7c6df42022006274ed [28]: https://github.com/box/box-typescript-sdk-gen/issues/531 [29]: https://github.com/box/box-typescript-sdk-gen/issues/641 [30]: https://github.com/box/box-typescript-sdk-gen/commit/d8c7bb66736a3c4679b116916c61e2ead824a305 [31]: https://github.com/box/box-typescript-sdk-gen/issues/534 [32]: https://github.com/box/box-typescript-sdk-gen/issues/652 [33]: https://github.com/box/box-typescript-sdk-gen/commit/db2501bb13fc6ecebbb4c535b4a19c9be2cf64c2 ## Box Python SDK Generated v1.16.0 released ### Bug Fixes * Specify events `next_stream_position` property type as `int` (box/box-openapi[#535][1]) ([#644][2]) ([`64069db`][3]) ### New Features and Enhancements * Add AI spreadsheet processor (box/box-openapi[#533][4]) ([#630][5]) ([`6635757`][6]) * Add Archive Public API (box/box-openapi[#540][7]) ([#651][8]) ([`c36d1db`][9]) * Add new Hubs APIs and Hubs items API (box/box-openapi[#538][10]) ([#645][11]) ([`1daa3e8`][12]) * Add new property for network exception retry strategy (box/box-codegen[#763][13]) ([#650][14]) ([`13f9593`][15]) * Add new schema for `Metadata Error` (box/box-openapi[#539][16]) ([#646][17]) ([`49d7f34`][18]) * Allow injecting private key decryption mechanism for JWT (box/box-codegen[#754][19]) ([#636][20]) ([`4ea0af5`][21]) * Improve webhook validation checks (box/box-codegen[#745][22]) ([#628][23]) ([`f0ece63`][24]) * Support Hubs beta endpoints (box/box-openapi[#531][25]) ([#622][26]) ([`b5e95fe`][27]) * Support new tools in AI Studio (box/box-openapi[#534][28]) ([#633][29]) ([`ac76eb2`][30]) [1]: https://github.com/box/box-python-sdk-gen/issues/535 [2]: https://github.com/box/box-python-sdk-gen/issues/644 [3]: https://github.com/box/box-python-sdk-gen/commit/64069db8da33988c173380defd6be065daa02496 [4]: https://github.com/box/box-python-sdk-gen/issues/533 [5]: https://github.com/box/box-python-sdk-gen/issues/630 [6]: https://github.com/box/box-python-sdk-gen/commit/66357578218913240bc923cb0dc771157ec95f54 [7]: https://github.com/box/box-python-sdk-gen/issues/540 [8]: https://github.com/box/box-python-sdk-gen/issues/651 [9]: https://github.com/box/box-python-sdk-gen/commit/c36d1dbff42c89876c037983c792c5c7282459cc [10]: https://github.com/box/box-python-sdk-gen/issues/538 [11]: https://github.com/box/box-python-sdk-gen/issues/645 [12]: https://github.com/box/box-python-sdk-gen/commit/1daa3e8814403c78ed2a1d64187b8e4c379028fe [13]: https://github.com/box/box-python-sdk-gen/issues/763 [14]: https://github.com/box/box-python-sdk-gen/issues/650 [15]: https://github.com/box/box-python-sdk-gen/commit/13f9593dbc4a45d094ee5709d602188ef341a1a5 [16]: https://github.com/box/box-python-sdk-gen/issues/539 [17]: https://github.com/box/box-python-sdk-gen/issues/646 [18]: https://github.com/box/box-python-sdk-gen/commit/49d7f349e1be4e23939ef10db1edfc6042b98175 [19]: https://github.com/box/box-python-sdk-gen/issues/754 [20]: https://github.com/box/box-python-sdk-gen/issues/636 [21]: https://github.com/box/box-python-sdk-gen/commit/4ea0af5f8f5b5516a7c23d7912c34690c017db29 [22]: https://github.com/box/box-python-sdk-gen/issues/745 [23]: https://github.com/box/box-python-sdk-gen/issues/628 [24]: https://github.com/box/box-python-sdk-gen/commit/f0ece639d761c765b3bc59fbe3ba8582af755178 [25]: https://github.com/box/box-python-sdk-gen/issues/531 [26]: https://github.com/box/box-python-sdk-gen/issues/622 [27]: https://github.com/box/box-python-sdk-gen/commit/b5e95fe5b219d067028aa395170718eca0d62189 [28]: https://github.com/box/box-python-sdk-gen/issues/534 [29]: https://github.com/box/box-python-sdk-gen/issues/633 [30]: https://github.com/box/box-python-sdk-gen/commit/ac76eb2d7c5560b30c4cec171dd90b0a0ece4ab5 ## Box Dotnet SDK Generated v1.11.0 released ### Bug Fixes * Fix downscope token to use `retrieveToken` method for token retrieval (box/box-codegen[#731][1]) ([#492][2]) ([`292360e`][3]) * Specify events `next_stream_position` property type as `long` (box/box-openapi[#535][4]) ([#536][5]) ([`da265bd`][6]) ### New Features and Enhancements * Add `ReadOnlyCollection` implicit operator for Unions (box/box-codegen[#633][7]) ([#483][8]) ([`a1fc2c5`][9]) * Add AI spreadsheet processor (box/box-openapi[#533][10]) ([#519][11]) ([`c344023`][12]) * Add Archive Public API (box/box-openapi[#540][13]) ([#543][14]) ([`be0bb9d`][15]) * Add new Hubs APIs and Hubs items API (box/box-openapi[#538][16]) ([#537][17]) ([`f2584cd`][18]) * Add new schema for `Metadata Error` (box/box-openapi[#539][19]) ([#538][16]) ([`425b4ad`][20]) * add Shield Lists APIs (box/box-openapi[#528][21]) ([#496][22]) ([`8b81c87`][23]) * Allow injecting private key decryption mechanism for JWT (box/box-codegen[#754][24]) ([#528][21]) ([`865c729`][25]) * Make `OneOf` classes public (box/box-codegen[#773][26]) ([#551][27]) ([`f7dcc32`][28]) * Support Hubs beta endpoints (box/box-openapi[#531][29]) ([#511][30]) ([`59c43b8`][31]) * Support new tools in AI Studio (box/box-openapi[#534][32]) ([#520][33]) ([`0b47597`][34]) * Update legal holds and AI models (box/box-openapi[#526][35]) ([#494][36]) ([`6310e56`][37]) [1]: https://github.com/box/box-dotnet-sdk-gen/issues/731 [2]: https://github.com/box/box-dotnet-sdk-gen/issues/492 [3]: https://github.com/box/box-dotnet-sdk-gen/commit/292360efe86797e42dbfb388a5bd2f5b41efa0c1 [4]: https://github.com/box/box-dotnet-sdk-gen/issues/535 [5]: https://github.com/box/box-dotnet-sdk-gen/issues/536 [6]: https://github.com/box/box-dotnet-sdk-gen/commit/da265bd5c40defc4b2036811aefad59447faca09 [7]: https://github.com/box/box-dotnet-sdk-gen/issues/633 [8]: https://github.com/box/box-dotnet-sdk-gen/issues/483 [9]: https://github.com/box/box-dotnet-sdk-gen/commit/a1fc2c584021c151fc9d1815877ffe73c972f711 [10]: https://github.com/box/box-dotnet-sdk-gen/issues/533 [11]: https://github.com/box/box-dotnet-sdk-gen/issues/519 [12]: https://github.com/box/box-dotnet-sdk-gen/commit/c34402355243145a1cab7da78c6c2facde39fb36 [13]: https://github.com/box/box-dotnet-sdk-gen/issues/540 [14]: https://github.com/box/box-dotnet-sdk-gen/issues/543 [15]: https://github.com/box/box-dotnet-sdk-gen/commit/be0bb9d3e58f97bc87f749d08d828c990c71789b [16]: https://github.com/box/box-dotnet-sdk-gen/issues/538 [17]: https://github.com/box/box-dotnet-sdk-gen/issues/537 [18]: https://github.com/box/box-dotnet-sdk-gen/commit/f2584cd9be40b67eaa3a500411b367543a26f830 [19]: https://github.com/box/box-dotnet-sdk-gen/issues/539 [20]: https://github.com/box/box-dotnet-sdk-gen/commit/425b4add7975d49584c8ed18a791caf72559203c [21]: https://github.com/box/box-dotnet-sdk-gen/issues/528 [22]: https://github.com/box/box-dotnet-sdk-gen/issues/496 [23]: https://github.com/box/box-dotnet-sdk-gen/commit/8b81c879c8b8bb5c020ecb573e527e2a5d9f1701 [24]: https://github.com/box/box-dotnet-sdk-gen/issues/754 [25]: https://github.com/box/box-dotnet-sdk-gen/commit/865c729395556a3c4a8bb1f1418c3932d268bdc4 [26]: https://github.com/box/box-dotnet-sdk-gen/issues/773 [27]: https://github.com/box/box-dotnet-sdk-gen/issues/551 [28]: https://github.com/box/box-dotnet-sdk-gen/commit/f7dcc3262b289da55ebc6210c5656cc98e3b14b4 [29]: https://github.com/box/box-dotnet-sdk-gen/issues/531 [30]: https://github.com/box/box-dotnet-sdk-gen/issues/511 [31]: https://github.com/box/box-dotnet-sdk-gen/commit/59c43b868e46edd26be0be13a5e1772a4d731128 [32]: https://github.com/box/box-dotnet-sdk-gen/issues/534 [33]: https://github.com/box/box-dotnet-sdk-gen/issues/520 [34]: https://github.com/box/box-dotnet-sdk-gen/commit/0b47597f259884a2a5f567608e9e07997e3c6dc9 [35]: https://github.com/box/box-dotnet-sdk-gen/issues/526 [36]: https://github.com/box/box-dotnet-sdk-gen/issues/494 [37]: https://github.com/box/box-dotnet-sdk-gen/commit/6310e560df6d9520598295139f55ec8a0a4d69d9 ## Box Hubs APIs Box Hubs APIs enable you to programmatically create, manage, and collaborate on content hubs within your applications. Hubs provide a centralized space for organizing and sharing content across teams and projects. ## What you can do with the Hubs APIs The Hubs APIs consist of three main resource types that allow you to build comprehensive hub management functionality: 1. [Hubs][1] * Create hub * Copy hub * Update hub information by ID * Delete hub * List all hubs * List all hubs for requesting enterprise * Get hub information by ID 2. [Hub Collaborations][2] * Create hub collaboration * Update hub collaboration * Remove hub collaboration * Get hub collaborations * Get hub collaboration by collaboration ID 3. [Hub Items][3] * Get hub items * Manage hub items To learn more about using Box Hubs, visit the [Box Hubs support documentation][4]. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][5] for any help needed. [1]: https://developer.box.com/reference/v2025.0/resources/hub/ [2]: https://developer.box.com/reference/v2025.0/resources/hub-collaboration/ [3]: https://developer.box.com/reference/v2025.0/resources/hub-item/ [4]: https://support.box.com/hc/en-us/sections/26102544955027-Box-Hubs [5]: https://community.box.com/ ## Box Node SDK v3.8.2 released ### Bug Fixes * Bump `cypress/request` to resolve `CVE-2025-7783` in `form-data` ([#904][1]) ([`8e8d2da`][2]) [1]: https://github.com/box/box-node-sdk/issues/904 [2]: https://github.com/box/box-node-sdk/commit/8e8d2da58ab42bdfb9e5a49ca25e9b9fc50e0d61 ## Box AI API - Google Gemini 2.5 Pro now available, Gemini 2.5 Flash Preview and Pro Preview deprecated The list of [available AI models][1] has been recently updated with Google Gemini 2.5 Pro. The following models have been deprecated: * Google Gemini 2.5 Flash Preview * Google Gemini 2.5 Pro Preview For more information, see [retired models][deprecated]. Models offered in **Preview** mode have not been fully performance-tested at scale and are made available on an as-is basis. You may experience variability in model/output quality, availability, and accuracy. You can use the provided models to [override the default model][2] used in the AI agent configuration. For further details on Box AI API, see the [guides][3] and [API reference][4]. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][5] for any help needed. [1]: https://developer.box.com/guides/box-ai/supported-models/ [2]: https://box-ai/ai-agents/ai-agent-overrides [3]: https://developer.box.com/guides/box-ai [4]: https://developer.box.com/reference/post-ai-ask/ [5]: https://forum.box.com/ [deprecated]: https://cloud.google.com/vertex-ai/generative-ai/docs/learn/model-versions#expandable-1 ## Box Java SDK v4.16.3 released ### Bug Fixes * Fix compare message webhook message signature ([#1315][1]) ([`e2d407d`][2]) * Fix File Request Copy method to return valid data ([#1320][3]) ([`8392a43`][4]) [1]: https://github.com/box/box-java-sdk/issues/1315 [2]: https://github.com/box/box-java-sdk/commit/e2d407ded3370ffee6eb074044fd562629a904be [3]: https://github.com/box/box-java-sdk/issues/1320 [4]: https://github.com/box/box-java-sdk/commit/8392a437c1a738bebb4e7d0f84d6bf833c76bdf3 ## Enhanced extract agent Today we introduced the new enhanced extract agent powered by Gemini 2.5 Pro. It employs chain-of-thought processing to provide the best answer, but also to tell the developer the reason it believes this answer is the correct one. The enhanced extract agent: * Offers an improved key-value pair extraction from complex documents with higher accuracy. * Effortless access with Box UI: activate the feature with a single click. * Transforms unstructured data into meaningful metadata attached to files. * Enables faster insights and discovery using the Box Metadata search tool. Go to the Autofilling Metadata in Templates section in our [product documentation][1] to learn more about its capabilities. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][2] for any help needed. [1]: https://support.box.com/hc/en-us/articles/360044196173-Using-Metadata [2]: https://forum.box.com/ ## AI Studio v2 With the release of the newest version of the AI Studio functionality, we introduced the [enhancements][1] listed below. * **Users** receive a notification in case of any issues with an agent directly in the AI Studio UI. * Agents are validated in real time. The ones that don't pass validation are not visible for the users. **Admins** can: * Control the suggested questions displayed when the user starts interacting with a custom AI agent. * See the details of a request and response of a LLM, for example the system prompt, model, custom instructions. * Control the parameters of a Box AI image processor in a custom agent. The parameters are necessary to ask a LLM about a specific image. You can find more information in our [API][1] and [product documentation][2]. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][3] for any help needed. [1]: /reference/get-ai-agents/ [2]: https://support.box.com/hc/en-us/articles/37228357884179-Creating-and-Configuring-Agents [3]: https://forum.box.com/ ## Box CLI v4.2.0 released ### New Features and Enhancements * Setup proxy for Box CLI with TS SDK ([#577][1]) ([`ec42077`][2]) * Support `owned-by` flag when moving folder ([#580][3]) ([`2ec8e7f`][4]) * Support integration mappings for Teams ([#579][5]) ([`163a367`][6]) * Support metadata query with array ([#581][7]) ([`6750708`][8]) [1]: https://github.com/box/boxcli/issues/577 [2]: https://github.com/box/boxcli/commit/ec4207715360cc284574e1cbb573586218379517 [3]: https://github.com/box/boxcli/issues/580 [4]: https://github.com/box/boxcli/commit/2ec8e7fcf241dcd2c5841b8912e178e2384db426 [5]: https://github.com/box/boxcli/issues/579 [6]: https://github.com/box/boxcli/commit/163a36727c5f76b0e3b1c36049b3abae50148eb6 [7]: https://github.com/box/boxcli/issues/581 [8]: https://github.com/box/boxcli/commit/675070856eac6d06f2091203f4f19e41055dd97d ## Box TypeScript SDK Generated v1.16.0 released ### Bug Fixes * Compute webhook signature with and without escaping the body (box/box-codegen[#737][1]) ([#627][2]) ([`6a21b8e`][3]) * Fix circular dependency in `boxNetworkClient` (box/box-codegen[#708][4]) ([#591][5]) ([`b383889`][6]) * Fix downscope token to use `retrieveToken` method for token retrieval (box/box-codegen[#731][7]) ([#618][8]) ([`90edb0c`][9]) * Fix slash escaping when calculating webhook signature (box/box-codegen[#736][10]) ([#624][11]) ([`a0307d0`][12]) * Handle list of strings in metadata filter (box/box-codegen[#716][13]) ([#597][14]) ([`979ff2c`][15]) * Improve file download to avoid storing content in memory (box/box-codegen[#701][16]) ([#589][17]) ([`513a15e`][18]) * Modify utility functions for browser (box/box-codegen[#686][19]) ([#585][20]) ([`7232170`][21]) * Use constant-time comparison for HMAC signatures (box/box-codegen[#739][22]) ([#630][23]) ([`efdcaaf`][24]) ### New Features and Enhancements * Add AI agents warnings; allow for more types of metadata value (box/box-openapi[#520][25]) ([#600][26]) ([`a5a555f`][27]) * Add security settings properties on sign template schema (box/box-openapi[#518][28]) ([#588][29]) ([`dfd3e5f`][30]) * Add Shield Lists APIs (box/box-openapi[#528][31]) ([#622][32]) ([`be3af44`][33]) * Add support of IBM models to AI API (box/box-openapi[#522][34]) ([#601][35]) ([`b060b8c`][36]) * Increase max items for ai extract endpoints (box/box-openapi[#525][37]) ([#602][38]) ([`86c5d14`][39]) * Update legal holds and AI models (box/box-openapi[#526][40]) ([#620][41]) ([`de3df57`][42]) [1]: https://github.com/box/box-typescript-sdk-gen/issues/737 [2]: https://github.com/box/box-typescript-sdk-gen/issues/627 [3]: https://github.com/box/box-typescript-sdk-gen/commit/6a21b8ed54ef26041feccaa5481951355965e514 [4]: https://github.com/box/box-typescript-sdk-gen/issues/708 [5]: https://github.com/box/box-typescript-sdk-gen/issues/591 [6]: https://github.com/box/box-typescript-sdk-gen/commit/b383889b9fdc91c6cfed7169e4d36a22a8c8a0fa [7]: https://github.com/box/box-typescript-sdk-gen/issues/731 [8]: https://github.com/box/box-typescript-sdk-gen/issues/618 [9]: https://github.com/box/box-typescript-sdk-gen/commit/90edb0cc9bddc474c20b8b83770a4d314843edab [10]: https://github.com/box/box-typescript-sdk-gen/issues/736 [11]: https://github.com/box/box-typescript-sdk-gen/issues/624 [12]: https://github.com/box/box-typescript-sdk-gen/commit/a0307d0c4c5dfed1a66e395a1dfb4c8ff387561d [13]: https://github.com/box/box-typescript-sdk-gen/issues/716 [14]: https://github.com/box/box-typescript-sdk-gen/issues/597 [15]: https://github.com/box/box-typescript-sdk-gen/commit/979ff2c82edce9a969444febf1896d866ca154bf [16]: https://github.com/box/box-typescript-sdk-gen/issues/701 [17]: https://github.com/box/box-typescript-sdk-gen/issues/589 [18]: https://github.com/box/box-typescript-sdk-gen/commit/513a15eb28736d28d665324949d145dd3387d27d [19]: https://github.com/box/box-typescript-sdk-gen/issues/686 [20]: https://github.com/box/box-typescript-sdk-gen/issues/585 [21]: https://github.com/box/box-typescript-sdk-gen/commit/7232170fe7901cb7ba9ebf79ffc6a7c0b376a1c8 [22]: https://github.com/box/box-typescript-sdk-gen/issues/739 [23]: https://github.com/box/box-typescript-sdk-gen/issues/630 [24]: https://github.com/box/box-typescript-sdk-gen/commit/efdcaaf605fc6f14bbbf171e2797d73e97302bfe [25]: https://github.com/box/box-typescript-sdk-gen/issues/520 [26]: https://github.com/box/box-typescript-sdk-gen/issues/600 [27]: https://github.com/box/box-typescript-sdk-gen/commit/a5a555f835df5b550b9839e3e1fcff5d9f2b9f96 [28]: https://github.com/box/box-typescript-sdk-gen/issues/518 [29]: https://github.com/box/box-typescript-sdk-gen/issues/588 [30]: https://github.com/box/box-typescript-sdk-gen/commit/dfd3e5f7ecf8a8e49d79ed7df4d7e1f88f3e8537 [31]: https://github.com/box/box-typescript-sdk-gen/issues/528 [32]: https://github.com/box/box-typescript-sdk-gen/issues/622 [33]: https://github.com/box/box-typescript-sdk-gen/commit/be3af441a66da02254d38576bb9ec258142f6d2d [34]: https://github.com/box/box-typescript-sdk-gen/issues/522 [35]: https://github.com/box/box-typescript-sdk-gen/issues/601 [36]: https://github.com/box/box-typescript-sdk-gen/commit/b060b8c21a13abdfb12988f9c6e6beb014fa104f [37]: https://github.com/box/box-typescript-sdk-gen/issues/525 [38]: https://github.com/box/box-typescript-sdk-gen/issues/602 [39]: https://github.com/box/box-typescript-sdk-gen/commit/86c5d14bafe8789c306a1688bcf010207c302ca9 [40]: https://github.com/box/box-typescript-sdk-gen/issues/526 [41]: https://github.com/box/box-typescript-sdk-gen/issues/620 [42]: https://github.com/box/box-typescript-sdk-gen/commit/de3df57cc90577a49ea40de278bde423d17c4f06 ## Box Python SDK Generated v1.15.0 released ### Bug Fixes * Compute webhook signature with and without escaping the body (box/box-codegen[#737][1]) ([#607][2]) ([`e5118b8`][3]) * Fix downscope token to use `retrieveToken` method for token retrieval (box/box-codegen[#731][4]) ([#598][5]) ([`e492685`][6]) * Fix slash escaping when calculating webhook signature (box/box-codegen[#736][7]) ([#603][8]) ([`430b175`][9]) * Use constant-time comparison for HMAC signatures (box/box-codegen[#739][10]) ([#610][11]) ([`6f6660c`][12]) ### New Features and Enhancements * Add AI agents warnings; allow for more types of metadata value (box/box-openapi[#520][13]) ([#567][14]) ([`86aa1cc`][15]) * Add Shield Lists APIs (box/box-openapi[#528][16]) ([#601][17]) ([`f980f65`][18]) * Add support of IBM models to AI API (box/box-openapi[#522][19]) ([#568][20]) ([`767547a`][21]) * Update legal holds and AI models (box/box-openapi[#526][22]) ([#599][23]) ([`d56228d`][24]) [1]: https://github.com/box/box-python-sdk-gen/issues/737 [2]: https://github.com/box/box-python-sdk-gen/issues/607 [3]: https://github.com/box/box-python-sdk-gen/commit/e5118b8a257a042510374d91bd62a1f98c662fef [4]: https://github.com/box/box-python-sdk-gen/issues/731 [5]: https://github.com/box/box-python-sdk-gen/issues/598 [6]: https://github.com/box/box-python-sdk-gen/commit/e4926851edccd4ee7e66157050cedd0d01cec5ea [7]: https://github.com/box/box-python-sdk-gen/issues/736 [8]: https://github.com/box/box-python-sdk-gen/issues/603 [9]: https://github.com/box/box-python-sdk-gen/commit/430b1754ec840582e28a277c6c8d369cbe7ebdf5 [10]: https://github.com/box/box-python-sdk-gen/issues/739 [11]: https://github.com/box/box-python-sdk-gen/issues/610 [12]: https://github.com/box/box-python-sdk-gen/commit/6f6660c8f3aa2b7b75b0fcd4ed015d8d761cd77f [13]: https://github.com/box/box-python-sdk-gen/issues/520 [14]: https://github.com/box/box-python-sdk-gen/issues/567 [15]: https://github.com/box/box-python-sdk-gen/commit/86aa1ccadac9acead7bceeafb50e45f38eb2d9cc [16]: https://github.com/box/box-python-sdk-gen/issues/528 [17]: https://github.com/box/box-python-sdk-gen/issues/601 [18]: https://github.com/box/box-python-sdk-gen/commit/f980f6544a58a5c64ab0b3ec13b2771b81ea25ed [19]: https://github.com/box/box-python-sdk-gen/issues/522 [20]: https://github.com/box/box-python-sdk-gen/issues/568 [21]: https://github.com/box/box-python-sdk-gen/commit/767547ae070909852800c447e65cbcc95b97c5a3 [22]: https://github.com/box/box-python-sdk-gen/issues/526 [23]: https://github.com/box/box-python-sdk-gen/issues/599 [24]: https://github.com/box/box-python-sdk-gen/commit/d56228d81bd9777af5431ccc9d05233e13a0c2ed ## Box Node SDK v3.8.1 released ### Bug Fixes * Use constant-time comparison for HMAC signatures ([#893][1]) ([`d819efe`][2]) [1]: https://github.com/box/box-node-sdk/issues/893 [2]: https://github.com/box/box-node-sdk/commit/d819efe663a59fce53412fbe153a76dd346d4536 ## Box Java SDK v4.16.2 released ### Bug Fixes * Fix parsing `downloadFileCount` property for `BoxZipDownloadStatus` ([`50c2249`][1]) [1]: https://github.com/box/box-java-sdk/commit/50c2249ff5e0f0d1fdc99c9ff8786e9c134e58eb ## Box AI API - new AI models now available, Gemini 1.5 models deprecated The list of [available AI models][1] has been recently updated with the following models: * AWS Claude 4 Sonnet * AWS Claude 4 Opus The following models have been deprecated: * Google Gemini 1.5 Flash 001 * Google Gemini 1.5 Pro 001 For more information, see [retired models][deprecated]. Azure OpenAI GPT o4 Mini model was removed. Models offered in **Preview** mode have not been fully performance-tested at scale and are made available on an as-is basis. You may experience variability in model/output quality, availability, and accuracy. You can use the provided models to [override the default model][2] used in the AI agent configuration. For further details on Box AI API, see the [guides][3] and [API reference][4]. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][5] for any help needed. [1]: https://developer.box.com/guides/box-ai/supported-models/ [2]: https://box-ai/ai-agents/ai-agent-overrides [3]: https://developer.box.com/guides/box-ai [4]: https://developer.box.com/reference/post-ai-ask/ [5]: https://forum.box.com/ [deprecated]: https://cloud.google.com/vertex-ai/generative-ai/docs/learn/model-versions#expandable-1 ## Box CLI v4.1.0 released ### New Features and Enhancements * Support AI Extract endpoints ([#574][1]) ([`0b4ff6b`][2]) ### Bug Fixes * Remove incorrect `process.stderr.setEncoding` call ([`486779e`][3]), closes [#571][4] [1]: https://github.com/box/boxcli/issues/574 [2]: https://github.com/box/boxcli/commit/0b4ff6b63c8707c6842f3812d2a69071d195b799 [3]: https://github.com/box/boxcli/commit/486779ee3b8403805286b7ae6d3ab5c802c6f948 [4]: https://github.com/box/boxcli/issues/571 ## Box Dotnet SDK Generated v1.10.0 released ### New Features and Enhancements * Add `UploadWithPreflightCheck` convenient method (box/box-codegen[#705][1]) ([#469][2]) ([`8dff7bb`][3]) * Add AI agents warnings; allow for more types of metadata value (box/box-openapi[#520][4]) ([#474][5]) ([`a53cff5`][6]) * Add security settings properties on sign template schema (box/box-openapi[#518][7]) ([#462][8]) ([`7fddaea`][9]) * Add support of IBM models to AI API (box/box-openapi[#522][10]) ([#475][11]) ([`a187301`][12]) * Support sensitive data sanitization in errors (box/box-codegen[#695][13]) ([#453][14]) ([`5ee0c93`][15]) [1]: https://github.com/box/box-dotnet-sdk-gen/issues/705 [2]: https://github.com/box/box-dotnet-sdk-gen/issues/469 [3]: https://github.com/box/box-dotnet-sdk-gen/commit/8dff7bb859cd034d4e43b81c7c11b9a3fdb396e8 [4]: https://github.com/box/box-dotnet-sdk-gen/issues/520 [5]: https://github.com/box/box-dotnet-sdk-gen/issues/474 [6]: https://github.com/box/box-dotnet-sdk-gen/commit/a53cff54395db91bad179d3c5bbae9800c1b79dd [7]: https://github.com/box/box-dotnet-sdk-gen/issues/518 [8]: https://github.com/box/box-dotnet-sdk-gen/issues/462 [9]: https://github.com/box/box-dotnet-sdk-gen/commit/7fddaeab425a859dc1aa5dc3420891047d27efdf [10]: https://github.com/box/box-dotnet-sdk-gen/issues/522 [11]: https://github.com/box/box-dotnet-sdk-gen/issues/475 [12]: https://github.com/box/box-dotnet-sdk-gen/commit/a187301543d6741c77799b66fde0f12d4fca710d [13]: https://github.com/box/box-dotnet-sdk-gen/issues/695 [14]: https://github.com/box/box-dotnet-sdk-gen/issues/453 [15]: https://github.com/box/box-dotnet-sdk-gen/commit/5ee0c932254a0cd1cc7bc814c29fe5f9e2151462 ## Box UI Elements v23.3.0 released ### [23.3.0][1] (2025-05-12) ### Bug Fixes * **`commitlint`:** Bump to 19.8.0 ([#4083][2]) ([`7e9e6e5`][3]) * **flow-typed:** Bumped to 4.1.0 ([#4081][4]) ([`15b8108`][5]) * **flyout:** change logic for `onKeyPress` in `Flyout.js` ([#4096][6]) ([`f48c2a9`][7]) * **i18n:** update translations ([#4077][8]) ([`fe7752d`][9]) * **i18n:** update translations ([#4079][10]) ([`0f587f5`][11]) * **i18n:** update translations ([#4089][12]) ([`f48076d`][13]) * **i18n:** update translations ([#4091][14]) ([`9869175`][15]) * **i18n:** update translations ([#4097][16]) ([`e265cfe`][17]) * **metadata-sidebar:** Show all metadata fields fix ([#4090][18]) ([`e4dcdcb`][19]) * **`opensource`:** copy storybook files to root ([#4099][20]) ([`37c9cf0`][21]) * **sass-lint:** Remove sass-lint ([#4082][22]) ([`05d1e8b`][23]) ### Features * **`bp-assets`:** Bump BP assets to 4.39.0 ([#4095][24]) ([`15c403c`][25]) * **content-sidebar:** additional prop for feedback tooltip in Box AI ([#4075][26]) ([`bcd2b86`][27]) * **content-sidebar:** update content-answers for box ai sidebar ([#4094][28]) ([`8d4c456`][29]) * **metadata-sidebar:** Is delete confirmation modal checkbox enabled ([#4076][30]) ([`7e8c8ac`][31]) * **`metadataeditor`:** add agent selector ([#4098][32]) ([`f3af868`][33]) * **`metadataeditor`:** add ai extraction for folders ([#4080][34]) ([`82d6b29`][35]) * **notification-redesign:** Add Notification classname prop ([#4092][36]) ([`2dc371f`][37]) * **`opensource`:** update default route to use storybook ([#4087][38]) ([`174f335`][39]) * **unified-share-modal:** add custom permission descriptions ([#4071][40]) ([`19a7978`][41]) * upgrade blueprint packages ([#4101][42]) ([`f8606cf`][43]) ### Reverts * "chore(storybook): Bump to v8.6.12 ([#4069][44])" ([#4078][45]) ([`cbe4c0a`][46]) [1]: https://github.com/box/box-ui-elements/compare/v23.2.0...v23.3.0 [2]: https://github.com/box/box-ui-elements/issues/4083 [3]: https://github.com/box/box-ui-elements/commit/7e9e6e5ef30eb080313276f8549337710ecd875f [4]: https://github.com/box/box-ui-elements/issues/4081 [5]: https://github.com/box/box-ui-elements/commit/15b81086caf692986717f34e259d745fb6c34b04 [6]: https://github.com/box/box-ui-elements/issues/4096 [7]: https://github.com/box/box-ui-elements/commit/f48c2a92d8df6d731965dfa0d60d93c05f0c8e80 [8]: https://github.com/box/box-ui-elements/issues/4077 [9]: https://github.com/box/box-ui-elements/commit/fe7752d809f4946040bf18dec4a8a980b22c908e [10]: https://github.com/box/box-ui-elements/issues/4079 [11]: https://github.com/box/box-ui-elements/commit/0f587f522e1904b37fccf25bdfff98d1c3252aea [12]: https://github.com/box/box-ui-elements/issues/4089 [13]: https://github.com/box/box-ui-elements/commit/f48076d2cf967283dd5c9af95540ac1743a6ab71 [14]: https://github.com/box/box-ui-elements/issues/4091 [15]: https://github.com/box/box-ui-elements/commit/986917536c15345378b64bfc9e66d47ade83b930 [16]: https://github.com/box/box-ui-elements/issues/4097 [17]: https://github.com/box/box-ui-elements/commit/e265cfef405c9644863c612a72158dac0bc2c439 [18]: https://github.com/box/box-ui-elements/issues/4090 [19]: https://github.com/box/box-ui-elements/commit/e4dcdcb1ef5b9247b69b4b0666ac68c9ad82f6b2 [20]: https://github.com/box/box-ui-elements/issues/4099 [21]: https://github.com/box/box-ui-elements/commit/37c9cf06da4d17006f053cedbef6d4fedec09ed5 [22]: https://github.com/box/box-ui-elements/issues/4082 [23]: https://github.com/box/box-ui-elements/commit/05d1e8b9f094b35dc0494c09f30777be6cd4ce2c [24]: https://github.com/box/box-ui-elements/issues/4095 [25]: https://github.com/box/box-ui-elements/commit/15c403c402e135ff9f5f73da011633d6ac923e3d [26]: https://github.com/box/box-ui-elements/issues/4075 [27]: https://github.com/box/box-ui-elements/commit/bcd2b8698106ab5c03dcd44be7a948ab4a5cf203 [28]: https://github.com/box/box-ui-elements/issues/4094 [29]: https://github.com/box/box-ui-elements/commit/8d4c456dae84978341c3af572c81299ead047b9b [30]: https://github.com/box/box-ui-elements/issues/4076 [31]: https://github.com/box/box-ui-elements/commit/7e8c8ac824f53c9264e939ba396369412150e5d0 [32]: https://github.com/box/box-ui-elements/issues/4098 [33]: https://github.com/box/box-ui-elements/commit/f3af86837955e4ff7ebb0d3a938538139d9eeabf [34]: https://github.com/box/box-ui-elements/issues/4080 [35]: https://github.com/box/box-ui-elements/commit/82d6b29c40b1c70eae027d084396600aae36fdeb [36]: https://github.com/box/box-ui-elements/issues/4092 [37]: https://github.com/box/box-ui-elements/commit/2dc371fa6ea1a6a70dfd4f0fec05925fd581b7b3 [38]: https://github.com/box/box-ui-elements/issues/4087 [39]: https://github.com/box/box-ui-elements/commit/174f335b7bd80f1b75a03441a3e14afb50f3e82d [40]: https://github.com/box/box-ui-elements/issues/4071 [41]: https://github.com/box/box-ui-elements/commit/19a7978121ac005cecd8643584076d4f2f1864ee [42]: https://github.com/box/box-ui-elements/issues/4101 [43]: https://github.com/box/box-ui-elements/commit/f8606cf689b1468ebec5948e018bfa86b237705f [44]: https://github.com/box/box-ui-elements/issues/4069 [45]: https://github.com/box/box-ui-elements/issues/4078 [46]: https://github.com/box/box-ui-elements/commit/cbe4c0a22d3526f6090d8c67bce38dcb9d5a4772 ## Box Python SDK Generated v1.14.0 released ### Bug Fixes * set default timeouts for requests (box/box-codegen[#707][1]) ([#552][2]) ([`66b87c8`][3]) ### New Features and Enhancements * Add security settings properties on sign template schema (box/box-openapi[#518][4]) ([#543][5]) ([`0a45d21`][6]) * Support sensitive data sanitization in errors (box/box-codegen[#695][7]) ([#533][8]) ([`abb7b1d`][9]) [1]: https://github.com/box/box-python-sdk-gen/issues/707 [2]: https://github.com/box/box-python-sdk-gen/issues/552 [3]: https://github.com/box/box-python-sdk-gen/commit/66b87c8986ce2f5fdb3a9eac995ef8a9643bcd76 [4]: https://github.com/box/box-python-sdk-gen/issues/518 [5]: https://github.com/box/box-python-sdk-gen/issues/543 [6]: https://github.com/box/box-python-sdk-gen/commit/0a45d218d1aa3fa62da7b5c8c01506fb657c0b36 [7]: https://github.com/box/box-python-sdk-gen/issues/695 [8]: https://github.com/box/box-python-sdk-gen/issues/533 [9]: https://github.com/box/box-python-sdk-gen/commit/abb7b1d16a192edd99ff1fc4fb7c4caf79ee5f10 ## Box AI API - new AI models now available The list of [available AI models][1] has been recently updated with the following models: * Azure OpenAI o3 (beta) * Azure OpenAI o4 mini (beta) * xAI Grok 3 (beta) * xAI Grok 3 mini (beta) Models offered in **Preview** mode have not been fully performance-tested at scale and are made available on an as-is basis. You may experience variability in model/output quality, availability, and accuracy. You can use the provided models to [override the default model][2] used in the AI agent configuration. For further details on Box AI API, see the [guides][3] and [API reference][4]. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][5] for any help needed. [1]: https://developer.box.com/guides/box-ai/supported-models/ [2]: https://box-ai/ai-agents/ai-agent-overrides [3]: https://developer.box.com/guides/box-ai [4]: https://developer.box.com/reference/post-ai-ask/ [5]: https://forum.box.com/ ## Box AI API - new AI models now available The list of [available AI models][1] has been recently updated with the following models: * Azure OpenAI GPT-4.1 * Azure OpenAI GPT-4.1 Mini * Gemini 2.5 Pro Preview * Gemini 2.5 Flash Preview * IBM Llama 4 Scout * IBM Llama 3.2 Instruct Models offered in **Preview** mode have not been fully performance-tested at scale and are made available on an as-is basis. You may experience variability in model/output quality, availability, and accuracy. You can use the provided models to [override the default model][2] used in the AI agent configuration. For further details on Box AI API, see the [guides][3] and [API reference][4]. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][5] for any help needed. [1]: https://developer.box.com/guides/box-ai/supported-models/ [2]: https://box-ai/ai-agents/ai-agent-overrides [3]: https://developer.box.com/guides/box-ai [4]: https://developer.box.com/reference/post-ai-ask/ [5]: https://forum.box.com/ ## Box Java SDK v4.16.1 released ### Bug Fixes * use `Locale.ROOT` to prevent issues with non-US locales ([#1306][1]) ([`f083092`][2]) [1]: https://github.com/box/box-java-sdk/issues/1306 [2]: https://github.com/box/box-java-sdk/commit/f083092d5fdac37c93493945ab0c05ecdcdbc838 ## Box UI Elements v23.2.0 released ### [23.2.0][1] (2025-04-25) ### Bug Fixes * **content-answers:** fix CSS variable ([#4074][2]) ([`393d83b`][3]) * **i18n:** update translations ([#4072][4]) ([`dc1cf01`][5]) ### Features * **message-center:** Pass `badgeCount` to `ButtonComponent` ([#4068][6]) ([`e316267`][7]) * **unified-share-modal:** add remove collaborators ([#4070][8]) ([`4645733`][9]) [1]: https://github.com/box/box-ui-elements/compare/v23.1.0...v23.2.0 [2]: https://github.com/box/box-ui-elements/issues/4074 [3]: https://github.com/box/box-ui-elements/commit/393d83ba8c8882f6b136b38f933bfc17f5be0720 [4]: https://github.com/box/box-ui-elements/issues/4072 [5]: https://github.com/box/box-ui-elements/commit/dc1cf014f1bb84384244cf68d684d07bd6420d11 [6]: https://github.com/box/box-ui-elements/issues/4068 [7]: https://github.com/box/box-ui-elements/commit/e3162676d06dc330c42204b0871cc61140665c57 [8]: https://github.com/box/box-ui-elements/issues/4070 [9]: https://github.com/box/box-ui-elements/commit/4645733c1d5aad0a42cbabd130741bdd6923243e ## Box UI Elements v23.1.0 released ### [23.1.0][1] (2025-04-17) ### Bug Fixes * **axios:** Bump Axios to 0.30.0 ([#4039][2]) ([`e212834`][3]) * **content-explorer:** Add default dimension to `ItemListIcon` ([#4052][4]) ([`900757c`][5]) * **content-explorer:** improve theming feature ([#4045][6]) ([`5ad4a94`][7]) * **content-explorer:** remove base styles ([#4063][8]) ([`071f5b9`][9]) * **i18n:** update translations ([#4038][10]) ([`2977e50`][11]) * **i18n:** update translations ([#4040][12]) ([`6c89353`][13]) * **i18n:** update translations ([#4050][14]) ([`a6b5074`][15]) * **i18n:** update translations ([#4051][16]) ([`4f74362`][17]) * **i18n:** update translations ([#4056][18]) ([`5d2e63b`][19]) * **ip:** remove resolution ([#4057][20]) ([`8ad6f71`][21]) * **item-options:** render correctly when item actions are filtered ([#4042][22]) ([`ab56916`][23]) * **metadata-editor:** Handle new taxonomy API ([#4049][24]) ([`ed622af`][25]) * **stylelint:** Bump to v16 ([#4058][26]) ([`db6c93e`][27]) * **uaa-parity:** Display error message for UAA errors ([#4035][28]) ([`f9e9f35`][29]) * **uaa-parity:** Not showing fallback `promoted_by user` for empty `promoted_by user` ([#4043][30]) ([`a586a0a`][31]) ### Features * **content-explorer:** Add feature flag for `MetadataViewList` redesign ([#4061][32]) ([`5d0c716`][33]) * **content-explorer:** enable independent theming ([#4062][34]) ([`a67be72`][35]) * **content-picker:** Add `MoreOptions` button to rows ([#4036][36]) ([`f3667dc`][37]) * **content-sidebar:** added support for feedback tooltip in Box AI ([#4059][38]) ([`b09cbf3`][39]) * **doc-first-pages:** Add webp xrep header ([#4054][40]) ([`ca41b1a`][41]) * **metadata-sidebar:** Control Multilevel Taxonomy ([#4037][42]) ([`f705927`][43]) * **metadata-sidebar:** Multilevel taxonomy integration ([#4044][44]) ([`8a794ad`][45]) [1]: https://github.com/box/box-ui-elements/compare/v23.0.0...v23.1.0 [2]: https://github.com/box/box-ui-elements/issues/4039 [3]: https://github.com/box/box-ui-elements/commit/e212834b2c5ec6e64d6c5378e7b114c3526d21f4 [4]: https://github.com/box/box-ui-elements/issues/4052 [5]: https://github.com/box/box-ui-elements/commit/900757c6bdd760b31ad0ba7c717f3fe71a799ed3 [6]: https://github.com/box/box-ui-elements/issues/4045 [7]: https://github.com/box/box-ui-elements/commit/5ad4a94d9e3a8792ad32518272bb1aecf8cf47fc [8]: https://github.com/box/box-ui-elements/issues/4063 [9]: https://github.com/box/box-ui-elements/commit/071f5b9cdcadd0cfa15589dc47b1c3361299c0a7 [10]: https://github.com/box/box-ui-elements/issues/4038 [11]: https://github.com/box/box-ui-elements/commit/2977e5014e079a776f4316cc348512d182780f3a [12]: https://github.com/box/box-ui-elements/issues/4040 [13]: https://github.com/box/box-ui-elements/commit/6c89353911c1be3fa10ae411242e8fcd51aaa8d0 [14]: https://github.com/box/box-ui-elements/issues/4050 [15]: https://github.com/box/box-ui-elements/commit/a6b50746500ef6d6d8316c78a1703b5f943ddf89 [16]: https://github.com/box/box-ui-elements/issues/4051 [17]: https://github.com/box/box-ui-elements/commit/4f7436230d6450a60ea6444bcbb6faf5c17612b9 [18]: https://github.com/box/box-ui-elements/issues/4056 [19]: https://github.com/box/box-ui-elements/commit/5d2e63bff00cd5fe3cafb58ba9c5e2807d849fbc [20]: https://github.com/box/box-ui-elements/issues/4057 [21]: https://github.com/box/box-ui-elements/commit/8ad6f718ae32cba1104ceab2de08cabcc8da5ce2 [22]: https://github.com/box/box-ui-elements/issues/4042 [23]: https://github.com/box/box-ui-elements/commit/ab56916d4048acfecc03b0d1036791504a52caed [24]: https://github.com/box/box-ui-elements/issues/4049 [25]: https://github.com/box/box-ui-elements/commit/ed622af35a2a016a2e6df14b25b79f5488bb9e1d [26]: https://github.com/box/box-ui-elements/issues/4058 [27]: https://github.com/box/box-ui-elements/commit/db6c93ef9f7b6ff13fe9198b697ec45c3f303335 [28]: https://github.com/box/box-ui-elements/issues/4035 [29]: https://github.com/box/box-ui-elements/commit/f9e9f35ec07fd720d6148d4b324d5a342ac3e558 [30]: https://github.com/box/box-ui-elements/issues/4043 [31]: https://github.com/box/box-ui-elements/commit/a586a0a3da711ce1803a4e8999af839a668598fb [32]: https://github.com/box/box-ui-elements/issues/4061 [33]: https://github.com/box/box-ui-elements/commit/5d0c716f449bed05f3c638a00f292e6fe00a4b40 [34]: https://github.com/box/box-ui-elements/issues/4062 [35]: https://github.com/box/box-ui-elements/commit/a67be72dc9886094444627d97619d79195d67427 [36]: https://github.com/box/box-ui-elements/issues/4036 [37]: https://github.com/box/box-ui-elements/commit/f3667dc104c283287049e2c8ca43a46aa9bb1068 [38]: https://github.com/box/box-ui-elements/issues/4059 [39]: https://github.com/box/box-ui-elements/commit/b09cbf3cf18a36274410df5f0859675445e23cb1 [40]: https://github.com/box/box-ui-elements/issues/4054 [41]: https://github.com/box/box-ui-elements/commit/ca41b1ad22f89667b30e552040224abab3182c27 [42]: https://github.com/box/box-ui-elements/issues/4037 [43]: https://github.com/box/box-ui-elements/commit/f705927f9071950a59d4f3d5da1e141dad21d4b0 [44]: https://github.com/box/box-ui-elements/issues/4044 [45]: https://github.com/box/box-ui-elements/commit/8a794adb431d3dd7efd0518d0de4c3b361975c7d ## Box Java SDK v4.16.0 released ### New Features and Enhancements * Bump version of `zstd-jni` ([#1302][1]) ([`9ebf8b5`][2]) [1]: https://github.com/box/box-java-sdk/issues/1302 [2]: https://github.com/box/box-java-sdk/commit/9ebf8b5d16c0ab8f4aa19849fdaa86935d38b294 ## Box TypeScript SDK Generated v1.15.1 released ### Bug Fixes * Fix data sanitizer for TypeScript (box/box-codegen[#702][1]) ([#582][2]) ([`eb79c0f`][3]) [1]: https://github.com/box/box-typescript-sdk-gen/issues/702 [2]: https://github.com/box/box-typescript-sdk-gen/issues/582 [3]: https://github.com/box/box-typescript-sdk-gen/commit/eb79c0faa11f40667289155e71b8893a96eb558a ## Box TypeScript SDK Generated v1.15.0 released ### New Features and Enhancements * Support sensitive data sanitization in errors (box/box-codegen[#695][1]) ([#573][2]) ([`488e76a`][3]) [1]: https://github.com/box/box-typescript-sdk-gen/issues/695 [2]: https://github.com/box/box-typescript-sdk-gen/issues/573 [3]: https://github.com/box/box-typescript-sdk-gen/commit/488e76a1e1f66d5d4ac56b16e6a7dae9e7f497a1 ## Box Python SDK v3.14.0 released ### New Features and Enhancements * Add `stream_file_content` parameter to upload methods ([#890][1]) ([`0e63c00`][2]) [1]: https://github.com/box/box-python-sdk/issues/890 [2]: https://github.com/box/box-python-sdk/commit/0e63c002ee17618c08200c12caae4bb3890b1e90 ## Box Node SDK v3.8.0 released ### New Features and Enhancements * Support AI agent ([#887][1]) ([`5b109ad`][2]) [1]: https://github.com/box/box-node-sdk/issues/887 [2]: https://github.com/box/box-node-sdk/commit/5b109adbd506510fc83b1c90af13b063ddefab37 ## Box UI Elements v23.0.0 released ### [23.0.0][1] (2025-03-26) ### Features * BREAKING CHANGE noop to trigger major version release ([#4034][2]) ([`4e1751f`][3]) ### BREAKING CHANGES * update peer dependencies for `@box/` packages [1]: https://github.com/box/box-ui-elements/compare/v22.1.0...v23.0.0 [2]: https://github.com/box/box-ui-elements/issues/4034 [3]: https://github.com/box/box-ui-elements/commit/4e1751f4054f53bc62880dd3371893a853f93aa2 ## Box TypeScript SDK Generated v1.14.0 released ### Bug Fixes * Add `verification_phone_number` property to create sign request (box/box-openapi[#515][1]) ([#546][2]) ([`916502c`][3]) ### New Features and Enhancements * Add find app item for shared link endpoint (box/box-openapi[#514][4]) ([#545][5]) ([`7c32eaf`][6]) * Add Integration Mappings Teams API (box/box-openapi[#517][7]) ([#548][8]) ([`6ce1c7c`][9]) * Support upload with preflight check (box/box-codegen[#676][10]) ([#554][11]) ([`e3aa784`][12]) [1]: https://github.com/box/box-typescript-sdk-gen/issues/515 [2]: https://github.com/box/box-typescript-sdk-gen/issues/546 [3]: https://github.com/box/box-typescript-sdk-gen/commit/916502c47cb4936ab93a40b3f1552c1860173a8e [4]: https://github.com/box/box-typescript-sdk-gen/issues/514 [5]: https://github.com/box/box-typescript-sdk-gen/issues/545 [6]: https://github.com/box/box-typescript-sdk-gen/commit/7c32eaf2af3ef08299d9dd69e744304b20f4309f [7]: https://github.com/box/box-typescript-sdk-gen/issues/517 [8]: https://github.com/box/box-typescript-sdk-gen/issues/548 [9]: https://github.com/box/box-typescript-sdk-gen/commit/6ce1c7c78c9bc5d70383065e95f01bc8133fdd52 [10]: https://github.com/box/box-typescript-sdk-gen/issues/676 [11]: https://github.com/box/box-typescript-sdk-gen/issues/554 [12]: https://github.com/box/box-typescript-sdk-gen/commit/e3aa784b73c7b473fdf06c05c7f657a54fc08e4c ## Box Swift SDK Generated 0.6.1 released ### Bug Fixes * Add `verification_phone_number` property to create sign request (box/box-openapi[#515][1]) ([#391][2]) ([`717b3a8`][3]) ### New Features and Enhancements * Add find app item for shared link endpoint (box/box-openapi[#514][4]) ([#390][5]) ([`07b9be5`][6]) * Add hubs support to `/ai/ask` (box/box-codegen[#656][7]) ([#364][8]) ([`9a49864`][9]) * Add Integration Mappings Teams API (box/box-openapi[#517][10]) ([#393][11]) ([`b9ed4e3`][12]) * Expose token storage for authentication classes (box/box-codegen[#682][13]) ([#400][14]) ([`08221e5`][15]) * Support AI Studio API (box/box-codegen[#626][16]) ([#375][17]) ([`802571d`][18]) * Support unknown enum values (box/box-codegen[#670][19]) ([#382][20]) ([`8fe7ff4`][21]) * Support upload with preflight check (box/box-codegen[#676][22]) ([#399][23]) ([`1befb4c`][24]) * Update `/ai/extract_structured` response schema (box/box-codegen[#641][25]) ([#358][26]) ([`430611a`][27]) [1]: https://github.com/box/box-swift-sdk-gen/issues/515 [2]: https://github.com/box/box-swift-sdk-gen/issues/391 [3]: https://github.com/box/box-swift-sdk-gen/commit/717b3a8b285dfab92a9446cbd84443caa8dde148 [4]: https://github.com/box/box-swift-sdk-gen/issues/514 [5]: https://github.com/box/box-swift-sdk-gen/issues/390 [6]: https://github.com/box/box-swift-sdk-gen/commit/07b9be5d523f3d3fb89bdbb240e4ca9628a3736d [7]: https://github.com/box/box-swift-sdk-gen/issues/656 [8]: https://github.com/box/box-swift-sdk-gen/issues/364 [9]: https://github.com/box/box-swift-sdk-gen/commit/9a4986499eaefffdb4f2593968d59eaf030f516f [10]: https://github.com/box/box-swift-sdk-gen/issues/517 [11]: https://github.com/box/box-swift-sdk-gen/issues/393 [12]: https://github.com/box/box-swift-sdk-gen/commit/b9ed4e35d17f85c1d2bc2a4e9e148ae009551348 [13]: https://github.com/box/box-swift-sdk-gen/issues/682 [14]: https://github.com/box/box-swift-sdk-gen/issues/400 [15]: https://github.com/box/box-swift-sdk-gen/commit/08221e59cabc4042ea1d43bf578c2069ad66b444 [16]: https://github.com/box/box-swift-sdk-gen/issues/626 [17]: https://github.com/box/box-swift-sdk-gen/issues/375 [18]: https://github.com/box/box-swift-sdk-gen/commit/802571dd34977ae2ebf674dbdddd3e140829b819 [19]: https://github.com/box/box-swift-sdk-gen/issues/670 [20]: https://github.com/box/box-swift-sdk-gen/issues/382 [21]: https://github.com/box/box-swift-sdk-gen/commit/8fe7ff45fa4e45f743acd4450270d945b0afd393 [22]: https://github.com/box/box-swift-sdk-gen/issues/676 [23]: https://github.com/box/box-swift-sdk-gen/issues/399 [24]: https://github.com/box/box-swift-sdk-gen/commit/1befb4c1b4898375ea3ab353c7149fd10adc1f17 [25]: https://github.com/box/box-swift-sdk-gen/issues/641 [26]: https://github.com/box/box-swift-sdk-gen/issues/358 [27]: https://github.com/box/box-swift-sdk-gen/commit/430611a0036258d5f3ff8e1c6de0b833255ce0ed ## Box Python SDK Generated v1.13.0 released ### Bug Fixes * Add `verification_phone_number` property to create sign request (box/box-openapi[#515][1]) ([#503][2]) ([`6d19d19`][3]) ### New Features and Enhancements * Add find app item for shared link endpoint (box/box-openapi[#514][4]) ([#502][5]) ([`fd6c693`][6]) * Add Integration Mappings Teams API (box/box-openapi[#517][7]) ([#505][8]) ([`d1aa250`][9]) * Support upload with preflight check (box/box-codegen[#676][10]) ([#515][1]) ([`bb4597e`][11]) [1]: https://github.com/box/box-python-sdk-gen/issues/515 [2]: https://github.com/box/box-python-sdk-gen/issues/503 [3]: https://github.com/box/box-python-sdk-gen/commit/6d19d197481a578d7d5ad8d632ac6f5c06bd3dce [4]: https://github.com/box/box-python-sdk-gen/issues/514 [5]: https://github.com/box/box-python-sdk-gen/issues/502 [6]: https://github.com/box/box-python-sdk-gen/commit/fd6c6933f0fb518830e9ac810fd511a0cf60b429 [7]: https://github.com/box/box-python-sdk-gen/issues/517 [8]: https://github.com/box/box-python-sdk-gen/issues/505 [9]: https://github.com/box/box-python-sdk-gen/commit/d1aa250fb01fbf742daf266d4458ba2eab2c5669 [10]: https://github.com/box/box-python-sdk-gen/issues/676 [11]: https://github.com/box/box-python-sdk-gen/commit/bb4597e40d49e20eca44c4414e406b1352af1a2b ## Box Dotnet SDK Generated v1.9.0 released ### Bug Fixes * Add `verification_phone_number` property to create sign request (box/box-openapi[#515][1]) ([#427][2]) ([`d90faea`][3]) * Use `targetFramework` when single .Net version is supported (box/box-codegen[#684][4]) ([#438][5]) ([`4e64174`][6]) ### New Features and Enhancements * Add find app item for shared link endpoint (box/box-openapi[#514][7]) ([#426][8]) ([`4dc5dc1`][9]) * Add Integration Mappings Teams API (box/box-openapi[#517][10]) ([#429][11]) ([`92063c4`][12]) * Expose token storage for authentication classes (box/box-codegen[#682][13]) ([#435][14]) ([`413058e`][15]) [1]: https://github.com/box/box-dotnet-sdk-gen/issues/515 [2]: https://github.com/box/box-dotnet-sdk-gen/issues/427 [3]: https://github.com/box/box-dotnet-sdk-gen/commit/d90faea77650a37ce794a93c51bd9a8eb91f619c [4]: https://github.com/box/box-dotnet-sdk-gen/issues/684 [5]: https://github.com/box/box-dotnet-sdk-gen/issues/438 [6]: https://github.com/box/box-dotnet-sdk-gen/commit/4e64174c21c6f1dd2cef75f1f29ebe2ace92d852 [7]: https://github.com/box/box-dotnet-sdk-gen/issues/514 [8]: https://github.com/box/box-dotnet-sdk-gen/issues/426 [9]: https://github.com/box/box-dotnet-sdk-gen/commit/4dc5dc14e3c204c537180df166d07735ae1c4e40 [10]: https://github.com/box/box-dotnet-sdk-gen/issues/517 [11]: https://github.com/box/box-dotnet-sdk-gen/issues/429 [12]: https://github.com/box/box-dotnet-sdk-gen/commit/92063c435d7cb38a7eeca2e71f42e32b995a659a [13]: https://github.com/box/box-dotnet-sdk-gen/issues/682 [14]: https://github.com/box/box-dotnet-sdk-gen/issues/435 [15]: https://github.com/box/box-dotnet-sdk-gen/commit/413058e78cb69c89be6a819c0e63f9457bd7f2f5 ## Integration mappings for Teams Use the [integration mappings][1] feature for MS Teams to manage [where the content from Teams][2] channels and chats is stored in Box. * [List][3] all Teams integration mappings * [Create][4] a new Teams integration mapping * [Update][5] existing Teams integration mapping * [Delete][6] Teams integration mapping Check the integration mappings for Teams API developer [guide][7] to learn more about this feature. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][8] for any help needed. [1]: /reference/resources/integration-mapping-teams [2]: https://support.box.com/hc/en-us/articles/360050737154-Assigning-a-Default-Box-Folder-to-a-Teams-Channel-or-Chat [3]: /reference/resources/get-integration-mappings-teams [4]: /reference/resources/post-integration-mappings-teams [5]: /reference/resources/put-integration-mappings-teams-id [6]: /reference/resources/delete-integration-mappings-teams-id [7]: /guides/integration-mappings/teams-mappings/index [8]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## Box Java SDK v4.15.3 released ### Bug Fixes * trim `content-length` header value ([#1297][1]) ([`fa11d14`][2]) [1]: https://github.com/box/box-java-sdk/issues/1297 [2]: https://github.com/box/box-java-sdk/commit/fa11d141edf511eabc5f2398e55dc411d0cdcd31 ## Box TypeScript SDK Generated v1.13.2 released ### Bug Fixes * Fix `rollup` plugin output directory in Typescript (box/box-codegen[#678][1]) ([#543][2]) ([`f828d5e`][3]) [1]: https://github.com/box/box-typescript-sdk-gen/issues/678 [2]: https://github.com/box/box-typescript-sdk-gen/issues/543 [3]: https://github.com/box/box-typescript-sdk-gen/commit/f828d5e7e3079c48590e9766f0dccd25ee1af9ca ## Box TypeScript SDK Generated v1.13.1 released ### Bug Fixes * Split browser configuration in `package.json` for TypeScript (box/box-codegen[#672][1]) ([#538][2]) ([`ca7e291`][3]) [1]: https://github.com/box/box-typescript-sdk-gen/issues/672 [2]: https://github.com/box/box-typescript-sdk-gen/issues/538 [3]: https://github.com/box/box-typescript-sdk-gen/commit/ca7e29180e450cbb346a76aadfdade1062559b1e ## Box CLI v4.0.1 released ### Bug Fixes * Fix `configure:environments:set-current` command ([#568][1]) ([`dc0905f`][2]) [1]: https://github.com/box/boxcli/issues/568 [2]: https://github.com/box/boxcli/commit/dc0905f7b85a32373e93ec7726afb261223e9fac ## Box Java SDK v4.15.2 released ### Bug Fixes * Improve logging for API Request and API Response ([#1295][1]) ([`6eb1f57`][2]) [1]: https://github.com/box/box-java-sdk/issues/1295 [2]: https://github.com/box/box-java-sdk/commit/6eb1f57a584571b46daa14d045a36bca382493fa ## Box AI API - AWS Claude 3.7 Sonnet now available The list of [available AI models][1] has been recently updated with AWS Claude 3.7 Sonnet. Models offered in **Preview** mode have not been fully performance-tested at scale and are made available on an as-is basis. You may experience variability in model/output quality, availability, and accuracy. You can use the provided models to [override the default model][1] used in the AI agent configuration. For further details on Box AI API, see the [guides][2] and [API reference][3]. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][4] for any help needed. [1]: https://developer.box.com/guides/box-ai/supported-models/ [2]: https://developer.box.com/guides/box-ai [3]: https://developer.box.com/reference/post-ai-ask/ [4]: https://forum.box.com/ ## Box Java SDK v4.15.1 released ### Bug Fixes * Fix parsing content length header ([#1292][1]) ([`3bcf788`][2]) [1]: https://github.com/box/box-java-sdk/issues/1292 [2]: https://github.com/box/box-java-sdk/commit/3bcf788dd9849305aa2cc85b8e5f88b35803ecb2 ## Box TypeScript SDK Generated v1.13.0 released ### New Features and Enhancements * Support AI Studio API (box/box-codegen[#626][1]) ([#520][2]) ([`949b856`][3]) [1]: https://github.com/box/box-typescript-sdk-gen/issues/626 [2]: https://github.com/box/box-typescript-sdk-gen/issues/520 [3]: https://github.com/box/box-typescript-sdk-gen/commit/949b856ce1d77b1aa425b91b46440b46b383438a ## Box Dotnet SDK Generated v1.8.0 released ### Bug Fixes * Do not retry HTTP request when `TaskCanceledException` is thrown (box/box-codegen[#665][1]) ([#406][2]) ([`1af0a6a`][3]) ### New Features and Enhancements * Support AI Studio API (box/box-codegen[#626][4]) ([#409][5]) ([`9661450`][6]) [1]: https://github.com/box/box-dotnet-sdk-gen/issues/665 [2]: https://github.com/box/box-dotnet-sdk-gen/issues/406 [3]: https://github.com/box/box-dotnet-sdk-gen/commit/1af0a6aaf5f1e80f092ce506abe1cc01bf110bb8 [4]: https://github.com/box/box-dotnet-sdk-gen/issues/626 [5]: https://github.com/box/box-dotnet-sdk-gen/issues/409 [6]: https://github.com/box/box-dotnet-sdk-gen/commit/966145021d4a1dd450cd199cc9ed3e9457f5a141 ## Box Java SDK v4.15.0 released ### New Features and Enhancements * Add `canNonOwnersViewCollaborators` flag to `BoxFolder` ([#1288][1]) ([`9119adc`][2]) * Support `zstd` encoding for downloads ([#1287][3]) ([`0e3c4c0`][4]) ### Bug Fixes * Fix AI dialogue history ([#1289][5]) ([`29b6519`][6]) [1]: https://github.com/box/box-java-sdk/issues/1288 [2]: https://github.com/box/box-java-sdk/commit/9119adceae35e892e73ed61ed30cf82ad912960d [3]: https://github.com/box/box-java-sdk/issues/1287 [4]: https://github.com/box/box-java-sdk/commit/0e3c4c07e65ef1887cd5c393e3daf98aeb50ee47 [5]: https://github.com/box/box-java-sdk/issues/1289 [6]: https://github.com/box/box-java-sdk/commit/29b651987a5cbeead4b129cab20970f983cb6889 ## Box AI Studio API We are excited to announce that Box AI Studio API is now available to all Enterprise Advanced customers. [Box AI Studio][ai-studio] allows you to build and manage custom AI agents to best suit your business needs. For example, you can create an AI agent that acts as a compliance consultant, answering questions regarding customer documentation with specific compliance rules in mind. Box AI Studio API allows you to: * List all AI agents * Get AI agent details * Create a new AI agent * Update existing AI agent * Delete an AI agent Check the Box AI Studio API developer [guide][guide] to learn more about this feature and check the [API Reference][reference] for details. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][community] for any help needed. [ai-studio]: https://support.box.com/hc/en-us/articles/37228079461267-Enabling-Box-AI-Studio-and-Managing-Agents [community]: https://community.box.com/ [guide]: https://developer.box.com/guides/ai-studio/getting-started-ai-studio [reference]: https://developer.box.com/reference/get-ai-agents/ ## Box Python SDK Generated v1.11.1 released ### Bug Fixes * Fix proxy usage (box/box-codegen[#662][1]) ([#476][2]) ([`e1d62ac`][3]) [1]: https://github.com/box/box-python-sdk-gen/issues/662 [2]: https://github.com/box/box-python-sdk-gen/issues/476 [3]: https://github.com/box/box-python-sdk-gen/commit/e1d62ac5a8063bf37244329329100752c3a069af ## Box TypeScript SDK Generated v1.12.0 released ### New Features and Enhancements * Add Box Sign shared requests (box/box-openapi[#504][1]) ([#491][2]) ([`e90255c`][3]) * feat: Add hubs support to `/ai/ask`. Replace type of `items` property from `AiItemBase[]` to `AiItemAsk[]` in the `AiAsk` interface (box/box-codegen[#656][4]) ([#507][5]) ([`9f29d8c`][6]) * Update `/ai/extract_structured` response schema (box/box-codegen[#641][7]) ([#498][8]) ([`502ac11`][9]) [1]: https://github.com/box/box-typescript-sdk-gen/issues/504 [2]: https://github.com/box/box-typescript-sdk-gen/issues/491 [3]: https://github.com/box/box-typescript-sdk-gen/commit/e90255c5d97a7a1a10dd529b58426142c5c6f0d4 [4]: https://github.com/box/box-typescript-sdk-gen/issues/656 [5]: https://github.com/box/box-typescript-sdk-gen/issues/507 [6]: https://github.com/box/box-typescript-sdk-gen/commit/9f29d8cb1f1d3b8c7625da1ddb9f2abd62d133f0 [7]: https://github.com/box/box-typescript-sdk-gen/issues/641 [8]: https://github.com/box/box-typescript-sdk-gen/issues/498 [9]: https://github.com/box/box-typescript-sdk-gen/commit/502ac11a2ad4e56fceece0deb6a15dbfc8b429ff ## Box Python SDK Generated v1.11.0 released ### Bug Fixes * Correct types of `paged` and `thumb` properties in File representation (box/box-openapi[#503][1]) ([#451][2]) ([`e818fa6`][3]) ### New Features and Enhancements * Add Box Sign shared requests (box/box-openapi[#504][4]) ([#453][5]) ([`3590918`][6]) * feat: Add hubs support to `/ai/ask`. Replace type of `items` parameter from `List[AiItemBase]` to `List[AiItemAsk]` in `create_ai_ask` method (box/box-openapi[#506][7]) ([#466][8]) ([`29f0364`][9]) * Update `/ai/extract_structured` response schema (box/box-codegen[#641][10]) ([#459][11]) ([`7c73cea`][12]) [1]: https://github.com/box/box-python-sdk-gen/issues/503 [2]: https://github.com/box/box-python-sdk-gen/issues/451 [3]: https://github.com/box/box-python-sdk-gen/commit/e818fa6c9c80e61a293fc24ed6f1a15978681662 [4]: https://github.com/box/box-python-sdk-gen/issues/504 [5]: https://github.com/box/box-python-sdk-gen/issues/453 [6]: https://github.com/box/box-python-sdk-gen/commit/359091873d26111b82f000e7837553cc799f2433 [7]: https://github.com/box/box-python-sdk-gen/issues/506 [8]: https://github.com/box/box-python-sdk-gen/issues/466 [9]: https://github.com/box/box-python-sdk-gen/commit/29f03649f3ec1471e859609d2b8bd77ad5d09106 [10]: https://github.com/box/box-python-sdk-gen/issues/641 [11]: https://github.com/box/box-python-sdk-gen/issues/459 [12]: https://github.com/box/box-python-sdk-gen/commit/7c73ceaa8888332b23bca4d6b64ef4999f942940 ## Box Dotnet SDK Generated v1.7.0 released ### Bug Fixes * Correct types of `paged` and `thumb` properties in File representation (box/box-openapi[#503][1]) ([#383][2]) ([`d6995ad`][3]) * Prevent `Authentication` header from being passed during cross-origin redirects (box/box-codegen[#648][4]) ([#382][5]) ([`a64d373`][6]) ### New Features and Enhancements * Add Box Sign shared requests (box/box-openapi[#504][7]) ([#384][8]) ([`d563886`][9]) * feat: Add hubs support to /ai/ask. Replace type of `Items` property from `IReadOnlyList` to `IReadOnlyList` in the `AiAsk` class (box/box-codegen[#656][10]) ([#397][11]) ([`32b6d03`][12]) * Update `/ai/extract_structured` response schema (box/box-codegen[#641][13]) ([#391][14]) ([`5f79a03`][15]) [1]: https://github.com/box/box-dotnet-sdk-gen/issues/503 [2]: https://github.com/box/box-dotnet-sdk-gen/issues/383 [3]: https://github.com/box/box-dotnet-sdk-gen/commit/d6995ad8ffa4f2cceb8195ffbfb6606f934a671f [4]: https://github.com/box/box-dotnet-sdk-gen/issues/648 [5]: https://github.com/box/box-dotnet-sdk-gen/issues/382 [6]: https://github.com/box/box-dotnet-sdk-gen/commit/a64d373a935cd2a8e6f72184b8dc129a973e9d45 [7]: https://github.com/box/box-dotnet-sdk-gen/issues/504 [8]: https://github.com/box/box-dotnet-sdk-gen/issues/384 [9]: https://github.com/box/box-dotnet-sdk-gen/commit/d563886f2a2f48a20df13600f9c25ff95198a56f [10]: https://github.com/box/box-dotnet-sdk-gen/issues/656 [11]: https://github.com/box/box-dotnet-sdk-gen/issues/397 [12]: https://github.com/box/box-dotnet-sdk-gen/commit/32b6d03aba97c18a8901efe98fc60c74e10197ce [13]: https://github.com/box/box-dotnet-sdk-gen/issues/641 [14]: https://github.com/box/box-dotnet-sdk-gen/issues/391 [15]: https://github.com/box/box-dotnet-sdk-gen/commit/5f79a03453b9339a26eb130113d8f55748f0d912 ## Box CLI v4.0.0 released ### ⚠ BREAKING CHANGES * Drop support old Node version and integrate typescript SDK ([#548][1]) ### New Features and Enhancements * Drop support old Node version and integrate typescript SDK ([#548][1]) ([`22179ec`][2]) * Incognito browser option for box login ([#561][3]) ([`a666766`][4]) * Replace `@oclif/command` to `@oclif/core` library ([#553][5]) ([`aed470b`][6]) ### Bug Fixes * Respect using environment `defaultAsUserId` for CCG Auth and OAuth ([#554][7]) ([`b3a691e`][8]) [1]: https://github.com/box/boxcli/issues/548 [2]: https://github.com/box/boxcli/commit/22179ecfc68b8dd315339ac204a7274d712d5a8e [3]: https://github.com/box/boxcli/issues/561 [4]: https://github.com/box/boxcli/commit/a6667664d6b43fd80de9e57482b0f4138efcd6cf [5]: https://github.com/box/boxcli/issues/553 [6]: https://github.com/box/boxcli/commit/aed470b22d28ed19040b4417e3143f3323b9a916 [7]: https://github.com/box/boxcli/issues/554 [8]: https://github.com/box/boxcli/commit/b3a691e8c886f7bb3a25ae8f7986f284a695f046 ## Box Java SDK v4.14.0 released ### New Features and Enhancements * Support downloading file from shared link ([#1282][1]) ([`9b7f28b`][2]) ### Bug Fixes * Remove sensitive data when `BoxAPIException` logs request ([#1284][3]) ([`f1e226f`][4]) * Support creating ongoing Legal Hold policy with start date ([#1281][5]) ([`d9564e2`][6]) [1]: https://github.com/box/box-java-sdk/issues/1282 [2]: https://github.com/box/box-java-sdk/commit/9b7f28b0288977513b0db3ed4f800647545e1f2c [3]: https://github.com/box/box-java-sdk/issues/1284 [4]: https://github.com/box/box-java-sdk/commit/f1e226f710c301202acff067ef34687ddbb57b7b [5]: https://github.com/box/box-java-sdk/issues/1281 [6]: https://github.com/box/box-java-sdk/commit/d9564e2e86ea110af933ca3dd0f728111d7140ae ## Box Doc Gen We are excited to announce that [Box Doc Gen][2] is now available to all **Enterprise Advanced** customers. [Box Doc Gen][1] allows you to generate various business documents based on Box Doc Gen templates uploaded to Box, with data fields that can be dynamically filled using Box Doc Gen API. Box Doc Gen functionality allows you to: * [Mark files as Doc Gen templates][3]. * [Generate documents][4]. * Check status of the [Box Doc Gen jobs][5] Check the [Box Doc Gen developer guides][1] to learn more about Box Doc Gen and check the [API Reference][6] for Box Doc Gen API details. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][7] for any help needed. [1]: https://developer.box.com/guides/docgen [2]: /guides/docgen/docgen-getting-started/ [3]: /guides/docgen/mark-template/ [4]: /guides/docgen/generate-document/ [5]: /guides/docgen/docgen-jobs/ [6]: /reference/post-docgen-templates/ [7]: https://forum.box.com/ ## Google PaLM deprecation and removal `Google Pathways Language Models (PaLM)` are being deprecated by `Google`. As a result, the following models will be removed from Box AI on 2025-01-17 * `text_bison` * `text_bison_32k` * `text_unicorn` * `google_text_embedding_gecko*` If you are using one of these models via agent override, check our [list of supported models](https://developer.box.com/guides/box-ai/ai-agents/) here. ## Box TypeScript SDK Generated v1.10.0 released ### Bug Fixes * Remove unused parameter from `SignRequest` (box/box-openapi[#489][1]) ([#450][2]) ([`f5683b7`][3]) ### New Features and Enhancements * Add support for replacing the network client implementation (box/box-codegen[#629][4]) ([#454][5]) ([`1cb7ddb`][6]) * Allow for customizing retry strategy (box/box-codegen[#635][7]) ([#457][8]) ([`530ca33`][9]) * Support webhook message validation (box/box-codegen[#631][10]) ([#455][11]) ([`09765a4`][12]) [1]: https://github.com/box/box-typescript-sdk-gen/issues/489 [2]: https://github.com/box/box-typescript-sdk-gen/issues/450 [3]: https://github.com/box/box-typescript-sdk-gen/commit/f5683b703625dd8d504ca52100f692cb8440a474 [4]: https://github.com/box/box-typescript-sdk-gen/issues/629 [5]: https://github.com/box/box-typescript-sdk-gen/issues/454 [6]: https://github.com/box/box-typescript-sdk-gen/commit/1cb7ddb3ada79cebc27fbfce9df90cd8ebad353c [7]: https://github.com/box/box-typescript-sdk-gen/issues/635 [8]: https://github.com/box/box-typescript-sdk-gen/issues/457 [9]: https://github.com/box/box-typescript-sdk-gen/commit/530ca33ff3635581bd8ee91a82bc9f000b18812b [10]: https://github.com/box/box-typescript-sdk-gen/issues/631 [11]: https://github.com/box/box-typescript-sdk-gen/issues/455 [12]: https://github.com/box/box-typescript-sdk-gen/commit/09765a42fe25f15095bd1bd0d1377f2da222c9e4 ## Box Python SDK Generated v1.9.0 released ### Bug Fixes * Remove unused parameter from `SignRequest` (box/box-openapi[#489][1]) ([#411][2]) ([`578d9b4`][3]) ### New Features and Enhancements * Add `ai_agent` info to `AiResponse` (box/box-openapi[#485][4]) ([#402][5]) ([`351a5b8`][6]) * Add support for replacing the network client implementation (box/box-codegen[#629][7]) ([#415][8]) ([`fb118dd`][9]) * Allow for customizing retry strategy (box/box-codegen[#635][10]) ([#418][11]) ([`8dfb3ed`][12]) * Support optional `userId` parameter for updating files, folders and web links (box/box-openapi[#488][13]) ([#406][14]) ([`d9cff4c`][15]) * Support webhook message validation (box/box-codegen[#631][16]) ([#416][17]) ([`0fec20b`][18]) [1]: https://github.com/box/box-python-sdk-gen/issues/489 [2]: https://github.com/box/box-python-sdk-gen/issues/411 [3]: https://github.com/box/box-python-sdk-gen/commit/578d9b48da7e55d2e3e4736c871400dc90d826b1 [4]: https://github.com/box/box-python-sdk-gen/issues/485 [5]: https://github.com/box/box-python-sdk-gen/issues/402 [6]: https://github.com/box/box-python-sdk-gen/commit/351a5b8dfbc8a0095bafbbf0245d8575217fc3c9 [7]: https://github.com/box/box-python-sdk-gen/issues/629 [8]: https://github.com/box/box-python-sdk-gen/issues/415 [9]: https://github.com/box/box-python-sdk-gen/commit/fb118ddb1cbfb1d6a72e657bed57088fdff1ec02 [10]: https://github.com/box/box-python-sdk-gen/issues/635 [11]: https://github.com/box/box-python-sdk-gen/issues/418 [12]: https://github.com/box/box-python-sdk-gen/commit/8dfb3ed13196de37a78a53325079e284c7e921d5 [13]: https://github.com/box/box-python-sdk-gen/issues/488 [14]: https://github.com/box/box-python-sdk-gen/issues/406 [15]: https://github.com/box/box-python-sdk-gen/commit/d9cff4c6adc9c5cc9ce1edf73dffe8ac5979ce71 [16]: https://github.com/box/box-python-sdk-gen/issues/631 [17]: https://github.com/box/box-python-sdk-gen/issues/416 [18]: https://github.com/box/box-python-sdk-gen/commit/0fec20b281fe195f0dd6aaf8f164bdd414587fc4 ## Upcoming breaking change: Box AI API - Extract Structured We would like to announce a planned breaking change in the Box AI API - Extract Structured endpoint. This change will bring improvements to the response by introducing additional fields and nesting the metadata key-value pairs within the answer object. **This change is planned to be released mid-January**. Be sure to follow our [changelog][1] and announcements on our [Box Developer Blog][2]. Expand to see code snippets examples: Current response example: ```js theme={null} { "name": "Marie", "date": "10/2/23" } ``` New response format example: ```js theme={null} { "answer": { "name": "Marie", "date": "10/2/23" }, "completion_reason": "done", "created_at": "2012-12-12T10:53:43-08:00" } ``` [1]: https://developer.box.com/changelog/ [2]: https://medium.com/box-developer-blog ## Box TypeScript SDK Generated v1.9.0 released ### Bug Fixes * Fix signature of `beforeRequest` method in `Interceptor` interface (box/box-codegen[#625][1]) ([#446][2]) ([`ef2e765`][3]) ### New Features and Enhancements * Add `aiAgent` info to `AiResponse` (box/box-codegen[#624][4]) ([#440][5]) ([`24c2013`][6]) * Support optional `userId` parameter for updating files, folders and web links (box/box-openapi[#488][7]) ([#445][8]) ([`874f259`][9]) [1]: https://github.com/box/box-typescript-sdk-gen/issues/625 [2]: https://github.com/box/box-typescript-sdk-gen/issues/446 [3]: https://github.com/box/box-typescript-sdk-gen/commit/ef2e7658cab705906325e40d6c7c6e96e5703201 [4]: https://github.com/box/box-typescript-sdk-gen/issues/624 [5]: https://github.com/box/box-typescript-sdk-gen/issues/440 [6]: https://github.com/box/box-typescript-sdk-gen/commit/24c20131b8275d43ecb02f3c94ac8e6116de3ea9 [7]: https://github.com/box/box-typescript-sdk-gen/issues/488 [8]: https://github.com/box/box-typescript-sdk-gen/issues/445 [9]: https://github.com/box/box-typescript-sdk-gen/commit/874f259ce12e8440301ffb1b2b65a6765b87803f ## CrowdStrike integration with Box CrowdStrike is an endpoint detection tool integrated with Box to monitor endpoint activity. This means, CrowdStrike monitors devices that connect to Box and your Box organization, analyzing data about the connection and the device to identify potential threat activity. The integration with CrowdStrike comes with additional [events in the event stream][1] that can be triggered for an enterprise. For example, the `EDR_CROWDSTRIKE_DEVICE_DETECTED` event is triggered when a new device is detected by the the CrowdStrike Falcon platform. The full list includes the following events: * `EDR_CROWDSTRIKE_DEVICE_DETECTED` * `EDR_CROWDSTRIKE_NO_BOX_TOOLS` * `EDR_CROWDSTRIKE_BOX_TOOLS_OUTDATED` * `EDR_CROWDSTRIKE_DRIVE_OUTDATED` * `EDR_CROWDSTRIKE_ACCESS_ALLOWED_NO_CROWDSTRIKE_DEVICE` * `EDR_CROWDSTRIKE_ACCESS_REVOKED` ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][2] for any help needed. [1]: /guides/events/enterprise-events/for-enterprise#event-types [2]: https://forum.box.com/ ## Box Dotnet SDK Generated v1.5.0 released ### Bug Fixes * Support status codes with no content (box/box-codegen[#604][1]) ([#314][2]) ([`57747d5`][3]) * Update collaboration, metadata and collection resources (box/box-openapi[#483][4]) ([#316][5]) ([`d331f8a`][6]) ### New Features and Enhancements * Add optional URL parameter to `FetchResponse` (box/box-codegen[#617][7]) ([#331][8]) ([`61484ec`][9]) * Allow using default credentials for proxy (box/box-codegen[#623][10]) ([#334][11]) ([`bc4636e`][12]), closes [#333][13] * Expose method for making custom HTTP requests (box/box-codegen[#622][14]) ([#329][15]) ([`e689140`][16]) * Support get collection by ID endpoint (box/box-codegen[#595][17]) ([#304][18]) ([`9ebf59a`][19]) [1]: https://github.com/box/box-dotnet-sdk-gen/issues/604 [2]: https://github.com/box/box-dotnet-sdk-gen/issues/314 [3]: https://github.com/box/box-dotnet-sdk-gen/commit/57747d50c48dd4c433dad342a5e2a20ac0b15952 [4]: https://github.com/box/box-dotnet-sdk-gen/issues/483 [5]: https://github.com/box/box-dotnet-sdk-gen/issues/316 [6]: https://github.com/box/box-dotnet-sdk-gen/commit/d331f8a1f7110e5e00df170cedef85af682d58b4 [7]: https://github.com/box/box-dotnet-sdk-gen/issues/617 [8]: https://github.com/box/box-dotnet-sdk-gen/issues/331 [9]: https://github.com/box/box-dotnet-sdk-gen/commit/61484ec9fbf96c0ae62116ec1ee0cbb50aae7493 [10]: https://github.com/box/box-dotnet-sdk-gen/issues/623 [11]: https://github.com/box/box-dotnet-sdk-gen/issues/334 [12]: https://github.com/box/box-dotnet-sdk-gen/commit/bc4636e64859fd7d0b1449ec34b6144d0eb1a768 [13]: https://github.com/box/box-dotnet-sdk-gen/issues/333 [14]: https://github.com/box/box-dotnet-sdk-gen/issues/622 [15]: https://github.com/box/box-dotnet-sdk-gen/issues/329 [16]: https://github.com/box/box-dotnet-sdk-gen/commit/e689140d6d3be772ff2370e7de5797707df7bdad [17]: https://github.com/box/box-dotnet-sdk-gen/issues/595 [18]: https://github.com/box/box-dotnet-sdk-gen/issues/304 [19]: https://github.com/box/box-dotnet-sdk-gen/commit/9ebf59ae388aa9aec5d8a0a3551f13e544c7571d ## Box TypeScript SDK Generated v1.8.0 released ### Bug Fixes * Fix `additionalProperties` in `ClientError` (box/box-openapi[#477][1]) ([#385][2]) ([`4547148`][3]) * Fix chunked uploads in browser (box/box-codegen[#619][4]) ([#436][5]) ([`0af2484`][6]) * Support status codes with no content (box/box-codegen[#604][7]) ([#415][8]) ([`c3f14c6`][9]) * Update client error schema to support schema errors (box/box-openapi[#467][10]) ([#381][11]) ([`b845f12`][12]) * Update integration mapping response description (box/box-openapi[#463][13]) ([#379][14]) ([`e3d71e1`][15]) ### New Features and Enhancements * Add AI LLM endpoint AWS `params` (box/box-openapi[#478][16]) ([#388][17]) ([`d2fd1ec`][18]) * Expose method for making custom HTTP requests, convert `FetchOptions` into a class (box/box-codegen[#610][19]) ([#431][20]) ([`9a9ea62`][21]) * Support get collection by ID endpoint (box/box-codegen[#595][22]) ([#396][23]) ([`f1f47be`][24]) * Support getting file download URL and file thumbnail URL (box/box-codegen[#617][25]) ([#435][26]) ([`1cb4d5d`][27]) * Support `nullable` fields in TypeScript (box/box-codegen[#612][28]) ([#425][29]) ([`991dc29`][30]) [1]: https://github.com/box/box-typescript-sdk-gen/issues/477 [2]: https://github.com/box/box-typescript-sdk-gen/issues/385 [3]: https://github.com/box/box-typescript-sdk-gen/commit/454714861019998b1fc6b7c44696b0178ffa022b [4]: https://github.com/box/box-typescript-sdk-gen/issues/619 [5]: https://github.com/box/box-typescript-sdk-gen/issues/436 [6]: https://github.com/box/box-typescript-sdk-gen/commit/0af2484dd8387cce1a8c235068ac3f834f8ecf42 [7]: https://github.com/box/box-typescript-sdk-gen/issues/604 [8]: https://github.com/box/box-typescript-sdk-gen/issues/415 [9]: https://github.com/box/box-typescript-sdk-gen/commit/c3f14c6af55ab78ed5dc981909c67397b0d7219e [10]: https://github.com/box/box-typescript-sdk-gen/issues/467 [11]: https://github.com/box/box-typescript-sdk-gen/issues/381 [12]: https://github.com/box/box-typescript-sdk-gen/commit/b845f12d194d5f4e0cfd66db1db294e2f9a9bff8 [13]: https://github.com/box/box-typescript-sdk-gen/issues/463 [14]: https://github.com/box/box-typescript-sdk-gen/issues/379 [15]: https://github.com/box/box-typescript-sdk-gen/commit/e3d71e100500c5fa9e478b5228fd395f68242cf2 [16]: https://github.com/box/box-typescript-sdk-gen/issues/478 [17]: https://github.com/box/box-typescript-sdk-gen/issues/388 [18]: https://github.com/box/box-typescript-sdk-gen/commit/d2fd1ec4bddb19b353e286908c99477e08b90457 [19]: https://github.com/box/box-typescript-sdk-gen/issues/610 [20]: https://github.com/box/box-typescript-sdk-gen/issues/431 [21]: https://github.com/box/box-typescript-sdk-gen/commit/9a9ea628fd21001437d92b32f1760d5ba14cb46b [22]: https://github.com/box/box-typescript-sdk-gen/issues/595 [23]: https://github.com/box/box-typescript-sdk-gen/issues/396 [24]: https://github.com/box/box-typescript-sdk-gen/commit/f1f47bebfc0981a5e67f301b6fc2e3a8568d5845 [25]: https://github.com/box/box-typescript-sdk-gen/issues/617 [26]: https://github.com/box/box-typescript-sdk-gen/issues/435 [27]: https://github.com/box/box-typescript-sdk-gen/commit/1cb4d5d93fbd94b952b876457008973a92d5aa23 [28]: https://github.com/box/box-typescript-sdk-gen/issues/612 [29]: https://github.com/box/box-typescript-sdk-gen/issues/425 [30]: https://github.com/box/box-typescript-sdk-gen/commit/991dc29bc805bf0c5198277142efb9a85de1dd42 ## Box Python SDK Generated v1.8.0 released ### Bug Fixes * Fix enums usage (box/box-codegen[#615][1]) ([#387][2]) ([`a9abccb`][3]), closes [#385][4] * Support status codes with no content (box/box-codegen[#604][5]) ([#378][6]) ([`051716c`][7]) * Update collaboration, metadata and collection resources (box/box-openapi[#483][8]) ([#380][9]) ([`0d45fed`][10]) ### New Features and Enhancements * Expose method for making custom HTTP requests (box/box-codegen[#610][11]) ([#393][12]) ([`55a23d9`][13]) * Support getting file download URL and file thumbnail URL (box/box-codegen[#617][14]) ([#397][15]) ([`fd609ab`][16]) [1]: https://github.com/box/box-python-sdk-gen/issues/615 [2]: https://github.com/box/box-python-sdk-gen/issues/387 [3]: https://github.com/box/box-python-sdk-gen/commit/a9abccb8e552c971774ea1a9fa2096395a40317b [4]: https://github.com/box/box-python-sdk-gen/issues/385 [5]: https://github.com/box/box-python-sdk-gen/issues/604 [6]: https://github.com/box/box-python-sdk-gen/issues/378 [7]: https://github.com/box/box-python-sdk-gen/commit/051716c84b4f0ab32b82608f94e3cf3ba09b390b [8]: https://github.com/box/box-python-sdk-gen/issues/483 [9]: https://github.com/box/box-python-sdk-gen/issues/380 [10]: https://github.com/box/box-python-sdk-gen/commit/0d45fedc0b7b96234ef3901f412f259b1cae4c1a [11]: https://github.com/box/box-python-sdk-gen/issues/610 [12]: https://github.com/box/box-python-sdk-gen/issues/393 [13]: https://github.com/box/box-python-sdk-gen/commit/55a23d9d6840642c248ab3b967ad5c2635484c8c [14]: https://github.com/box/box-python-sdk-gen/issues/617 [15]: https://github.com/box/box-python-sdk-gen/issues/397 [16]: https://github.com/box/box-python-sdk-gen/commit/fd609ab9fe94da43b1a71815597c49471e157bb8 ## Box Java SDK v4.13.1 released ### Bug Fixes * Correctly calculate `Content-Length` when reading from a stream ([#1277][1]) ([`b1d5371`][2]) [1]: https://github.com/box/box-java-sdk/issues/1277 [2]: https://github.com/box/box-java-sdk/commit/b1d5371491abe1729a95eb9dc39d375135c8681d ## Apps & Integrations naming convention changes We are changing the naming convention for apps & integrations to improve the clarity and consistency of our platform. ## Developers | Current name | Target name | Location | | ------------ | -------------------- | --------------------------------------------------------------------------------- | | App Center | Publishing | A tab for submitting platform apps for publication in Box Integrations catalog | | Integrations | Box Web Integrations | A tab where you define the third-party application buttons within the Box Web app | | Custom apps | Platform apps | Developer Console | ## Admins | Current name | Target name | Location | | ------------------- | --------------------- | ------------- | | Apps | Integrations | Admin Console | | Custom Apps Manager | Platform Apps Manager | Admin Console | | Custom apps | Platform Apps | Admin Console | ## Box Shield | Current name | Target name | Location | | ------------------------------ | ----------------------- | ------------------------ | | Application restriction policy | Integration restriction | Restriction policies | | Shield Application | Shield Integration | Shield integration lists | | Applications | Integrations | Detection Rules | ## Users | Current name | Target name | Location | | ------------ | ------------ | ------------------------- | | Apps | Integrations | A tab in the Box web-app. | ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][1] for any help needed. [1]: https://forum.box.com/ ## Box Python SDK Generated v1.7.0 released ### New Features and Enhancements * Support get collection by ID endpoint (box/box-codegen[#595][1]) ([#366][2]) ([`1db5722`][3]), closes [#355][4] [1]: https://github.com/box/box-codegen/issues/595 [2]: https://github.com/box/box-codegen/issues/366 [3]: https://github.com/box/box-codegen/commit/1db5722f7d02694739f1a52a6b2ebe0c406960b0 [4]: https://github.com/box/box-codegen/issues/355 ## Box Dotnet SDK Generated v1.4.0 released ### Bug Fixes * Change `QueryParams` type in `MetadataQuery` from `Dictionary` to `Dictionary` (box/box-openapi[#479][1]) ([#298][2]) ([`656b495`][3]) * Fix conversion to `RSAKey` (box/box-codegen[#591][4]) ([#297][5]) ([`068b1f7`][6]) ### New Features and Enhancements * add AI LLM endpoint AWS `params`. Change the type from `AiLlmEndpointParamsGoogleOrAiLlmEndpointParamsOpenAi` to `AiLlmEndpointParamsAwsOrAiLlmEndpointParamsGoogleOrAiLlmEndpointParamsOpenAi` (box/box-openapi[#478][7]) ([#291][8]) ([`dcb8a20`][9]) [1]: https://github.com/box/box-codegen/issues/479 [2]: https://github.com/box/box-codegen/issues/298 [3]: https://github.com/box/box-codegen/commit/656b495bea779879bb82b2cda0cca5a30a8ad8ca [4]: https://github.com/box/box-codegen/issues/591 [5]: https://github.com/box/box-codegen/issues/297 [6]: https://github.com/box/box-codegen/commit/068b1f7b3ea3c62647e03e0e17176bde049949db [7]: https://github.com/box/box-codegen/issues/478 [8]: https://github.com/box/box-codegen/issues/291 [9]: https://github.com/box/box-codegen/commit/dcb8a201577be08b644266c157db45cd6797c71c ## Box Python SDK Generated v1.6.0 released ### Bug Fixes * Set stream position to 0 for multipart requests (box/box-codegen[#581][1]) ([#348][2]) ([`fa6942c`][3]) * Update client error schema (box/box-openapi[#467][4]) ([#347][5]) ([`a42a253`][6]) * Use original stream position when retrying requests (box/box-codegen[#583][7]) ([#358][8]) ([`060b4dc`][9]) * use raw `docstrings` when comments contain backslash (box/box-codegen[#571][10]) ([#330][11]) ([`8dd8cb7`][12]) ### New Features and Enhancements * Add `download_file_to_output_stream` method to `DownloadsManager` (box/box-codegen[#575][13]) ([#334][14]) ([`6820d08`][15]) * add AI LLM endpoint AWS `params` (box/box-openapi[#478][16]) ([#354][17]) ([`c8fa2c1`][18]) [1]: https://github.com/box/box-codegen/issues/581 [2]: https://github.com/box/box-codegen/issues/348 [3]: https://github.com/box/box-codegen/commit/fa6942c231024947250955ccc52f352744ab5f38 [4]: https://github.com/box/box-codegen/issues/467 [5]: https://github.com/box/box-codegen/issues/347 [6]: https://github.com/box/box-codegen/commit/a42a2532337c79d20b6524fda0acf717d9ccbd5f [7]: https://github.com/box/box-codegen/issues/583 [8]: https://github.com/box/box-codegen/issues/358 [9]: https://github.com/box/box-codegen/commit/060b4dc2b8bbbc1e17cce0fc049394e0527952b7 [10]: https://github.com/box/box-codegen/issues/571 [11]: https://github.com/box/box-codegen/issues/330 [12]: https://github.com/box/box-codegen/commit/8dd8cb71105c200bd03f5f894a4dbfb42baf0865 [13]: https://github.com/box/box-codegen/issues/575 [14]: https://github.com/box/box-codegen/issues/334 [15]: https://github.com/box/box-codegen/commit/6820d08f37c5c0605a580391bef2dc4f2a384c00 [16]: https://github.com/box/box-codegen/issues/478 [17]: https://github.com/box/box-codegen/issues/354 [18]: https://github.com/box/box-codegen/commit/c8fa2c1131154d07a500290db6a7b34b06005c2b ## Box Dotnet SDK Generated v1.3.1 released ### Bug Fixes * properly serialize `StringEnum` list when inside query `params` ([#288][1]) ([`dac8392`][2]) * update client error schema to support schema errors (box/box-openapi[#467][3]) ([#281][4]) ([`bef2632`][5]) * update integration mapping response description (box/box-openapi[#463][6]) ([#279][7]) ([`05e07b0`][8]) [1]: https://github.com/box/box-codegen/issues/288 [2]: https://github.com/box/box-codegen/commit/dac839280b43f4bd954d3966032ff4925150c061 [3]: https://github.com/box/box-codegen/issues/467 [4]: https://github.com/box/box-codegen/issues/281 [5]: https://github.com/box/box-codegen/commit/bef2632af99f0477bd009bcb91248c678b4e1bab [6]: https://github.com/box/box-codegen/issues/463 [7]: https://github.com/box/box-codegen/issues/279 [8]: https://github.com/box/box-codegen/commit/05e07b025c234de4c4161e567c0919748d24f804 ## Box AI API - AWS AI models now available The list of [available AI models][1] has been recently updated with the following AWS models: * AWS Claude 3 Sonnet * AWS Claude 3.5 Sonnet * AWS Claude 3 Haiku * AWS Titan Text Lite Models offered in **Preview** mode have not been fully performance-tested at scale and are made available on an as-is basis. You may experience variability in model/output quality, availability, and accuracy. You can use the provided models to [override the default model][1] used in the AI agent configuration. For further details on Box AI API, see the [guides][2] and [API reference][3]. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][4] for any help needed. [1]: https://developer.box.com/guides/box-ai/supported-models/ [2]: https://developer.box.com/guides/box-ai [3]: https://developer.box.com/reference/post-ai-ask/ [4]: https://forum.box.com/ ## Box AI API — Document Q\&A and Box AI API — Text Generation generally available We are excited to announce that [Box AI API — Document Q\&A][2] and [Box AI API — Text Generation][3] features are now available to all **Enterprise Plus** customers. [Box AI API][1] allows you to use Box AI functionality in your custom applications. For example, you can implement Box AI question and answer functionality in your third party applications,or generate content right in your product’s content editor. You can also extract metadata from the provided documents. *Endpoints related to metadata extraction are currently a beta feature offered subject to Box’s Main Beta Agreement, and the available capabilities may change.* Currently, Box AI functionality allows you to: * Get responses to your questions. * Get a summary of a document. * Generate text you can use in your documents. * Extract metadata from the provided file in a flexible way, meaning you have more freedom when using the prompt. * Extract metadata from the provided file using a [metadata template][4] or the `fields` structure. * Fetch and override the default API model configuration. Check the [Box AI API developer guides][1] to learn more about Box AI and check the [API Reference][5] for Box AI API details. ## Box AI for UI Elements [Box AI for UI Elements][6] enhances [Content Preview][7] with Box AI - Document Q\&A and Text Generation functionality. The enhanced Box AI for UI Elements allows the users to embed AI functionality in their custom applications to facilitate answering questions, summarizing a document, adding citations and using dialogue history, and formatting support. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][8] for any help needed. [1]: https://developer.box.com/guides/box-ai [2]: /guides/box-ai/ai-tutorials/ask-questions/ [3]: /guides/box-ai/ai-tutorials/generate-text/ [4]: https://support.box.com/hc/en-us/articles/360044194033-Customizing-Metadata-Templates [5]: /reference/ai-agent-ask/ [6]: /guides/embed/ui-elements/preview#box-ai-ui-element [7]: /guides/embed/ui-elements/preview [8]: https://forum.box.com/ ## Box UI Elements v22.0.0 released ### [22.0.0][1] (2024-10-21) ### Bug Fixes * resolve missing exports for `esbuild` ([#3719][2]) ([`495f19e`][3]) * **content-answers:** Bump content-answers ([#3713][4]) ([`21c2de1`][5]) * **content-uploader:** resolve `ItemAction` issues ([#3631][6]) ([`ba299b1`][7]) * **docgen-sidebar:** add collapsible component to hide nested tags ([#3626][8]) ([`3480efb`][9]) * **draft-js:** Upgraded to 0.11.7 ([#3580][10]) ([`179ff9f`][11]) * **hubs:** fix shared link text ([#3657][12]) ([`a938524`][13]) * **i18n:** update translations ([#3603][14]) ([`a467823`][15]) * **i18n:** update translations ([#3607][16]) ([`8ad18b8`][17]) * **i18n:** update translations ([#3612][18]) ([`4bfceaa`][19]) * **i18n:** update translations ([#3615][20]) ([`945fa23`][21]) * **i18n:** update translations ([#3619][22]) ([`bc011eb`][23]) * **i18n:** update translations ([#3620][24]) ([`62a9ef7`][25]) * **i18n:** update translations ([#3627][26]) ([`ae5cc3d`][27]) * **i18n:** update translations ([#3633][28]) ([`13894ca`][29]) * **i18n:** update translations ([#3636][30]) ([`0bee28b`][31]) * **i18n:** update translations ([#3639][32]) ([`83b403c`][33]) * **i18n:** update translations ([#3643][34]) ([`4cf5b3d`][35]) * **i18n:** update translations ([#3648][36]) ([`297fabf`][37]) * **i18n:** update translations ([#3653][38]) ([`7b0e0fb`][39]) * **i18n:** update translations ([#3659][40]) ([`41a17fe`][41]) * **i18n:** update translations ([#3667][42]) ([`1f77bce`][43]) * **i18n:** update translations ([#3673][44]) ([`7e5f7c1`][45]) * **i18n:** update translations ([#3674][46]) ([`ebe8348`][47]) * **i18n:** update translations ([#3679][48]) ([`4bf65f8`][49]) * **i18n:** update translations ([#3683][50]) ([`549188a`][51]) * **i18n:** update translations ([#3686][52]) ([`9927e53`][53]) * **i18n:** update translations ([#3689][54]) ([`47e7a6b`][55]) * **i18n:** update translations ([#3692][56]) ([`d2e59c8`][57]) * **i18n:** update translations ([#3694][58]) ([`1850977`][59]) * **i18n:** update translations ([#3697][60]) ([`665aedf`][61]) * **i18n:** update translations ([#3701][62]) ([`fe9f7cc`][63]) * **i18n:** update translations ([#3705][64]) ([`fa89f87`][65]) * **i18n:** update translations ([#3711][66]) ([`b6b61bf`][67]) * **metadata-instance-editor:** Fix support link ([#3671][68]) ([`b82687e`][69]) * **metadata-sidebar:** fix loading states ([#3684][70]) ([`5c54eb5`][71]) * **metadata-sidebar:** Fix metadata sidebar AI capabilities ([#3681][72]) ([`fd164ec`][73]) * **metadata-sidebar:** Fix storybook tests ([#3695][74]) ([`8326472`][75]) * **metadata-sidebar:** handle `onCancel` action for editing templates ([#3669][76]) ([`6ad083b`][77]) * **metadata-sidebar:** `UnsavedChangesModal` changes ([#3691][78]) ([`305d3af`][79]) * **notification:** unblock UI beneath Notification ([#3661][80]) ([`33b34d9`][81]) * **quick-search:** Quick Search buttons and footer navigation ([#3623][82]) ([`0427112`][83]) * **quick-search:** Quick Search Navigation ([#3622][84]) ([`b814223`][85]) * clean up eslint and configs ([#3584][86]) ([`c0ff8d7`][87]), closes [#3583][88] * resolve changes from `box/frontend` ([#3590][89]) ([`1d91171`][90]) * **quick-search:** Quick filter navigation ([#3582][91]) ([`6880f67`][92]) * upgrade react-popper ([#3583][88]) ([`13396e4`][93]) ### Features * **taxonomy:** added view/create/updated taxonomy field support ([#3716][94]) ([`cccb0b0`][95]) * `noop` for BREAKING CHANGE blueprint peer dependency ([#3721][96]) ([`5a117ae`][97]) * **api:** add handling empty metadata suggestions ([#3608][98]) ([`ecd4c80`][99]) * **api:** Extend `getMetadata` in Metadata API ([#3611][100]) ([`765f592`][101]) * **blueprint:** Added blueprint ([#3585][102]) ([`0f2d876`][103]) * **boxai-sidebar:** `BoxAISidebar` header added ([#3698][104]) ([`130b6b6`][105]) * **boxai-sidebar:** Empty Sidebar for Box AI ([#3668][106]) ([`611377c`][107]) * **content-answers:** Upgrade Content Answers ([#3658][108]) ([`002d496`][109]), closes [#3626][8] * **content-explorer-modal-container:** add optional info notice ([#3634][110]) ([`20d4c3f`][111]) * **content-sidebar:** add archived date to content preview sidebar ([#3625][112]) ([`10e68f3`][113]) * **content-sidebar:** Add data-target-id to menu items ([#3610][114]) ([`cf05167`][115]) * **content-sidebar:** Add placeholder `metadatasidebar` redesigned ([#3570][116]) ([`6a0d7ee`][117]) * **content-sidebar:** disable version modifications for archive file ([#3637][118]) ([`e735c4c`][119]) * **content-sidebar:** pass `metadata.aiSuggestions` flag into redesigned sidebar ([#3665][120]) ([`b672f70`][121]) * **metadata-sidebar:** Add handler for `Autofill` button ([#3700][122]) ([`95735e0`][123]) * **metadata-sidebar:** Add metadata instance list ([#3664][124]) ([`b4e4b01`][125]), closes [#3605][126] * **metadata-sidebar:** disable delete button ([#3677][127]) ([`2941a97`][128]) * **metadata-sidebar:** Handle create metadata instance ([#3663][129]) ([`321ba7e`][130]) * **metadata-sidebar:** handle delete metadata instance ([#3662][131]) ([`f6abd4e`][132]) * **metadata-sidebar:** handle update metadata instance ([#3672][133]) ([`ef79e44`][134]) * **metadata-sidebar:** Metadata sidebar redesign ([#3654][135]) ([`fe4fede`][136]), closes [#3606][137] * **metadata-sidebar:** pass `areAiSuggestionsAvailable` based on file ext ([#3675][138]) ([`dc074cf`][139]) * **metadata-sidebar:** tab content styles change ([#3708][140]) ([`f7c06a4`][141]) * **taxonomy:** added metadata options endpoint ([#3678][142]) ([`47ba331`][143]) * **taxonomy:** added metadata taxonomy field support ([#3710][144]) ([`3a0c27e`][145]) * **uaa-logging:** Log UAA Parity data ([#3629][146]) ([`6cb5d8f`][147]) * **unified-share-modal:** add custom avatars click handler ([#3688][148]) ([`c034de4`][149]) * **update\_app\_activity\_item:** Add permissions field ([#3680][150]) ([`c521c11`][151]) * support `/2.0/ai/extract_structured` endpoint ([#3596][152]) ([`dee4eee`][153]) * **unified-share-modal:** added targeting attribute ([#3592][154]) ([`e26f1f1`][155]) * support metadata suggestions API ([#3571][156]) ([`c985402`][157]), closes [#3565][158] ### Performance Improvements * **content-answers:** lazy load content answers in preview ([#3720][159]) ([`ec115f7`][160]) ### Reverts * **content-explorer:** Revert rename dialog ([#3704][161]) ([`13b8c99`][162]), closes [#3666][163] ### BREAKING CHANGES * blueprint-web and blueprint-web-assets peer dependencies [1]: https://github.com/box/box-ui-elements/compare/v21.0.0...v22.0.0 [2]: https://github.com/box/box-ui-elements/issues/3719 [3]: https://github.com/box/box-ui-elements/commit/495f19e20c8e3d6b7ab9fe8b6f5c3f833d1c5c46 [4]: https://github.com/box/box-ui-elements/issues/3713 [5]: https://github.com/box/box-ui-elements/commit/21c2de1b3e64ff4766c36ed18a1e720ff79ae5b6 [6]: https://github.com/box/box-ui-elements/issues/3631 [7]: https://github.com/box/box-ui-elements/commit/ba299b1dcee18d3197e5f7df0f15823070a071cb [8]: https://github.com/box/box-ui-elements/issues/3626 [9]: https://github.com/box/box-ui-elements/commit/3480efb5a03ee73f4d78a5b26f626f059aa31115 [10]: https://github.com/box/box-ui-elements/issues/3580 [11]: https://github.com/box/box-ui-elements/commit/179ff9f718845500ddc76a56e06129e06b386886 [12]: https://github.com/box/box-ui-elements/issues/3657 [13]: https://github.com/box/box-ui-elements/commit/a9385240dc53a9efe5277956a2d81ec1c253716a [14]: https://github.com/box/box-ui-elements/issues/3603 [15]: https://github.com/box/box-ui-elements/commit/a4678232af14c2220ce8c7125a55bb6714781b7a [16]: https://github.com/box/box-ui-elements/issues/3607 [17]: https://github.com/box/box-ui-elements/commit/8ad18b8b7887c07189dee590ebc0a931fa5010e8 [18]: https://github.com/box/box-ui-elements/issues/3612 [19]: https://github.com/box/box-ui-elements/commit/4bfceaaf71ed4271ba62d6878ef714617a920c8c [20]: https://github.com/box/box-ui-elements/issues/3615 [21]: https://github.com/box/box-ui-elements/commit/945fa23a8ba08bebf3bb4415e2b1827377eecbbd [22]: https://github.com/box/box-ui-elements/issues/3619 [23]: https://github.com/box/box-ui-elements/commit/bc011eb1369fc36762cfa3d7a206a538400d536d [24]: https://github.com/box/box-ui-elements/issues/3620 [25]: https://github.com/box/box-ui-elements/commit/62a9ef7489e42d3cafa8edfabcddf57928ae514d [26]: https://github.com/box/box-ui-elements/issues/3627 [27]: https://github.com/box/box-ui-elements/commit/ae5cc3d0b0f0b2afacb37048f994b39867d9006a [28]: https://github.com/box/box-ui-elements/issues/3633 [29]: https://github.com/box/box-ui-elements/commit/13894caaf44775d80d54b4458a997160be359ed1 [30]: https://github.com/box/box-ui-elements/issues/3636 [31]: https://github.com/box/box-ui-elements/commit/0bee28b6208179a1f0d2ce2428a5200be199302f [32]: https://github.com/box/box-ui-elements/issues/3639 [33]: https://github.com/box/box-ui-elements/commit/83b403cecc8dcdc210b31cf84fb59461f3325c8e [34]: https://github.com/box/box-ui-elements/issues/3643 [35]: https://github.com/box/box-ui-elements/commit/4cf5b3d55042274e8d73c8a9f1998ceed791179a [36]: https://github.com/box/box-ui-elements/issues/3648 [37]: https://github.com/box/box-ui-elements/commit/297fabfe2ab8207ccdcb6e97057a4fb2f3022284 [38]: https://github.com/box/box-ui-elements/issues/3653 [39]: https://github.com/box/box-ui-elements/commit/7b0e0fb44e3d205d28a10d8bc851ebaecaf5222f [40]: https://github.com/box/box-ui-elements/issues/3659 [41]: https://github.com/box/box-ui-elements/commit/41a17fe815b9ab7da9403836276de3fca379e86f [42]: https://github.com/box/box-ui-elements/issues/3667 [43]: https://github.com/box/box-ui-elements/commit/1f77bce4f470988d818ce7128954e1cd964d4f7f [44]: https://github.com/box/box-ui-elements/issues/3673 [45]: https://github.com/box/box-ui-elements/commit/7e5f7c1af0a05c35097827af5a55d5edd3470872 [46]: https://github.com/box/box-ui-elements/issues/3674 [47]: https://github.com/box/box-ui-elements/commit/ebe8348b9cf0a79298ea102f27217b6cd10b631f [48]: https://github.com/box/box-ui-elements/issues/3679 [49]: https://github.com/box/box-ui-elements/commit/4bf65f8b1c8ed6080a340bb28097d6f04d08ecc0 [50]: https://github.com/box/box-ui-elements/issues/3683 [51]: https://github.com/box/box-ui-elements/commit/549188a9f005b8dd0f63c0ed4906e8a64144c3a4 [52]: https://github.com/box/box-ui-elements/issues/3686 [53]: https://github.com/box/box-ui-elements/commit/9927e53f47e54380d0f2e44e857fbd6b0a6528fd [54]: https://github.com/box/box-ui-elements/issues/3689 [55]: https://github.com/box/box-ui-elements/commit/47e7a6be3036280bf89220f65ed978b3ef0bc2c7 [56]: https://github.com/box/box-ui-elements/issues/3692 [57]: https://github.com/box/box-ui-elements/commit/d2e59c846c3d72ab9efbe59f1123c72745945aa7 [58]: https://github.com/box/box-ui-elements/issues/3694 [59]: https://github.com/box/box-ui-elements/commit/1850977829e4888139462a6f65794b1cffc52a08 [60]: https://github.com/box/box-ui-elements/issues/3697 [61]: https://github.com/box/box-ui-elements/commit/665aedff1834ffbc4bc1e903262b0d4e0bef2cc3 [62]: https://github.com/box/box-ui-elements/issues/3701 [63]: https://github.com/box/box-ui-elements/commit/fe9f7cca9b100afe1521df41c697ed6f0f621f66 [64]: https://github.com/box/box-ui-elements/issues/3705 [65]: https://github.com/box/box-ui-elements/commit/fa89f876d54680b95bdc2fd3eb0d07a3c729f03e [66]: https://github.com/box/box-ui-elements/issues/3711 [67]: https://github.com/box/box-ui-elements/commit/b6b61bf47429541b1cbb1091fd94024c4ceeb6c8 [68]: https://github.com/box/box-ui-elements/issues/3671 [69]: https://github.com/box/box-ui-elements/commit/b82687e5cc0a55b6f82eb2c9aa1ea7b3482263b4 [70]: https://github.com/box/box-ui-elements/issues/3684 [71]: https://github.com/box/box-ui-elements/commit/5c54eb51287b1273ad84145952be132b84ef9e04 [72]: https://github.com/box/box-ui-elements/issues/3681 [73]: https://github.com/box/box-ui-elements/commit/fd164ec57c58ac912bdb4edbe4f9cdc30296b11a [74]: https://github.com/box/box-ui-elements/issues/3695 [75]: https://github.com/box/box-ui-elements/commit/83264724fa9de3e0935cc6f5762362dadcca884f [76]: https://github.com/box/box-ui-elements/issues/3669 [77]: https://github.com/box/box-ui-elements/commit/6ad083b4d14a721973df5ef3959913772c481922 [78]: https://github.com/box/box-ui-elements/issues/3691 [79]: https://github.com/box/box-ui-elements/commit/305d3af23a162db91e16ce13cc8c0bced865500d [80]: https://github.com/box/box-ui-elements/issues/3661 [81]: https://github.com/box/box-ui-elements/commit/33b34d9c532501824ed45c8965f82df690bb6e5c [82]: https://github.com/box/box-ui-elements/issues/3623 [83]: https://github.com/box/box-ui-elements/commit/04271125b0beedaae80f3ec48273ca5fdf266ac7 [84]: https://github.com/box/box-ui-elements/issues/3622 [85]: https://github.com/box/box-ui-elements/commit/b8142235903cd8ee5d36ee9121437b01552a5597 [86]: https://github.com/box/box-ui-elements/issues/3584 [87]: https://github.com/box/box-ui-elements/commit/c0ff8d7d7b24a919fc440a8f06f74b26fb0f5fa1 [88]: https://github.com/box/box-ui-elements/issues/3583 [89]: https://github.com/box/box-ui-elements/issues/3590 [90]: https://github.com/box/box-ui-elements/commit/1d9117162d658215fc9b62bbbfa0d351349901ff [91]: https://github.com/box/box-ui-elements/issues/3582 [92]: https://github.com/box/box-ui-elements/commit/6880f67d6005f549ca7c2fbc5d9c395f25cf7128 [93]: https://github.com/box/box-ui-elements/commit/13396e4f9f06c30b542fa5846659539f00edc392 [94]: https://github.com/box/box-ui-elements/issues/3716 [95]: https://github.com/box/box-ui-elements/commit/cccb0b084a52838eb9f7e16c084507ef30ba30e1 [96]: https://github.com/box/box-ui-elements/issues/3721 [97]: https://github.com/box/box-ui-elements/commit/5a117ae1f4e887365b65d07dd0b8a3f00ebf45db [98]: https://github.com/box/box-ui-elements/issues/3608 [99]: https://github.com/box/box-ui-elements/commit/ecd4c80873ae0d447fd5dbfdcf622775eeeb206e [100]: https://github.com/box/box-ui-elements/issues/3611 [101]: https://github.com/box/box-ui-elements/commit/765f592647c41bb1e2bd48ea32dd7b7e1ba2f305 [102]: https://github.com/box/box-ui-elements/issues/3585 [103]: https://github.com/box/box-ui-elements/commit/0f2d87617838dc2af7c702c91dbc4321d7b31bf5 [104]: https://github.com/box/box-ui-elements/issues/3698 [105]: https://github.com/box/box-ui-elements/commit/130b6b69c45a0b8e4a22009e3e9f44fb285e45e1 [106]: https://github.com/box/box-ui-elements/issues/3668 [107]: https://github.com/box/box-ui-elements/commit/611377ce21b3ed7a804c82eb2c29189851861dc2 [108]: https://github.com/box/box-ui-elements/issues/3658 [109]: https://github.com/box/box-ui-elements/commit/002d4966fa2158c33371d9a218a41206e1462f6b [110]: https://github.com/box/box-ui-elements/issues/3634 [111]: https://github.com/box/box-ui-elements/commit/20d4c3f3ca981820bf3684afe4ee68775b4b30bd [112]: https://github.com/box/box-ui-elements/issues/3625 [113]: https://github.com/box/box-ui-elements/commit/10e68f301183244062b6613006a5aa0cbdd33526 [114]: https://github.com/box/box-ui-elements/issues/3610 [115]: https://github.com/box/box-ui-elements/commit/cf05167884084a199512a1d18d41cc9fde7a4fc7 [116]: https://github.com/box/box-ui-elements/issues/3570 [117]: https://github.com/box/box-ui-elements/commit/6a0d7ee0857d9c91719654e2ac387a6e7dc135b9 [118]: https://github.com/box/box-ui-elements/issues/3637 [119]: https://github.com/box/box-ui-elements/commit/e735c4c3f5b755f3a773d2e7f185cd9a961de3cd [120]: https://github.com/box/box-ui-elements/issues/3665 [121]: https://github.com/box/box-ui-elements/commit/b672f7059697e922d2ae193ef6a98217695c843d [122]: https://github.com/box/box-ui-elements/issues/3700 [123]: https://github.com/box/box-ui-elements/commit/95735e0291f233d173c17a19304119c83e51723d [124]: https://github.com/box/box-ui-elements/issues/3664 [125]: https://github.com/box/box-ui-elements/commit/b4e4b01fefea753d21a4aa75dccde92fce05af21 [126]: https://github.com/box/box-ui-elements/issues/3605 [127]: https://github.com/box/box-ui-elements/issues/3677 [128]: https://github.com/box/box-ui-elements/commit/2941a9732b5081872bfcd0c2fe490ab14c6dc2ed [129]: https://github.com/box/box-ui-elements/issues/3663 [130]: https://github.com/box/box-ui-elements/commit/321ba7e715d51b269ad7bc566b197d0cab52b699 [131]: https://github.com/box/box-ui-elements/issues/3662 [132]: https://github.com/box/box-ui-elements/commit/f6abd4e07d8d23b0a0fe5224b4ba2f6b4c44f4e7 [133]: https://github.com/box/box-ui-elements/issues/3672 [134]: https://github.com/box/box-ui-elements/commit/ef79e44d81eb875eec04233e48485f1c6326606d [135]: https://github.com/box/box-ui-elements/issues/3654 [136]: https://github.com/box/box-ui-elements/commit/fe4fededd993c4025b1b6f38cc8a6387af1a9acc [137]: https://github.com/box/box-ui-elements/issues/3606 [138]: https://github.com/box/box-ui-elements/issues/3675 [139]: https://github.com/box/box-ui-elements/commit/dc074cf3f189a9ce06b7854d7245242732c1a294 [140]: https://github.com/box/box-ui-elements/issues/3708 [141]: https://github.com/box/box-ui-elements/commit/f7c06a4c411b453df9a1617d50fdddf77b032db7 [142]: https://github.com/box/box-ui-elements/issues/3678 [143]: https://github.com/box/box-ui-elements/commit/47ba331ca562c152c49cccf2c090664177e1370d [144]: https://github.com/box/box-ui-elements/issues/3710 [145]: https://github.com/box/box-ui-elements/commit/3a0c27ea1cfbb22c6fd9090f7bd237e62f8536b6 [146]: https://github.com/box/box-ui-elements/issues/3629 [147]: https://github.com/box/box-ui-elements/commit/6cb5d8f1d972b40ec06ce08f39cb25aa1452ad10 [148]: https://github.com/box/box-ui-elements/issues/3688 [149]: https://github.com/box/box-ui-elements/commit/c034de4daec6881c08b05caa1033db91382af6e0 [150]: https://github.com/box/box-ui-elements/issues/3680 [151]: https://github.com/box/box-ui-elements/commit/c521c113dafdc5787f7c4c163d3cbaa01a523c3b [152]: https://github.com/box/box-ui-elements/issues/3596 [153]: https://github.com/box/box-ui-elements/commit/dee4eee4ff49d7e8e9bc69071ac23164ae180e4e [154]: https://github.com/box/box-ui-elements/issues/3592 [155]: https://github.com/box/box-ui-elements/commit/e26f1f10731769ad7ed3cc94bdf6ab97117719d7 [156]: https://github.com/box/box-ui-elements/issues/3571 [157]: https://github.com/box/box-ui-elements/commit/c9854024dec37927cfabdef37c4f8fe82ffb8d34 [158]: https://github.com/box/box-ui-elements/issues/3565 [159]: https://github.com/box/box-ui-elements/issues/3720 [160]: https://github.com/box/box-ui-elements/commit/ec115f749fea1c545663888c8d2cfc0bd3cfa514 [161]: https://github.com/box/box-ui-elements/issues/3704 [162]: https://github.com/box/box-ui-elements/commit/13b8c990bc5fb8528e3a79864f8f9579608febd1 [163]: https://github.com/box/box-ui-elements/issues/3666 ## Box Java SDK v4.12.0 released ### New Features and Enhancements * Support AI Agent ([#1265][1]) ([`3cb2c7c`][2]) * Support AI extract and AI extract structured ([#1266][3]) ([`7ba90b9`][4]) [1]: https://github.com/box/box-java-sdk/issues/1265 [2]: https://github.com/box/box-java-sdk/commit/3cb2c7c275761a24be9403a6a2b41d0725ba8d9b [3]: https://github.com/box/box-java-sdk/issues/1266 [4]: https://github.com/box/box-java-sdk/commit/7ba90b96070a32b3e2ac60e5c55bd04d0a5973c0 ## Box TypeScript SDK Generated v1.7.0 released ### New Features and Enhancements * Include raw data in response object (box/box-codegen[#576][1]) ([#375][2]) ([`bdb9d0c`][3]) * Support `ai/extract` and `ai/extract_structured` endpoints (box/box-codegen[#566][4]) ([#356][5]) ([`4a33562`][6]) [1]: https://github.com/box/box-typescript-sdk-gen/issues/576 [2]: https://github.com/box/box-typescript-sdk-gen/issues/375 [3]: https://github.com/box/box-typescript-sdk-gen/commit/bdb9d0caab1a54ca56aef5de4260215d1d3fbd35 [4]: https://github.com/box/box-typescript-sdk-gen/issues/566 [5]: https://github.com/box/box-typescript-sdk-gen/issues/356 [6]: https://github.com/box/box-typescript-sdk-gen/commit/4a335621c7eaa413162a5daa65d63d8353ba37f5 ## Box Dotnet SDK Generated v1.3.0 released ### Bug Fixes * bump `system.text.json` to 8.0.5 (box/box-codegen[#578][1]) ([#271][2]) ([`dad2f52`][3]) ### New Features and Enhancements * support proxy (box/box-codegen[#577][4]) ([#274][5]) ([`dea1937`][6]) [1]: https://github.com/box/box-codegen/issues/578 [2]: https://github.com/box/box-codegen/issues/271 [3]: https://github.com/box/box-codegen/commit/dad2f521066e73c3dcdaec196cd6940401e31f3a [4]: https://github.com/box/box-codegen/issues/577 [5]: https://github.com/box/box-codegen/issues/274 [6]: https://github.com/box/box-codegen/commit/dea19373a7169365acb968a66c78c5937ef698e1 ## Box Dotnet SDK Generated v1.2.0 released ### Bug Fixes * correctly send `datetime` when in `queryParams` (box/box-codegen[#560][1]) ([#243][2]) ([`9657526`][3]) * Fix variants in metadata query results (box/box-openapi[#456][4]) ([#249][5]) ([`37625ea`][6]) ### New Features and Enhancements * add Hubs Beta (box/box-openapi[#453][7]) ([#241][8]) ([`c28f660`][9]) * include raw `json` in types (box/box-codegen[#567][10]) ([#258][11]) ([`a1e7bc5`][12]) * Support `ai/extract` and `ai/extract_structured` endpoints (box/box-codegen[#564][13]) ([#253][14]) ([`a17d8f8`][15]) [1]: https://github.com/box/box-codegen/issues/560 [2]: https://github.com/box/box-codegen/issues/243 [3]: https://github.com/box/box-codegen/commit/9657526667753d77eacfd674cde60ab4030ae42d [4]: https://github.com/box/box-codegen/issues/456 [5]: https://github.com/box/box-codegen/issues/249 [6]: https://github.com/box/box-codegen/commit/37625eabe4f87d57a9f58920829c00cddd34bcb1 [7]: https://github.com/box/box-codegen/issues/453 [8]: https://github.com/box/box-codegen/issues/241 [9]: https://github.com/box/box-codegen/commit/c28f6605c94e250bbab853ef610c46c1d3c9ef95 [10]: https://github.com/box/box-codegen/issues/567 [11]: https://github.com/box/box-codegen/issues/258 [12]: https://github.com/box/box-codegen/commit/a1e7bc55da0dec8bfd1159a1c158154177581019 [13]: https://github.com/box/box-codegen/issues/564 [14]: https://github.com/box/box-codegen/issues/253 [15]: https://github.com/box/box-codegen/commit/a17d8f8dbce8ac7f42b9e23c8c216e992a64d762 ## Box AI API default model update Box AI Platform API has been updated with a new default model for the `POST /2.0/ai/ask` endpoint. Both single and multiple document modes are now based on Azure's `gpt-4o-mini`. > **Note**: Box AI Platform API is currently a beta feature offered subject to Box’s Main Beta Agreement, and the available capabilities may change. Box AI Platform API is available to all Enterprise Plus customers. For more information on [default agent configuration][1] and [supported AI models][2] visit developer guides. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][3] for any help needed. [1]: https://developer.box.com/guides/box-ai/ai-agents/get-agent-default-config/ [2]: https://developer.box.com/guides/box-ai/supported-models/ [3]: https://community.box.com/ ## Box Python SDK Generated v1.5.1 released ### Bug Fixes * Fix proxy `url` without proxy credentials (box/box-codegen[#568][1]) ([#322][2]) ([`fb19160`][3]), closes [#318][4] * Stop sending last empty chunk for chunk upload (box/box-codegen[#569][5]) ([#324][6]) ([`1605f04`][7]), closes [#321][8] [1]: https://github.com/box/box-codegen/issues/568 [2]: https://github.com/box/box-codegen/issues/322 [3]: https://github.com/box/box-codegen/commit/fb19160307b58d5f08bb12e0f846d71ff936ad6a [4]: https://github.com/box/box-codegen/issues/318 [5]: https://github.com/box/box-codegen/issues/569 [6]: https://github.com/box/box-codegen/issues/324 [7]: https://github.com/box/box-codegen/commit/1605f0495994b333e735bc98f28fa714324b75f5 [8]: https://github.com/box/box-codegen/issues/321 ## Box Python SDK Generated v1.5.0 released ### Bug Fixes * Add the missing license to `setup.py` (box/box-codegen[#562][1]) ([#307][2]) ([`679d789`][3]) * Fix variants in metadata query results (box/box-openapi[#456][4]) ([#313][5]) ([`8830303`][6]) ### New Features and Enhancements * Add support for proxy (box/box-codegen[#559][7]) ([#302][8]) ([`3d881ac`][9]) * Introduce `raw_data` field for storing raw `json` response (box/box-codegen[#566][10]) ([#319][11]) ([`3776dc3`][12]) * Support `ai/extract` and `ai/extract_structured` endpoints (box/box-codegen[#564][13]) ([#317][14]) ([`b3d8da4`][15]) * Support App item associations (box/box-codegen[#561][16]) ([#299][17]) ([`8b6ea0b`][18]) [1]: https://github.com/box/box-codegen/issues/562 [2]: https://github.com/box/box-codegen/issues/307 [3]: https://github.com/box/box-codegen/commit/679d7891b2a20e7407b8c9f00bd95c3b294ab861 [4]: https://github.com/box/box-codegen/issues/456 [5]: https://github.com/box/box-codegen/issues/313 [6]: https://github.com/box/box-codegen/commit/883030335e2a3c12a5e0b01d8a82df30ccce16a6 [7]: https://github.com/box/box-codegen/issues/559 [8]: https://github.com/box/box-codegen/issues/302 [9]: https://github.com/box/box-codegen/commit/3d881acdebf2b18e2f0f82211f5abdcc32d1ddb0 [10]: https://github.com/box/box-codegen/issues/566 [11]: https://github.com/box/box-codegen/issues/319 [12]: https://github.com/box/box-codegen/commit/3776dc3d44bc09eb68da99f45e36e058dca2607e [13]: https://github.com/box/box-codegen/issues/564 [14]: https://github.com/box/box-codegen/issues/317 [15]: https://github.com/box/box-codegen/commit/b3d8da41007a9d47b73b699fd84da6f9540866d2 [16]: https://github.com/box/box-codegen/issues/561 [17]: https://github.com/box/box-codegen/issues/299 [18]: https://github.com/box/box-codegen/commit/8b6ea0bbec719a36eb11b6d214c08801c4f1a40b ## Metadata extraction with Box AI Platform API now available in Beta With its recent addition, Box AI Platform API allows you to extract metadata from the provided input. For example you can extract the financial information from an invoice, or patient data from a medical certificate. > **Note**: Box AI Platform API is currently a beta feature offered subject to Box’s Main Beta Agreement, and the available capabilities may change. Box AI Platform API is available to all Enterprise Plus customers. You have the following options: [`POST /2.0/ai_extract`][1] endpoint allows you to extract metadata from the provided file in a freeform way. This means you have more freedom in creating the prompt, and the metadata template is not required to run the request. [`POST /2.0/ai_extract_structured`][2] endpoint allows you to extract metadata from the provided file using a [metadata template][3] or `fields` structure. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][4] for any help needed. [1]: /reference/post-ai-extract [2]: /reference/post-ai-extract-structured [3]: https://support.box.com/hc/en-us/articles/360044194033-Customizing-Metadata-Templates [4]: https://forum.box.com/ ## App item associations The [app item associations API][1] allows you to check which app items are connected with a specific file or folder, including the app items associated with ancestors of the file or folder. An [app item][2] is a content object owned by an application. It can group files and folders together from different paths. That set can be shared through a collaboration. An [app item association][3] is a connection between a file or folder and an app item. Associations between a folder and an app item cascade down to all descendants of the folder. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][4] for any help needed. [1]: /reference/resources/app-item-association [2]: /reference/resources/app-item [3]: /reference/resources/app-item-associations [4]: https://forum.box.com/ ## Box TypeScript SDK Generated v1.6.0 released ### Bug Fixes * Add the missing license to `package.json` (box/box-codegen[#562][1]) ([#343][2]) ([`cc9a8b8`][3]) * Fix variants in metadata query results (box/box-openapi[#456][4]) ([#349][5]) ([`2131e98`][6]) ### New Features and Enhancements * add Hubs Beta (box/box-openapi[#453][7]) ([#333][8]) ([`40359c7`][9]) * Add support for proxy (box/box-codegen[#559][10]) ([#337][11]) ([`0ffd9c8`][12]) [1]: https://github.com/box/box-typescript-sdk-gen/issues/562 [2]: https://github.com/box/box-typescript-sdk-gen/issues/343 [3]: https://github.com/box/box-typescript-sdk-gen/commit/cc9a8b8ac628e348d32176f8ba69add649c555bd [4]: https://github.com/box/box-typescript-sdk-gen/issues/456 [5]: https://github.com/box/box-typescript-sdk-gen/issues/349 [6]: https://github.com/box/box-typescript-sdk-gen/commit/2131e98ff5530c7440ff50ec0da46cc317d0a4ae [7]: https://github.com/box/box-typescript-sdk-gen/issues/453 [8]: https://github.com/box/box-typescript-sdk-gen/issues/333 [9]: https://github.com/box/box-typescript-sdk-gen/commit/40359c71aa25ecfe7ec53bfa19de62b9d83d4ace [10]: https://github.com/box/box-typescript-sdk-gen/issues/559 [11]: https://github.com/box/box-typescript-sdk-gen/issues/337 [12]: https://github.com/box/box-typescript-sdk-gen/commit/0ffd9c8095d1aa742144146383ae94f1f4526af0 ## Box Swift SDK Generated 0.5.0 released ### Bug Fixes * Fix variants in metadata query results (box/box-openapi[#456][1]) ([#232][2]) ([`be2fa52`][3]) ### New Features and Enhancements * add Hubs Beta (box/box-openapi[#453][4]) ([#220][5]) ([`546f487`][6]) [1]: https://github.com/box/box-codegen/issues/456 [2]: https://github.com/box/box-codegen/issues/232 [3]: https://github.com/box/box-codegen/commit/be2fa52bb0d086f6c9b20fd5c3bdcad4b98f3f37 [4]: https://github.com/box/box-codegen/issues/453 [5]: https://github.com/box/box-codegen/issues/220 [6]: https://github.com/box/box-codegen/commit/546f487bde9dae2407ff65620eb6e6a81e45b149 ## Box Swift SDK Generated 0.4.0 released ### Bug Fixes * Add missing fields to Sign Template Signer and fix AI schema (box/box-openapi[#451][1]) ([#206][2]) ([`31920e6`][3]) * Fix `IntegrationMapping` schemas (box/box-codegen[#551][4]) ([#203][5]) ([`0074ee3`][6]) * Fix chunk upload in Swift (box/box-codegen[#555][7]) ([#215][8]) ([`93ff568`][9]) ### New Features and Enhancements * Include URL into `FetchOptions` (box/box-codegen[#549][10]) ([#208][11]) ([`b65822d`][12]) [1]: https://github.com/box/box-codegen/issues/451 [2]: https://github.com/box/box-codegen/issues/206 [3]: https://github.com/box/box-codegen/commit/31920e67692c16b0600c4c9f4c279e22d02e4598 [4]: https://github.com/box/box-codegen/issues/551 [5]: https://github.com/box/box-codegen/issues/203 [6]: https://github.com/box/box-codegen/commit/0074ee326627d01057cf50cb257d2291b646ab08 [7]: https://github.com/box/box-codegen/issues/555 [8]: https://github.com/box/box-codegen/issues/215 [9]: https://github.com/box/box-codegen/commit/93ff5686415d99aa807d57d9e062f5a96380d707 [10]: https://github.com/box/box-codegen/issues/549 [11]: https://github.com/box/box-codegen/issues/208 [12]: https://github.com/box/box-codegen/commit/b65822d379b1d5e9be7b179ed754e725f5a499fa ## Box TypeScript SDK Generated v1.5.1 released ### Bug Fixes * Fix fetch options with interceptor (box/box-codegen[#556][1]) ([#326][2]) ([`3751eea`][3]) [1]: https://github.com/box/box-typescript-sdk-gen/issues/556 [2]: https://github.com/box/box-typescript-sdk-gen/issues/326 [3]: https://github.com/box/box-typescript-sdk-gen/commit/3751eea67047021fe298c841596ae362ed1e47da ## Box Python SDK Generated v1.4.1 released ### Bug Fixes * Do not store data in-memory during download process in Python (box/box-codegen[#557][1]) ([#294][2]) ([`7c645ae`][3]) [1]: https://github.com/box/box-codegen/issues/557 [2]: https://github.com/box/box-codegen/issues/294 [3]: https://github.com/box/box-codegen/commit/7c645aea9fa8575531e0b40ffc997a0f65b6e409 ## Box TypeScript SDK Generated v1.5.0 released ### Bug Fixes * Add missing fields to Sign Template Signer and fix AI schema (box/box-openapi[#451][1]) ([#317][2]) ([`340fbd8`][3]) * Fix `IntegrationMapping` schemas (box/box-codegen[#551][4]) ([#315][5]) ([`a863b1e`][6]) ### New Features and Enhancements * Add new parameters to Box AI methods and introduce `AiResponseFull` variant (box/box-openapi[#446][7]) ([#313][8]) ([`d9664fd`][9]) * Include URL into `FetchOptions` (box/box-codegen[#549][10]) ([#319][11]) ([`30eaa6b`][12]) [1]: https://github.com/box/box-typescript-sdk-gen/issues/451 [2]: https://github.com/box/box-typescript-sdk-gen/issues/317 [3]: https://github.com/box/box-typescript-sdk-gen/commit/340fbd84f6fa408155c6a2a4b9b7b03b88f76f24 [4]: https://github.com/box/box-typescript-sdk-gen/issues/551 [5]: https://github.com/box/box-typescript-sdk-gen/issues/315 [6]: https://github.com/box/box-typescript-sdk-gen/commit/a863b1eb8fcfccd78714e3f52ce96d89ef69ca72 [7]: https://github.com/box/box-typescript-sdk-gen/issues/446 [8]: https://github.com/box/box-typescript-sdk-gen/issues/313 [9]: https://github.com/box/box-typescript-sdk-gen/commit/d9664fd7d431685c8e115415085bbe69d17f272d [10]: https://github.com/box/box-typescript-sdk-gen/issues/549 [11]: https://github.com/box/box-typescript-sdk-gen/issues/319 [12]: https://github.com/box/box-typescript-sdk-gen/commit/30eaa6ba7aa0fcd5e2f71026d7bf58729d387221 ## Box Python SDK Generated v1.4.0 released ### Bug Fixes * Add missing fields to Sign Template Signer and fix AI schema (box/box-openapi[#451][1]) ([#281][2]) ([`0708351`][3]) * Fix `IntegrationMapping` schemas (box/box-codegen[#551][4]) ([#279][5]) ([`0337e06`][6]) ### New Features and Enhancements * Add new parameters to Box AI methods and introduce `AiResponseFull` variant (box/box-openapi[#446][7]) ([#277][8]) ([`1267a21`][9]) * Include URL into `FetchOptions` (box/box-codegen[#549][10]) ([#283][11]) ([`dd05b1c`][12]) [1]: https://github.com/box/box-codegen/issues/451 [2]: https://github.com/box/box-codegen/issues/281 [3]: https://github.com/box/box-codegen/commit/0708351171eca1fe4914b823a4257bbabd3cd075 [4]: https://github.com/box/box-codegen/issues/551 [5]: https://github.com/box/box-codegen/issues/279 [6]: https://github.com/box/box-codegen/commit/0337e06c6bf6d35dd51409c429b7fef295f5a406 [7]: https://github.com/box/box-codegen/issues/446 [8]: https://github.com/box/box-codegen/issues/277 [9]: https://github.com/box/box-codegen/commit/1267a215fbc8292059603665a53b0159d7a1242c [10]: https://github.com/box/box-codegen/issues/549 [11]: https://github.com/box/box-codegen/issues/283 [12]: https://github.com/box/box-codegen/commit/dd05b1c2b1687d8647f4116c022dbf1890984adc ## Box Dotnet SDK Generated v1.1.0 released ### Bug Fixes * Add missing `item_upload` scope ([#201][1]) ([`483b055`][2]) * Add missing fields to Sign Template Signer and fix AI schema (box/box-openapi[#451][3]) ([#229][4]) ([`121f733`][5]) * Fix `IntegrationMapping` schemas (box/box-codegen[#551][6]) ([#226][7]) ([`3eca154`][8]) * Improve handling of network exceptions, handle big file upload (box/box-openapi[#444][9]) ([#222][10]) ([`75ccd07`][11]) ### New Features and Enhancements * Add new parameters to Box AI methods and introduce `AiResponseFull` variant (box/box-openapi[#446][12]) ([#224][13]) ([`6d205c4`][14]) * Include URL into `FetchOptions` (box/box-codegen[#549][15]) ([#231][16]) ([`41c45dc`][17]) * Parametrize chunked uploads endpoint URLs (box/box-openapi[#444][9]) ([#208][18]) ([`feac37c`][19]) * Support `nullable` fields (box/box-codegen[#550][20]) ([#230][21]) ([`b9da32b`][22]) [1]: https://github.com/box/box-codegen/issues/201 [2]: https://github.com/box/box-codegen/commit/483b05586f8e45771e101d286fddebc564ff89bd [3]: https://github.com/box/box-codegen/issues/451 [4]: https://github.com/box/box-codegen/issues/229 [5]: https://github.com/box/box-codegen/commit/121f733f52e945927125f4941206b1553202914d [6]: https://github.com/box/box-codegen/issues/551 [7]: https://github.com/box/box-codegen/issues/226 [8]: https://github.com/box/box-codegen/commit/3eca15434b65bc0bb2421d36ec50691e7fe40e3b [9]: https://github.com/box/box-codegen/issues/444 [10]: https://github.com/box/box-codegen/issues/222 [11]: https://github.com/box/box-codegen/commit/75ccd078e29015b865462ea1aaf0420d5e63d9cd [12]: https://github.com/box/box-codegen/issues/446 [13]: https://github.com/box/box-codegen/issues/224 [14]: https://github.com/box/box-codegen/commit/6d205c4e28a657ad65ae704a7343a8670806f7f1 [15]: https://github.com/box/box-codegen/issues/549 [16]: https://github.com/box/box-codegen/issues/231 [17]: https://github.com/box/box-codegen/commit/41c45dcf6476b6cae7941c0952c375aa76ce42a1 [18]: https://github.com/box/box-codegen/issues/208 [19]: https://github.com/box/box-codegen/commit/feac37c34f99b5951731b605ef895f7f3b5de6dd [20]: https://github.com/box/box-codegen/issues/550 [21]: https://github.com/box/box-codegen/issues/230 [22]: https://github.com/box/box-codegen/commit/b9da32b27f506618faa0119f725528555be14f60 ## Box Swift SDK Generated 0.3.1 released ### Bug Fixes * Extract `IntegrationMappingPartnerItemSlack` to `IntegrationMappingPartnerItemSlackUnion` (box/box-codegen[#530][1]) ([#165][2]) ([`d51df9a`][3]) * Improve chunked upload reliability (box/box-codegen[#529][4]) ([#164][5]) ([`5d87629`][6]) * Retry requests with 202 status code and `Retry-After` header (box/box-codegen[#538][7]) ([#177][8]) ([`64f27b3`][9]) ### New Features and Enhancements * Add `is_active` parameter to user collaboration (box/box-openapi[#437][10]) ([#163][11]) ([`5f726bb`][12]) * Add new parameters to Box AI methods and introduce `AiResponseFull` variant (box/box-openapi[#446][13]) ([#201][14]) ([`7c09090`][15]) * Add support for Swift 5.6 (box/box-codegen[#541][16]) ([#180][17]) ([`04b7020`][18]) * parametrize chunked uploads endpoint URLs (box/box-openapi[#444][19]) ([#192][20]) ([`ea18f9e`][21]) * Support AI Agent API (box/box-codegen[#531][22]) ([#170][23]) ([`fc9a00b`][24]) [1]: https://github.com/box/box-codegen/issues/530 [2]: https://github.com/box/box-codegen/issues/165 [3]: https://github.com/box/box-codegen/commit/d51df9a19d06db886358e94ce70551c283e5cc45 [4]: https://github.com/box/box-codegen/issues/529 [5]: https://github.com/box/box-codegen/issues/164 [6]: https://github.com/box/box-codegen/commit/5d876299aa88b18accde22379950780bff100da0 [7]: https://github.com/box/box-codegen/issues/538 [8]: https://github.com/box/box-codegen/issues/177 [9]: https://github.com/box/box-codegen/commit/64f27b3858725adaa53a10a6e8df8c0bcfe73fea [10]: https://github.com/box/box-codegen/issues/437 [11]: https://github.com/box/box-codegen/issues/163 [12]: https://github.com/box/box-codegen/commit/5f726bbffd682934ab5731e1620489b1ee54e5a1 [13]: https://github.com/box/box-codegen/issues/446 [14]: https://github.com/box/box-codegen/issues/201 [15]: https://github.com/box/box-codegen/commit/7c0909032733742cb5a019c897910ced2e9d6788 [16]: https://github.com/box/box-codegen/issues/541 [17]: https://github.com/box/box-codegen/issues/180 [18]: https://github.com/box/box-codegen/commit/04b7020f1220f73ad4637e6033d5539c56a64fcd [19]: https://github.com/box/box-codegen/issues/444 [20]: https://github.com/box/box-codegen/issues/192 [21]: https://github.com/box/box-codegen/commit/ea18f9e5eb6558edb29ff378bceb5528ccd4fcfb [22]: https://github.com/box/box-codegen/issues/531 [23]: https://github.com/box/box-codegen/issues/170 [24]: https://github.com/box/box-codegen/commit/fc9a00bdcaffeaccfd87caad73fe666fb46c36ab ## Box Python SDK v3.13.0 released ### New Features and Enhancements * Add support for get AI agent default ([#883][1]) ([`c1010e0`][2]) [1]: https://github.com/box/box-python-sdk/issues/883 [2]: https://github.com/box/box-python-sdk/commit/c1010e0349847586a9f00046570e975ec48eb0c5 ## Box TypeScript SDK Generated v1.4.0 released ### Bug Fixes * Add missing token scope (box/box-openapi[#442][1]) ([#281][2]) ([`ca77f58`][3]) * Fix fetch method for multipart request (box/box-codegen[#545][4]) ([#303][5]) ([`f8ceac0`][6]) ### New Features and Enhancements * Parametrize chunked uploads endpoint URLs (box/box-openapi[#444][7]) ([#302][8]) ([`293a6e9`][9]) * **ts:** Add comments to properties and methods (box/box-codegen[#537][10]) ([#284][11]) ([`db3a2b5`][12]) [1]: https://github.com/box/box-typescript-sdk-gen/issues/442 [2]: https://github.com/box/box-typescript-sdk-gen/issues/281 [3]: https://github.com/box/box-typescript-sdk-gen/commit/ca77f58b10d3a302748750584730f0fcdd8b4b55 [4]: https://github.com/box/box-typescript-sdk-gen/issues/545 [5]: https://github.com/box/box-typescript-sdk-gen/issues/303 [6]: https://github.com/box/box-typescript-sdk-gen/commit/f8ceac005f043017e7cde310490e79ab9195f8d7 [7]: https://github.com/box/box-typescript-sdk-gen/issues/444 [8]: https://github.com/box/box-typescript-sdk-gen/issues/302 [9]: https://github.com/box/box-typescript-sdk-gen/commit/293a6e9aeabbba37e4c12e2322a79717a10e1775 [10]: https://github.com/box/box-typescript-sdk-gen/issues/537 [11]: https://github.com/box/box-typescript-sdk-gen/issues/284 [12]: https://github.com/box/box-typescript-sdk-gen/commit/db3a2b57fbe0eec17373a2acf8089ff247c98225 ## Box Python SDK Generated v1.3.0 released ### Bug Fixes * Fix fetch method for multipart request (box/box-codegen[#545][1]) ([#266][2]) ([`08a0818`][3]) ### New Features and Enhancements * Parametrize chunked uploads endpoint URLs (box/box-openapi[#444][4]) ([#264][5]) ([`b5bce24`][6]) [1]: https://github.com/box/box-codegen/issues/545 [2]: https://github.com/box/box-codegen/issues/266 [3]: https://github.com/box/box-codegen/commit/08a0818995d64995c3e2720a459f9221c9ca1dea [4]: https://github.com/box/box-codegen/issues/444 [5]: https://github.com/box/box-codegen/issues/264 [6]: https://github.com/box/box-codegen/commit/b5bce24478c70ae6bb997adc773a0e2a76223568 ## Box Python SDK v3.12.0 released ### New Features and Enhancements * add create sign request function with different required parameters ([#878][1]) ([`d972f54`][2]) * Support Box AI features ([#877][3]) ([`3026d2a`][4]) [1]: https://github.com/box/box-python-sdk/issues/878 [2]: https://github.com/box/box-python-sdk/commit/d972f54dcf9962c6b911422793a682d8f6289f9e [3]: https://github.com/box/box-python-sdk/issues/877 [4]: https://github.com/box/box-python-sdk/commit/3026d2ab9932cd07aa9ff15a3ac3c3c14d3089b0 ## Box Node SDK v3.7.1 released ### Bug Fixes * add version to copy file options annotation ([#885][1]) ([`4f9312c`][2]) [1]: https://github.com/box/box-node-sdk/issues/885 [2]: https://github.com/box/box-node-sdk/commit/4f9312c63138f8cf8e0a9e46a9e1345172dbdc6b ## Box CLI v3.15.0 released ### New Features and Enhancements * Support AI APIs using Box Node SDK ([#539][1]) ([`59551d2`][2]) [1]: https://github.com/box/boxcli/issues/539 [2]: https://github.com/box/boxcli/commit/59551d2153549b5a87b2c3fae01eb3089d640c89 ## Box Python SDK Generated v1.2.0 released ### Bug Fixes * Improve chunked upload reliability ([#224][1]) ([`05f0353`][2]) ### New Features and Enhancements * Add `is_active` parameter to user collaboration (box/box-openapi[#437][3]) ([#222][4]) ([`2b7bbe4`][5]) * Retry request with status code `202` (box/box-codegen[#511][6]) ([#204][7]) ([`f50ad6e`][8]) * Support AI Agent API (box/box-codegen[#531][9]) ([#229][10]) ([`c565383`][11]) * Support sending fields with `null` value (box/box-codegen[#528][12]) ([#230][13]) ([`f91076e`][14]), closes [#202][15] [1]: https://github.com/box/box-codegen/issues/224 [2]: https://github.com/box/box-codegen/commit/05f035354a76dac0d71849523e4a28641ac92aee [3]: https://github.com/box/box-codegen/issues/437 [4]: https://github.com/box/box-codegen/issues/222 [5]: https://github.com/box/box-codegen/commit/2b7bbe41ed23e50c6717148fa5e9e2c24a3f5897 [6]: https://github.com/box/box-codegen/issues/511 [7]: https://github.com/box/box-codegen/issues/204 [8]: https://github.com/box/box-codegen/commit/f50ad6e236003901792eb333738020cbdd8c8ae3 [9]: https://github.com/box/box-codegen/issues/531 [10]: https://github.com/box/box-codegen/issues/229 [11]: https://github.com/box/box-codegen/commit/c5653839e1a150377e7d5c4764d4c2a7b7d07c4a [12]: https://github.com/box/box-codegen/issues/528 [13]: https://github.com/box/box-codegen/issues/230 [14]: https://github.com/box/box-codegen/commit/f91076e1bfbccae4a0dff4b66d7bafb5357858c5 [15]: https://github.com/box/box-codegen/issues/202 ## Introducing New Generation Swift SDK We are excited to introduce [Box Swift SDK][1], designed to elevate the developer experience and streamline your integration with the Box Content Cloud. With the [new generation of Swift SDK][1], you’ll have access to: * **Full API Support**: The new generation of Box SDKs empowers developers with complete coverage of the Box API ecosystem. You can now access all the latest features and functionalities offered by Box, allowing you to build even more sophisticated and feature-rich applications. * **Rapid API Updates**: Say goodbye to waiting for new Box APIs to be incorporated into the SDK. With our new auto-generation development approach, we can now add new Box APIs to the SDK at a much faster pace (in a matter of days). This means you can leverage the most up-to-date features in your applications without delay. * **Embedded Documentation**: We understand that access to information is crucial for developers. With our new approach, we have included comprehensive documentation for all objects and parameters directly in the source code of the SDK. This means you no longer need to look up this information on the developer portal, saving you time and streamlining your development process. * **Enhanced Convenience Methods**: Our commitment to enhancing your development experience continues with the introduction of convenience methods. These methods cover various aspects such as authentication, chunk uploads, exponential back-offs, automatic retries, type checkers which help to ensure that you’re using variables correctly, and much more. Embrace the new generation of Box SDKs and unlock the full potential of the Box Content Cloud. Start building innovative solutions faster and more efficiently. Happy coding! [1]: https://github.com/box/box-swift-sdk-gen ## Fetch and override default AI configuration Thanks to the [`GET /2.0/ai_agent_default`][1] endpoint you can now fetch the default configuration for AI services. Once you get the configuration details, you can override them using the `ai_agent` parameter available in the [`POST /2.0/ai/ask`][2] and [`POST /2.0/ai/text_gen`][3] requests. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][4] for any help needed. [1]: /reference/get-ai-agent-default [2]: /reference/post-ai-ask#param-ai-agent [3]: /reference/post-ai-text-gen#param-ai-agent [4]: https://forum.box.com/ ## Box TypeScript SDK Generated v1.3.0 released ### Bug Fixes * Extract `IntegrationMappingPartnerItemSlack` to union type (box/box-codegen[#530][1]) ([#255][2]) ([`fa8952a`][3]) * Improve chunked upload reliability (box/box-codegen[#529][4]) ([#254][5]) ([`12d9288`][6]) ### New Features and Enhancements * Add `is_active` parameter to user collaboration (box/box-openapi[#437][7]) ([#253][8]) ([`4d8d436`][9]) * Support AI Agent API (box/box-codegen[#531][10]) ([#260][11]) ([`0ec40d4`][12]) [1]: https://github.com/box/box-typescript-sdk-gen/issues/530 [2]: https://github.com/box/box-typescript-sdk-gen/issues/255 [3]: https://github.com/box/box-typescript-sdk-gen/commit/fa8952a6582d9965bbb4ab66bbeff057f5c68851 [4]: https://github.com/box/box-typescript-sdk-gen/issues/529 [5]: https://github.com/box/box-typescript-sdk-gen/issues/254 [6]: https://github.com/box/box-typescript-sdk-gen/commit/12d928850e0a1cd60f336a9919474b9aaba33028 [7]: https://github.com/box/box-typescript-sdk-gen/issues/437 [8]: https://github.com/box/box-typescript-sdk-gen/issues/253 [9]: https://github.com/box/box-typescript-sdk-gen/commit/4d8d436977b3e487a47e7717626f1c0f2eb43227 [10]: https://github.com/box/box-typescript-sdk-gen/issues/531 [11]: https://github.com/box/box-typescript-sdk-gen/issues/260 [12]: https://github.com/box/box-typescript-sdk-gen/commit/0ec40d44c86a8a9cf4fe594966cfad1866be457c ## Box Dotnet SDK Generated v1.0.0 released ### Bug Fixes * Extract `IntegrationMappingPartnerItemSlack` to `IntegrationMappingPartnerItemSlackUnion` (box/box-codegen[#530][1]) ([#183][2]) ([`3b1b634`][3]) * Improve chunked upload reliability (box/box-codegen[#529][4]) ([#182][5]) ([`e2a045f`][6]) * remove `init` from some of the required fields, `nullability` fixes (box/box-codegen[#532][7]) ([#190][8]) ([`c58f8af`][9]) * retry requests with status code of 202 and `retry-after` header (box/box-codegen[#533][10]) ([#191][11]) ([`abaafd7`][12]) * Update chunked upload (box/box-codegen[#523][13]) ([#177][14]) ([`9bcaf51`][15]) ### New Features and Enhancements * Add `is_active` parameter to user collaboration (box/box-openapi[#437][16]) ([#181][17]) ([`ec5f2d1`][18]) * simplify `namespaces` (box/box-codegen[#518][19]) ([#175][20]) ([`7831b09`][21]) * Support AI Agent API (box/box-codegen[#531][22]) ([#188][23]) ([`0c29645`][24]) * Support default interface properties, bump dependencies (box/box-codegen[#527][25]) ([#184][26]) ([`6b52792`][27]) [1]: https://github.com/box/box-codegen/issues/530 [2]: https://github.com/box/box-codegen/issues/183 [3]: https://github.com/box/box-codegen/commit/3b1b634904edc73af094aa8aa6e89d32b9e92aee [4]: https://github.com/box/box-codegen/issues/529 [5]: https://github.com/box/box-codegen/issues/182 [6]: https://github.com/box/box-codegen/commit/e2a045f5d2afbe15be0284099ee2236f9c19cd73 [7]: https://github.com/box/box-codegen/issues/532 [8]: https://github.com/box/box-codegen/issues/190 [9]: https://github.com/box/box-codegen/commit/c58f8afa41fa4346eb3f2ced9e48695980e917e1 [10]: https://github.com/box/box-codegen/issues/533 [11]: https://github.com/box/box-codegen/issues/191 [12]: https://github.com/box/box-codegen/commit/abaafd70b982ae560430ff083b4bee1d533d5275 [13]: https://github.com/box/box-codegen/issues/523 [14]: https://github.com/box/box-codegen/issues/177 [15]: https://github.com/box/box-codegen/commit/9bcaf51e0bcd3134dea2b37277a24abaa483754a [16]: https://github.com/box/box-codegen/issues/437 [17]: https://github.com/box/box-codegen/issues/181 [18]: https://github.com/box/box-codegen/commit/ec5f2d1d2cdba330f26a7db40042b70d3ec5bca2 [19]: https://github.com/box/box-codegen/issues/518 [20]: https://github.com/box/box-codegen/issues/175 [21]: https://github.com/box/box-codegen/commit/7831b098971616497cbc90a8c277fee9b2c42c39 [22]: https://github.com/box/box-codegen/issues/531 [23]: https://github.com/box/box-codegen/issues/188 [24]: https://github.com/box/box-codegen/commit/0c296458ef966e57c5aba2a8068034d4de820ef9 [25]: https://github.com/box/box-codegen/issues/527 [26]: https://github.com/box/box-codegen/issues/184 [27]: https://github.com/box/box-codegen/commit/6b52792057ab94f6bcc2f86b47e0ed5f25900adf ## Box Windows SDK v5.8.0 released ### New Features and Enhancements * add support for AI ([#965][1]) ([`a9e130a`][2]) ### Bug Fixes * Bump `System.IdentityModel.Tokens.Jwt` dependency version to `v6.35.0` ([#962][3]) ([`6e47237`][4]), closes [#960][5] [#961][6] * remove `Microsoft.AspNetCore.StaticFiles` and `System.Web` dependencies ([#964][7]) ([`2c8eedc`][8]) - [https://www.nuget.org/packages/Box.V2/5.8.0>](https://www.nuget.org/packages/Box.V2/5.8.0>) - [https://www.nuget.org/packages/Box.V2.Core/5.8.0>](https://www.nuget.org/packages/Box.V2.Core/5.8.0>) [1]: https://github.com/box/box-windows-sdk-v2/issues/965 [2]: https://github.com/box/box-windows-sdk-v2/commit/a9e130a99cf9862f9b50178a6188b2820f9f2c32 [3]: https://github.com/box/box-windows-sdk-v2/issues/962 [4]: https://github.com/box/box-windows-sdk-v2/commit/6e472378e2fccea2db67bf5ef0eb017a31491703 [5]: https://github.com/box/box-windows-sdk-v2/issues/960 [6]: https://github.com/box/box-windows-sdk-v2/issues/961 [7]: https://github.com/box/box-windows-sdk-v2/issues/964 [8]: https://github.com/box/box-windows-sdk-v2/commit/2c8eedc91c473aca52249aad443345471ca7eafc ## React 18 support for Box UI Elements [Box UI Elements][1] now support React 18, bringing a whole new level of flexibility and functionality for content collaboration in third-party apps. With this update, you can leverage the power of React 18’s cutting-edge features, drive innovation with latest front-end stack, while seamlessly integrating with the intelligent content cloud. For details, read our [blog post][2]. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][2] for any help needed. [1]: /guides/embed/ui-elements [2]: https://medium.com/box-developer-blog/seamless-integration-box-ui-elements-and-react-18-compatibility-4db97a09ff01 [3]: https://forum.box.com/ ## Box UI Elements v21.0.0 released ### [21.0.0][1] (2024-07-16) ### Bug Fixes * upgrade hapi address package dependency ([#3579][2]) ([`b089619`][3]) * upgrade react-virtualized peer dependency ([#3578][4]) ([`3ebae37`][5]) * **avatars:** Add type to Fetch avatar ([#3560][6]) ([`14a194f`][7]) * **content-sidebar:** update to sidebar icon styles ([#3561][8]) ([`381a3b6`][9]) * **content-uploader:** fix multiple items droppable issue ([#3565][10]) ([`87815de`][11]) * **i18n:** update translations ([#3563][12]) ([`6d9c65f`][13]) * **i18n:** update translations ([#3564][14]) ([`7988af8`][15]) * **i18n:** update translations ([#3566][16]) ([`3103983`][17]) * **preview:** Update preview error messages ([#3562][18]) ([`aff6217`][19]) ### Features * **docgen:** add docgen icon ([#3573][20]) ([`f5d4955`][21]) * **react:** BREAKING CHANGE Upgrade to React 18 ([#3556][22]) ([`91e0978`][23]) * **webpack:** BREAKING CHANGE Upgrade to webpack 5 and `react-styleguidist` 12.0.1 ([#3568][24]) ([`a812294`][25]) ### BREAKING CHANGES * upgrade hapi/address to resolve undefined buffer reference * upgrade peer dependency for react-virtualized to support react 18 [1]: https://github.com/box/box-ui-elements/compare/v20.0.0...v21.0.0 [2]: https://github.com/box/box-ui-elements/issues/3579 [3]: https://github.com/box/box-ui-elements/commit/b0896194b79263ab60b47363abfbb98258244a47 [4]: https://github.com/box/box-ui-elements/issues/3578 [5]: https://github.com/box/box-ui-elements/commit/3ebae376521ab8a4232005bae32e81c2b82da903 [6]: https://github.com/box/box-ui-elements/issues/3560 [7]: https://github.com/box/box-ui-elements/commit/14a194f449018932134cc5df741ecd36c774a321 [8]: https://github.com/box/box-ui-elements/issues/3561 [9]: https://github.com/box/box-ui-elements/commit/381a3b642b0148553c6f65cea159b0718271117a [10]: https://github.com/box/box-ui-elements/issues/3565 [11]: https://github.com/box/box-ui-elements/commit/87815de94e8fb607f24a0e17750ffbaa2e713125 [12]: https://github.com/box/box-ui-elements/issues/3563 [13]: https://github.com/box/box-ui-elements/commit/6d9c65f0054d329a20a65ef814b9c0e867c9baf7 [14]: https://github.com/box/box-ui-elements/issues/3564 [15]: https://github.com/box/box-ui-elements/commit/7988af8eb56a8e6e5abf8bb07d53f3250b148cf5 [16]: https://github.com/box/box-ui-elements/issues/3566 [17]: https://github.com/box/box-ui-elements/commit/310398302abd67bb48dbf5317dc858f054b0cc16 [18]: https://github.com/box/box-ui-elements/issues/3562 [19]: https://github.com/box/box-ui-elements/commit/aff6217671d25015d314813295b871facfb8a9cc [20]: https://github.com/box/box-ui-elements/issues/3573 [21]: https://github.com/box/box-ui-elements/commit/f5d49554683c965335366ba0f7f34771cec4d4d4 [22]: https://github.com/box/box-ui-elements/issues/3556 [23]: https://github.com/box/box-ui-elements/commit/91e09787c545194ef61cb057e74df7dfd111728b [24]: https://github.com/box/box-ui-elements/issues/3568 [25]: https://github.com/box/box-ui-elements/commit/a81229420c1a133145c9899efe908a080f59bd9f ## Box Node SDK v3.7.0 released ### New Features and Enhancements * Support AI APIs ([#883][1]) ([`bb81e07`][2]) [1]: https://github.com/box/box-node-sdk/issues/883 [2]: https://github.com/box/box-node-sdk/commit/bb81e074eb1017bd742c90159e6cf4e6ce9d9776 ## Box Java SDK v4.11.1 released ### Bug Fixes * Fix order of file upload multipart request ([#1261][1]) ([`7200ac7`][2]) [1]: https://github.com/box/box-java-sdk/issues/1261 [2]: https://github.com/box/box-java-sdk/commit/7200ac77888b3639f2c294486be278e316efcfb0 ## Box Java SDK v4.11.0 released ### New Features and Enhancements * Allow overriding creation of OkHttp Call ([#1257][1]) ([`bd6fde6`][2]) ### Bug Fixes * Add missing fields when update classification template ([#1255][3]) ([`f17f817`][4]) * Fix deserializing permissions for `BoxFile` and `BoxFolder` ([#1256][5]) ([`f088448`][6]) [1]: https://github.com/box/box-java-sdk/issues/1257 [2]: https://github.com/box/box-java-sdk/commit/bd6fde6689bebe6cb5889c91214db68e08a4ec8b [3]: https://github.com/box/box-java-sdk/issues/1255 [4]: https://github.com/box/box-java-sdk/commit/f17f817bde5a412358bf3de8e489ed080715ec4b [5]: https://github.com/box/box-java-sdk/issues/1256 [6]: https://github.com/box/box-java-sdk/commit/f08844889800a01f7c78941036f6228502fca8b0 ## Box TypeScript SDK Generated v1.2.0 released ### Bug Fixes * Fix upload in browser (box/box-codegen[#524][1]) ([#248][2]) ([`88d747e`][3]) * Update chunked upload (box/box-codegen[#523][4]) ([#247][5]) ([`27ceb35`][6]) ### New Features and Enhancements * Retry request with status code `202` (box/box-codegen[#511][7]) ([#235][8]) ([`03b8f43`][9]) * Support extensible enum types in Typescript (box/box-codegen[#520][10]) ([#243][11]) ([`5237972`][12]) [1]: https://github.com/box/box-typescript-sdk-gen/issues/524 [2]: https://github.com/box/box-typescript-sdk-gen/issues/248 [3]: https://github.com/box/box-typescript-sdk-gen/commit/88d747e0f03dfa3c2d6089257c6e8b5b635775e0 [4]: https://github.com/box/box-typescript-sdk-gen/issues/523 [5]: https://github.com/box/box-typescript-sdk-gen/issues/247 [6]: https://github.com/box/box-typescript-sdk-gen/commit/27ceb35e6444843eea9b7ec6923fe958c9a74571 [7]: https://github.com/box/box-typescript-sdk-gen/issues/511 [8]: https://github.com/box/box-typescript-sdk-gen/issues/235 [9]: https://github.com/box/box-typescript-sdk-gen/commit/03b8f4314ada5ef5596706b7599cc76565fe96a5 [10]: https://github.com/box/box-typescript-sdk-gen/issues/520 [11]: https://github.com/box/box-typescript-sdk-gen/issues/243 [12]: https://github.com/box/box-typescript-sdk-gen/commit/523797273bc08e3b22609ef0019432ab3e43c3ba ## Box Dotnet SDK Generated v0.4.0 released ### Bug Fixes * Change base URLs (box/box-codegen[#491][1]) ([#126][2]) ([`b4c6025`][3]) * Fix CI for auto update pull requests (box/box-codegen[#506][4]) ([#152][5]) ([`766f03c`][6]) * Fix schema for updating classification on a file and folder (box/box-openapi[#423][7]) ([#117][8]) ([`40f5a97`][9]) * Improve wording for box sign (box/box-openapi[#424][10]) ([#122][11]) ([`64b3bcd`][12]) ### New Features and Enhancements * Add default implementation for interface methods (box/box-codegen[#502][13]) ([#148][14]) ([`0f39071`][15]) * Add docs improvements and marker pagination (box/box-openapi[#431][16]) ([#153][17]) ([`780a58b`][18]) * Add support for `ExtraData` of generic type (box/box-codegen[#521][19]) ([#170][20]) ([`2a2208d`][21]) * Add support for unions of primitives (box/box-codegen[#501][22]) ([#150][23]) ([`e75ce82`][24]) * Make models immutable, hide fields for authentication (box/box-codegen[#494][25]) ([#127][26]) ([`8adcc85`][27]) * Add `SuppressNotifications` and `ExternalSystemName` fields for Box Sign (box/box-openapi[#425][28]) ([#124][29]) ([`c841881`][30]) * Support `StringEnum` (box/box-codegen[#514][31]) ([#162][32]) ([`6ac2fe9`][33]) [1]: https://github.com/box/box-codegen/issues/491 [2]: https://github.com/box/box-codegen/issues/126 [3]: https://github.com/box/box-codegen/commit/b4c6025dc7039e923b19282333f162bb9d3469a9 [4]: https://github.com/box/box-codegen/issues/506 [5]: https://github.com/box/box-codegen/issues/152 [6]: https://github.com/box/box-codegen/commit/766f03c743b7a2ab363135ff282e468b6b71d377 [7]: https://github.com/box/box-codegen/issues/423 [8]: https://github.com/box/box-codegen/issues/117 [9]: https://github.com/box/box-codegen/commit/40f5a97ea44118ff9425e8b0ebb767d9ed08cee7 [10]: https://github.com/box/box-codegen/issues/424 [11]: https://github.com/box/box-codegen/issues/122 [12]: https://github.com/box/box-codegen/commit/64b3bcd2d99039d1c881a565de6e7bc40dfe7aa9 [13]: https://github.com/box/box-codegen/issues/502 [14]: https://github.com/box/box-codegen/issues/148 [15]: https://github.com/box/box-codegen/commit/0f39071d2442b9d07f9c51de8a5a757b16cc4fe7 [16]: https://github.com/box/box-codegen/issues/431 [17]: https://github.com/box/box-codegen/issues/153 [18]: https://github.com/box/box-codegen/commit/780a58b4d4b18c357381c76dd5e72dd791a20d89 [19]: https://github.com/box/box-codegen/issues/521 [20]: https://github.com/box/box-codegen/issues/170 [21]: https://github.com/box/box-codegen/commit/2a2208d422f5beb1718576acdc10d9eb973ba95c [22]: https://github.com/box/box-codegen/issues/501 [23]: https://github.com/box/box-codegen/issues/150 [24]: https://github.com/box/box-codegen/commit/e75ce82b09641d4bec439d620facbbf25da97845 [25]: https://github.com/box/box-codegen/issues/494 [26]: https://github.com/box/box-codegen/issues/127 [27]: https://github.com/box/box-codegen/commit/8adcc858ef0f924f168406b031d379c786fa90d0 [28]: https://github.com/box/box-codegen/issues/425 [29]: https://github.com/box/box-codegen/issues/124 [30]: https://github.com/box/box-codegen/commit/c841881cea9b0636bb624fe45d77c2817327dd35 [31]: https://github.com/box/box-codegen/issues/514 [32]: https://github.com/box/box-codegen/issues/162 [33]: https://github.com/box/box-codegen/commit/6ac2fe9811efde6b02cd3ca50834b0bdafea1ab3 ## Box Windows SDK v5.7.1 released ### Bug Fixes * Add missing enum values to `BoxSortBy` ([#953][1]) ([`1f89bb0`][2]), closes [#952][3] * Add missing fields of `EventSource` ([#956][4]) ([`138eda5`][5]) * do not recreate Random each time ([#945][6]) ([`d03b1ce`][7]), closes [#944][8] [#944][8] [#944][8] [#944][8] - [https://www.nuget.org/packages/Box.V2/5.7.1>](https://www.nuget.org/packages/Box.V2/5.7.1>) - [https://www.nuget.org/packages/Box.V2.Core/5.7.1>](https://www.nuget.org/packages/Box.V2.Core/5.7.1>) [1]: https://github.com/box/box-windows-sdk-v2/issues/953 [2]: https://github.com/box/box-windows-sdk-v2/commit/1f89bb047442dcdc9045aeff1c3d6aadf61e2856 [3]: https://github.com/box/box-windows-sdk-v2/issues/952 [4]: https://github.com/box/box-windows-sdk-v2/issues/956 [5]: https://github.com/box/box-windows-sdk-v2/commit/138eda516ad59f08968d88b04e9bb06df3c397f2 [6]: https://github.com/box/box-windows-sdk-v2/issues/945 [7]: https://github.com/box/box-windows-sdk-v2/commit/d03b1ce65d4077e2895acfce3bc286ea501669aa [8]: https://github.com/box/box-windows-sdk-v2/issues/944 ## Box Swift SDK Generated 0.3.0 released ### Bug Fixes * Change base URLs (box/box-codegen[#491][1]) ([#115][2]) ([`d0a7adb`][3]) * Fix Box AI endpoints (box/box-openapi[#418][4]) ([#88][5]) ([`022f83a`][6]) * Fix CI for auto update pull requests (box/box-codegen[#506][7]) ([#135][8]) ([`a62e238`][9]) * fix deserialisation of Union with array in Swift (box/box-codegen[#486][10]) ([#94][11]) ([`4f187be`][12]) * Fix metadata filter resource (box/box-openapi[#419][13]) ([#90][14]) ([`b04f7ce`][15]) * Fix schemas for updating classification on a file and folder (box/box-openapi[#423][16]) ([#104][17]) ([`caa9d2b`][18]) * improve wording for box sign (box/box-openapi[#424][19]) ([#111][20]) ([`4fa69f0`][21]) ### New Features and Enhancements * add missing marker pagination fields and introduce new event type `(box/box-openapi[#431](https://github.com/box/box-codegen/issues/431))` ([#136][22]) ([`b186b11`][23]) * Add support for `visionOS` and add privacy manifest file for swift `(box/box-codegen[#510](https://github.com/box/box-codegen/issues/510))` ([#139][24]) ([`7fc76fc`][25]) * Add support for Date in Swift (box/box-codegen[#488][26]) ([#103][27]) ([`7e1ea1a`][28]) * Improve chunk upload in Swift `(box/box-codegen[#515](https://github.com/box/box-codegen/issues/515))` ([#143][29]) ([`b8099ab`][30]) * move notification suppression to public schema (box/box-openapi[#425][31]) ([#113][32]) ([`069be60`][33]) * Move schemas to separate modules (box/box-codegen[#483][34]) ([#99][35]) ([`c7a8506`][36]) * Start throwing common errors `(box/box-codegen[#516](https://github.com/box/box-codegen/issues/516))` ([#147][37]) ([`d12bbb7`][38]) * Support Box AI endpoints (box/box-openapi[#416][39]) ([#86][40]) ([`175ab82`][41]) * Support chunk upload in Swift `(box/box-codegen[#513](https://github.com/box/box-codegen/issues/513))` ([#142][42]) ([`9e0b4e2`][43]) * support excluding endpoints and schemas in parser (box/box-codegen[#487][44]) ([#100][45]) ([`af9e171`][46]) [1]: https://github.com/box/box-codegen/issues/491 [2]: https://github.com/box/box-codegen/issues/115 [3]: https://github.com/box/box-codegen/commit/d0a7adb201c823313f0a5de25fa4fc5469590c97 [4]: https://github.com/box/box-codegen/issues/418 [5]: https://github.com/box/box-codegen/issues/88 [6]: https://github.com/box/box-codegen/commit/022f83aaa7fbe3f4292a06527875123ecc7b99f0 [7]: https://github.com/box/box-codegen/issues/506 [8]: https://github.com/box/box-codegen/issues/135 [9]: https://github.com/box/box-codegen/commit/a62e238534cb625dbc98cbe59c98939c78b74f4a [10]: https://github.com/box/box-codegen/issues/486 [11]: https://github.com/box/box-codegen/issues/94 [12]: https://github.com/box/box-codegen/commit/4f187bed1e88c93c1258be8723a39b45129ff21f [13]: https://github.com/box/box-codegen/issues/419 [14]: https://github.com/box/box-codegen/issues/90 [15]: https://github.com/box/box-codegen/commit/b04f7ceee9bca4f1f19d66401f38636e7737b4b1 [16]: https://github.com/box/box-codegen/issues/423 [17]: https://github.com/box/box-codegen/issues/104 [18]: https://github.com/box/box-codegen/commit/caa9d2b7d0a6c2728f543fa19acb7859f21fb5c9 [19]: https://github.com/box/box-codegen/issues/424 [20]: https://github.com/box/box-codegen/issues/111 [21]: https://github.com/box/box-codegen/commit/4fa69f01ca3a2a7fc8dcdc71cbecb03c469a83e6 [22]: https://github.com/box/box-codegen/issues/136 [23]: https://github.com/box/box-codegen/commit/b186b11a2c591cd4fdd3b50733750a7bb4ec94e9 [24]: https://github.com/box/box-codegen/issues/139 [25]: https://github.com/box/box-codegen/commit/7fc76fc1799db0a50ad22eb047d013c4597c5277 [26]: https://github.com/box/box-codegen/issues/488 [27]: https://github.com/box/box-codegen/issues/103 [28]: https://github.com/box/box-codegen/commit/7e1ea1af553cc8458eb9026c777608f7929e686d [29]: https://github.com/box/box-codegen/issues/143 [30]: https://github.com/box/box-codegen/commit/b8099ab41ea5b8706e14285a0f9db2fd3c0a7a6d [31]: https://github.com/box/box-codegen/issues/425 [32]: https://github.com/box/box-codegen/issues/113 [33]: https://github.com/box/box-codegen/commit/069be60613889b45b396bbe22262c5f8df32b158 [34]: https://github.com/box/box-codegen/issues/483 [35]: https://github.com/box/box-codegen/issues/99 [36]: https://github.com/box/box-codegen/commit/c7a85069544c28e2be918eafd9e240f39660ead3 [37]: https://github.com/box/box-codegen/issues/147 [38]: https://github.com/box/box-codegen/commit/d12bbb7d06bd3fcf39c31e316f1047065b56baac [39]: https://github.com/box/box-codegen/issues/416 [40]: https://github.com/box/box-codegen/issues/86 [41]: https://github.com/box/box-codegen/commit/175ab82c18dc390bcd4c8e20aea8e405a2e31c4d [42]: https://github.com/box/box-codegen/issues/142 [43]: https://github.com/box/box-codegen/commit/9e0b4e26a9283b5900ae0fe0fa858394b732f51b [44]: https://github.com/box/box-codegen/issues/487 [45]: https://github.com/box/box-codegen/issues/100 [46]: https://github.com/box/box-codegen/commit/af9e171c101703c98ff9a53093d7fc9c306137d9 ## Box TypeScript SDK Generated v1.1.0 released ### Bug Fixes * Fix CI for auto update pull requests (`box/box-codegen`[#506][1]) ([#221][2]) ([`bbc14f6`][3]) * remove quotation mark when date or `datetime` is used in `queryParams` (box/`box-codegen`[#509][4]) ([#225][5]) ([`28d2220`][6]) ### New Features and Enhancements * add missing marker pagination fields and introduce new event type `AppItemEventSource` `(box/box-openapi[#431](https://github.com/box/box-typescript-sdk-gen/issues/431))` ([#224][7]) ([`6c18ca3`][8]) [1]: https://github.com/box/box-typescript-sdk-gen/issues/506 [2]: https://github.com/box/box-typescript-sdk-gen/issues/221 [3]: https://github.com/box/box-typescript-sdk-gen/commit/bbc14f66e14a9386c8d54a5d0bb36ec2cdc501c1 [4]: https://github.com/box/box-typescript-sdk-gen/issues/509 [5]: https://github.com/box/box-typescript-sdk-gen/issues/225 [6]: https://github.com/box/box-typescript-sdk-gen/commit/28d22200602cf02d73590189c304109f1c26db17 [7]: https://github.com/box/box-typescript-sdk-gen/issues/224 [8]: https://github.com/box/box-typescript-sdk-gen/commit/6c18ca3b00da0b878d28e142a2361b6386ef0c15 ## Box Python SDK Generated v1.1.0 released ### Bug Fixes * Fix CI for auto update pull requests (`box/box-codegen`[#506][1]) ([#187][2]) ([`5e59f69`][3]) ### New Features and Enhancements * add missing marker pagination fields and introduce new event type `AppItemEventSource` `(box/box-openapi[#431](https://github.com/box/box-codegen/issues/431))` ([#189][4]) ([`8d22ce2`][5]) [1]: https://github.com/box/box-codegen/issues/506 [2]: https://github.com/box/box-codegen/issues/187 [3]: https://github.com/box/box-codegen/commit/5e59f69591e01cd2caf0033e0023061093989aa5 [4]: https://github.com/box/box-codegen/issues/189 [5]: https://github.com/box/box-codegen/commit/8d22ce20d57f4b5dcb5b344ff6bfc67bcaa3568d ## Box Python SDK v3.11.0 released ### New Features and Enhancements * Use upload session `urls` for chunk upload ([#875][1]) ([`c67b03c`][2]) [1]: https://github.com/box/box-python-sdk/issues/875 [2]: https://github.com/box/box-python-sdk/commit/c67b03c7d88533773d62d72f0b626031805d61eb ## Box Java SDK v4.9.1 released ### Bug Fixes * Bumped `org.bouncycastle:bcprov-jdk18on:1.78.1` and `org.bouncycastle:bcpkix-jdk18on:1.78.1` ([#1246][1]) ([`0557bed`][2]) [1]: https://github.com/box/box-java-sdk/issues/1246 [2]: https://github.com/box/box-java-sdk/commit/0557bed2b65d1be717b64a612d74fca73ba21096 ## Box Java SDK v4.10.0 released ### New Features and Enhancements * Overload the `getRepresentationContent` method with a `maxRetries` parameter ([#1251][1]) ([`d26bd4f`][2]) * Support `login_required`, `password`, `suppress_nofitications`, `verification_phone_number` and `additional_info` fields in sign request ([#1250][3]) ([`3ee55b3`][4]) [1]: https://github.com/box/box-java-sdk/issues/1251 [2]: https://github.com/box/box-java-sdk/commit/d26bd4f5a141150a372159bc3867abbbbdda1406 [3]: https://github.com/box/box-java-sdk/issues/1250 [4]: https://github.com/box/box-java-sdk/commit/3ee55b3613c5f5fa92cdd4a17c0cb3e2cc86a9a4 ## Box CLI v3.14.1 released ### Bug Fixes * Fix bulk action in `search` command ([#528][1]) ([`782b0e6`][2]) * Fix bulk operation for `sign-requests:create` command ([#531][3]) ([`6d9cd6b`][4]) [1]: https://github.com/box/boxcli/issues/528 [2]: https://github.com/box/boxcli/commit/782b0e6b00905d9724289cb05cf03a708c32ebb3 [3]: https://github.com/box/boxcli/issues/531 [4]: https://github.com/box/boxcli/commit/6d9cd6b82088185c1b98e8c4ed9ac26af4ee3362 ## Box UI Elements v20.0.1-beta.1 released ## [`20.0.1-beta.1`][1] (2024-05-31) ### Bug Fixes * **avatars:** Add type to Fetch avatar ([#3560][2]) ([`14a194f`][3]) [1]: https://github.com/box/box-ui-elements/compare/v20.0.0...v20.0.1-beta.1 [2]: https://github.com/box/box-ui-elements/issues/3560 [3]: https://github.com/box/box-ui-elements/commit/14a194f ## PDF.js vulnerability affecting Box Preview SDK A `CVE-2024-4367` vulnerability has been identified in the `PDF.js` library used by [Box Preview SDK][1]. The vulnerability exposes a gap in the `PDF.js` type, checking code that allows for arbitrary JavaScript to run when opened in Preview. Since this vulnerability existed in all versions of `PDF.js` that were lower or equal to `4.1.392`, it affects all versions of Preview SDK lower than `2.106.0`. To mitigate this vulnerability, upgrade the Preview SDK used in your apps to `2.106.0` or higher. All customers and application owners who are potentially affected have been notified directly via email. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][2] for any help needed. [1]: https://github.com/box/box-content-preview/blob/master/README.md [2]: https://forum.box.com/ ## Box UI Elements v20.0.0 released ### [20.0.0][1] (2024-05-22) ### Bug Fixes * **content-answers:** scope styles to content answers modal ([#3548][2]) ([`97d49ff`][3]) * **fonts:** update common fonts version ([#3499][4]) ([`870de6d`][5]) * **i18n:** update translations ([#3508][6]) ([`785be2a`][7]) * **i18n:** update translations ([#3509][8]) ([`85ebf26`][9]) * **i18n:** update translations ([#3516][10]) ([`cb470e9`][11]) * **i18n:** update translations ([#3525][12]) ([`ffb447c`][13]) * **i18n:** update translations ([#3528][14]) ([`1cf016f`][15]) * **i18n:** update translations ([#3534][16]) ([`36e95a9`][17]) * **i18n:** update translations ([#3535][18]) ([`c8d03c3`][19]) * **i18n:** update translations ([#3538][20]) ([`cde1b88`][21]) * **i18n:** update translations ([#3540][22]) ([`a7043e6`][23]) * **i18n:** update translations ([#3541][24]) ([`3ced4a5`][25]) * **`multiput-upload`:** improve upload performance ([#3512][26]) ([`2583e94`][27]) * **`npm`:** add chromatic config to `npmignore` ([#3546][28]) ([`e2e6731`][29]) * **preview:** Update default preview version to `2.106.0` ([#3555][30]) ([`f07d616`][31]) * **`react-intl`:** mock date in relative time unit tests ([#3518][32]) ([`3ce175b`][33]) * **shared-link-settings-modal:** correct expiration date formatting ([#3545][34]) ([`e47892f`][35]) * **upload:** improve `multiput` upload performance 2 ([#3517][36]) ([`2440746`][37]) * **usm:** fix item type hubs ([#3532][38]) ([`0d1e9cf`][39]) * **usm:** hide link description when upsell shows ([#3553][40]) ([`838a2e8`][41]) ### Features * **content-explorer:** allow not using Portal when rendering modal ([#3501][42]) ([`b096d38`][43]) * **content-uploader:** Added `allowPrepopulateFiles` prop to content uploader ([#3519][44]) ([`12427b1`][45]) * **content-uploader:** Implemented partial upload for successful file transfers ([#3529][46]) ([`e70825c`][47]) * **docgen:** docgen sidebar base ([#3484][48]) ([`4b18b21`][49]) * **`react-intl`:** Bump `react-intl` package \[BREAKING CHANGE] ([#3466][50]) ([`307c6a4`][51]) * **usm:** Add access level label for hubs ([#3526][52]) ([`6504480`][53]) * **usm:** add inline notice as component ([#3549][54]) ([`d646c65`][55]) ### BREAKING CHANGES * **`react-intl`:** upgrade the major version of the `react-intl` dependency * fix: fix `intl` type * fix: fix message syntax * fix: fix comments and i18n readme file * fix: fix `react-intl` version comments * fix: use `IntlShape` as a type in js files * Fix: correct type import for `IntlShape` * fix: add resolution * fix: use exact version to match other repositories * Fix: correct type import for `IntlShape` * fix: remove all support for legacy versions * fix: add `relativeTime` helper function * fix: fix `relativeTime` in `PresenceAvatarTooltipContent` component * fix: fix `relativeTime` in `PresenceCollaborator` component * fix: use inclusive inequalities in `relativeTime` helper * fix: remove unnecessary modulo operations * fix: fix `relativeTime` in `ReadableTime` + fix snapshots * fix: fix `relativeTime` in `lastModifiedByCellRenderer` * fix: fix tests * fix: use js * fix: fix import * fix: fix else statement * fix: revert import reorder [1]: https://github.com/box/box-ui-elements/compare/v19.0.0...v20.0.0 [2]: https://github.com/box/box-ui-elements/issues/3548 [3]: https://github.com/box/box-ui-elements/commit/97d49ff [4]: https://github.com/box/box-ui-elements/issues/3499 [5]: https://github.com/box/box-ui-elements/commit/870de6d [6]: https://github.com/box/box-ui-elements/issues/3508 [7]: https://github.com/box/box-ui-elements/commit/785be2a [8]: https://github.com/box/box-ui-elements/issues/3509 [9]: https://github.com/box/box-ui-elements/commit/85ebf26 [10]: https://github.com/box/box-ui-elements/issues/3516 [11]: https://github.com/box/box-ui-elements/commit/cb470e9 [12]: https://github.com/box/box-ui-elements/issues/3525 [13]: https://github.com/box/box-ui-elements/commit/ffb447c [14]: https://github.com/box/box-ui-elements/issues/3528 [15]: https://github.com/box/box-ui-elements/commit/1cf016f [16]: https://github.com/box/box-ui-elements/issues/3534 [17]: https://github.com/box/box-ui-elements/commit/36e95a9 [18]: https://github.com/box/box-ui-elements/issues/3535 [19]: https://github.com/box/box-ui-elements/commit/c8d03c3 [20]: https://github.com/box/box-ui-elements/issues/3538 [21]: https://github.com/box/box-ui-elements/commit/cde1b88 [22]: https://github.com/box/box-ui-elements/issues/3540 [23]: https://github.com/box/box-ui-elements/commit/a7043e6 [24]: https://github.com/box/box-ui-elements/issues/3541 [25]: https://github.com/box/box-ui-elements/commit/3ced4a5 [26]: https://github.com/box/box-ui-elements/issues/3512 [27]: https://github.com/box/box-ui-elements/commit/2583e94 [28]: https://github.com/box/box-ui-elements/issues/3546 [29]: https://github.com/box/box-ui-elements/commit/e2e6731 [30]: https://github.com/box/box-ui-elements/issues/3555 [31]: https://github.com/box/box-ui-elements/commit/f07d616 [32]: https://github.com/box/box-ui-elements/issues/3518 [33]: https://github.com/box/box-ui-elements/commit/3ce175b [34]: https://github.com/box/box-ui-elements/issues/3545 [35]: https://github.com/box/box-ui-elements/commit/e47892f [36]: https://github.com/box/box-ui-elements/issues/3517 [37]: https://github.com/box/box-ui-elements/commit/2440746 [38]: https://github.com/box/box-ui-elements/issues/3532 [39]: https://github.com/box/box-ui-elements/commit/0d1e9cf [40]: https://github.com/box/box-ui-elements/issues/3553 [41]: https://github.com/box/box-ui-elements/commit/838a2e8 [42]: https://github.com/box/box-ui-elements/issues/3501 [43]: https://github.com/box/box-ui-elements/commit/b096d38 [44]: https://github.com/box/box-ui-elements/issues/3519 [45]: https://github.com/box/box-ui-elements/commit/12427b1 [46]: https://github.com/box/box-ui-elements/issues/3529 [47]: https://github.com/box/box-ui-elements/commit/e70825c [48]: https://github.com/box/box-ui-elements/issues/3484 [49]: https://github.com/box/box-ui-elements/commit/4b18b21 [50]: https://github.com/box/box-ui-elements/issues/3466 [51]: https://github.com/box/box-ui-elements/commit/307c6a4 [52]: https://github.com/box/box-ui-elements/issues/3526 [53]: https://github.com/box/box-ui-elements/commit/6504480 [54]: https://github.com/box/box-ui-elements/issues/3549 [55]: https://github.com/box/box-ui-elements/commit/d646c65 ## Box Python SDK v3.10.0 released ### New Features and Enhancements * Transition to stable status ([#872][1]) ([`6203606`][2]) ### Bug Fixes * Change exception type for missing location header ([#871][3]) ([`8c5e0ec`][4]) * fix annotation of oauths `access_token` ([#855][5]) ([`804780e`][6]) * Fix retention policy integration test ([#867][7]) ([`8e0d640`][8]) * Remove delete classification ([#861][9]) ([`393cfef`][10]) * Update exception file get download URL ([#866][11]) ([`94dcbcd`][12]) [1]: https://github.com/box/box-python-sdk/issues/872 [2]: https://github.com/box/box-python-sdk/commit/620360607a51ee302cde61401db1424c9bf48d81 [3]: https://github.com/box/box-python-sdk/issues/871 [4]: https://github.com/box/box-python-sdk/commit/8c5e0eca7e494baa8138dceededa2009abc1717b [5]: https://github.com/box/box-python-sdk/issues/855 [6]: https://github.com/box/box-python-sdk/commit/804780e4c8d410590fa20cdb6dd35224d59d2ec0 [7]: https://github.com/box/box-python-sdk/issues/867 [8]: https://github.com/box/box-python-sdk/commit/8e0d6406f26be87799838b0aa57acd62c79d59a2 [9]: https://github.com/box/box-python-sdk/issues/861 [10]: https://github.com/box/box-python-sdk/commit/393cfefa57e729f34221a4e5923a4a50532f4013 [11]: https://github.com/box/box-python-sdk/issues/866 [12]: https://github.com/box/box-python-sdk/commit/94dcbcd490d98ff19afd38c9880de8022ad2ec89 ## Introducing New Generation Python SDK We are excited to introduce [Box Python SDK][1], designed to elevate the developer experience and streamline your integration with the Box Content Cloud. With the [new generation of Python SDK][1], you'll have access to: * **Full API Support**: The new generation of Box SDKs empowers developers with complete coverage of the Box API ecosystem. You can now access all the latest features and functionalities offered by Box, allowing you to build even more sophisticated and feature-rich applications. * **Rapid API Updates** Say goodbye to waiting for new Box APIs to be incorporated into the SDK. With our new auto-generation development approach, we can now add new Box APIs to the SDK at a much faster pace (in a matter of days). This means you can leverage the most up-to-date features in your applications without delay. * **Embedded Documentation**: We understand that access to information is crucial for developers. With our new approach, we have included comprehensive documentation for all objects and parameters directly in the source code of the SDK. This means you no longer need to look up this information on the developer portal, saving you time and streamlining your development process. * **Enhanced Convenience Methods**: Our commitment to enhancing your development experience continues with the introduction of convenience methods. These methods cover various aspects such as authentication, chunk uploads, exponential back-offs, automatic retries, type checkers which help to ensure that you’re using variables correctly, and much more. Embrace the new generation of Box SDKs and unlock the full potential of the Box Content Cloud. Start building innovative solutions faster and more efficiently. Happy coding! [1]: https://github.com/box/box-python-sdk-gen ## Box Node SDK v3.6.0 released ### New Features and Enhancements * Transition to stable status ([#880][1]) ([`ae996ea`][2]) [1]: https://github.com/box/box-node-sdk/issues/880 [2]: https://github.com/box/box-node-sdk/commit/ae996eafd9e34de99119a7780384b90758908313 ## Introducing New Generation TypeScript SDK We are excited to introduce [Box TypeScript SDK][1], designed to elevate the developer experience and streamline your integration with the Box Content Cloud. With the [new generation of Typescript SDK][1], you’ll have access to: * **Full API Support**: The new generation of Box SDKs empowers developers with complete coverage of the Box API ecosystem. You can now access all the latest features and functionalities offered by Box, allowing you to build even more sophisticated and feature-rich applications. * **Rapid API Updates**: Say goodbye to waiting for new Box APIs to be incorporated into the SDK. With our new auto-generation development approach, we can now add new Box APIs to the SDK at a much faster pace (in a matter of days). This means you can leverage the most up-to-date features in your applications without delay. * **Embedded Documentation**: We understand that access to information is crucial for developers. With our new approach, we have included comprehensive documentation for all objects and parameters directly in the source code of the SDK. This means you no longer need to look up this information on the developer portal, saving you time and streamlining your development process. * **Enhanced Convenience Methods**: Our commitment to enhancing your development experience continues with the introduction of convenience methods. These methods cover various aspects such as authentication, chunk uploads, exponential back-offs, automatic retries, type checkers which help to ensure that you’re using variables correctly, and much more. Embrace the new generation of Box SDKs and unlock the full potential of the Box Content Cloud. Start building innovative solutions faster and more efficiently. Happy coding! [1]: https://github.com/box/box-typescript-sdk-gen ## Notification suppression for Box Sign [Box Sign API][1] allows you to suppress the **default** Box email notifications sent during the Box Sign workflow.​​ Thanks to this feature, you can turn the default notifications off to use your own, customized messages and decide on channels they will be sent through. ***Note**: When you choose to suppress email notifications for Box Sign, your organization assumes responsibility for ensuring the delivery to Signers of all notifications at the appropriate time in the signing process and with the appropriate content, in compliance with all applicable laws and regulations, including with respect to obtaining Signer consent to the delivery methods used, if applicable.* ## New Box Sign webhooks Along with the notification suppression feature, we introduce three new [webhooks][2] to enhance the customization options for e-signature workflows: * `SIGN.REQUEST.SIGNATURE_REQUESTED` * `SIGN.REQUEST.SIGNER_SIGNED` * `SIGN.REQUEST.ERROR_FINALIZING` You can use these webhooks to trigger actions in your own applications or notify your users about events happening in Box Sign.​​ ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][3] for any help needed. [1]: /reference/post-sign-requests [2]: https://developer.box.com/sign/webhooks/ [3]: https://forum.box.com/ ## Box Java SDK v4.9.0 released ### New Features and Enhancements * Support AI API ([#1243][1]) ([`4e64f27`][2]) * Support pagination of file versions ([#1240][3]) ([`7e7af3f`][4]) ### Bug Fixes * Support create empty shared link ([#1241][5]) ([`0c86487`][6]) * Update exception message for get representation content ([#1239][7]) ([`a608f9a`][8]) [1]: https://github.com/box/box-java-sdk/issues/1243 [2]: https://github.com/box/box-java-sdk/commit/4e64f27874fabf36f7fbf385ca4a60683f4a7670 [3]: https://github.com/box/box-java-sdk/issues/1240 [4]: https://github.com/box/box-java-sdk/commit/7e7af3f6e40a44522a7649817547846e3f633fc8 [5]: https://github.com/box/box-java-sdk/issues/1241 [6]: https://github.com/box/box-java-sdk/commit/0c86487848e5004a713873baffa2d9dcc63b1502 [7]: https://github.com/box/box-java-sdk/issues/1239 [8]: https://github.com/box/box-java-sdk/commit/a608f9a4350b723e9f07eaf00af45243737a17c9 ## Introducing Box AI API and Box AI Dev Zone Box AI API allows you to use Box AI functionality in your custom applications. For example, you can implement Box AI question and answer functionality in your third party applications or generate content right in your product’s content editor. *Box AI API and Box AI for UI Elements are beta features, which means the available capabilities may change. Box AI features are available to all **Enterprise Plus** customers.* Currently, you can ask Box AI to answer your questions, summarize the document content, or generate text you can use in your documents. Check the [Box AI API developer guides][1] to learn more about Box AI and check the API Reference for details. ## Box AI Developer Zone Alongside with the Box AI API, we have launched a new developer documentation demo page. [Box AI Dev Zone][2] allows you to explore the Box AI API through rich, interactive experiences. You can view use cases, example prompts and responses, and sample code. ## Box AI for UI Elements [Box AI for UI Elements][3] enhances the [Content Preview][4] header with AI Q\&A functionality. The new Box AI for UI Elements allows the users to embed AI functionality in their custom applications to facilitate answering questions and taking actions like summarizing a document. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][5] for any help needed. [1]: https://developer.box.com/guides/box-ai [2]: https://developer.box.com/ai-dev-zone [3]: /guides/embed/ui-elements/preview#box-ai-ui-element [4]: /guides/embed/ui-elements/preview [5]: https://forum.box.com/ ## Box Node SDK v3.5.1 released ### Bug Fixes * Fix `options` parameter in metadata query method ([#878][1]) ([`7943420`][2]) [1]: https://github.com/box/box-node-sdk/issues/878 [2]: https://github.com/box/box-node-sdk/commit/79434209c572cd77c329d6008cda9837a9dba411 ## Box iOS SDK v5.6.0 released ### New Features and Enhancements * Add privacy manifest files ([#924][1]) ([`cbef168`][2]) * Add support for `visionOS` ([#916][3]) ([`a05b243`][4]) * Add support for additional fields in `SignRequest` ([#919][5]) ([`36f464c`][6]) * Make fields from `TokenInfo` publicly available ([#920][7]) ([`eb26f47`][8]) [1]: https://github.com/box/box-ios-sdk/issues/924 [2]: https://github.com/box/box-ios-sdk/commit/cbef168bb872941899be26116c647ac29f5dd44b [3]: https://github.com/box/box-ios-sdk/issues/916 [4]: https://github.com/box/box-ios-sdk/commit/a05b2433f1b2d0c1ec72f946e0706d03a4548703 [5]: https://github.com/box/box-ios-sdk/issues/919 [6]: https://github.com/box/box-ios-sdk/commit/36f464c23a161f5d0fcc6858c3615d884ce8ee07 [7]: https://github.com/box/box-ios-sdk/issues/920 [8]: https://github.com/box/box-ios-sdk/commit/eb26f47bbde6749f44f149e95b3610e41c16d2f2 ## Box CLI v3.14.0 released ### New Features and Enhancements * Add support for `vanity_name` when creating `shared-links` ([#524][1]) ([`38164bc`][2]) * Support sign request signer group ID ([#521][3]) ([`f7b1b44`][4]) [1]: https://github.com/box/boxcli/issues/524 [2]: https://github.com/box/boxcli/commit/38164bc716879aef0a8a2b973a9c6fc7eb705978 [3]: https://github.com/box/boxcli/issues/521 [4]: https://github.com/box/boxcli/commit/f7b1b4409e0f72c264cc23a0f1ca1849060bf121 ## Box Windows SDK v5.7.0 released ### New Features and Enhancements * add marker-based pagination version of `GetFolderItems` ([#936][1]) ([`f877a8f`][2]) * Support sign request signer group ID ([#938][3]) ([`096a098`][4]) ### Bug Fixes * Remove delete classification ([#932][5]) ([`fb59489`][6]) - [https://www.nuget.org/packages/Box.V2/5.7.0>](https://www.nuget.org/packages/Box.V2/5.7.0>) - [https://www.nuget.org/packages/Box.V2.Core/5.7.0>](https://www.nuget.org/packages/Box.V2.Core/5.7.0>) [1]: https://github.com/box/box-windows-sdk-v2/issues/936 [2]: https://github.com/box/box-windows-sdk-v2/commit/f877a8f9105d65a3e3ca459fcbf4a1bb653ff0f3 [3]: https://github.com/box/box-windows-sdk-v2/issues/938 [4]: https://github.com/box/box-windows-sdk-v2/commit/096a09805b189c591289e77ae5f8a8e6f1b466f1 [5]: https://github.com/box/box-windows-sdk-v2/issues/932 [6]: https://github.com/box/box-windows-sdk-v2/commit/fb594897850ad9daacf75cab702f3765cc7168c0 ## Box Java SDK v4.8.0 released ### New Features and Enhancements * allow modifying `BoxAPIRequest` URL ([#1236][1]) ([`eaea019`][2]) * Bumped `org.bouncycastle:bcprov-jdk18on:1.77` and `org.bouncycastle:bcpkix-jdk18on:1.77` ([#1237][3]) ([`6c7fe7b`][4]), closes [#1235][5] ### Bug Fixes * fix download for empty files ([#1231][6]) ([`0e2230b`][7]) * stop using `SharedLinkAPIConnection` in `getSharedItem()` ([#1234][8]) ([`9f9af8e`][9]) [1]: https://github.com/box/box-java-sdk/issues/1236 [2]: https://github.com/box/box-java-sdk/commit/eaea0193ab7e72b73746ea85806e62468825bbce [3]: https://github.com/box/box-java-sdk/issues/1237 [4]: https://github.com/box/box-java-sdk/commit/6c7fe7b74dbfb34e729fcecf8a29a1d3a1ba596f [5]: https://github.com/box/box-java-sdk/issues/1235 [6]: https://github.com/box/box-java-sdk/issues/1231 [7]: https://github.com/box/box-java-sdk/commit/0e2230b0be36f6bfb35f1d6b9dd4ba58e4d125ec [8]: https://github.com/box/box-java-sdk/issues/1234 [9]: https://github.com/box/box-java-sdk/commit/9f9af8e22b4a38dc9a31a611ff1b962966bbd6b5 ## Box CLI v3.13.0 released ### New Features and Enhancements * Add additional `UseDisplayName` flag to metadata extraction script ([#515][1]) ([`b900fdb`][2]) * Add additional context info when throw exception ([#519][3]) ([`b99a58d`][4]) * Support overwrite/skip folder download ([#516][5]) ([`300f914`][6]) ### Bug Fixes * Fix metadata extraction script ([#514][7]) ([`2fad540`][8]) * Fix the functionality of the overwrite flag ([#513][9]) ([`f4bf7af`][10]) [1]: https://github.com/box/boxcli/issues/515 [2]: https://github.com/box/boxcli/commit/b900fdb984345c0fdfeb09e531f6a358ad8c3b8e [3]: https://github.com/box/boxcli/issues/519 [4]: https://github.com/box/boxcli/commit/b99a58d930eccf5363c82b84e4415336d7d69541 [5]: https://github.com/box/boxcli/issues/516 [6]: https://github.com/box/boxcli/commit/300f914ba8bb94d9c399699d126d81aba0b22142 [7]: https://github.com/box/boxcli/issues/514 [8]: https://github.com/box/boxcli/commit/2fad540badf60538fe1456f8071b74bf917f7464 [9]: https://github.com/box/boxcli/issues/513 [10]: https://github.com/box/boxcli/commit/f4bf7af8e0bbdf7e73fab23d920259ef16672be0 ## Box Node SDK v3.5.0 released ### New Features and Enhancements * Sign request group ([#870][1]) ([`11bf5d2`][2]) ### Bug Fixes * Bumped proxy-agent to 6.4.0 ([#874][3]) ([`55a8a0b`][4]) * Remove delete classification ([#869][5]) ([`22384ab`][6]) [1]: https://github.com/box/box-node-sdk/issues/870 [2]: https://github.com/box/box-node-sdk/commit/11bf5d2db7e0cefc669aab99c8b65c632289ac46 [3]: https://github.com/box/box-node-sdk/issues/874 [4]: https://github.com/box/box-node-sdk/commit/55a8a0baebe151f4107fdbec0a1022e9534f88a4 [5]: https://github.com/box/box-node-sdk/issues/869 [6]: https://github.com/box/box-node-sdk/commit/22384abc3abbc35800cbcdea7c7eb9a452cc4859 ## Working with Box Sign We are thrilled to announce the release of our new dedicated resource page [Working with the Box Sign API][1]. This comprehensive guide is designed to help you seamlessly integrate Box Sign into your applications, providing you with the tools and knowledge to make the most out of this powerful e-signature solution. ## Table of content * [Quick start][2] * [Technical use cases][3] * [Signature request options][4] * [Webhooks][5] * [Workshops][6] [1]: https://developer.box.com/sign/ [2]: https://developer.box.com/sign/quick-start/ [3]: https://developer.box.com/sign/technical-use-cases/ [4]: https://developer.box.com/sign/request-options/ [5]: https://developer.box.com/sign/webhooks/ [6]: https://github.com/barduinor/box-python-gen-workshop/blob/main/workshops/sign/sign.md ## Metadata view in Content Explorer Content Explorer comes with a metadata view that uses metadata query to find files and folders. The data is then displayed in the embedded view. For details, read the [Content Explorer guide][1] and our [blog post][2]. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][3] for any help needed. [1]: /guides/embed/ui-elements/explorer [2]: https://medium.com/box-developer-blog/metadata-view-in-box-content-explorer-4978e47e97e9 [3]: https://forum.box.com/ ## Box UI Elements v19.0.0 released ### [19.0.0][1] (2024-01-25) ### Bug Fixes * **activity-feed-zoom:** add a min-height prop to the items container ([#3411][2]) ([`a60a70d`][3]) * **button:** add aria labels for accessibility ([#3377][4]) ([`9a9b5e3`][5]) * **content-answers:** add `bdl` prefix into the styles ([#3421][6]) ([`fdbfc4d`][7]) * **content-explorer:** allow `onDelete` callback to be success on 404 ([#3468][8]) ([`13ed6da`][9]) * **content-explorer:** detect if device supports downloading ([#3480][10]) ([`fa68f9b`][11]) * **content-explorer:** fix text ellipsis in breadcrumbs ([#3481][12]) ([`6099b1d`][13]) * **content-explorer:** Remove lingering `contentPreviewProps` ([#3489][14]) ([`4181e0c`][15]) * **content-explorer:** show pagination count for small devices ([#3498][16]) ([`98537b9`][17]) * **content-picker:** use pagination component to import correct styles ([#3472][18]) ([`6aef87b`][19]) * **content-sidebar:** increase z-index to stack above annotations ([#3478][20]) ([`762b82d`][21]) * **content-uploader:** add text ellipsis and adjust spacing ([#3479][22]) ([`36df228`][23]) * **flyout:** set default role for Flyout to 'dialog' ([#3388][24]) ([`942f6b7`][25]) * **i18n:** update translations ([#3396][26]) ([`2175a82`][27]) * **i18n:** update translations ([#3398][28]) ([`4d71c62`][29]) * **i18n:** update translations ([#3401][30]) ([`0911005`][31]) * **i18n:** update translations ([#3409][32]) ([`4c95746`][33]) * **i18n:** update translations ([#3413][34]) ([`65eb428`][35]) * **i18n:** update translations ([#3417][36]) ([`9aab003`][37]) * **i18n:** update translations ([#3422][38]) ([`523492a`][39]) * **i18n:** update translations ([#3430][40]) ([`7b705bc`][41]) * **i18n:** update translations ([#3433][42]) ([`0e8decb`][43]) * **i18n:** update translations ([#3434][44]) ([`15e2e2e`][45]) * **i18n:** update translations ([#3437][46]) ([`0d06403`][47]) * **i18n:** update translations ([#3438][48]) ([`a6f4868`][49]) * **i18n:** update translations ([#3452][50]) ([`22bb031`][51]) * **i18n:** update translations ([#3453][52]) ([`85d2521`][53]) * **i18n:** update translations ([#3454][54]) ([`e83185e`][55]) * **i18n:** update translations ([#3455][56]) ([`a10aa5c`][57]) * **i18n:** update translations ([#3456][58]) ([`41ad809`][59]) * **i18n:** update translations ([#3457][60]) ([`b3f57ff`][61]) * **i18n:** update translations ([#3458][62]) ([`a1c42d7`][63]) * **i18n:** update translations ([#3459][64]) ([`1b6f4c2`][65]) * **i18n:** update translations ([#3462][66]) ([`13fc9b0`][67]) * **i18n:** update translations ([#3464][68]) ([`d1a888d`][69]) * **i18n:** update translations ([#3465][70]) ([`5413089`][71]) * **i18n:** update translations ([#3469][72]) ([`2ffe17f`][73]) * **i18n:** update translations ([#3470][74]) ([`1139bb0`][75]) * **i18n:** update translations ([#3471][76]) ([`41e02db`][77]) * **modal-dialog:** add aria-modal to `ModalDialog` ([#3380][78]) ([`c8f8509`][79]) * **modify-reply:** Map object to parameters ([#3387][80]) ([`3989675`][81]) * **preview:** Add accessibility to annotation badge type icon ([#3404][82]) ([`d4b7852`][83]) * **preview:** Change focus indicator for actions in version panel ([#3397][84]) ([`f111c64`][85]) * **preview:** Ensure promoted-by field shows correct user ([#3414][86]) ([`458fdbf`][87]) * **preview:** extending HOC to not override `onDismiss` callback ([#3431][88]) ([`4cc57a3`][89]) * **search-form:** extract search actions component ([#3475][90]) ([`8d77320`][91]) * deactivate copy in `textInputWithCopyButton` when button is deactivated ([#3419][92]) ([`68b2def`][93]) * hide uploads manager progress bar for screen-readers if not visible ([#3383][94]) ([`5592a48`][95]) * remove `core-js` from examples wrapper ([#3392][96]) ([`48ccdf7`][97]) * remove internal boxer names ([#3390][98]) ([`65cc5cb`][99]) * **preview-sidebar:** fix preview versions behavior ([#3203][100]) ([`d940782`][101]) * update source paths for test pages ([#3378][102]) ([`ff6b349`][103]) ### Features * **aci:** add `ACI` config to features prop ([#3410][104]) ([`e95a35e`][105]) * **activityitems:** new layout ([#3405][106]) ([`665d30a`][107]) * **annotations:** editing an annotation reply ([#3412][108]) ([`025ad7e`][109]) * **assets:** add Box AI assets ([#3393][110]) ([`bc6b04d`][111]) * **content-answers:** add `contentAnswers` Modal header and footer ([#3403][112]) ([`a7d0a3e`][113]) * **content-answers:** add inline error ([#3444][114]) ([`405cdb4`][115]) * **content-answers:** add modal body with initial welcome message ([#3415][116]) ([`6748e73`][117]) * **content-answers:** add prop to control displaying `contentAnswers` ([#3399][118]) ([`f0b0922`][119]) * **content-answers:** add scrolling to bottom ([#3442][120]) ([`59c8c45`][121]) * **content-answers:** Avatar ([#3418][122]) ([`45166f4`][123]) * **content-answers:** button focusing ([#3448][124]) ([`2358321`][125]) * **content-answers:** Content Answers Modal Error ([#3425][126]) ([`a5084a5`][127]) * **content-answers:** create initial content-answers modal button component ([#3395][128]) ([`217a393`][129]) * **content-answers:** Deactivate button when not allowed file type ([#3406][130]) ([`f950772`][131]) * **content-answers:** intelligence API ([#3420][132]) ([`76fd991`][133]) * **content-answers:** Questions Answers Intelligence endpoint ([#3435][134]) ([`4c7c0c0`][135]) * **content-answers:** retry button ([#3451][136]) ([`e0976b8`][137]) * **content-explorer:** Add auto selected items to content explorer ([#3474][138]) ([`215cfdd`][139]) * **content-sidebar:** enable responsiveness for Preview and Sidebar ([#3497][140]) ([`1652982`][141]) * **label-primitive:** pass properties to label ([#3473][142]) ([`7e88772`][143]) * **modal:** enable responsive behavior ([#3492][144]) ([`7fe59b8`][145]) * **pill-selector:** added more options for text input ([#3440][146]) ([`d782e4a`][147]) * **preview:** Focus on comment form for replies and modifying ([#3407][148]) ([`69293d8`][149]) * **threaded-replies:** added resolve/unresolve for annotations ([#3423][150]) ([`c489ad3`][151]) * **threaded-replies:** delete threaded reply comments ([#3402][152]) ([`37437c5`][153]) * **uaa-integration:** Handle no comment permission ([#3394][154]) ([`5a28b49`][155]) * **uaa-integration:** Parse App Activity item ([#3386][156]) ([`44fd12b`][157]) * **uaa-integration:** Parse Versions Response from UAA ([#3385][158]) ([`0fa730f`][159]) * **usm:** enable responsive behavior ([#3494][160]) ([`76db2a5`][161]) * remove browser support for IE11 ([#3382][162]) ([`e151c87`][163]) ### Reverts * "chore(codeowners): updated codeowners temporarily ([#3446][164])" ([#3476][165]) ([`3e38fa5`][166]) ### BREAKING CHANGES * Internet Explorer 11 is no longer supported [1]: https://github.com/box/box-ui-elements/compare/v18.1.0...v19.0.0 [2]: https://github.com/box/box-ui-elements/issues/3411 [3]: https://github.com/box/box-ui-elements/commit/a60a70d [4]: https://github.com/box/box-ui-elements/issues/3377 [5]: https://github.com/box/box-ui-elements/commit/9a9b5e3 [6]: https://github.com/box/box-ui-elements/issues/3421 [7]: https://github.com/box/box-ui-elements/commit/fdbfc4d [8]: https://github.com/box/box-ui-elements/issues/3468 [9]: https://github.com/box/box-ui-elements/commit/13ed6da [10]: https://github.com/box/box-ui-elements/issues/3480 [11]: https://github.com/box/box-ui-elements/commit/fa68f9b [12]: https://github.com/box/box-ui-elements/issues/3481 [13]: https://github.com/box/box-ui-elements/commit/6099b1d [14]: https://github.com/box/box-ui-elements/issues/3489 [15]: https://github.com/box/box-ui-elements/commit/4181e0c [16]: https://github.com/box/box-ui-elements/issues/3498 [17]: https://github.com/box/box-ui-elements/commit/98537b9 [18]: https://github.com/box/box-ui-elements/issues/3472 [19]: https://github.com/box/box-ui-elements/commit/6aef87b [20]: https://github.com/box/box-ui-elements/issues/3478 [21]: https://github.com/box/box-ui-elements/commit/762b82d [22]: https://github.com/box/box-ui-elements/issues/3479 [23]: https://github.com/box/box-ui-elements/commit/36df228 [24]: https://github.com/box/box-ui-elements/issues/3388 [25]: https://github.com/box/box-ui-elements/commit/942f6b7 [26]: https://github.com/box/box-ui-elements/issues/3396 [27]: https://github.com/box/box-ui-elements/commit/2175a82 [28]: https://github.com/box/box-ui-elements/issues/3398 [29]: https://github.com/box/box-ui-elements/commit/4d71c62 [30]: https://github.com/box/box-ui-elements/issues/3401 [31]: https://github.com/box/box-ui-elements/commit/0911005 [32]: https://github.com/box/box-ui-elements/issues/3409 [33]: https://github.com/box/box-ui-elements/commit/4c95746 [34]: https://github.com/box/box-ui-elements/issues/3413 [35]: https://github.com/box/box-ui-elements/commit/65eb428 [36]: https://github.com/box/box-ui-elements/issues/3417 [37]: https://github.com/box/box-ui-elements/commit/9aab003 [38]: https://github.com/box/box-ui-elements/issues/3422 [39]: https://github.com/box/box-ui-elements/commit/523492a [40]: https://github.com/box/box-ui-elements/issues/3430 [41]: https://github.com/box/box-ui-elements/commit/7b705bc [42]: https://github.com/box/box-ui-elements/issues/3433 [43]: https://github.com/box/box-ui-elements/commit/0e8decb [44]: https://github.com/box/box-ui-elements/issues/3434 [45]: https://github.com/box/box-ui-elements/commit/15e2e2e [46]: https://github.com/box/box-ui-elements/issues/3437 [47]: https://github.com/box/box-ui-elements/commit/0d06403 [48]: https://github.com/box/box-ui-elements/issues/3438 [49]: https://github.com/box/box-ui-elements/commit/a6f4868 [50]: https://github.com/box/box-ui-elements/issues/3452 [51]: https://github.com/box/box-ui-elements/commit/22bb031 [52]: https://github.com/box/box-ui-elements/issues/3453 [53]: https://github.com/box/box-ui-elements/commit/85d2521 [54]: https://github.com/box/box-ui-elements/issues/3454 [55]: https://github.com/box/box-ui-elements/commit/e83185e [56]: https://github.com/box/box-ui-elements/issues/3455 [57]: https://github.com/box/box-ui-elements/commit/a10aa5c [58]: https://github.com/box/box-ui-elements/issues/3456 [59]: https://github.com/box/box-ui-elements/commit/41ad809 [60]: https://github.com/box/box-ui-elements/issues/3457 [61]: https://github.com/box/box-ui-elements/commit/b3f57ff [62]: https://github.com/box/box-ui-elements/issues/3458 [63]: https://github.com/box/box-ui-elements/commit/a1c42d7 [64]: https://github.com/box/box-ui-elements/issues/3459 [65]: https://github.com/box/box-ui-elements/commit/1b6f4c2 [66]: https://github.com/box/box-ui-elements/issues/3462 [67]: https://github.com/box/box-ui-elements/commit/13fc9b0 [68]: https://github.com/box/box-ui-elements/issues/3464 [69]: https://github.com/box/box-ui-elements/commit/d1a888d [70]: https://github.com/box/box-ui-elements/issues/3465 [71]: https://github.com/box/box-ui-elements/commit/5413089 [72]: https://github.com/box/box-ui-elements/issues/3469 [73]: https://github.com/box/box-ui-elements/commit/2ffe17f [74]: https://github.com/box/box-ui-elements/issues/3470 [75]: https://github.com/box/box-ui-elements/commit/1139bb0 [76]: https://github.com/box/box-ui-elements/issues/3471 [77]: https://github.com/box/box-ui-elements/commit/41e02db [78]: https://github.com/box/box-ui-elements/issues/3380 [79]: https://github.com/box/box-ui-elements/commit/c8f8509 [80]: https://github.com/box/box-ui-elements/issues/3387 [81]: https://github.com/box/box-ui-elements/commit/3989675 [82]: https://github.com/box/box-ui-elements/issues/3404 [83]: https://github.com/box/box-ui-elements/commit/d4b7852 [84]: https://github.com/box/box-ui-elements/issues/3397 [85]: https://github.com/box/box-ui-elements/commit/f111c64 [86]: https://github.com/box/box-ui-elements/issues/3414 [87]: https://github.com/box/box-ui-elements/commit/458fdbf [88]: https://github.com/box/box-ui-elements/issues/3431 [89]: https://github.com/box/box-ui-elements/commit/4cc57a3 [90]: https://github.com/box/box-ui-elements/issues/3475 [91]: https://github.com/box/box-ui-elements/commit/8d77320 [92]: https://github.com/box/box-ui-elements/issues/3419 [93]: https://github.com/box/box-ui-elements/commit/68b2def [94]: https://github.com/box/box-ui-elements/issues/3383 [95]: https://github.com/box/box-ui-elements/commit/5592a48 [96]: https://github.com/box/box-ui-elements/issues/3392 [97]: https://github.com/box/box-ui-elements/commit/48ccdf7 [98]: https://github.com/box/box-ui-elements/issues/3390 [99]: https://github.com/box/box-ui-elements/commit/65cc5cb [100]: https://github.com/box/box-ui-elements/issues/3203 [101]: https://github.com/box/box-ui-elements/commit/d940782 [102]: https://github.com/box/box-ui-elements/issues/3378 [103]: https://github.com/box/box-ui-elements/commit/ff6b349 [104]: https://github.com/box/box-ui-elements/issues/3410 [105]: https://github.com/box/box-ui-elements/commit/e95a35e [106]: https://github.com/box/box-ui-elements/issues/3405 [107]: https://github.com/box/box-ui-elements/commit/665d30a [108]: https://github.com/box/box-ui-elements/issues/3412 [109]: https://github.com/box/box-ui-elements/commit/025ad7e [110]: https://github.com/box/box-ui-elements/issues/3393 [111]: https://github.com/box/box-ui-elements/commit/bc6b04d [112]: https://github.com/box/box-ui-elements/issues/3403 [113]: https://github.com/box/box-ui-elements/commit/a7d0a3e [114]: https://github.com/box/box-ui-elements/issues/3444 [115]: https://github.com/box/box-ui-elements/commit/405cdb4 [116]: https://github.com/box/box-ui-elements/issues/3415 [117]: https://github.com/box/box-ui-elements/commit/6748e73 [118]: https://github.com/box/box-ui-elements/issues/3399 [119]: https://github.com/box/box-ui-elements/commit/f0b0922 [120]: https://github.com/box/box-ui-elements/issues/3442 [121]: https://github.com/box/box-ui-elements/commit/59c8c45 [122]: https://github.com/box/box-ui-elements/issues/3418 [123]: https://github.com/box/box-ui-elements/commit/45166f4 [124]: https://github.com/box/box-ui-elements/issues/3448 [125]: https://github.com/box/box-ui-elements/commit/2358321 [126]: https://github.com/box/box-ui-elements/issues/3425 [127]: https://github.com/box/box-ui-elements/commit/a5084a5 [128]: https://github.com/box/box-ui-elements/issues/3395 [129]: https://github.com/box/box-ui-elements/commit/217a393 [130]: https://github.com/box/box-ui-elements/issues/3406 [131]: https://github.com/box/box-ui-elements/commit/f950772 [132]: https://github.com/box/box-ui-elements/issues/3420 [133]: https://github.com/box/box-ui-elements/commit/76fd991 [134]: https://github.com/box/box-ui-elements/issues/3435 [135]: https://github.com/box/box-ui-elements/commit/4c7c0c0 [136]: https://github.com/box/box-ui-elements/issues/3451 [137]: https://github.com/box/box-ui-elements/commit/e0976b8 [138]: https://github.com/box/box-ui-elements/issues/3474 [139]: https://github.com/box/box-ui-elements/commit/215cfdd [140]: https://github.com/box/box-ui-elements/issues/3497 [141]: https://github.com/box/box-ui-elements/commit/1652982 [142]: https://github.com/box/box-ui-elements/issues/3473 [143]: https://github.com/box/box-ui-elements/commit/7e88772 [144]: https://github.com/box/box-ui-elements/issues/3492 [145]: https://github.com/box/box-ui-elements/commit/7fe59b8 [146]: https://github.com/box/box-ui-elements/issues/3440 [147]: https://github.com/box/box-ui-elements/commit/d782e4a [148]: https://github.com/box/box-ui-elements/issues/3407 [149]: https://github.com/box/box-ui-elements/commit/69293d8 [150]: https://github.com/box/box-ui-elements/issues/3423 [151]: https://github.com/box/box-ui-elements/commit/c489ad3 [152]: https://github.com/box/box-ui-elements/issues/3402 [153]: https://github.com/box/box-ui-elements/commit/37437c5 [154]: https://github.com/box/box-ui-elements/issues/3394 [155]: https://github.com/box/box-ui-elements/commit/5a28b49 [156]: https://github.com/box/box-ui-elements/issues/3386 [157]: https://github.com/box/box-ui-elements/commit/44fd12b [158]: https://github.com/box/box-ui-elements/issues/3385 [159]: https://github.com/box/box-ui-elements/commit/0fa730f [160]: https://github.com/box/box-ui-elements/issues/3494 [161]: https://github.com/box/box-ui-elements/commit/76db2a5 [162]: https://github.com/box/box-ui-elements/issues/3382 [163]: https://github.com/box/box-ui-elements/commit/e151c87 [164]: https://github.com/box/box-ui-elements/issues/3446 [165]: https://github.com/box/box-ui-elements/issues/3476 [166]: https://github.com/box/box-ui-elements/commit/3e38fa5 ## New event parameter for Shield Suspicious Location alert Along with the release of Shield Suspicious Location: Automated Response we added `rule_response_action` parameter in the [Shield Alert Event][1] response. This parameter is returned in the payload of each Shield Alert Event, but applicable only to **Suspicious Locations** alert event. The value of the parameter depends on the **Restrict Target User Access** rule settings in the Admin Console. * If active, the value of the parameter will be `true` when the alert is triggered. * If inactive, the value of the parameter will be `false` when the alert is triggered. For all other Shield Alerts (**Anomalous Download**, **Malicious Content**, **Suspicious Session**), the `rule_response_action` parameter is always `null`. For additional information, see [Suspicious Location rule settings][2] ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][3] for any help needed. [1]: /guides/events/event-triggers/shield-alert-events/#suspicious-locations-alert [2]: https://support.box.com/hc/en-us/articles/9090542213395-Shield-Threat-Detection-Rule-Settings#h_01GE85EWQ1TS5APY7RGN801QSC [3]: https://forum.box.com/ ## Box Java SDK v4.7.0 released ### New Features and Enhancements * Add `signer_group_id` for signer in sign request ([#1220][1]) ([`f560db8`][2]) * Upgrade `BouncyCastle` to v.`1.70`. > **NOTE**: A new `BouncyCastle` version is not compliant with FIPS. * Introduce `IPrivateKeyDecryptor` to allow using custom cryptography provider ([#1226][3]) ([`727e6d7`][4]) ### Bug Fixes * Remove delete classification ([#1222][5]) ([`9814038`][6]) [1]: https://github.com/box/box-java-sdk/issues/1220 [2]: https://github.com/box/box-java-sdk/commit/f560db8d5587406099066803789d16374ec7dbb9 [3]: https://github.com/box/box-java-sdk/issues/1226 [4]: https://github.com/box/box-java-sdk/commit/727e6d71ee375a48b4241a26a093becfe0965898 [5]: https://github.com/box/box-java-sdk/issues/1222 [6]: https://github.com/box/box-java-sdk/commit/981403896b4cd16a42c9feeecf30e75e1e8fa072 ## Introducing enhanced My Apps view in Developer Console To improve application management experience even further, we introduce the [My Apps][1] list view in the Developer Console. This view includes key information about your applications, giving you the possibility to: * view and copy the application client ID, * view the application description, * sort custom applications, * check the authorization and enablement status of the application, * access the configuration and generate developer tokens. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][2] for any help needed. [1]: /guides/applications [2]: https://forum.box.com/ ## Introducing the NEW Learn Box Platform section To improve the getting started experience, we have reorganized and added resource materials for you to use when coming on to the platform. Checkout the learn section [here][1]. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][2] for any help needed. [1]: https://developer.box.com/platform/ [2]: https://forum.box.com/ ## Box Windows SDK v5.6.1 released ### Bug Fixes * support object value in `BoxConflictErrorContextInfo` ([#930][1]) ([`496f758`][2]) - [https://www.nuget.org/packages/Box.V2/5.6.1>](https://www.nuget.org/packages/Box.V2/5.6.1>) - [https://www.nuget.org/packages/Box.V2.Core/5.6.1>](https://www.nuget.org/packages/Box.V2.Core/5.6.1>) [1]: https://github.com/box/box-windows-sdk-v2/issues/930 [2]: https://github.com/box/box-windows-sdk-v2/commit/496f758c3436b1834188078027b7305ca6a98fce ## Box Node SDK v3.4.2 released ### Bug Fixes * Fix `proxy-agent` ([#867][1]) ([`3de7586`][2]) [1]: https://github.com/box/box-node-sdk/issues/867 [2]: https://github.com/box/box-node-sdk/commit/3de7586e44dbb7c8e1bff8f34471964805c810f5 ## Box CLI v3.12.2 released ### Bug Fixes * Bump `box-node-sdk` ([#510][1]) ([`2621f41`][2]) [1]: https://github.com/box/boxcli/issues/510 [2]: https://github.com/box/boxcli/commit/2621f4121999ff6e9d0cc0c391dfd3aa93aefe49 ## Box CLI v3.12.1 released ### Bug Fixes * force offset based pagination in get users ([#504][1]) ([`9bed083`][2]) [1]: https://github.com/box/boxcli/issues/504 [2]: https://github.com/box/boxcli/commit/9bed083d59b2386d045619fdf2f3ea915e44d231 ## Box Node SDK v3.4.1 released ### Bug Fixes * Update `proxy-agent` usage, drop support Node 12 ([#865][1]) ([`e229d3f`][2]) [1]: https://github.com/box/box-node-sdk/issues/865 [2]: https://github.com/box/box-node-sdk/commit/e229d3f93de350c00768528a1c0d3a6ecfc697a9 ## Box Node SDK v3.4.0 released ### New Features and Enhancements * Add request option to skip `PassThrough` ([#863][1]) ([`726db45`][2]) [1]: https://github.com/box/box-node-sdk/issues/863 [2]: https://github.com/box/box-node-sdk/commit/726db45cfbb992e545fe2865283df63c898656ac ## Box Java SDK v4.6.1 released ### Dependency Upgrades * Bumped `org.bitbucket.b_c:jose4j:0.9.3` ([#1212][1]) ([`f522a56`][2]) [1]: https://github.com/box/box-java-sdk/issues/1212 [2]: https://github.com/box/box-java-sdk/commit/f522a5660f3522b11a0516774ba0cca69db3ec31 ## Box Node SDK v3.3.0 released ### New Features and Enhancements * Replace `request` library with `@cypress/request` ([#860][1]) ([`d365ae8`][2]) ### Bug Fixes * mark auth functions callbacks as optional ([#858][3]) ([`55f22fe`][4]) [1]: https://github.com/box/box-node-sdk/issues/860 [2]: https://github.com/box/box-node-sdk/commit/d365ae8368c549ecdceb7dd5b928904fd3c58978 [3]: https://github.com/box/box-node-sdk/issues/858 [4]: https://github.com/box/box-node-sdk/commit/55f22fec7d7d35e487f3fb51bc9bbd3e848842ab ## Box Python SDK v3.9.2 released ### Bug Fixes * Remove restriction to version \<2 of `urllib3` library ([#851][1]) ([`1dcd82e`][2]) [1]: https://github.com/box/box-python-sdk/issues/851 [2]: https://github.com/box/box-python-sdk/commit/1dcd82e93267bfc68e3a7f8068b3c45ab7e86daf ## Introducing Box Platform Glossary To improve your experience with Box Platform and Box documentation, we created the [Box Platform Glossary][1]. You can find there terms and concepts that are most important to start working with Box content- and cloud-based solutions. As we want this list of terms to be comprehensive and detailed, it will be regularly updated. Let us know if you have any suggestions! ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][2] for any help needed. [1]: page/platform/box-glossary/ [2]: https://forum.box.com/ ## Box Node SDK v3.2.1 released ### Bug Fixes * Overrides tough-cookie dependency ([#852][1]) ([`99df873`][2]) [1]: https://github.com/box/box-node-sdk/issues/852 [2]: https://github.com/box/box-node-sdk/commit/99df873e1a1dad4a0073d53b4ed57c0eeb859401 ## Platform Insights for applications Admins and co-admins can now use the Platform Insights dashboard to get comprehensive view of the organization’s platform usage, including application-related information. With Platform Insights you can check the API call volume or the number of applications that are not enabled or approved yet. Additionally, you can see which apps are the most popular ones in you enterprise. For details, see [applications][1] and [Platform Insights][2] documentation. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][3] for any help needed. [1]: /guides/applications [2]: https://support.box.com/hc/en-us/articles/20738406915219-Platform-Insights [3]: https://forum.box.com/ ## Salesforce Toolkit - Integration Mappings You can now use [integration mappings][1] in Salesforce Toolkit with new [methods][2] and [flow actions][3]. With [integration mappings][4] you can map a Slack channel to any folder within your enterprise instead of the default one. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][5] for any help needed. [1]: /guides/integration-mappings/slack-mappings [2]: /guides/tooling/salesforce-toolkit/methods/#salesforce_and_slack [3]: /guides/tooling/salesforce-toolkit/flow-actions [4]: /reference/resources/integration-mappings [5]: https://forum.box.com/ ## Introducing Beta Release: New Generation Python SDc We are excited to introduce [the latest generation (currently in Beta) of Box Python SDK][1], designed to elevate the developer experience and streamline your integration with the Box Content Cloud. With the [new generation of Python SDK][1], you'll have access to: * **Full API Support**: The new generation of Box SDKs empowers developers with complete coverage of the Box API ecosystem. You can now access all the latest features and functionalities offered by Box, allowing you to build even more sophisticated and feature-rich applications. * **Rapid API Updates** Say goodbye to waiting for new Box APIs to be incorporated into the SDK. With our new auto-generation development approach, we can now add new Box APIs to the SDK at a much faster pace (in a matter of days). This means you can leverage the most up-to-date features in your applications without delay. * **Embedded Documentation**: We understand that access to information is crucial for developers. With our new approach, we have included comprehensive documentation for all objects and parameters directly in the source code of the SDK. This means you no longer need to look up this information on the developer portal, saving you time and streamlining your development process. * **Enhanced Convenience Methods**: Our commitment to enhancing your development experience continues with the introduction of convenience methods. These methods cover various aspects such as authentication, chunk uploads, exponential back-offs, automatic retries, type checkers which help to ensure that you’re using variables correctly, and much more. Embrace the new generation of Box SDKs and unlock the full potential of the Box Content Cloud. Start building innovative solutions faster and more efficiently. Happy coding! [1]: https://github.com/box/box-python-sdk-gen ## Box TypeScript SDK v10 released We are excited to introduce [the latest generation (currently in Beta) of Box TypeScript SDK][1], designed to elevate the developer experience and streamline your integration with the Box Content Cloud. With the [new generation of Typescript SDK][1], you’ll have access to: * **Full API Support**: The new generation of Box SDKs empowers developers with complete coverage of the Box API ecosystem. You can now access all the latest features and functionalities offered by Box, allowing you to build even more sophisticated and feature-rich applications. * **Rapid API Updates**: Say goodbye to waiting for new Box APIs to be incorporated into the SDK. With our new auto-generation development approach, we can now add new Box APIs to the SDK at a much faster pace (in a matter of days). This means you can leverage the most up-to-date features in your applications without delay. * **Embedded Documentation**: We understand that access to information is crucial for developers. With our new approach, we have included comprehensive documentation for all objects and parameters directly in the source code of the SDK. This means you no longer need to look up this information on the developer portal, saving you time and streamlining your development process. * **Enhanced Convenience Methods**: Our commitment to enhancing your development experience continues with the introduction of convenience methods. These methods cover various aspects such as authentication, chunk uploads, exponential back-offs, automatic retries, type checkers which help to ensure that you’re using variables correctly, and much more. Embrace the new generation of Box SDKs and unlock the full potential of the Box Content Cloud. Start building innovative solutions faster and more efficiently. Happy coding! [1]: https://github.com/box/box-typescript-sdk-gen ## Box Java SDK v4.6.0 released ### New Features and Enhancements * Support search deleted filters ([#1207][1]) ([`5e0e9ed`][2]) ### Bug Fixes * Added protected accessors for trust manager and hostname verifier. ([#1206][3]) ([`0c79d17`][4]) * fix not closing response body ([#1208][5]) ([`ab5e170`][6]) [1]: https://github.com/box/box-java-sdk/issues/1207 [2]: https://github.com/box/box-java-sdk/commit/5e0e9ed9aea2818da6fba0d562b56987c4948aaa [3]: https://github.com/box/box-java-sdk/issues/1206 [4]: https://github.com/box/box-java-sdk/commit/0c79d1754bffeb3f0487e10d55d716ba1cbed1aa [5]: https://github.com/box/box-java-sdk/issues/1208 [6]: https://github.com/box/box-java-sdk/commit/ab5e1702934607b258802b33f3663af3e9c56027 ## Box Windows SDK v5.6.0 released ### New Features and Enhancements * Support `iframeable_embed_url` for sign request ([#925][1]) ([`e9de994`][2]) - [https://www.nuget.org/packages/Box.V2/5.6.0>](https://www.nuget.org/packages/Box.V2/5.6.0>) - [https://www.nuget.org/packages/Box.V2.Core/5.6.0>](https://www.nuget.org/packages/Box.V2.Core/5.6.0>) [1]: https://github.com/box/box-windows-sdk-v2/issues/925 [2]: https://github.com/box/box-windows-sdk-v2/commit/e9de994cea97afcc1c3bc52ddf1cc023b9ee731c ## Box CLI v3.12.0 released ### New Features and Enhancements * Support sign templates ([#496][1]) ([`955106f`][2]) [1]: https://github.com/box/boxcli/issues/496 [2]: https://github.com/box/boxcli/commit/955106ffa5d7938c567e5440868f2ec3c87045ce ## Box Python SDK v3.9.1 released ### Bug Fixes * do not retry creating a ZIP when response code is 202 ([#845][1]) ([`3f6ed4e`][2]), closes [#844][3] [1]: https://github.com/box/box-python-sdk/issues/845 [2]: https://github.com/box/box-python-sdk/commit/3f6ed4e1053a494ed9f2b79828850e059d0a1617 [3]: https://github.com/box/box-python-sdk/issues/844 ## Box Java SDK v4.5.0 released ### New Features and Enhancements * Add `iframeable_embed_url` field to `BoxSignRequestSigner` class ([#1202][1]) ([`2e931d8`][2]) ### Bug Fixes * `SharedLinkAPIConnection` uses request interceptor ([#1203][3]) ([`b2b6a1d`][4]), closes [#1200][5] * Update sign template missing enum ([#1201][6]) ([`fcb6657`][7]) [1]: https://github.com/box/box-java-sdk/issues/1202 [2]: https://github.com/box/box-java-sdk/commit/2e931d8c36694a665d1c6315d3bf2d226929b713 [3]: https://github.com/box/box-java-sdk/issues/1203 [4]: https://github.com/box/box-java-sdk/commit/b2b6a1dba316ba50a1e011250c320fca156c6708 [5]: https://github.com/box/box-java-sdk/issues/1200 [6]: https://github.com/box/box-java-sdk/issues/1201 [7]: https://github.com/box/box-java-sdk/commit/fcb6657bb2375e32c3fb0f861e7ecaeb84503f2c ## Box Windows SDK v5.4.0 released ### New Features and Enhancements * Support Sign Templates and new Sign Request statuses ([#920][1]) ([`78580fb`][2]) - [https://www.nuget.org/packages/Box.V2/5.4.0>](https://www.nuget.org/packages/Box.V2/5.4.0>) - [https://www.nuget.org/packages/Box.V2.Core/5.4.0>](https://www.nuget.org/packages/Box.V2.Core/5.4.0>) [1]: https://github.com/box/box-windows-sdk-v2/issues/920 [2]: https://github.com/box/box-windows-sdk-v2/commit/78580fbd3de553273970376b96bc28c7c5614a97 ## Box Node SDK v3.2.0 released ### New Features and Enhancements * Support sign template ([#848][1]) ([`18d3413`][2]) [1]: https://github.com/box/box-node-sdk/issues/848 [2]: https://github.com/box/box-node-sdk/commit/18d3413afeddf43c62dfd0caf1279e61c99b6b83 ## Box Python SDK v3.9.0 released ### New Features and Enhancements * Support Sign Templates APIs ([#835][1]) ([`fbc783d`][2]) * Support create sign request with template ID ([#834][3]) ([`4f11d75`][4]) ### Bug Fixes * `ChunkedUploader` Resume Not Closing `ThreadPoolExecutor` Instances ([#840][5]) ([`f210f00`][6]) [1]: https://github.com/box/box-python-sdk/issues/835 [2]: https://github.com/box/box-python-sdk/commit/fbc783d5af2e75f883f1a0051613c513139f68fb [3]: https://github.com/box/box-python-sdk/issues/834 [4]: https://github.com/box/box-python-sdk/commit/4f11d7596488194fc740936fe987f42864003d41 [5]: https://github.com/box/box-python-sdk/issues/840 [6]: https://github.com/box/box-python-sdk/commit/f210f00ad823d7755309f2e8804641e0debf8197 ## Box Windows SDK v5.3.0 released ### New Features and Enhancements * add `attachment` content type to `SignRequestSigner` ([#913][1]) ([`ad612ff`][2]) ### Bug Fixes * replace deprecated `BouncyCastle` library ([#909][3]) ([`f00f2af`][4]) - [https://www.nuget.org/packages/Box.V2/5.3.0>](https://www.nuget.org/packages/Box.V2/5.3.0>) - [https://www.nuget.org/packages/Box.V2.Core/5.3.0>](https://www.nuget.org/packages/Box.V2.Core/5.3.0>) [1]: https://github.com/box/box-windows-sdk-v2/issues/913 [2]: https://github.com/box/box-windows-sdk-v2/commit/ad612ffc7821a9ecbc180e3dbeefe16d3e397820 [3]: https://github.com/box/box-windows-sdk-v2/issues/909 [4]: https://github.com/box/box-windows-sdk-v2/commit/f00f2af9c5277b42e6a62060c1b0229ecff0203e ## Box Java SDK v4.4.0 released ### New Features and Enhancements * Support sign template and new sign status ([#1197][1]) ([`e37c0dc`][2]) [1]: https://github.com/box/box-java-sdk/issues/1197 [2]: https://github.com/box/box-java-sdk/commit/e37c0dce86a422de5e8e6ed26fd93f1324f4b3e3 ## Introducing Embedded Box Sign Client You can now use [Box Embed][1] to [embed Box Sign features][2] in your own website. This way, users don't have to leave the website, go to Box Sign to sign the document, and then come back to finish the process. Instead, Box Embed allows them to complete the signing process within the external website. To integrate Box Sign experience within your own website, you need the [`iframeable_embed_url`][3] parameter that is specifically designed to allow signing documents within the HTML `iframe` tag. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][4] for any help needed. [1]: /guides/embed/box-embed [2]: /guides/box-sign/create-sign-request#embedded-sign-client [3]: /reference/resources/sign-request#param-signers-iframeable_embed_url [4]: https://forum.box.com/ ## Box CLI v3.10.0 released ### New Features and Enhancements * Support update user tracking codes ([#489][1]) ([`159e6d0`][2]) [1]: https://github.com/box/boxcli/issues/489 [2]: https://github.com/box/boxcli/commit/159e6d07fa91f2b199ca85207a4cad5cf4274f0e ## Box Java SDK v4.3.0 released ### New Features and Enhancements * Support access only collaboration ([#1193][1]) ([`664c01f`][2]) [1]: https://github.com/box/box-java-sdk/issues/1193 [2]: https://github.com/box/box-java-sdk/commit/664c01f80ca0647645c60920eb0ef1f9353a619f ## Box iOS SDK v5.5.0 released ### New Features and Enhancements * Add missing values in `SignRequestSignerInputContentType` and `SignRequestStatus` along with the tests ([#907][1]) ([`56a8250`][2]) ### Bug Fixes * Identify iPhone Simulator on Apple Silicon ([#902][3]) ([`7731a7f`][4]) * Make code compatible with macOS. ([#900][5]) ([`3b0016e`][6]) * Remove use of deprecated string scanner API. ([#901][7]) ([`af5f0e5`][8]) [1]: https://github.com/box/box-ios-sdk/issues/907 [2]: https://github.com/box/box-ios-sdk/commit/56a82500c0abe648825d8300979601a25f792c84 [3]: https://github.com/box/box-ios-sdk/issues/902 [4]: https://github.com/box/box-ios-sdk/commit/7731a7f434add74e163a76511fe1e2a3f26517f7 [5]: https://github.com/box/box-ios-sdk/issues/900 [6]: https://github.com/box/box-ios-sdk/commit/3b0016e44e674db0ea429273c03e5a29177372bf [7]: https://github.com/box/box-ios-sdk/issues/901 [8]: https://github.com/box/box-ios-sdk/commit/af5f0e52d184fbd27f56d972fb93b3e543547773 ## Box CLI v3.9.2 released ### Bug Fixes * Fix escaped slashes when passing an input to command ([#486][1]) ([`7670210`][2]) [1]: https://github.com/box/boxcli/issues/486 [2]: https://github.com/box/boxcli/commit/7670210ffb5c38cef8dd153e823029d5237080b6 ## Box Java SDK v4.2.1 released ### Bug Fixes * Fixed upload when data are coming from a dynamic source ([#1189][1]) ([`77b39f2`][2]), closes [#1183][3] [#1190][4] [1]: https://github.com/box/box-java-sdk/issues/1189 [2]: https://github.com/box/box-java-sdk/commit/77b39f2645d53bdab0ade23b637c211ea070fcf5 [3]: https://github.com/box/box-java-sdk/issues/1183 [4]: https://github.com/box/box-java-sdk/issues/1190 ## Box Python SDK v3.8.1 released ### Bug Fixes * Fix JSON response validation retry strategy ([#831][1]) ([`69834eb`][2]) [1]: https://github.com/box/box-python-sdk/issues/831 [2]: https://github.com/box/box-python-sdk/commit/69834eb4c91a5aa4bc294a9fa49ecf753979d029 ## Box Python SDK v3.8.0 released ### New Features and Enhancements * Support updating all fields of `collaboration` ([#829][1]) ([`6dc7ecc`][2]) [1]: https://github.com/box/box-python-sdk/issues/829 [2]: https://github.com/box/box-python-sdk/commit/6dc7ecc6f9c94e7531c4147a3645927b85928b2c ## Improvements in App Access Level for JWT authentication You can now ensure access to enterprise Managed Users **and groups** that were not created by [apps authenticated with JWT][1]. To do so, set **App Access Level** to **App + Enterprise Access** in the **Configuration** tab of the Developer console. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][2] for any help needed. [1]: /guides/authentication/jwt/jwt-setup [2]: https://forum.box.com/ ## Box Node SDK v3.1.1 released ### New Features and Enhancements * Bump proxy-agent to version 6.3.0 ([845][1]) ([`3f89f83`][2]) [1]: \(https://github.com/box/box-node-sdk/pull/845\) [2]: \(https://github.com/box/box-node-sdk/commit/3f89f83e939de5c1e6e48abbfb56212b56e70526\) ## Box CLI v3.9.1 released ### New Features and Enhancements * Bump version of `box-node-sdk` and `csv` libraries ([483][1]) ([`fecb04b`][2]) [1]: \(https://github.com/box/boxcli/pull/483\) [2]: \(https://github.com/box/boxcli/pull/483/commits/fecb04b635980baf37a7fefc8860b5e07b0bc4e6\) ## Sign Request API improvements [Sign Request status][1] parameter now has two additional values: * `finalizing` to reflect the state when all signers have signed the request, but the final document with signatures and the signing log has not been generated yet. * `error_finalizing` to reflect the state when the `finalizing` phase did not complete successfully. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][2] for any help needed. [1]: /reference/resources/sign-request#param-status [2]: https://forum.box.com/ ## Box UI Elements v18.1.0 released ### [18.1.0][1] (2023-07-12) ### Bug Fixes * **content-picker:** check share permission for default shared links ([#3371][2]) ([`2bb1ddb`][3]) * **i18n:** update translations ([#3372][4]) ([`f01fd6d`][5]) * **readme:** fix `langauge` typo ([#3373][6]) ([`50e7fe0`][7]) ### Features * **uaa-integration:** Filter activity types for UAA ([#3369][8]) ([`b9d196f`][9]) [1]: https://github.com/box/box-ui-elements/compare/v18.0.0...v18.1.0 [2]: https://github.com/box/box-ui-elements/issues/3371 [3]: https://github.com/box/box-ui-elements/commit/2bb1ddb [4]: https://github.com/box/box-ui-elements/issues/3372 [5]: https://github.com/box/box-ui-elements/commit/f01fd6d [6]: https://github.com/box/box-ui-elements/issues/3373 [7]: https://github.com/box/box-ui-elements/commit/50e7fe0 [8]: https://github.com/box/box-ui-elements/issues/3369 [9]: https://github.com/box/box-ui-elements/commit/b9d196f ## Box Python SDK v3.7.3 released ### Bug Fixes * Stop processing data for logging when logging is deactivated and cache response `json` ([#824][1]) ([`3079171`][2]) [1]: https://github.com/box/box-python-sdk/issues/824 [2]: https://github.com/box/box-python-sdk/commit/3079171f8dfc1a4c85f8587e8ce90e8fbd826ee4 ## Updated sorting of folder items for shared folders Box Folder API allows you to [retrieve the items in the folder][1] and [sort][2] this list based on the sort parameter. We have improved the way items are sorted for shared folders that have the path to the associated folder visible to the collaborators. Earlier, the items for such folders were sorted by `id` regardless of the sort parameter value. Currently, they are sorted based on the `sort` parameter. ## New place to get support From now on you can ask questions and seek for guidance in our new [Box Developer Community forum][3]. Use this new space to directly speak to the Box Developer Relations team, as well as your peers and other subject matter experts from Box. [1]: /reference/get-folders-id-items [2]: /reference/get-folders-id-items#param-sort [3]: https://forum.box.com/ ## Box UI Elements v18.0.0 released ### [18.0.0][1] (2023-06-27) ### Bug Fixes * **ci:** remove blank space from release script var ([#3355][2]) ([`2553ec1`][3]) * **content-explorer:** increase grid button style specificity ([#3328][4]) ([`b2c878a`][5]) * **content-explorer:** map called on undefined object ([#3341][6]) ([`da6ada0`][7]) * **content-picker:** trim name input when creating folder ([#3364][8]) ([`4629726`][9]) * **css:** remove IE7 CSS hack to fix Parcel support ([#3368][10]) ([`cbff7f1`][11]) * **i18n:** update translations ([#3323][12]) ([`c810383`][13]) * **i18n:** update translations ([#3344][14]) ([`755d64b`][15]) * **i18n:** update translations ([#3349][16]) ([`6ba9f27`][17]) * **i18n:** update translations ([#3351][18]) ([`4ff75e8`][19]) * **i18n:** update translations ([#3352][20]) ([`80c795a`][21]) * **i18n:** update translations ([#3359][22]) ([`c94305c`][23]) * **preview:** update thumbnail sidebar width ([#3363][24]) ([`33c8236`][25]) * **sharing:** remove message for shared links for Canvas files ([#3337][26]) ([`9558474`][27]) * align viewer permissions for shared links ([#3335][28]) ([`5d78c11`][29]) * update dist path and react version for elements test pages ([#3350][30]) ([`38ff124`][31]) * **pill-selector-dropdown:** pass `showAvatars` prop to `RoundPill` ([#3329][32]) ([`5632743`][33]) * **share-form:** map called on undefined object ([#3340][34]) ([`a24abb2`][35]) * **usm:** fix message for upgrade notice in share modal ([#3334][36]) ([`4a945ce`][37]) ### chore * **deps:** Bump `react-beautiful-dnd` to version 11.0.5 ([#3345][38]) ([`610c9d2`][39]) * **node:** Upgrade to node 18 ([#3347][40]) ([`cbb3840`][41]) ### Features * **cloud-game:** Adjust cloud game visual ([#3361][42]) ([`fe7fb51`][43]) * **pill-selector-dropdown:** allow setting error tooltip position ([#3330][44]) ([`8df1551`][45]) * **preview:** update default Preview SDK version ([#3366][46]) ([`aa7a875`][47]) * **security-controls:** Remove watermark learn more link ([#3353][48]) ([`379d055`][49]) * **threaded-replies:** reply to annotations ([#3331][50]) ([`4f65525`][51]) * **uaa-integration:** Integrate UAA into `ActivitySidebar` ([#3316][52]) ([`b81e976`][53]) ### BREAKING CHANGES * **deps:** You need to upgrade `react-beautiful-dnd` in the consuming project to version 11.0.5 * **node:** Upgrade to node 18 [1]: https://github.com/box/box-ui-elements/compare/v17.1.0...v18.0.0 [2]: https://github.com/box/box-ui-elements/issues/3355 [3]: https://github.com/box/box-ui-elements/commit/2553ec1 [4]: https://github.com/box/box-ui-elements/issues/3328 [5]: https://github.com/box/box-ui-elements/commit/b2c878a [6]: https://github.com/box/box-ui-elements/issues/3341 [7]: https://github.com/box/box-ui-elements/commit/da6ada0 [8]: https://github.com/box/box-ui-elements/issues/3364 [9]: https://github.com/box/box-ui-elements/commit/4629726 [10]: https://github.com/box/box-ui-elements/issues/3368 [11]: https://github.com/box/box-ui-elements/commit/cbff7f1 [12]: https://github.com/box/box-ui-elements/issues/3323 [13]: https://github.com/box/box-ui-elements/commit/c810383 [14]: https://github.com/box/box-ui-elements/issues/3344 [15]: https://github.com/box/box-ui-elements/commit/755d64b [16]: https://github.com/box/box-ui-elements/issues/3349 [17]: https://github.com/box/box-ui-elements/commit/6ba9f27 [18]: https://github.com/box/box-ui-elements/issues/3351 [19]: https://github.com/box/box-ui-elements/commit/4ff75e8 [20]: https://github.com/box/box-ui-elements/issues/3352 [21]: https://github.com/box/box-ui-elements/commit/80c795a [22]: https://github.com/box/box-ui-elements/issues/3359 [23]: https://github.com/box/box-ui-elements/commit/c94305c [24]: https://github.com/box/box-ui-elements/issues/3363 [25]: https://github.com/box/box-ui-elements/commit/33c8236 [26]: https://github.com/box/box-ui-elements/issues/3337 [27]: https://github.com/box/box-ui-elements/commit/9558474 [28]: https://github.com/box/box-ui-elements/issues/3335 [29]: https://github.com/box/box-ui-elements/commit/5d78c11 [30]: https://github.com/box/box-ui-elements/issues/3350 [31]: https://github.com/box/box-ui-elements/commit/38ff124 [32]: https://github.com/box/box-ui-elements/issues/3329 [33]: https://github.com/box/box-ui-elements/commit/5632743 [34]: https://github.com/box/box-ui-elements/issues/3340 [35]: https://github.com/box/box-ui-elements/commit/a24abb2 [36]: https://github.com/box/box-ui-elements/issues/3334 [37]: https://github.com/box/box-ui-elements/commit/4a945ce [38]: https://github.com/box/box-ui-elements/issues/3345 [39]: https://github.com/box/box-ui-elements/commit/610c9d2 [40]: https://github.com/box/box-ui-elements/issues/3347 [41]: https://github.com/box/box-ui-elements/commit/cbb3840 [42]: https://github.com/box/box-ui-elements/issues/3361 [43]: https://github.com/box/box-ui-elements/commit/fe7fb51 [44]: https://github.com/box/box-ui-elements/issues/3330 [45]: https://github.com/box/box-ui-elements/commit/8df1551 [46]: https://github.com/box/box-ui-elements/issues/3366 [47]: https://github.com/box/box-ui-elements/commit/aa7a875 [48]: https://github.com/box/box-ui-elements/issues/3353 [49]: https://github.com/box/box-ui-elements/commit/379d055 [50]: https://github.com/box/box-ui-elements/issues/3331 [51]: https://github.com/box/box-ui-elements/commit/4f65525 [52]: https://github.com/box/box-ui-elements/issues/3316 [53]: https://github.com/box/box-ui-elements/commit/b81e976 [54]: https://github.com/users ## Integration mappings for Slack Learn how the Box Enterprise Admin (EA) can customize the upload folder of the Slack channel to any folder within the enterprise instead of relying on the default one with the [Integration Mappings for Slack][1] guide. Use Box API to [create][2], [list][3], [update][4], and [delete][5] the Slack Integration Mappings. Using the [automation script][9], an admin can create or update multiple mappings at once! Check the [Troubleshooting][6] section to find out solutions to most common issues you can encounter. ## New place to get support From now on you can ask questions and seek for guidance in our new [Box Developer Community forum][8]. Use this new space to directly speak to the Box Developer Relations team, as well as your peers and other subject matter experts from Box. [1]: /guides/integration-mappings/slack-mappings [2]: /reference/post-integration-mappings-slack [3]: /reference/get-integration-mappings-slack [4]: /reference/update-integration-mappings-slack [5]: /reference/delete-integration-mappings-slack [6]: /guides/integration-mappings/slack-mappings/troubleshooting [7]: /reference/resources/integration-mapping/ [8]: https://forum.box.com/ [9]: https://github.com/box/boxcli/tree/main/examples/Integration%20Mappings ## Box Java SDK v4.2.0 released ### New Features and Enhancements * Getting collaborators allows to specify fields ([#1178][1]) ([`1694d75`][2]) [1]: https://github.com/box/box-java-sdk/issues/1178 [2]: https://github.com/box/box-java-sdk/commit/1694d75fff0fbddb938426ef03ba24f360a344aa ## Enhanced passwords for Shared Links We have enhanced our password policy for creating shared links with Box API, for example when [adding a shared link to a file][1]. Passwords must now be at least eight characters long and include: * a number, * upper case letter, or * non-alphabetic or non-numeric character ## New place to get support From now on you can ask questions and seek for guidance in our new [Box Developer Community forum][2]. Use this new space to directly speak to the Box Developer Relations team, as well as your peers and other subject matter experts from Box. [1]: /reference/put-files-id--add-shared-link#param-shared_link-password [2]: https://forum.box.com/ ## Box Java SDK v4.1.2 released ### Bug Fixes * Class cast exception when uploading large file ([#1174][1]) ([`e7d28bd`][2]), closes [#1173][3] * Make `SharedLinkAPIConnection` constructors public ([#1172][4]) ([`4d1616d`][5]) * Remove not valid Group membership role ([#1171][6]) ([`a5915f9`][7]) [1]: https://github.com/box/box-java-sdk/issues/1174 [2]: https://github.com/box/box-java-sdk/commit/e7d28bddb706c8b4fd1328f0eebc50db19a8c656 [3]: https://github.com/box/box-java-sdk/issues/1173 [4]: https://github.com/box/box-java-sdk/issues/1172 [5]: https://github.com/box/box-java-sdk/commit/4d1616ddd2c39d1cb0d03af998d2c47efe607853 [6]: https://github.com/box/box-java-sdk/issues/1171 [7]: https://github.com/box/box-java-sdk/commit/a5915f94114a8269287831280a57949ed203e4e8 ## Join Box Developer Community Exciting news for developers and admins! Box has launched the Box Developer Community site, where you can connect with peers and experts to build innovative applications on top of the Box cloud content management and collaboration platform. Join us today at [https://forum.box.com](https://forum.box.com)! # Join, connect and learn * Get support and provide feedback * Share knowledge and become a community leader * Connect and chat with other Box developers and admins * Learn from other community members and Box subject matter experts * Stay up to date with the newest features, updates, developer-focused events, blog posts, and more! ## New place to get support From now on you can ask questions and seek for guidance in our new [Box Developer Community forum][1]. Use this new space to directly speak to the Box Developer Relations team, as well as your peers and other subject matter experts from Box. [1]: https://forum.box.com/ ## Box CLI v3.9.0 released ### New Features and Enhancements * add `max-items`, improve list endpoints performance ([#470][1]) ([`8f386f3`][2]) * Add support for Integration Mappings API ([#472][3]) ([`bbf2548`][4]) * New fields in `retention-policy` and `retention-policy-assignment` ([#466][5]) ([`f960e59`][6]) [1]: https://github.com/box/boxcli/issues/470 [2]: https://github.com/box/boxcli/commit/8f386f3b7c4ff4efbaa941321fd672694ce3c7a1 [3]: https://github.com/box/boxcli/issues/472 [4]: https://github.com/box/boxcli/commit/bbf2548223e0d07ce2412c04991e7d8f00022fa7 [5]: https://github.com/box/boxcli/issues/466 [6]: https://github.com/box/boxcli/commit/f960e59aaf55fe0a0507e9f4c9d867e7c3dd039a ## Box Node SDK v3.1.0 released ### New Features and Enhancements * Added support for integration mappings API ([#831][1]) ([`a525327`][2]) ### Bug Fixes * Correct types of `userId` and `groupId` for creating collaboration ([#833][3]) ([`f803ff8`][4]), closes [#832][5] [1]: https://github.com/box/box-node-sdk/issues/831 [2]: https://github.com/box/box-node-sdk/commit/a525327c1362628a0ffdb36cb4bf3346ca0e0153 [3]: https://github.com/box/box-node-sdk/issues/833 [4]: https://github.com/box/box-node-sdk/commit/f803ff82330fd78a8dc4875452a21aab54686b2e [5]: https://github.com/box/box-node-sdk/issues/832 ## UI Elements in Box for Salesforce managed package With the [Box for Salesforce][1] managed package you can use the following [UI Elements][2] as Lightning Components: [content picker][3], [explorer][4], [preview][5], and [uploader][6]. You can use them on Lightning Pages, or in Flows. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][7] for any help needed. [1]: /guides/tooling/salesforce-toolkit/ [2]: /guides/embed/ui-elements/ [3]: /guides/embed/ui-elements/picker/ [4]: /guides/embed/ui-elements/explorer [5]: /guides/embed/ui-elements/preview [6]: /guides/embed/ui-elements/uploader [7]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## Box Python SDK v3.7.2 released ### Bug Fixes * Use the older version of `urllib3` ([#815][1]) ([`ee29aa3`][2]) [1]: https://github.com/box/box-python-sdk/issues/815 [2]: https://github.com/box/box-python-sdk/commit/ee29aa3fcf9ac71e9866913a87414cf625c0b805 ## Integration mappings API With [integration mappings][1], you can manage where content from partner apps is stored in Box. This feature currently only supports [Box as Content layer for Slack][2]. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][3] for any help needed. [1]: /reference/resources/integration-mappings [2]: https://support.box.com/hc/en-us/articles/4415585987859-Box-as-the-Content-Layer-for-Slack [3]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## Box Windows SDK v5.2.2 released ### Bug Fixes * catch exception when .net core version cannot be determined ([#906][1]) ([`e3be209`][2]) - [https://www.nuget.org/packages/Box.V2/5.2.2>](https://www.nuget.org/packages/Box.V2/5.2.2>) - [https://www.nuget.org/packages/Box.V2.Core/5.2.2>](https://www.nuget.org/packages/Box.V2.Core/5.2.2>) [1]: https://github.com/box/box-windows-sdk-v2/issues/906 [2]: https://github.com/box/box-windows-sdk-v2/commit/e3be209b20a5c323f547d7634663883613959180 ## Box Node SDK v3.0.0 released ### Breaking Changes The most important change in this release is **dropping support for Node versions below 12** and changing the **support environments from Node 12 to Node 16**. * Removed `use_index` usage. ([#812](https://github.com/box/box-node-sdk/pull/812)) ([`d56799a`](https://github.com/box/box-node-sdk/commit/d56799a61f42265d7785f99e92a449c58d125aef)) * Removed deprecated `BoxClient.batch()` and `BoxClient.batchExec()` method. * Removed deprecated `CollaborationWhitelist` class, use `CollaborationAllowlist` instead. * Removed deprecated `CollaborationAllowlist.getWhitelistedDomain()` method, use `CollaborationAllowlist.getAllowlistedDomain()` instead. * Removed deprecated `CollaborationAllowlist.getAllWhitelistedDomains()` method, use `CollaborationAllowlist.getAllAllowlistedDomains()` instead. * Remove deprecated `Files.getThumbnail(fileID: string, options?: Record, callback?: Function)` method, use `Files.getRepresentationContent( fileID, representationType, options, callback)` instead. Migration details can be found [here](https://github.com/box/box-node-sdk/blob/v3.0.0/docs/upgrade/2.x.x%20to%203.x.x.md) ### Dependency Upgrades * Bumped `jsonwebtoken` from 8.5.1 to 9.0.0. ([#802](https://github.com/box/box-node-sdk/pull/802)) ([`5b1d4e9`](https://github.com/box/box-node-sdk/pull/828/commits/5b1d4e9ec557c14c1d27695733cc0bcae49061cb)) * Bumped `vm2` from 3.9.11 to 3.9.19 ([#826](https://github.com/box/box-node-sdk/pull/826)) ([`220df76`](https://github.com/box/box-node-sdk/commit/220df765080bc27c91daed51ac46620f6bc8b9ed)) ## Box Java SDK v4.1.1 released ### Bug Fixes * Allow users to disable adding authentication header. ([#1167][1]) ([`3433e5a`][2]) * Logging headers when retrying request ([#1164][3]) ([`e0c3d8e`][4]) [1]: https://github.com/box/box-java-sdk/issues/1167 [2]: https://github.com/box/box-java-sdk/commit/3433e5a405ceb9bc32791642518b1fd65c4b4032 [3]: https://github.com/box/box-java-sdk/issues/1164 [4]: https://github.com/box/box-java-sdk/commit/e0c3d8e730962ba5c97105ce506ee931a3bba362 ## Box Node SDK v2.10.0 released ### New Features and Enhancements * Added support for ethical wall API ([#822][1]) ([`4814af3`][2]) * Added `name` and `signature_color` fields to `SignRequest` and `SignRequestCreateRequest` types and `login_required` field to `SignRequestCreateSigner` type ([#822][1]) ([`4814af3`][2]) [1]: https://github.com/box/box-node-sdk/issues/822 [2]: https://github.com/box/box-node-sdk/commit/4814af35c1741fbfe3fa03f8f0412ade8b38dfcc ## Box UI Elements v17.1.0 released ### [17.1.0][1] (2023-05-10) ### Bug Fixes * **content-explorer:** select all checkbox in empty folder ([#3324][2]) ([`a193adb`][3]) * **content-explorer:** select all checkbox state matches `selectedItems` ([#3319][4]) ([`7473dfd`][5]) * **i18n:** update translations ([#3313][6]) ([`dd9a1fd`][7]) * **i18n:** update translations ([#3317][8]) ([`95618cf`][9]) * **pill-selector-dropdown:** remove default value for `isPositionDynamic` ([#3320][10]) ([`e74f824`][11]) * **preview:** videos not loading on edge ([#3326][12]) ([`e5aa7e5`][13]) * **usm:** make item prop optional ([#3322][14]) ([`fe7c4bb`][15]) ### Features * **sharing:** Change message for shared links for Canvas files ([#3315][16]) ([`fa17afd`][17]) * **sharing:** Change message for shared links for Canvas files ([#3318][18]) ([`60a3a6e`][19]) [1]: https://github.com/box/box-ui-elements/compare/v17.0.0...v17.1.0 [2]: https://github.com/box/box-ui-elements/issues/3324 [3]: https://github.com/box/box-ui-elements/commit/a193adb [4]: https://github.com/box/box-ui-elements/issues/3319 [5]: https://github.com/box/box-ui-elements/commit/7473dfd [6]: https://github.com/box/box-ui-elements/issues/3313 [7]: https://github.com/box/box-ui-elements/commit/dd9a1fd [8]: https://github.com/box/box-ui-elements/issues/3317 [9]: https://github.com/box/box-ui-elements/commit/95618cf [10]: https://github.com/box/box-ui-elements/issues/3320 [11]: https://github.com/box/box-ui-elements/commit/e74f824 [12]: https://github.com/box/box-ui-elements/issues/3326 [13]: https://github.com/box/box-ui-elements/commit/e5aa7e5 [14]: https://github.com/box/box-ui-elements/issues/3322 [15]: https://github.com/box/box-ui-elements/commit/fe7c4bb [16]: https://github.com/box/box-ui-elements/issues/3315 [17]: https://github.com/box/box-ui-elements/commit/fa17afd [18]: https://github.com/box/box-ui-elements/issues/3318 [19]: https://github.com/box/box-ui-elements/commit/60a3a6e ## Box Sign template APIs The new Box Sign template APIs allow you to [get a list of Box Sign templates][1] or details of a [specific Box Sign template][2]. You can then use this information to initiate template-based sign requests. ## Where to get support Should you have any issues or need further guidance, post a request to our [developer forum][3] for any help needed. [1]: /reference/get-sign-templates [2]: /reference/get-sign-templates-id [3]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## Updates to File Upload API In response to a potential security vulnerability while uploading a file using [Upload File API][1] and downscoped token, we’re updating the Upload File API to return a 404 error in scenarios where the parent Folder ID is found, but the requester does not have permissions to access it. # Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][2] for any help needed. [1]: /guides/uploads/direct [2]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## Box Java SDK v4.1.0 released ### New Features and Enhancements * Add missing `fields` parameter to create and update `BoxUser` methods ([#1155][1]) ([`be3820d`][2]), closes [#1154][3] ### Bug Fixes * Allow registering custom logger handlers ([#1156][4]) ([`7373d5c`][5]) * Fallback to default value of `maxRetryAttempts` when restoring `BoxAPIConnection` ([#1161][6]) ([`2a10e5d`][7]), closes [#1160][8] [1]: https://github.com/box/box-java-sdk/issues/1155 [2]: https://github.com/box/box-java-sdk/commit/be3820dc4df15e99dfc13602d4f7269841bd15b3 [3]: https://github.com/box/box-java-sdk/issues/1154 [4]: https://github.com/box/box-java-sdk/issues/1156 [5]: https://github.com/box/box-java-sdk/commit/7373d5cc2bf49bc198cbca70d056e43f0dffdb3a [6]: https://github.com/box/box-java-sdk/issues/1161 [7]: https://github.com/box/box-java-sdk/commit/2a10e5d07497611e077a9207fe98c1d8146cfd22 [8]: https://github.com/box/box-java-sdk/issues/1160 ## Box UI Elements v17.0.0 released ### [17.0.0][1] (2023-04-20) ### Bug Fixes * **aci-toggle:** info badge vertical alignment ([#3290][2]) ([`f73b9f9`][3]) * **avatar:** Add `aria-label` to external user icon ([#3263][4]) ([`18cdf3f`][5]) * **collaborator-list-item:** remove redundant titles ([#3255][6]) ([`d805249`][7]) * **content-explorer:** add arrow navigation ([#3219][8]) ([`35bf8de`][9]) * **content-explorer:** Add `svg` titles to icons ([#3227][10]) ([`506ca45`][11]) * **content-explorer:** change color of folder tree breadcrumbs text ([#3268][12]) ([`fc95d4d`][13]) * **content-explorer:** enable create folder with trailing space in name ([#3246][14]) ([`e0b03c7`][15]) * **content-explorer:** Fix color contrast issue for item details ([#3273][16]) ([`4db0231`][17]) * **content-explorer:** Fix color contrast issues ([#3221][18]) ([`b7ecaab`][19]) * **content-explorer:** fix item list column header role ([#3232][20]) ([`718a71a`][21]) * **content-explorer:** focus border on selected item row buttons ([#3314][22]) ([`a596557`][23]) * **content-explorer:** hide instead of deactivate breadcrumbs ([#3260][24]) ([`5b5fec1`][25]) * **content-explorer:** Include subfolders sub-header fix ([#3259][26]) ([`6ec1512`][27]) * **content-explorer:** status message for include subfolders ([#3261][28]) ([`3ce688d`][29]) * **content-explorer:** Update Share button border on selected row ([#3278][30]) ([`28c79dd`][31]) * **content-picker:** add `disabled` attribute ([#3243][32]) ([`a88a96c`][33]) * **content-sharing:** removed API condition when constructing API ([#3251][34]) ([`24dcba2`][35]) * **content-uploader:** make deactivated buttons unfocusable ([#3248][36]) ([`2302712`][37]) * **flyout:** increase flyout overlay CSS specificity ([#3257][38]) ([`0933062`][39]) * **i18n:** update translations ([#3250][40]) ([`d84d1ca`][41]) * **i18n:** update translations ([#3276][42]) ([`018a99c`][43]) * **i18n:** update translations ([#3285][44]) ([`bfbcf55`][45]) * **i18n:** update translations ([#3300][46]) ([`88116cb`][47]) * **itemlist:** Remove header section when list is empty ([#3224][48]) ([`0274618`][49]) * **makeselectable:** Prevent arrow hotkeys on slider ([#3299][50]) ([`a893e5a`][51]) * **metadata:** fix template drop-down truncation issue ([#3265][52]) ([`c3ae099`][53]) * **select-field:** Add bottom margin when drop-down has top placement ([#3302][54]) ([`11e6979`][55]) * **select-field:** add tether class for select drop-downs ([#3303][56]) ([`ce27f70`][57]) * **selector-dropdown:** add dynamic positioning to the drop-down overlay ([#3262][58]) ([`7f05653`][59]) * **usm:** Order person before icon in collaborator list DOM ([#3306][60]) ([`32c656d`][61]) * add props to omit to avoid console warnings ([#3286][62]) ([`11328fb`][63]) * Align menu options in BE sort button ([#3231][64]) ([`dcc06e2`][65]) * Fix `aria-label` for BE header search ([#3244][66]) ([`ca01965`][67]) * Replace `bdl-gray-62` for USM and Shared Link components ([#3289][68]) ([`1f25b98`][69]) * **makeselectable:** shift and arrow selects first row ([#3223][70]) ([`9b209e5`][71]) * **scss:** Replace all division for dart-sass ([#3253][72]) ([`ac92e21`][73]) * **shared-link-section:** accessibility tooltip ([#3216][74]) ([`4ecdd81`][75]) * **sub-header:** sort menu item accessibility ([#3230][76]) ([`20f4454`][77]) * **sub-header:** update sort to use select component and update tests ([#3239][78]) ([`528a157`][79]) * **toggle:** add switch role ([#3254][80]) ([`cf0c894`][81]) * **tooltip:** Deactivate `aria-describedby` when `ariaHidden` is `true` ([#3233][82]) ([`d9108c4`][83]) * **tooltip:** tooltip should be dialog ([#3226][84])" ([#3264][85]) ([`fa68dd6`][86]) * **usm:** Remove `aria-label` and add `aria-haspopup` ([#3281][87]) ([`fd1a82d`][88]) * **usm:** Removing redundant button element ([#3282][89]) ([`a7005ff`][90]) * change type of buttons in Content Sharing from 'submit' to 'button' ([#3277][91]) ([`26b7e5f`][92]) * Improve color contrast for input borders ([#3234][93]) ([`3917bee`][94]) * Improve color contrast for placeholder text ([#3228][95]) ([`1f7b9f9`][96]) * Update `box-shadow` for inputs ([#3236][97]) ([`07cc347`][98]) * **assets:** Use correct icons after icons were renamed ([#3138][99]) ([`2c80164`][100]) * **content-explorer:** add `aria-label` for `MoreOptions` button ([#3197][101]) ([`f4b69f0`][102]) * **content-explorer:** add `aria-label` to grid slider ([#3189][103]) ([`e3900b3`][104]) * **content-explorer:** create default shared link when none exists ([#3209][105]) ([`5d05a2b`][106]) * **content-explorer:** Pass all props from `modalContainer` to `Modal` ([#3104][107]) ([`5d5b314`][108]) * **content-explorer:** Remove props from `styleguidist` examples ([#3146][109]) ([`1f0809b`][110]) * **content-picker:** add accessible names to Footer ([#3177][111]) ([`bd8e1e6`][112]) * **content-sidebar:** reply operations interactions ([#3103][113]) ([`9400f5a`][114]) * **content-sidebar:** reply operations interactions ([#3123][115]) ([`8d2c3f1`][116]) * **content-sidebar:** select and hover state for threaded feed items ([#3173][117]) ([`a7dc6a9`][118]) * **content-uploader:** fix `UploadInput` keyboard accessibility ([#3205][119]) ([`e918b5f`][120]) * **dropdown-menu:** fix positioning for responsive drop-down menu ([#3149][121]) ([`729f6f1`][122]) * **grid-view:** unhide focus outline for grid view slider ([#3212][123]) ([`b35e977`][124]) * **i18n:** update translations ([#3105][125]) ([`b8521e4`][126]) * **i18n:** update translations ([#3111][127]) ([`29fc19c`][128]) * **i18n:** update translations ([#3121][129]) ([`16bc077`][130]) * **i18n:** update translations ([#3130][131]) ([`8ca714b`][132]) * **i18n:** update translations ([#3135][133]) ([`53c0370`][134]) * **i18n:** update translations ([#3137][135]) ([`7fe32a6`][136]) * **i18n:** update translations ([#3139][137]) ([`82f414d`][138]) * **i18n:** update translations ([#3150][139]) ([`d428a43`][140]) * **i18n:** update translations ([#3158][141]) ([`02eb624`][142]) * **i18n:** update translations ([#3159][143]) ([`6df6f0d`][144]) * **i18n:** update translations ([#3174][145]) ([`0e9ea9d`][146]) * **i18n:** update translations ([#3183][147]) ([`c32bbae`][148]) * **i18n:** update translations ([#3199][149]) ([`eb1acee`][150]) * **i18n:** update translations ([#3207][151]) ([`d9d571d`][152]) * **i18n:** update translations ([#3213][153]) ([`64364c3`][154]) * **i18n:** update translations ([#3220][155]) ([`39739ab`][156]) * **i18n:** update translations ([#3222][157]) ([`429c856`][158]) * **item-action:** add `aria-label` to `PlainButton` ([#3180][159]) ([`2553713`][160]) * **item-remove:** add `aria-label` ([#3181][161]) ([`0fce635`][162]) * **menu:** fix long title in menu header ([#3125][163]) ([`79420f2`][164]) * **modal:** Modal header for long file names was displaying incorrectly ([#3108][165]) ([`d8321aa`][166]) * **react-virtualized:** Bumped `react-virtualized` ([#3160][167]) ([`b256b07`][168]) * **react-virtualized:** remove duplicate `a11y` label ([#3204][169]) ([`c67a4dd`][170]) * **react-virtualized:** Remove role for `Table_Grid_innerScrollContainer` ([#3218][171]) ([`cabb4a8`][172]) * **replies:** fix `total_replies_count` value update after delete reply ([#3147][173]) ([`8f75827`][174]) * **sharedlinksettings:** fix expiration timestamp ([#3179][175]) ([`1a698c5`][176]) * **sub-header:** add accessibility label to `SortButton` ([#3178][177]) ([`ba66a34`][178]) * **threaded-replies:** deactivate reply button for pending status ([#3186][179]) ([`efbc532`][180]) * **threaded-replies:** fix styling for replies ([#3110][181]) ([`f78e36b`][182]) * **tooltips:** Error tooltips were being truncated on smaller screens ([#3107][183]) ([`7e12d88`][184]) * **usm:** add `aria label` ([#3191][185]) ([`f1f5c81`][186]) * **usm:** add `aria-label` to expiration icon ([#3193][187]) ([`af3c567`][188]) * **usm:** add `aria-label` to tooltip close button ([#3211][189]) ([`529bf10`][190]) * **usm:** add role `img` to shared link expiration tooltip icon ([#3195][191]) ([`a79e193`][192]) * **usm:** tooltip should be dialog ([#3226][84]) ([`f52ad0e`][193]) * remove warning when passing `initialSelectedItems` to `ContentExplorer` ([#3151][194]) ([`bf3256a`][195]) ### Code Refactoring * deprecate `bdl-gray-62` color ([#3312][196]) ([`93720ce`][197]) ### Features * **aci-toggle:** add separate prop for description ([#3307][198]) ([`cadab1d`][199]) * **aci-toggle:** UI adjustments ([#3297][200]) ([`84f9abb`][201]) * **annotation:** Add icon indicator for `AnnotationActivity` ([#3176][202]) ([`f773aa3`][203]) * **annotation-activity:** hide `AnnotationActivityLink` ([#3089][204]) ([`dc3642e`][205]) * **annotation-thread:** added reply form, UI and other minor fixes ([#3157][206]) ([`55ca058`][207]) * **annotation-thread:** Annotation thread comments visual fixes ([#3128][208]) ([`fac5133`][209]) * **annotation-thread:** annotation thread events handling ([#3196][210]) ([`1c07b41`][211]) * **annotation-thread:** annotation thread related hooks refactoring ([#3192][212]) ([`0168f1a`][213]) * **annotation-thread:** annotation thread replies events handling ([#3201][214]) ([`3df222a`][215]) * **annotation-thread:** introduce `useAnnotationThread` and handle `useAnnotatorEvents` ([#3097][216]) ([`a8d1985`][217]) * **annotation-thread:** use of event emitter and hooks refactoring ([#3184][218]) ([`cfed356`][219]) * **annotations:** hide `AnnotationActivityLink` based on `hasVersions` prop ([#3132][220]) ([`3469413`][221]) * **assets:** update cancellation flow assets ([#3117][222]) ([`42e1122`][223]) * **checkbox:** allow `stopPropagation` on `onClick` events ([#3122][224]) ([`9c25858`][225]) * **checkbox:** make focus behavior configurable ([#3214][226]) ([`18b8ea6`][227]) * **checkbox:** prop to add class to input ([#3194][228]) ([`e0cc12d`][229]) * **checkbox:** revert allow `stopPropagation` on `onClick` events ([#3127][230]) ([`e37de34`][231]), closes [#3122][224] * **cloud-game:** Add accessibility to security cloud game ([#3086][232]) ([`684e9f6`][233]) * **collapsible-sidebar:** add prop to hide Box logo ([#3256][234]) ([`43279c0`][235]) * **collapsible-sidebar:** add `wrapperClassName` prop ([#3295][236]) ([`2cde065`][237]) * **content-explorer:** adding folder tree ([#3240][238]) ([`03b0dea`][239]) * **content-explorer:** Allow selecting empty selection in `ContentExplorer` ([#3175][240]) ([`fead6e4`][241]) * **content-explorer:** clickable status message for include subfolders ([#3266][242]) ([`3d8eaf8`][243]) * **content-explorer:** include subfolders toggle ([#3242][244]) ([`b75c7ee`][245]) * **content-sidebar:** add on fetch file callback function ([#3118][246]) ([`5373031`][247]) * **content-sidebar:** added support for active comment reply ([#3134][248]) ([`3ef81e1`][249]) * **content-sidebar:** hide "edited" for resolved comment/annotation ([#3152][250]) ([`07f5fc7`][251]) * **content-sidebar:** select and hover state for threaded feed items ([#3162][252]) ([`a6c125d`][253]) * **input-with-copy:** add node for settings button ([#3267][254]) ([`719b31f`][255]) * **insights:** Added support for Advanced Content Insights ([#3116][256]) ([`a66ec89`][257]) * **left-nav:** Update medium width in `\_sizes.media.scss` ([#3131][258]) ([`aaf112d`][259]) * **list-view:** List View item hover state changes ([#3115][260]) ([`103a5d1`][261]) * **make-selectable:** Add select click functionality to on checkbox click ([#3112][262]) ([`ffc2e33`][263]) * **make-selectable:** expose `selectToggle` function ([#3109][264]) ([`8d9fb90`][265]) * **mediaquery:** add `isTouchScreen` logic ([#3269][266]) ([`3e80a06`][267]) * **modal:** add callback to check permission on shared link load ([#3188][268]) ([`2b316db`][269]) * **preview:** add new sign drop-down under ff ([#3190][270]) ([`37e8a19`][271]) * **threaded-replies:** Create `Replies` component ([#3288][272]) ([`006e33c`][273]) * **threaded-replies:** Create `RepliesToggle` component ([#3294][274]) ([`92d0ddb`][275]) * **threaded-replies:** Create `Reply` button component ([#3298][276]) ([`f9d4130`][277]) * **threaded-replies:** Decouple `ActivityCard` from Comment ([#3279][278]) ([`7d1d3bf`][279]) * **threaded-replies:** Implement Create Replies and Replies Toggle ([#3304][280]) ([`044a336`][281]) * **threaded-replies:** Refactor Comment component to functional ([#3270][282]) ([`3900d1c`][283]) * **threaded-replies:** Update activity filter to support more options ([#3280][284]) ([`76e4010`][285]) * add `additionalColumns` prop to `ContentExplorerModalContainer` ([#3143][286]) ([`d4eea59`][287]) * Add option to display header in `ContentExplorerModalContainer` ([#3144][288]) ([`5685142`][289]) * Add optional tether props to `DropdownMenu` ([#3245][290]) ([`9db75e7`][291]) * **threaded-replies:** fix styling for resolve ([#3129][292]) ([`b291c50`][293]) * **threaded-replies:** keep replies visible when loading more replies ([#3133][294]) ([`295533c`][295]) * **tooltip:** support error tooltip position ([#3187][296]) ([`941e990`][297]) * add `rowHeight` prop to `ContentExplorerModal` ([#3140][298]) ([`476d739`][299]) ### Reverts * "chore(answers): added foundation for content-answers element … ([#3249][300]) ([`56f58a5`][301]), closes [#3247][302] * **annotation-activity:** hide `AnnotationActivityLink` ([#3120][303]) ([`ba22807`][304]), closes [#3089][204] ### BREAKING CHANGES * `bdl-gray-62` is replaced with `bdl-gray-65` [1]: https://github.com/box/box-ui-elements/compare/v16.0.0...v17.0.0 [2]: https://github.com/box/box-ui-elements/issues/3290 [3]: https://github.com/box/box-ui-elements/commit/f73b9f9 [4]: https://github.com/box/box-ui-elements/issues/3263 [5]: https://github.com/box/box-ui-elements/commit/18cdf3f [6]: https://github.com/box/box-ui-elements/issues/3255 [7]: https://github.com/box/box-ui-elements/commit/d805249 [8]: https://github.com/box/box-ui-elements/issues/3219 [9]: https://github.com/box/box-ui-elements/commit/35bf8de [10]: https://github.com/box/box-ui-elements/issues/3227 [11]: https://github.com/box/box-ui-elements/commit/506ca45 [12]: https://github.com/box/box-ui-elements/issues/3268 [13]: https://github.com/box/box-ui-elements/commit/fc95d4d [14]: https://github.com/box/box-ui-elements/issues/3246 [15]: https://github.com/box/box-ui-elements/commit/e0b03c7 [16]: https://github.com/box/box-ui-elements/issues/3273 [17]: https://github.com/box/box-ui-elements/commit/4db0231 [18]: https://github.com/box/box-ui-elements/issues/3221 [19]: https://github.com/box/box-ui-elements/commit/b7ecaab [20]: https://github.com/box/box-ui-elements/issues/3232 [21]: https://github.com/box/box-ui-elements/commit/718a71a [22]: https://github.com/box/box-ui-elements/issues/3314 [23]: https://github.com/box/box-ui-elements/commit/a596557 [24]: https://github.com/box/box-ui-elements/issues/3260 [25]: https://github.com/box/box-ui-elements/commit/5b5fec1 [26]: https://github.com/box/box-ui-elements/issues/3259 [27]: https://github.com/box/box-ui-elements/commit/6ec1512 [28]: https://github.com/box/box-ui-elements/issues/3261 [29]: https://github.com/box/box-ui-elements/commit/3ce688d [30]: https://github.com/box/box-ui-elements/issues/3278 [31]: https://github.com/box/box-ui-elements/commit/28c79dd [32]: https://github.com/box/box-ui-elements/issues/3243 [33]: https://github.com/box/box-ui-elements/commit/a88a96c [34]: https://github.com/box/box-ui-elements/issues/3251 [35]: https://github.com/box/box-ui-elements/commit/24dcba2 [36]: https://github.com/box/box-ui-elements/issues/3248 [37]: https://github.com/box/box-ui-elements/commit/2302712 [38]: https://github.com/box/box-ui-elements/issues/3257 [39]: https://github.com/box/box-ui-elements/commit/0933062 [40]: https://github.com/box/box-ui-elements/issues/3250 [41]: https://github.com/box/box-ui-elements/commit/d84d1ca [42]: https://github.com/box/box-ui-elements/issues/3276 [43]: https://github.com/box/box-ui-elements/commit/018a99c [44]: https://github.com/box/box-ui-elements/issues/3285 [45]: https://github.com/box/box-ui-elements/commit/bfbcf55 [46]: https://github.com/box/box-ui-elements/issues/3300 [47]: https://github.com/box/box-ui-elements/commit/88116cb [48]: https://github.com/box/box-ui-elements/issues/3224 [49]: https://github.com/box/box-ui-elements/commit/0274618 [50]: https://github.com/box/box-ui-elements/issues/3299 [51]: https://github.com/box/box-ui-elements/commit/a893e5a [52]: https://github.com/box/box-ui-elements/issues/3265 [53]: https://github.com/box/box-ui-elements/commit/c3ae099 [54]: https://github.com/box/box-ui-elements/issues/3302 [55]: https://github.com/box/box-ui-elements/commit/11e6979 [56]: https://github.com/box/box-ui-elements/issues/3303 [57]: https://github.com/box/box-ui-elements/commit/ce27f70 [58]: https://github.com/box/box-ui-elements/issues/3262 [59]: https://github.com/box/box-ui-elements/commit/7f05653 [60]: https://github.com/box/box-ui-elements/issues/3306 [61]: https://github.com/box/box-ui-elements/commit/32c656d [62]: https://github.com/box/box-ui-elements/issues/3286 [63]: https://github.com/box/box-ui-elements/commit/11328fb [64]: https://github.com/box/box-ui-elements/issues/3231 [65]: https://github.com/box/box-ui-elements/commit/dcc06e2 [66]: https://github.com/box/box-ui-elements/issues/3244 [67]: https://github.com/box/box-ui-elements/commit/ca01965 [68]: https://github.com/box/box-ui-elements/issues/3289 [69]: https://github.com/box/box-ui-elements/commit/1f25b98 [70]: https://github.com/box/box-ui-elements/issues/3223 [71]: https://github.com/box/box-ui-elements/commit/9b209e5 [72]: https://github.com/box/box-ui-elements/issues/3253 [73]: https://github.com/box/box-ui-elements/commit/ac92e21 [74]: https://github.com/box/box-ui-elements/issues/3216 [75]: https://github.com/box/box-ui-elements/commit/4ecdd81 [76]: https://github.com/box/box-ui-elements/issues/3230 [77]: https://github.com/box/box-ui-elements/commit/20f4454 [78]: https://github.com/box/box-ui-elements/issues/3239 [79]: https://github.com/box/box-ui-elements/commit/528a157 [80]: https://github.com/box/box-ui-elements/issues/3254 [81]: https://github.com/box/box-ui-elements/commit/cf0c894 [82]: https://github.com/box/box-ui-elements/issues/3233 [83]: https://github.com/box/box-ui-elements/commit/d9108c4 [84]: https://github.com/box/box-ui-elements/issues/3226 [85]: https://github.com/box/box-ui-elements/issues/3264 [86]: https://github.com/box/box-ui-elements/commit/fa68dd6 [87]: https://github.com/box/box-ui-elements/issues/3281 [88]: https://github.com/box/box-ui-elements/commit/fd1a82d [89]: https://github.com/box/box-ui-elements/issues/3282 [90]: https://github.com/box/box-ui-elements/commit/a7005ff [91]: https://github.com/box/box-ui-elements/issues/3277 [92]: https://github.com/box/box-ui-elements/commit/26b7e5f [93]: https://github.com/box/box-ui-elements/issues/3234 [94]: https://github.com/box/box-ui-elements/commit/3917bee [95]: https://github.com/box/box-ui-elements/issues/3228 [96]: https://github.com/box/box-ui-elements/commit/1f7b9f9 [97]: https://github.com/box/box-ui-elements/issues/3236 [98]: https://github.com/box/box-ui-elements/commit/07cc347 [99]: https://github.com/box/box-ui-elements/issues/3138 [100]: https://github.com/box/box-ui-elements/commit/2c80164 [101]: https://github.com/box/box-ui-elements/issues/3197 [102]: https://github.com/box/box-ui-elements/commit/f4b69f0 [103]: https://github.com/box/box-ui-elements/issues/3189 [104]: https://github.com/box/box-ui-elements/commit/e3900b3 [105]: https://github.com/box/box-ui-elements/issues/3209 [106]: https://github.com/box/box-ui-elements/commit/5d05a2b [107]: https://github.com/box/box-ui-elements/issues/3104 [108]: https://github.com/box/box-ui-elements/commit/5d5b314 [109]: https://github.com/box/box-ui-elements/issues/3146 [110]: https://github.com/box/box-ui-elements/commit/1f0809b [111]: https://github.com/box/box-ui-elements/issues/3177 [112]: https://github.com/box/box-ui-elements/commit/bd8e1e6 [113]: https://github.com/box/box-ui-elements/issues/3103 [114]: https://github.com/box/box-ui-elements/commit/9400f5a [115]: https://github.com/box/box-ui-elements/issues/3123 [116]: https://github.com/box/box-ui-elements/commit/8d2c3f1 [117]: https://github.com/box/box-ui-elements/issues/3173 [118]: https://github.com/box/box-ui-elements/commit/a7dc6a9 [119]: https://github.com/box/box-ui-elements/issues/3205 [120]: https://github.com/box/box-ui-elements/commit/e918b5f [121]: https://github.com/box/box-ui-elements/issues/3149 [122]: https://github.com/box/box-ui-elements/commit/729f6f1 [123]: https://github.com/box/box-ui-elements/issues/3212 [124]: https://github.com/box/box-ui-elements/commit/b35e977 [125]: https://github.com/box/box-ui-elements/issues/3105 [126]: https://github.com/box/box-ui-elements/commit/b8521e4 [127]: https://github.com/box/box-ui-elements/issues/3111 [128]: https://github.com/box/box-ui-elements/commit/29fc19c [129]: https://github.com/box/box-ui-elements/issues/3121 [130]: https://github.com/box/box-ui-elements/commit/16bc077 [131]: https://github.com/box/box-ui-elements/issues/3130 [132]: https://github.com/box/box-ui-elements/commit/8ca714b [133]: https://github.com/box/box-ui-elements/issues/3135 [134]: https://github.com/box/box-ui-elements/commit/53c0370 [135]: https://github.com/box/box-ui-elements/issues/3137 [136]: https://github.com/box/box-ui-elements/commit/7fe32a6 [137]: https://github.com/box/box-ui-elements/issues/3139 [138]: https://github.com/box/box-ui-elements/commit/82f414d [139]: https://github.com/box/box-ui-elements/issues/3150 [140]: https://github.com/box/box-ui-elements/commit/d428a43 [141]: https://github.com/box/box-ui-elements/issues/3158 [142]: https://github.com/box/box-ui-elements/commit/02eb624 [143]: https://github.com/box/box-ui-elements/issues/3159 [144]: https://github.com/box/box-ui-elements/commit/6df6f0d [145]: https://github.com/box/box-ui-elements/issues/3174 [146]: https://github.com/box/box-ui-elements/commit/0e9ea9d [147]: https://github.com/box/box-ui-elements/issues/3183 [148]: https://github.com/box/box-ui-elements/commit/c32bbae [149]: https://github.com/box/box-ui-elements/issues/3199 [150]: https://github.com/box/box-ui-elements/commit/eb1acee [151]: https://github.com/box/box-ui-elements/issues/3207 [152]: https://github.com/box/box-ui-elements/commit/d9d571d [153]: https://github.com/box/box-ui-elements/issues/3213 [154]: https://github.com/box/box-ui-elements/commit/64364c3 [155]: https://github.com/box/box-ui-elements/issues/3220 [156]: https://github.com/box/box-ui-elements/commit/39739ab [157]: https://github.com/box/box-ui-elements/issues/3222 [158]: https://github.com/box/box-ui-elements/commit/429c856 [159]: https://github.com/box/box-ui-elements/issues/3180 [160]: https://github.com/box/box-ui-elements/commit/2553713 [161]: https://github.com/box/box-ui-elements/issues/3181 [162]: https://github.com/box/box-ui-elements/commit/0fce635 [163]: https://github.com/box/box-ui-elements/issues/3125 [164]: https://github.com/box/box-ui-elements/commit/79420f2 [165]: https://github.com/box/box-ui-elements/issues/3108 [166]: https://github.com/box/box-ui-elements/commit/d8321aa [167]: https://github.com/box/box-ui-elements/issues/3160 [168]: https://github.com/box/box-ui-elements/commit/b256b07 [169]: https://github.com/box/box-ui-elements/issues/3204 [170]: https://github.com/box/box-ui-elements/commit/c67a4dd [171]: https://github.com/box/box-ui-elements/issues/3218 [172]: https://github.com/box/box-ui-elements/commit/cabb4a8 [173]: https://github.com/box/box-ui-elements/issues/3147 [174]: https://github.com/box/box-ui-elements/commit/8f75827 [175]: https://github.com/box/box-ui-elements/issues/3179 [176]: https://github.com/box/box-ui-elements/commit/1a698c5 [177]: https://github.com/box/box-ui-elements/issues/3178 [178]: https://github.com/box/box-ui-elements/commit/ba66a34 [179]: https://github.com/box/box-ui-elements/issues/3186 [180]: https://github.com/box/box-ui-elements/commit/efbc532 [181]: https://github.com/box/box-ui-elements/issues/3110 [182]: https://github.com/box/box-ui-elements/commit/f78e36b [183]: https://github.com/box/box-ui-elements/issues/3107 [184]: https://github.com/box/box-ui-elements/commit/7e12d88 [185]: https://github.com/box/box-ui-elements/issues/3191 [186]: https://github.com/box/box-ui-elements/commit/f1f5c81 [187]: https://github.com/box/box-ui-elements/issues/3193 [188]: https://github.com/box/box-ui-elements/commit/af3c567 [189]: https://github.com/box/box-ui-elements/issues/3211 [190]: https://github.com/box/box-ui-elements/commit/529bf10 [191]: https://github.com/box/box-ui-elements/issues/3195 [192]: https://github.com/box/box-ui-elements/commit/a79e193 [193]: https://github.com/box/box-ui-elements/commit/f52ad0e [194]: https://github.com/box/box-ui-elements/issues/3151 [195]: https://github.com/box/box-ui-elements/commit/bf3256a [196]: https://github.com/box/box-ui-elements/issues/3312 [197]: https://github.com/box/box-ui-elements/commit/93720ce [198]: https://github.com/box/box-ui-elements/issues/3307 [199]: https://github.com/box/box-ui-elements/commit/cadab1d [200]: https://github.com/box/box-ui-elements/issues/3297 [201]: https://github.com/box/box-ui-elements/commit/84f9abb [202]: https://github.com/box/box-ui-elements/issues/3176 [203]: https://github.com/box/box-ui-elements/commit/f773aa3 [204]: https://github.com/box/box-ui-elements/issues/3089 [205]: https://github.com/box/box-ui-elements/commit/dc3642e [206]: https://github.com/box/box-ui-elements/issues/3157 [207]: https://github.com/box/box-ui-elements/commit/55ca058 [208]: https://github.com/box/box-ui-elements/issues/3128 [209]: https://github.com/box/box-ui-elements/commit/fac5133 [210]: https://github.com/box/box-ui-elements/issues/3196 [211]: https://github.com/box/box-ui-elements/commit/1c07b41 [212]: https://github.com/box/box-ui-elements/issues/3192 [213]: https://github.com/box/box-ui-elements/commit/0168f1a [214]: https://github.com/box/box-ui-elements/issues/3201 [215]: https://github.com/box/box-ui-elements/commit/3df222a [216]: https://github.com/box/box-ui-elements/issues/3097 [217]: https://github.com/box/box-ui-elements/commit/a8d1985 [218]: https://github.com/box/box-ui-elements/issues/3184 [219]: https://github.com/box/box-ui-elements/commit/cfed356 [220]: https://github.com/box/box-ui-elements/issues/3132 [221]: https://github.com/box/box-ui-elements/commit/3469413 [222]: https://github.com/box/box-ui-elements/issues/3117 [223]: https://github.com/box/box-ui-elements/commit/42e1122 [224]: https://github.com/box/box-ui-elements/issues/3122 [225]: https://github.com/box/box-ui-elements/commit/9c25858 [226]: https://github.com/box/box-ui-elements/issues/3214 [227]: https://github.com/box/box-ui-elements/commit/18b8ea6 [228]: https://github.com/box/box-ui-elements/issues/3194 [229]: https://github.com/box/box-ui-elements/commit/e0cc12d [230]: https://github.com/box/box-ui-elements/issues/3127 [231]: https://github.com/box/box-ui-elements/commit/e37de34 [232]: https://github.com/box/box-ui-elements/issues/3086 [233]: https://github.com/box/box-ui-elements/commit/684e9f6 [234]: https://github.com/box/box-ui-elements/issues/3256 [235]: https://github.com/box/box-ui-elements/commit/43279c0 [236]: https://github.com/box/box-ui-elements/issues/3295 [237]: https://github.com/box/box-ui-elements/commit/2cde065 [238]: https://github.com/box/box-ui-elements/issues/3240 [239]: https://github.com/box/box-ui-elements/commit/03b0dea [240]: https://github.com/box/box-ui-elements/issues/3175 [241]: https://github.com/box/box-ui-elements/commit/fead6e4 [242]: https://github.com/box/box-ui-elements/issues/3266 [243]: https://github.com/box/box-ui-elements/commit/3d8eaf8 [244]: https://github.com/box/box-ui-elements/issues/3242 [245]: https://github.com/box/box-ui-elements/commit/b75c7ee [246]: https://github.com/box/box-ui-elements/issues/3118 [247]: https://github.com/box/box-ui-elements/commit/5373031 [248]: https://github.com/box/box-ui-elements/issues/3134 [249]: https://github.com/box/box-ui-elements/commit/3ef81e1 [250]: https://github.com/box/box-ui-elements/issues/3152 [251]: https://github.com/box/box-ui-elements/commit/07f5fc7 [252]: https://github.com/box/box-ui-elements/issues/3162 [253]: https://github.com/box/box-ui-elements/commit/a6c125d [254]: https://github.com/box/box-ui-elements/issues/3267 [255]: https://github.com/box/box-ui-elements/commit/719b31f [256]: https://github.com/box/box-ui-elements/issues/3116 [257]: https://github.com/box/box-ui-elements/commit/a66ec89 [258]: https://github.com/box/box-ui-elements/issues/3131 [259]: https://github.com/box/box-ui-elements/commit/aaf112d [260]: https://github.com/box/box-ui-elements/issues/3115 [261]: https://github.com/box/box-ui-elements/commit/103a5d1 [262]: https://github.com/box/box-ui-elements/issues/3112 [263]: https://github.com/box/box-ui-elements/commit/ffc2e33 [264]: https://github.com/box/box-ui-elements/issues/3109 [265]: https://github.com/box/box-ui-elements/commit/8d9fb90 [266]: https://github.com/box/box-ui-elements/issues/3269 [267]: https://github.com/box/box-ui-elements/commit/3e80a06 [268]: https://github.com/box/box-ui-elements/issues/3188 [269]: https://github.com/box/box-ui-elements/commit/2b316db [270]: https://github.com/box/box-ui-elements/issues/3190 [271]: https://github.com/box/box-ui-elements/commit/37e8a19 [272]: https://github.com/box/box-ui-elements/issues/3288 [273]: https://github.com/box/box-ui-elements/commit/006e33c [274]: https://github.com/box/box-ui-elements/issues/3294 [275]: https://github.com/box/box-ui-elements/commit/92d0ddb [276]: https://github.com/box/box-ui-elements/issues/3298 [277]: https://github.com/box/box-ui-elements/commit/f9d4130 [278]: https://github.com/box/box-ui-elements/issues/3279 [279]: https://github.com/box/box-ui-elements/commit/7d1d3bf [280]: https://github.com/box/box-ui-elements/issues/3304 [281]: https://github.com/box/box-ui-elements/commit/044a336 [282]: https://github.com/box/box-ui-elements/issues/3270 [283]: https://github.com/box/box-ui-elements/commit/3900d1c [284]: https://github.com/box/box-ui-elements/issues/3280 [285]: https://github.com/box/box-ui-elements/commit/76e4010 [286]: https://github.com/box/box-ui-elements/issues/3143 [287]: https://github.com/box/box-ui-elements/commit/d4eea59 [288]: https://github.com/box/box-ui-elements/issues/3144 [289]: https://github.com/box/box-ui-elements/commit/5685142 [290]: https://github.com/box/box-ui-elements/issues/3245 [291]: https://github.com/box/box-ui-elements/commit/9db75e7 [292]: https://github.com/box/box-ui-elements/issues/3129 [293]: https://github.com/box/box-ui-elements/commit/b291c50 [294]: https://github.com/box/box-ui-elements/issues/3133 [295]: https://github.com/box/box-ui-elements/commit/295533c [296]: https://github.com/box/box-ui-elements/issues/3187 [297]: https://github.com/box/box-ui-elements/commit/941e990 [298]: https://github.com/box/box-ui-elements/issues/3140 [299]: https://github.com/box/box-ui-elements/commit/476d739 [300]: https://github.com/box/box-ui-elements/issues/3249 [301]: https://github.com/box/box-ui-elements/commit/56f58a5 [302]: https://github.com/box/box-ui-elements/issues/3247 [303]: https://github.com/box/box-ui-elements/issues/3120 [304]: https://github.com/box/box-ui-elements/commit/ba22807 ## Updates to Box Embed guide With [Box Embed][1] you can embed a Box webapp anywhere in your application. The updated webapp is responsive to any changes. For example, if an integration makes the embedded Box webapp smaller, all the UI components such as buttons and lists will also be resized to still be usable. The update also includes a description of the cloud game, a widget which increases security by preventing clickjacking. # Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][2] for any help needed. [1]: /guides/embed/box-embed/ [2]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## Box Node SDK v2.9.0 released ### New Features and Enhancements * New fields in `retention-policy` and `retention-policy-assignment` ([#803][1]) ([`f14ba84`][2]) ### Bug Fixes * return empty object when `tos` status is not present ([#797][3]) ([`12fd9b0`][4]) [1]: https://github.com/box/box-node-sdk/issues/803 [2]: https://github.com/box/box-node-sdk/commit/f14ba84013985513854ad396581d085d1d4f0255 [3]: https://github.com/box/box-node-sdk/issues/797 [4]: https://github.com/box/box-node-sdk/commit/12fd9b053707471722f53cd1760c8cf59451fe8d ## Box iOS SDK v5.4.2 released ### Bug Fixes * An empty string `nextMarker` should be treated as end-of-paging. ([#893][1]) ([`49c17de`][2]) [1]: https://github.com/box/box-ios-sdk/issues/893 [2]: https://github.com/box/box-ios-sdk/commit/49c17de588fcffcd2d151ce9047ebc09965f80ce ## Box Windows SDK v5.2.1 released ### Bug Fixes * Catch all exceptions when getting User Agent header ([#901][1]) ([`75d8874`][2]) - [https://www.nuget.org/packages/Box.V2/5.2.1>](https://www.nuget.org/packages/Box.V2/5.2.1>) - [https://www.nuget.org/packages/Box.V2.Core/5.2.1>](https://www.nuget.org/packages/Box.V2.Core/5.2.1>) [1]: https://github.com/box/box-windows-sdk-v2/issues/901 [2]: https://github.com/box/box-windows-sdk-v2/commit/75d887470698a5f312610cebd58be58aee7eaa9b ## Box Python SDK v3.7.1 released ### Bug Fixes * Rename filter date parameters in legal hold creation according to the documentation ([#810][1]) ([`f52c66a`][2]) [1]: https://github.com/box/box-python-sdk/issues/810 [2]: https://github.com/box/box-python-sdk/commit/f52c66a8a8399a776493537f692460ace2995e40 ## Add more details to Custom Apps To clarify [Custom Apps][1]' purpose and add the value for the enterprise, we now offer a possibility of describing the Custom App in a more granular way. When setting up a Custom App with [OAuth][2], [JWT][3] or [Client Credentials][4], you can now specify the purpose of the app and the app's creator. Additionally, if you intend to integrate your app with an external system, you can define the integration category and provide details of the external system. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][5] for any help needed. [1]: /guides/applications/app-types/platform-apps [2]: /guides/authentication/oauth2/oauth2-setup [3]: /guides/authentication/jwt/jwt-setup [4]: /guides/authentication/client-credentials/client-credentials-setup [5]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## Collaborations API - pending status We added more information about the `pending` status in our [collaborations API][1]. If the collaboration is in [`pending` status][2]: * login and name return an empty string, * the following fields are redacted: * `login` and `name` are hidden if a collaboration was created using `user_id`, * `name` is hidden if a collaboration was created using `login`. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][3] for any help needed. [1]: /reference/resources/collaboration [2]: /reference/post-collaborations [3]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## Box Windows SDK v5.2.0 released ### New Features and Enhancements * add `Id` to `MetadataTemplateField` ([#890][1]) ([`b7fe214`][2]) * add `start_date_field` and `description` to retention policies ([#888][3]) ([`100b722`][4]) * add configurable `JWTAudience` claim ([#897][5]) ([`50219fd`][6]) * add shared link support to `GetFolderItemsAsync` ([#892][7]) ([`0eba85c`][8]) ### Bug Fixes * Use fixed value of `aud` field in `JWT` claim ([#896][9]) ([`8c9982d`][10]) * add `Id` to `MetadataTemplateField` ([#890][1]) ([`b7fe214`][2]) * add `start_date_field` and `description` to retention policies ([#888][3]) ([`100b722`][4]) * add configurable `JWTAudience` claim ([#897][5]) ([`50219fd`][6]) * add shared link support to `GetFolderItemsAsync` ([#892][7]) ([`0eba85c`][8]) - [https://www.nuget.org/packages/Box.V2/5.2.0>](https://www.nuget.org/packages/Box.V2/5.2.0>) - [https://www.nuget.org/packages/Box.V2.Core/5.2.0>](https://www.nuget.org/packages/Box.V2.Core/5.2.0>) [1]: https://github.com/box/box-windows-sdk-v2/issues/890 [2]: https://github.com/box/box-windows-sdk-v2/commit/b7fe2149e1a0ade8573b497b7bb36e9f3c4f4a82 [3]: https://github.com/box/box-windows-sdk-v2/issues/888 [4]: https://github.com/box/box-windows-sdk-v2/commit/100b722ce4909395c00b527677564f37a61ec2cb [5]: https://github.com/box/box-windows-sdk-v2/issues/897 [6]: https://github.com/box/box-windows-sdk-v2/commit/50219fdfd553d6335b6f0b4341719b09680c4ba0 [7]: https://github.com/box/box-windows-sdk-v2/issues/892 [8]: https://github.com/box/box-windows-sdk-v2/commit/0eba85c693763472c51fe81cbc43222305e9eefb [9]: https://github.com/box/box-windows-sdk-v2/issues/896 [10]: https://github.com/box/box-windows-sdk-v2/commit/8c9982d160ec4806c796ee2621b1811232ea59c1 ## Downloading ZIP Archives with Box API A recently released [guide][1] helps you to download large amount of data. Use Box API to [create][2] and [download][3] ZIP archives containing files, folders, or both. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][4] for any help needed. [1]: /guides/downloads/zip-archive [2]: /reference/post-zip-downloads [3]: /reference/get-zip-downloads-id-content [4]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## Box Python SDK v3.7.0 released ### New Features and Enhancements * Add new optional fields for `retention_policies` and `retention_policy_assignments` ([#803][1]) ([`8b72f7e`][2]) * Use multiple threading for chunked upload ([#800][3]) ([`506ce0d`][4]) [1]: https://github.com/box/box-python-sdk/issues/803 [2]: https://github.com/box/box-python-sdk/commit/8b72f7e992bce676723a40ac12bde06c8cca3bfb [3]: https://github.com/box/box-python-sdk/issues/800 [4]: https://github.com/box/box-python-sdk/commit/506ce0d1e72ab4eeb6c5933a32c753e232a2f624 ## Box Java SDK v4.0.1 released ### Bug Fixes ### Bug Fixes * `OAUTH_SUFFIX` gets appended twice to `baseAuthorizationURL` ([#1148][1]) ([`3164770`][2]), closes [#1147][3] * Wrong progress reported to `ProgressListener` by `AbstractBoxMultipartRequest` ([#1151][4]) ([`947ded3`][5]), closes [#1149][6] [1]: https://github.com/box/box-java-sdk/issues/1148 [2]: https://github.com/box/box-java-sdk/commit/3164770498e5115a43318640735317a896950f54 [3]: https://github.com/box/box-java-sdk/issues/1147 [4]: https://github.com/box/box-java-sdk/issues/1151 [5]: https://github.com/box/box-java-sdk/commit/947ded394490fc840b8191bc7ad69ae0ea5f5c7d [6]: https://github.com/box/box-java-sdk/issues/1149 ## Box CLI v3.8.0 released ### New Features and Enhancements * add alias for metadata cascade policy create ([#460][1]) ([`8d2f683`][2]) * Add support for `--reauthorize` flag in login command ([#457][3]) ([`f653a0d`][4]) ### Bug Fixes * Fix `keychain` access by bumping `keychain` library to `1.4.0` ([#459][5]) ([`56919ce`][6]) * Fix unit tests ([#456][7]) ([`f89d9ef`][8]) [1]: https://github.com/box/boxcli/issues/460 [2]: https://github.com/box/boxcli/commit/8d2f683e092c036efe352e6fd70904083ad7c208 [3]: https://github.com/box/boxcli/issues/457 [4]: https://github.com/box/boxcli/commit/f653a0d526c7194f0a5e80dc837f0f16a9d4f27b [5]: https://github.com/box/boxcli/issues/459 [6]: https://github.com/box/boxcli/commit/56919cefabef6de4d96a1f69f7c80740a680876c [7]: https://github.com/box/boxcli/issues/456 [8]: https://github.com/box/boxcli/commit/f89d9ef5c3c4e7bf00c0be40f128428b1e7e6983 ## Box iOS SDK v5.4.1 released ### Bug Fixes * Fix `listAssignments` and `assign` methods in `RetentionPolicyModule` ([#886][1]) ([`b668888`][2]) [1]: https://github.com/box/box-ios-sdk/issues/886 [2]: https://github.com/box/box-ios-sdk/commit/b668888f35136dd1239526b70cc31a10bdd04744 ## Announcing End of Support for Android SDK on May 31st As of May 31, 2023 [Android SDK][1] will no longer be supported. You can still use your existing Android SDK applications with no impact, but you won't receive new features, updates, or bug fixes. If you would like to continue getting the latest and greatest Android features, we recommend using Java SDK to build apps on Android. Refer to [this][2] documentation for more details. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][3] for any help needed. [1]: https://github.com/box/box-android-sdk [2]: https://github.com/box/box-java-sdk/blob/main/doc/android.md [3]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## Box Sign updates ## Multiple documents in one request The Box Sign [multiple documents][1] in one request is now supported in our [public API][2]. ## Signer attachments The [signer attachments][3] feature allows users to request additional files from signers in a file attachment field. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][4] for any help needed. [1]: https://support.box.com/hc/en-us/sections/10302887198227-Multiple-documents-in-a-signature-request [2]: /reference/post-sign-requests [3]: /reference/resources/sign-request#param-signers-inputs-content_type [4]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## The Sample Code Catalog released We are happy to announce that [the Sample Code Catalog](https://developer.box.com/sample-code/) `v1.0.0` is now available on our Box Developer site. From now on you can browse code samples in various programming languages and filter them by category. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][1] for any help needed. [1]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## Box Python SDK v3.6.2 released ### Bug Fixes * Retry `Connection broken` and `Connection reset` requests errors ([#794][1]) ([`f1a0aa4`][2]) [1]: https://github.com/box/box-python-sdk/issues/794 [2]: https://github.com/box/box-python-sdk/commit/f1a0aa434369f06e80654a9f5c4b796100881aa6 ## Box CLI v3.7.0 released ### New Features and Enhancements * Add more flags for folder update collaborators ([#438][1]) ([`83ac6d7`][2]) * Add support session termination ([#446][3]) ([`aef15a8`][4]) ### Bug Fixes * Fix delete token cache from disk ([#445][5]) ([`aafb68a`][6]) * Fix metadata template update when adding multiple options to enum ([#442][7]) ([`8779eec`][8]) * single file upload on Node 16 ([#441][9]) ([`d94ab35`][10]) [1]: https://github.com/box/boxcli/issues/438 [2]: https://github.com/box/boxcli/commit/83ac6d7c8eeb7f3dc8562c8132cade4f5af80ee1 [3]: https://github.com/box/boxcli/issues/446 [4]: https://github.com/box/boxcli/commit/aef15a8d2c7ee904db320d879deb6ebf0f934d22 [5]: https://github.com/box/boxcli/issues/445 [6]: https://github.com/box/boxcli/commit/aafb68ae38a8280bd97cf978042a8df5b71b2f52 [7]: https://github.com/box/boxcli/issues/442 [8]: https://github.com/box/boxcli/commit/8779eecf24bda5b093bc891f5097879e1876b601 [9]: https://github.com/box/boxcli/issues/441 [10]: https://github.com/box/boxcli/commit/d94ab35a38938daf4edbbd134774a3809facecbd ## Box Java SDK v4.0.0 released The most important change this release includes is the replacement of the HTTP library from a native one to [OkHttp][1] which allows SDK to * Support the HTTP2 version of the HTTP protocol. * Support proxies that do not use only basic authentication method. For details on creating custom proxy authenticators and an example of [NTLM proxy authentication][2]. ### Breaking Changes * `BatchAPIRequest` is no longer supported by the SDK * `BoxAPIConnection#DEFAULT_MAX_ATTEMPTS` is replaced with `BoxAPIConnection#DEFAULT_MAX_RETRIES` * `BoxRedirectResponse` was removed and will not be replaced * `BoxEvent.Type` is replaced with `EventType` * Removed deprecated methods from `BoxFile`, `BoxFileVersionRetention`, `BoxFolder`, `BoxGroup`, `BoxGroupMembership`,`BoxItem`, `BoxRetentionPolicy`, `BoxTask`, `BoxUser`, `BoxWebLink`, `EventLog`, `Metadata` and `MetadataTemplate`. Migration details can be found [here][3]. ### New Features and Enhancements * Using `OkHttp` in Java SDK ([#1083][4]) ([`2656698`][5]) [1]: https://square.github.io/okhttp/ [2]: https://github.com/box/box-java-sdk/blob/main/doc/configuration.md#example-ntlm-authenticator [3]: https://github.com/box/box-java-sdk/blob/main/doc/upgrades/3.x.x%20to%204.x.x.md [4]: https://github.com/box/box-java-sdk/issues/1083 [5]: https://github.com/box/box-java-sdk/commit/265669897100dd8f1757fc2c5f25665da42c2889 ## Box Windows SDK v5.1.0 released ### New Features and Enhancements * `BoxCCGAuth` add User and Admin clients factory methods without initial token ([#883][1]) ([`c1337fc`][2]) - [https://www.nuget.org/packages/Box.V2/5.1.0>](https://www.nuget.org/packages/Box.V2/5.1.0>) - [https://www.nuget.org/packages/Box.V2.Core/5.1.0>](https://www.nuget.org/packages/Box.V2.Core/5.1.0>) [1]: https://github.com/box/box-windows-sdk-v2/issues/883 [2]: https://github.com/box/box-windows-sdk-v2/commit/c1337fc9d765bf7d4bc1757ea832bec92a602f76 ## Box Windows SDK v5.0.0 released ### Breaking changes * upgrade .net framework to 4.6.2 ([#881][1]) * remove deprecated methods ([#881][1]) * remove `use_index` references ([#881][1]) * return proper object from `GetFileVersionsUnderRetentionForAssignmentAsync`([#881][1]) ### New Features and Enhancements * upgrade .net framework to 4.6.2 ([#881][1]) ([`f1989aa`][2]), closes [#863][3] * remove deprecated methods ([#881][1]) ([`f1989aa`][2]), closes [#874][4] * remove `use_index` references ([#881][1]) ([`f1989aa`][2]), closes [#870][5] ### Bug Fixes * Added pagination option to `IBoxFilesManager#ViewVersionsAsync` ([#869][6]) ([`2324495`][7]), closes [#866][8] * return proper object from `GetFileVersionsUnderRetentionForAssignmentAsync` ([#881][1]) ([`f1989aa`][2]), closes [#875][9] - [https://www.nuget.org/packages/Box.V2/5.0.0>](https://www.nuget.org/packages/Box.V2/5.0.0>) - [https://www.nuget.org/packages/Box.V2.Core/5.0.0>](https://www.nuget.org/packages/Box.V2.Core/5.0.0>) [1]: https://github.com/box/box-windows-sdk-v2/issues/881 [2]: https://github.com/box/box-windows-sdk-v2/commit/f1989aa94cd085ad4bec04b4ebedb04f40455569 [3]: https://github.com/box/box-windows-sdk-v2/issues/863 [4]: https://github.com/box/box-windows-sdk-v2/issues/874 [5]: https://github.com/box/box-windows-sdk-v2/issues/870 [6]: https://github.com/box/box-windows-sdk-v2/issues/869 [7]: https://github.com/box/box-windows-sdk-v2/commit/232449531440227a0c8b3489ceda813fe4f4a73f [8]: https://github.com/box/box-windows-sdk-v2/issues/866 [9]: https://github.com/box/box-windows-sdk-v2/issues/875 ## Salesforce Toolkit - Flow Actions Salesforce toolkit includes wrappers that allow admins to invoke the [following methods][1]. It allows Box for Salesforce users to build automated solutions, such as folder structure, using [Salesforce Flows][2]. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][3] for any help needed. [1]: /guides/tooling/salesforce-toolkit/flow-actions [2]: https://help.salesforce.com/s/articleView?id=sf.flow.htm&type=5 [3]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## Box Python SDK v3.6.1 released ### Bug Fixes * Retry CCG and JWT auth requests on connection reset error ([#790][1]) ([`205997d`][2]), closes [#789][3] [1]: https://github.com/box/box-python-sdk/issues/790 [2]: https://github.com/box/box-python-sdk/commit/205997db9870395b9dd042854c4201338dcf925f [3]: https://github.com/box/box-python-sdk/issues/789 ## Box Node SDK v2.8.1 released ### Bug Fixes * Fix `getReadStream` delay reading ([#790][1]) ([`6bfc1ee`][2]) [1]: https://github.com/box/box-node-sdk/issues/790 [2]: https://github.com/box/box-node-sdk/commit/6bfc1eebeb9a31606ff96127eeb1ad03d2f13d9c ## Box Java SDK v3.8.2 released ### Bug Fixes * Fixed restoring state without refresh token. ([#1139][1]) ([`3544709`][2]) [1]: https://github.com/box/box-java-sdk/issues/1139 [2]: https://github.com/box/box-java-sdk/commit/3544709480eb03e5bd50f5dc99be7409569304c4 ## Box Python SDK v3.6.0 released ### New Features and Enhancements * Add support marker in trash get items ([#781][1]) ([`e2d1846`][2]) * Sanitize proxy credentials ([#782][3]) ([`97fb5aa`][4]) ### Bug Fixes * Fix index error when getting an empty list of user term of service statuses ([#780][5]) ([`23d763a`][6]) * Specify which exceptions should be retried ([#784][7]) ([`833cd46`][8]) [1]: https://github.com/box/box-python-sdk/issues/781 [2]: https://github.com/box/box-python-sdk/commit/e2d1846818aeccfcba2a2f09a5cd924c9f6cd534 [3]: https://github.com/box/box-python-sdk/issues/782 [4]: https://github.com/box/box-python-sdk/commit/97fb5aa2ed72008570abb327269ecec150632af9 [5]: https://github.com/box/box-python-sdk/issues/780 [6]: https://github.com/box/box-python-sdk/commit/23d763ac4ba592131c43eb0319929db25d041c30 [7]: https://github.com/box/box-python-sdk/issues/784 [8]: https://github.com/box/box-python-sdk/commit/833cd46bafe774f19925f78600df90477bf07055 ## Box Node SDK v2.8.0 released ### New Features and Enhancements * Session termination ([#782][1]) ([`7fb56c6`][2]) [1]: https://github.com/box/box-node-sdk/issues/782 [2]: https://github.com/box/box-node-sdk/commit/7fb56c625f8eb03e6a5354b67a0debfd9e4ad7c8 ## Announcing major releases of Box SDKs In January 2023, we plan two major releases of Box Windows V2 SDK and Box Java SDK. For Box Windows V2 SDK, we are changing the minimum supported version of .NET Framework from 4.5 to 4.6.2+. For Box Java SDK, we are replacing networking library and introducing [OkHttp][2] which will give SDK support of HTTP2 protocol and allow users to use proxies beyond basic authentication. For both SDKs, we are removing deprecated APIs. * Read more about changes to [Box Windows V2 SDK][3]. * Read more about changes to [Box Java SDK][4]. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][1] for any help needed. [1]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [2]: https://square.github.io/okhttp/ [3]: https://github.com/box/box-windows-sdk-v2/releases/tag/v5.0.0-prerelease [4]: https://github.com/box/box-java-sdk/releases/tag/v4.0.0-prerelease ## Box Java SDK v3.8.1 released ### Bug Fixes * Restoring state from previous `SDK` version works. ([#1134][1]) ([`b6d97dd`][2]) [1]: https://github.com/box/box-java-sdk/issues/1134 [2]: https://github.com/box/box-java-sdk/commit/b6d97dd5b0cc91eb2e4c922ff217e0878e0f63ec ## Server-side actions no longer supported in Web App Integrations On December 1st, the options to create a preliminary callback URL or a server-side integration will no longer be available for OAuth 2.0 web app integration. ## Next steps If you have the server-side integration already configured for your applications, it will still be working. If you wish to stop using the feature or perform adjustments in your settings, see [this document][2] for workaround options and support. For more information about web app integrations, see the [documentation][3]. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][1] for any help needed. [1]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [2]: https://cloud.app.box.com/file/958463673555?s=uwk4jvanbofom2ckvk9q0wcnkc2vxqdy [3]: /guides/applications/web-app-integrations/ ## Box Python SDK v3.5.1 released ### Bug Fixes * Renew connection when Connection reset error occurs ([#771][1]) ([`bcaab27`][2]), closes [#756][3] [#757][4] [#763][5] [#765][6] [#766][7] [#770][8] * Retry JWT auth when got error: required unique `jti` claim. ([#768][9]) ([`878e958`][10]) * Update `pyjtw` dependency to work with Python 3.10 ([#772][11]) ([`b13c5cd`][12]) [1]: https://github.com/box/box-python-sdk/issues/771 [2]: https://github.com/box/box-python-sdk/commit/bcaab277c3cabba498076d066366abbaa5507904 [3]: https://github.com/box/box-python-sdk/issues/756 [4]: https://github.com/box/box-python-sdk/issues/757 [5]: https://github.com/box/box-python-sdk/issues/763 [6]: https://github.com/box/box-python-sdk/issues/765 [7]: https://github.com/box/box-python-sdk/issues/766 [8]: https://github.com/box/box-python-sdk/issues/770 [9]: https://github.com/box/box-python-sdk/issues/768 [10]: https://github.com/box/box-python-sdk/commit/878e958abfb01740656aaff42492777753e4c8ea [11]: https://github.com/box/box-python-sdk/issues/772 [12]: https://github.com/box/box-python-sdk/commit/b13c5cd34105d3f774d3f6d35db7aaf51dd3e247 ## Box CLI v3.6.0 released ### New Features and Enhancements * Add `id` and `type` field to shared-links:create response ([#427][1]) ([`5ea4cb8`][2]) * Add fields `disposition_at` field for files under retention ([#429][3]) ([`db824ef`][4]) ### Bug Fixes * Fix `event:poll` polling-interval ([#430][5]) ([`9ada74b`][6]) [1]: https://github.com/box/boxcli/issues/427 [2]: https://github.com/box/boxcli/commit/5ea4cb82294188dd30563ef9cea2c8e0b76bbfae [3]: https://github.com/box/boxcli/issues/429 [4]: https://github.com/box/boxcli/commit/db824ef0b4111810b7902896062c950ef9ac01b3 [5]: https://github.com/box/boxcli/issues/430 [6]: https://github.com/box/boxcli/commit/9ada74b09eb5aa0e09881946a4f7f30e2d68e037 ## Box Java SDK v3.8.0 released ### New Features and Enhancements * Added Box Sign webhooks ([#1109][1]) ([`99051a5`][2]) ### Bug Fixes * `NullPointerException` when using `BoxSignRequestPrefillTag` ([#1121][3]) ([`73fd5b6`][4]), closes [#1120][5] * Regenerate JWT ID and retry auth request when JTI claim is rejected ([#1110][6]) ([`420da0f`][7]) ### Dependency Upgrades * Bumped `org.bitbucket.b_c:jose4j:0.9.0` ([#1111][8]) ([`349694d`][9]) [1]: https://github.com/box/box-java-sdk/issues/1109 [2]: https://github.com/box/box-java-sdk/commit/99051a575f120a8c0939359c1f4875b16b98b7f0 [3]: https://github.com/box/box-java-sdk/issues/1121 [4]: https://github.com/box/box-java-sdk/commit/73fd5b6e6e40f7e79b385edf46b8eee5ff612ace [5]: https://github.com/box/box-java-sdk/issues/1120 [6]: https://github.com/box/box-java-sdk/issues/1110 [7]: https://github.com/box/box-java-sdk/commit/420da0f2c80bfe8cfbaba4fa8dec4826c4cb6337 [8]: https://github.com/box/box-java-sdk/issues/1111 [9]: https://github.com/box/box-java-sdk/commit/349694ddcfeb701a9ecdfd5ae555d49bea4d1030 ## Box Node SDK v2.7.2 released ### Bug Fixes * Add `fields` query parameter to file and folder update ([#776][1]) ([`a327deb`][2]) [1]: https://github.com/box/box-node-sdk/issues/776 [2]: https://github.com/box/box-node-sdk/commit/a327debc83d98a4190a5a16cf848417ea5714db9 ## Box iOS SDK v5.4.0 released ### New Features and Enhancements * Add `content_type` field to Sign Requests signer ([#871][1]) ([`1ec5b01`][2]) * Add `redirect_url` and `declined_redirect_url` to Sign Request ([#870][3]) ([`f94d988`][4]) * Add support for `sign` webhook triggers ([#875][5]) ([`994bfaf`][6]) * Added method to remove retention policy assignment ([#873][7]) ([`c5f146c`][8]) * Added support for Modifiable Retention Policies ([#872][9]) ([`e2b7a17`][10]) [1]: https://github.com/box/box-ios-sdk/issues/871 [2]: https://github.com/box/box-ios-sdk/commit/1ec5b0149f01cd3a18f5cba39b77e01678655932 [3]: https://github.com/box/box-ios-sdk/issues/870 [4]: https://github.com/box/box-ios-sdk/commit/f94d98862d2fdb2603f4684b963d29d04e0fdb3d [5]: https://github.com/box/box-ios-sdk/issues/875 [6]: https://github.com/box/box-ios-sdk/commit/994bfaf3ead983f5014808f6c9e5ffe167ab8e42 [7]: https://github.com/box/box-ios-sdk/issues/873 [8]: https://github.com/box/box-ios-sdk/commit/c5f146c960bb1f940418975078d83fb63ff3bdec [9]: https://github.com/box/box-ios-sdk/issues/872 [10]: https://github.com/box/box-ios-sdk/commit/e2b7a178c6592c9f7d1e7ce691c215680b3f45d0 ## Box CLI v3.5.0 released ### New Features and Enhancements * Add option to change name of downloaded file in `save-as`parameter ([#415][1]) ([`81fe64e`][2]) * Add support for modifiable retention policies & enable deleting retention policy assignment ([#420][3]) ([`26ab5b4`][4]) [1]: https://github.com/box/boxcli/issues/415 [2]: https://github.com/box/boxcli/commit/81fe64eb2891e7ab55564e2428f64f1129b468e8 [3]: https://github.com/box/boxcli/issues/420 [4]: https://github.com/box/boxcli/commit/26ab5b4d7ec49576fdac48abc025903622f8efe0 ## Introducing Shield Information Barrier Shield information barrier prevents communication that could lead to conflicts of interest or potential legal issues. For example, admins can use information barrier to separate teams working on different projects to prevent collaboration on content restricted to specific groups. ## Shield Information Barrier API Shield information barrier comes along with the new API that you can use to: * Create, manage, and list [Shield information barriers][2] * Create, update, delete, and list [Shield information barrier segments][3] * Create, delete, and list [Shield information barrier segment restrictions][4] * Create, delete, and list [Shield information barrier segment members][5] * Create and list [Shield information barrier reports][6] ## Shield Information Barrier Events Setting up the information barrier produces the following events: * Events triggered when the user configures the information barrier, for example activates or deactivates the barrier. * Events triggered when the user performs restricted actions, for example attempts to move an item to a restricted folder or add a user to a restricted group. For a list of all events, see the [Shield information barrier event triggers][7] reference. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][1] for any help needed. [1]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [2]: /reference/resources/shield-information-barrier [3]: /reference/resources/shield-information-barrier-segment [4]: /reference/resources/shield-information-barrier-segment-restriction [5]: /reference/resources/shield-information-barrier-segment-member [6]: /reference/resources/shield-information-barrier-report [7]: /guides/events/event-triggers/shield-information-barrier-events ## Box Node SDK v2.7.1 released ### Bug Fixes * Export missing `RetentionType` ([#774][1]) ([`7e6b244`][2]) [1]: https://github.com/box/box-node-sdk/issues/774 [2]: https://github.com/box/box-node-sdk/commit/7e6b244ba63d363ecc921be570140c9e1ed1d032 ## Box Node SDK v2.7.0 released ### New Features and Enhancements * Add support for modifiable retention policies & enable deleting retention policy assignment ([#769][1]) ([`5e8c776`][2]) [1]: https://github.com/box/box-node-sdk/issues/769 [2]: https://github.com/box/box-node-sdk/commit/5e8c776fc94e9dcf313cc15c96e42fbffaf36b74 ## Box UI Elements v16.0.0 released ## [16.0.0][1] (2022-10-20) ## Bug Fixes & Features This release fixes several bugs and adds new features. For a full list of changes, [see the release notes][1]. [1]: https://github.com/box/box-ui-elements/releases/tag/v16.0.0 ## Manage webhooks V2 in the developer console Managing webhooks in your applications is now easier and more streamlined. In one single-stop UI - the **Webhooks** tab in the [Developer Console][console] - you can review all webhooks in an application. You can now [create][1], [update][2], or [delete][3] V2 webhooks using the user interface in the [Developer Console][console]. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][5] for any help needed. [1]: /guides/webhooks/v2/create-v2 [2]: /guides/webhooks/v2/update-v2 [3]: /guides/webhooks/v2/delete-v2 [4]: https://support.box.com/hc/en-us/sections/360009473734-Box-Partner-Resources [5]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [console]: https://app.box.com/developers/console ## New annotations in the Content Preview UI Element To improve the content previewing experience, we have added support for new annotations types in the Preview UI Element. End users previewing content in custom applications can now utilize additional annotation types, such as text highlight, drawing, and more. All the annotations sync in real time. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][1] for any help needed. [1]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## Box Windows SDK v4.6.0 released ### New Features and Enhancements * Add `redirect_url` and `declined_redirect_url` to Sign Request ([#853][1]) ([`5ef2f18`][2]) * Add support for modifiable retention policies & enable deleting retention policy assignment ([#856][3]) ([`564904f`][4]) - [https://www.nuget.org/packages/Box.V2/4.6.0>](https://www.nuget.org/packages/Box.V2/4.6.0>) - [https://www.nuget.org/packages/Box.V2.Core/4.6.0>](https://www.nuget.org/packages/Box.V2.Core/4.6.0>) [1]: https://github.com/box/box-windows-sdk-v2/issues/853 [2]: https://github.com/box/box-windows-sdk-v2/commit/5ef2f18985d8c3b8e7c0cdba5709785bfb1d5f34 [3]: https://github.com/box/box-windows-sdk-v2/issues/856 [4]: https://github.com/box/box-windows-sdk-v2/commit/564904fa2ce0b1881a2f07b80cc3bb3e648310d0 ## Extract metadata with the new Box CLI script [Box CLI][1] now features a new script that allows you to [extract metadata][2] details for all Box files and folders and save it in a CSV file. ## Where to get support Should you have any issues or need further guidance, post a request to our [developer forum][3] for any help needed. [1]: /guides/cli [2]: /guides/cli/scripts/metadata-extraction [3]: https://support.box.com/hc/en-us/sections/360009473734-Box-Partner-Resources ## Box Java SDK v3.7.1 released ### Bug Fixes * Better logging when JSON cannot be parsed ([#1106][1]) ([`5e66ef8`][2]) [1]: https://github.com/box/box-java-sdk/issues/1106 [2]: https://github.com/box/box-java-sdk/commit/5e66ef8cc983a6cff34995efc75e9effd3195d48 ## Box CLI v3.4.0 released ### New Features and Enhancements * Add `DryRun` mode in `User Deprovision` example script ([#392][1]) ([`584a30e`][2]) * Add `redirect_url` and `declined_redirect_url` to Sign Request ([#395][3]) ([`261b7d2`][4]) * Add progress bar for file download and bulk command ([#376][5]) ([`68359c7`][6]) * create destination path during download ([#393][7]) ([`40881dd`][8]) * native credentials storage for Windows with a new library ([#385][9]) ([`a6918aa`][10]) ### Bug Fixes * correctly resolve home `dir` in folders download ([#398][11]) ([`86d3230`][12]) * Fix logs in `Users Deprovisioning` script ([#381][13]) ([`c85f77b`][14]) * Fix problem with `keytar` library ([#394][15]) ([`1979f01`][16]) ### Note * To migrate storing Box CLI environments to the system credential storage, execute the following command in the terminal ([#295](https://github.com/box/boxcli/issues/295)) `box configure:environments:update` [1]: https://github.com/box/boxcli/issues/392 [2]: https://github.com/box/boxcli/commit/584a30ef33446a6687ce558c810804202650299f [3]: https://github.com/box/boxcli/issues/395 [4]: https://github.com/box/boxcli/commit/261b7d22a5e5adf3647276cbf59454cca9bf607f [5]: https://github.com/box/boxcli/issues/376 [6]: https://github.com/box/boxcli/commit/68359c7e97ce2b606184426cbbaac73914ceb81a [7]: https://github.com/box/boxcli/issues/393 [8]: https://github.com/box/boxcli/commit/40881ddbd2c86e80f19689f012736fb19f18d945 [9]: https://github.com/box/boxcli/issues/385 [10]: https://github.com/box/boxcli/commit/a6918aaa6e28bd29619bea31c97b845d8d429fec [11]: https://github.com/box/boxcli/issues/398 [12]: https://github.com/box/boxcli/commit/86d3230456827a042be04f5ef372b15d83fd6a10 [13]: https://github.com/box/boxcli/issues/381 [14]: https://github.com/box/boxcli/commit/c85f77b3042dfc3ddfe54b2acd94b220f6ee0e9b [15]: https://github.com/box/boxcli/issues/394 [16]: https://github.com/box/boxcli/commit/1979f01758a30cd1dbf9d32c19ce2f3a00c0d5ec ## Box Python SDK v3.5.0 released ### New Features and Enhancements * Add `redirect_url` and `declined_redirect_url` fields to Sign Request ([#752][1]) ([`5d1f609`][2]) * Add support for modifiable retention policies & enable deleting retention policy assignment ([#759][3]) ([`847301b`][4]) * Support file request APIs ([#747][5]) ([`71895e3`][6]) ### Bug Fixes * Do not log the content of downloaded file ([#760][7]) ([`5d26431`][8]) * Fix closing file after chunked upload ([#761][9]) ([`b433692`][10]) [1]: https://github.com/box/box-python-sdk/issues/752 [2]: https://github.com/box/box-python-sdk/commit/5d1f609ed4c2ddb24bd88ffac256a2809a012698 [3]: https://github.com/box/box-python-sdk/issues/759 [4]: https://github.com/box/box-python-sdk/commit/847301b43be335365858a80420459dffaada4302 [5]: https://github.com/box/box-python-sdk/issues/747 [6]: https://github.com/box/box-python-sdk/commit/71895e33ff7cf339fd8e095a5393f04b86791d5a [7]: https://github.com/box/box-python-sdk/issues/760 [8]: https://github.com/box/box-python-sdk/commit/5d264314f949c1f4d9136efd5cf8f13dd5897c05 [9]: https://github.com/box/box-python-sdk/issues/761 [10]: https://github.com/box/box-python-sdk/commit/b433692ecc07d62d011785a557128c1780ea1647 ## Box Node SDK v2.6.0 released ### New Features and Enhancements * Add `content_type`, `redirect_url` field to Sign Request ([#758][1]) ([`8abb9b6`][2]) * Add sign request webhook ([#760][3]) ([`e92d1ab`][4]) * Added support for Access Only Collaboration ([#759][5]) ([`dd8261f`][6]) [1]: https://github.com/box/box-node-sdk/issues/758 [2]: https://github.com/box/box-node-sdk/commit/8abb9b602b13cd72c6c8de549d19756ae147b403 [3]: https://github.com/box/box-node-sdk/issues/760 [4]: https://github.com/box/box-node-sdk/commit/e92d1abee5faf58166f4892d7b2e6bc3c6480ac6 [5]: https://github.com/box/box-node-sdk/issues/759 [6]: https://github.com/box/box-node-sdk/commit/dd8261f970c207854058c3ed86ccabf9bec05ea8 ## Box Java SDK v3.7.0 released ### New Features and Enhancements * Add `is_accessible_via_shared_link` field to File and Folder ([#1103][1]) ([`45e9906`][2]) ### Bug Fixes * `BoxCollaboration.getItem()` returns `BoxItem.Info` not `BoxFolder.Info` ([#1102][3]) ([`135850d`][4]), closes [#1101][5] [#1100][6]. `BoxCollaboration.getItem()` used to return `BoxFolder.Info`. However, if collaboration was added on a file it would still return `BoxFolder.Info` which will end with throwing `BoxAPIException` when doing any API call. If you are getting collaboration item it is best to store it as `BoxItem.Info` or check its type and store it as `BoxFile.Info` or `BoxFolder.Info`. * Add missing constructor to `BoxNotificationEmail` class ([#1098][7]) ([`2534f34`][8]) [1]: https://github.com/box/box-java-sdk/issues/1103 [2]: https://github.com/box/box-java-sdk/commit/45e9906efca6a7f2d4d738914dc804de12d3646e [3]: https://github.com/box/box-java-sdk/issues/1102 [4]: https://github.com/box/box-java-sdk/commit/135850d97164ee5f6d74708d74c531f7fa8bee26 [5]: https://github.com/box/box-java-sdk/issues/1101 [6]: https://github.com/box/box-java-sdk/issues/1100 [7]: https://github.com/box/box-java-sdk/issues/1098 [8]: https://github.com/box/box-java-sdk/commit/2534f34133f9554abd1e80fc1555659a2c52b23f ## Improved Guides on Chunked Uploads To improve your experience with uploading large files in chunks, our guides now provide additional details on the process and support each step with examples. Check out the [Upload Part guide][2] a to get the details on how to effectively split files and upload them in several parts using [Box API][3]. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][1] for any help needed. [1]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [2]: /guides/uploads/chunked/upload-part [3]: /reference/put-files-upload-sessions-id ## Box Java SDK v3.6.0 released ### New Features and Enhancements * Add support for modifiable retention policies & enable deleting retention policy assignment ([#1093][1]) ([`30e2fcb`][2]) ### Bug Fixes * Stop sending not specified optional fields when creating a user ([#1095][3]) ([`b7d894d`][4]) [1]: https://github.com/box/box-java-sdk/issues/1093 [2]: https://github.com/box/box-java-sdk/commit/30e2fcb74c12867fd3859c3490539557b47ab006 [3]: https://github.com/box/box-java-sdk/issues/1095 [4]: https://github.com/box/box-java-sdk/commit/b7d894d3f134137f3a5925f09accfd4334837f81 ## Box CLI Advanced Features YouTube Video Released Back in February, we [launched][3] the OAuth 2.0 version of the Box CLI, alongside new YouTube content. Today, we released [video 3][4] of the series. It shows using the as-user header and bulk command options. You can find the Box Platform and Developer Playlist on [YouTube][2]. We have one more video planned for this series: CLI Automation using PowerShell. Make sure to [subscribe][5] to the Box Channel to get all the latest content! ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][1] for any help needed. [1]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [2]: https://www.youtube.com/playlist?list=PL0F3BD5B64D6A39F1 [3]: https://developer.box.com/changelog/#2022-02-01-box-cli-v300-released [4]: https://youtu.be/WXkBctPosLE [5]: https://www.youtube.com/user/box/featured ## Box Sign available for Starter plans [Box Sign][1] is now available for Free, Personal Pro, and Starter plans. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][2] for any help needed. [1]: /guides/box-sign [2]: https://support.box.com/hc/en-us/sections/360009473734-Box-Partner-Resources ## Box Java SDK v3.5.0 released ### New Features and Enhancements * Add `content-type` sign request and response ([#1087][1]) ([`49411aa`][2]) * Add `notification_email` to `BoxUser` ([#1088][3]) ([`5477223`][4]) * Add `redirect_url` and `declined_redirect_url` to sign request response ([#1089][5]) ([`3921fe1`][6]) ### Bug Fixes * Fixed canceling sign request fails because of empty body ([#1085][7]) ([`32b8e79`][8]) [1]: https://github.com/box/box-java-sdk/issues/1087 [2]: https://github.com/box/box-java-sdk/commit/49411aaeea6d3ff8de10e3fbc3c60bba1bc54748 [3]: https://github.com/box/box-java-sdk/issues/1088 [4]: https://github.com/box/box-java-sdk/commit/547722347a920ba11e5fff7a8df5201720af815a [5]: https://github.com/box/box-java-sdk/issues/1089 [6]: https://github.com/box/box-java-sdk/commit/3921fe1a4a6249146a8dd2f22e15801846bc073b [7]: https://github.com/box/box-java-sdk/issues/1085 [8]: https://github.com/box/box-java-sdk/commit/32b8e79ebc8995ab933c32d28c3e2f17d9627a70 ## Updates to Box CLI The recent additions to [Box CLI script library][1] and [CLI guides][2] improve automation even further and simplify handling repetitive tasks. ## New CLI scripts The sample scripts library now includes the following scripts for you to use: * [Provision users and folders][3] builds an onboarding folder structure and adds users. * [Manage groups and collaborations][4] creates or updates groups, add users to them, and finally add groups to folders as collaborators. * [Report inactive users][5] generates a CSV file with a list of users who have been inactive for a specific number of days. * [Update user zones][6] provisions users to a specific data residency zone within a Multizone Box tenant. * [Deprovision users][7] removes users. ## Bulk commands guide The [bulk commands guide][8] explains how you can use a single command to perform actions involving multiple items. ## Developer Resources Are you interested in creating applications for the Box App Center or becoming a Box Partner? Check out the [Box Partner Resources][9] guides for more information! ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][10] for any help needed. [1]: /guides/cli/scripts [2]: /guides/cli/cli-docs [3]: /guides/cli/scripts/provision-users-folders [4]: /guides/cli/scripts/manage-groups-collaborations [5]: /guides/cli/scripts/report-inactive-users [6]: /guides/cli/scripts/user-zones-mass-update [7]: /guides/cli/scripts/deprovision-users [8]: /guides/cli/cli-docs/bulk-commands [9]: https://support.box.com/hc/en-us/sections/360009473734-Box-Partner-Resources [10]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## Box Windows SDK v4.5.0 released ### New Features and Enhancements * Add `content-type` field to sign request ([#850][1]) ([`054d3e1`][2]) * expose `effective_access` in `BoxSharedLink` [#843][3] ([`d84ddd4`][4]) ### Bug Fixes * fix null reference exception when it's not possible to get `runtime` version from the assembly ([#851][5]) ([`77046fb`][6]) * replace infinite retries with exponential backoff strategy in file representations ([#835][7]) ([`f2a5713`][8]) - [https://www.nuget.org/packages/Box.V2/4.5.0>](https://www.nuget.org/packages/Box.V2/4.5.0>) - [https://www.nuget.org/packages/Box.V2.Core/4.5.0>](https://www.nuget.org/packages/Box.V2.Core/4.5.0>) [1]: https://github.com/box/box-windows-sdk-v2/issues/850 [2]: https://github.com/box/box-windows-sdk-v2/commit/054d3e1a5f44b6a4a0292e8f9444266b2de0fff0 [3]: https://github.com/box/box-windows-sdk-v2/issues/843 [4]: https://github.com/box/box-windows-sdk-v2/commit/d84ddd48aac489ecdd1d9dc740a7672cb064b0ca [5]: https://github.com/box/box-windows-sdk-v2/issues/851 [6]: https://github.com/box/box-windows-sdk-v2/commit/77046fb0c1ce80b6e7e2dc30058ed275e46e990c [7]: https://github.com/box/box-windows-sdk-v2/issues/835 [8]: https://github.com/box/box-windows-sdk-v2/commit/f2a57136078de8b1fc59ec2c4a9e98c062d9d19b ## Box iOS SDK v5.3.0 released ### New Features and Enhancements * add `version_number` to `FileVersion` ([#853][1]) ([`ac81667`][2]) * Add support for async API in `FoldersModule` ([#851][3]) ([`58b9dde`][4]) * Add support for file request API ([#867][5]) ([`ec7813e`][6]) * Add support for upload and delete Avatar API ([#863][7]) ([`1e967f5`][8]) * Add support of Editable Shared Link ([#861][9]) ([`bc6ea18`][10]) * Expose `send()` method public in `BoxClient` ([#843][11]) ([`23caaca`][12]) ### Bug Fixes * Respect Content-Type coming from custom headers ([#841][13]) ([`a7c69a7`][14]) [1]: https://github.com/box/box-ios-sdk/issues/853 [2]: https://github.com/box/box-ios-sdk/commit/ac81667ea409cbbe3de9be0c316c630ec6fbc2f5 [3]: https://github.com/box/box-ios-sdk/issues/851 [4]: https://github.com/box/box-ios-sdk/commit/58b9dde412eddc76915c99b960702f4af95b62a4 [5]: https://github.com/box/box-ios-sdk/issues/867 [6]: https://github.com/box/box-ios-sdk/commit/ec7813e31706c08aaaeac75debdba8d7802786cb [7]: https://github.com/box/box-ios-sdk/issues/863 [8]: https://github.com/box/box-ios-sdk/commit/1e967f5a3eaafbeb894cf8289032ad8ce8664266 [9]: https://github.com/box/box-ios-sdk/issues/861 [10]: https://github.com/box/box-ios-sdk/commit/bc6ea18bf2e10bebeb62401a55001139f05c76df [11]: https://github.com/box/box-ios-sdk/issues/843 [12]: https://github.com/box/box-ios-sdk/commit/23caaca5b6fe8ec1b23470193bc011a62c66d49f [13]: https://github.com/box/box-ios-sdk/issues/841 [14]: https://github.com/box/box-ios-sdk/commit/a7c69a73c6142d4b82c718d2d311098dd2b70250 ## Box Java SDK v3.4.0 released ### New Features and Enhancements * Added pagination for getting items in trash with new `BoxTrash#items` API ([#1072][1]) ([`9cd411d`][2]) ### Bug Fixes * buffered body write and fixed SDK logging ([#1079][3]) ([`bc35ef3`][4]) [1]: https://github.com/box/box-java-sdk/issues/1072 [2]: https://github.com/box/box-java-sdk/commit/9cd411d20af1bc76ae815905396d72008af62539 [3]: https://github.com/box/box-java-sdk/issues/1079 [4]: https://github.com/box/box-java-sdk/commit/bc35ef3279e68a3d794de454f506ba41d14c3b16 ## Box Node SDK v2.5.0 released ### New Features and Enhancements * Added support update and remove user avatar ([#744][1]) ([`aaf6175`][2]) ### Bug Fixes * Fix error while generate token using OAuth ([#750][3]) ([`f826291`][4]), closes [#286][5] * Fix lint error in test file ([#747][6]) ([`3b1e10d`][7]) [1]: https://github.com/box/box-node-sdk/issues/744 [2]: https://github.com/box/box-node-sdk/commit/aaf617528de5c61e19cfb25e28fe77c01532b9fa [3]: https://github.com/box/box-node-sdk/issues/750 [4]: https://github.com/box/box-node-sdk/commit/f82629108a1af6c4d160de1976fd01fdf0d8dde3 [5]: https://github.com/box/box-node-sdk/issues/286 [6]: https://github.com/box/box-node-sdk/issues/747 [7]: https://github.com/box/box-node-sdk/commit/3b1e10d206aa88a8bf99989bb7ff85776a9864a4 ## Box CLI v3.3.2 released ### Bug Fixes * Fix request command when calling without body ([#369][1]) ([`9317888`][2]) [1]: https://github.com/box/boxcli/issues/369 [2]: https://github.com/box/boxcli/commit/9317888c3f1bff56ef784d7319f1b8ccf12239ef ## Box CLI v3.3.1 released ### Bug Fixes * Fix OAuth login ([#364][1]) ([`579b44b`][2]) [1]: https://github.com/box/boxcli/issues/364 [2]: https://github.com/box/boxcli/commit/579b44b83c60f6568c98cb5f1417effbac26c58c ## Retention policy API improvements Recent changes to the API for retention policies and retention policy assignments allow you to remove retention policy assignments and specify the retention length and type for your policies. ## Updates * Use the new [`DELETE`][1] endpoint to remove an existing retention policy assignment: ```bash theme={null} curl -i -X DELETE -L https://api.box.net/2.0/retention_policy_assignments/123456/ -H 'Authorization: Bearer ' ``` * Specify the following parameters when [creating][2] or [updating][3] retention policies: * `retention_length`: Specifies the duration in days that the retention policy will be active for after being assigned to content. * `retention_type`: Specifies if the policy is `modifiable` or `non-modifiable`. This means you can either modify the retention policy in full or in a limited way depending on the need to comply with specific regulatory requirements. ## Developer Resources Are you interested in creating applications for the Box App Center or becoming a Box Partner? Check out the [Box Partner Resources][4] guides for more information! ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][5] for any help needed. [1]: /reference/delete-retention-policy-assignments-id [2]: /reference/post-retention-policies [3]: /reference/put-retention-policies-id [4]: https://support.box.com/hc/en-us/sections/360009473734-Box-Partner-Resources [5]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## Box CLI v3.3.0 released ### New Features and Enhancements * add editable shared link support ([#350][1]) ([`ab639e7`][2]) * add file requests API support ([#355][3]) ([`73f0490`][4]) * add possibility to set custom analytics header ([#348][5]) ([`5a3387f`][6]) * support --copy-instance-on-item-copy flag for update metadata template ([#357][7]) ([`5d8272a`][8]) * support Client Credentials Grant as authentication method ([#335][9]) ([`4649d8a`][10]) [1]: https://github.com/box/boxcli/issues/350 [2]: https://github.com/box/boxcli/commit/ab639e7e9336e8745ef84dd6dfc646c987638ec3 [3]: https://github.com/box/boxcli/issues/355 [4]: https://github.com/box/boxcli/commit/73f0490ff3c3dfefb89e14dde933d3a3ffc4113f [5]: https://github.com/box/boxcli/issues/348 [6]: https://github.com/box/boxcli/commit/5a3387fb687bcbd5d8441117c497312ac1d20f27 [7]: https://github.com/box/boxcli/issues/357 [8]: https://github.com/box/boxcli/commit/5d8272a0559ec97a345a2032456998383e7a6716 [9]: https://github.com/box/boxcli/issues/335 [10]: https://github.com/box/boxcli/commit/4649d8adf39f64c8292b70c35b7bffa96e462edc ## Box Node SDK v2.4.0 released ### New Features and Enhancements * Added support for file requests ([#742][1]) ([`30b2e76`][2]) * Added support of `admin_logs_streaming` stream type ([#740][3]) ([`406950a`][4]) ### Bug Fixes * properly handle client errors in streams ([#736][5]) ([`12378d6`][6]) [1]: https://github.com/box/box-node-sdk/issues/742 [2]: https://github.com/box/box-node-sdk/commit/30b2e767c6c3af68e1463cc801914f9889dc593c [3]: https://github.com/box/box-node-sdk/issues/740 [4]: https://github.com/box/box-node-sdk/commit/406950a03af54a022427e0532e889a61e0d25152 [5]: https://github.com/box/box-node-sdk/issues/736 [6]: https://github.com/box/box-node-sdk/commit/12378d6755c2e3cddcb79439cdcbbe8e1e61df13 ## New Box Sign webhook triggers The [Webhook Event Triggers][1] now include the following Box Sign events you can use to trigger a version 2 webhook: * `SIGN_REQUEST.COMPLETED` * `SIGN_REQUEST.DECLINED` * `SIGN_REQUEST.EXPIRED` For details on creating webhooks read [this guide][2]. ## Developer Resources Are you interested in creating applications for the Box App Center or becoming a Box Partner? Check out the [Box Partner Resources][3] guides for more information! ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][4] for any help needed. [1]: /guides/webhooks/triggers [2]: /guides/webhooks/v2/create-v2 [3]: https://support.box.com/hc/en-us/sections/360009473734-Box-Partner-Resources [4]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## Updated Cross-Origin Resource Sharing (CORS) documentation We updated the documentation on [Cross-Origin Resource Sharing (CORS)][1]. ## Updates Added information on what to do in case of the `Access-Control-Allow-Origin` header issues. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][2]. [1]: /guides/security/cors [2]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## Box Python SDK v3.4.0 released ### New Features and Enhancements * Add support for editable shared links for files ([#737][1]) ([`1396200`][2]) * Support uploading and deleting user avatar ([#743][3]) ([`fe00a9e`][4]) [1]: https://github.com/box/box-python-sdk/issues/737 [2]: https://github.com/box/box-python-sdk/commit/1396200c24bf62de63f9cb7949af5997593b9fac [3]: https://github.com/box/box-python-sdk/issues/743 [4]: https://github.com/box/box-python-sdk/commit/fe00a9eb3434ee14bc4f01332d54c0272ed5f2d3 ## Box Java SDK v3.3.0 released ### New Features and Enhancements * Added support of Editable Shared Links ([#1064][1]) ([`9b7d60c`][2]) ### Bug Fixes * Fix closed stream exception in `canUpload` method ([#1067][3]) ([`543f91c`][4]) [1]: https://github.com/box/box-java-sdk/issues/1064 [2]: https://github.com/box/box-java-sdk/commit/9b7d60c41fbd481465bf3f2a5877746f10849712 [3]: https://github.com/box/box-java-sdk/issues/1067 [4]: https://github.com/box/box-java-sdk/commit/543f91c46dfcc9de7e61ce11cd93d472916533ac ## Improvements in Web App Integrations documentation We updated documentation on creating [Web App Integrations][1] with Custom Apps to reflect all the information from the developer console. ## Updates * Added description of all elements in the **App Info** section. * Expanded the **Callback Parameters** section with information about parameter syntax. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][2]. [1]: /guides/applications/web-app-integrations/configure [2]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## Box CLI v3.2.0 released ### New Features and Enhancements * Added support for stream type `admin_logs_streaming` ([#337][1]) ([`7596157`][2]) ### Bug Fixes * Fix native storage errors ([#345][3]) ([`b73b841`][4]) [1]: https://github.com/box/boxcli/issues/337 [2]: https://github.com/box/boxcli/commit/7596157e3a72ef152be44a04198e38d6c57de250 [3]: https://github.com/box/boxcli/issues/345 [4]: https://github.com/box/boxcli/commit/b73b841224ad7f5bb543c92962adb7fc5960bb8c ## Box Sign API supports setting redirect URLs The [Box Sign API][3] now offers new parameters to set up custom redirect URLs for users who sign or decline a sign request. This way, when integrating your application with Box Sign, you can redirect the signers back to your application or display a custom landing page. ## Updates Box Sign API provides optional parameters to pass in the request body of the [Create Sign Request][4] call: * `redirect_url` that redirects the user to a specific page after signing a request * `declined_redirect_url` that redirects the user to a specific page after declining a request You can define redirect URLs globally for all signers and for specific signers only. For details, see the [Create Sign Request][4] guide. ## Developer Resources Are you interested in creating applications for the Box App Center or becoming a Box Partner? Check out the [Box Partner Resources][2] guides for more information! ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][1] for any help needed. [1]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [2]: https://support.box.com/hc/en-us/sections/360009473734-Box-Partner-Resources [3]: https://developer.box.com/reference/post-sign-requests/ [4]: https://developer.box.com/guides/box-sign/create-sign-request/ ## Automate tasks with Box CLI and scripts library The [Box CLI][3] now features a sample scripts library with templates you can use to automate your tasks. For starters, we wanted to provide you with a PowerShell script that allows you to: * set up a folder structure, * create managed users, * add the users to the folder structure as collaborators. ## Updates * The Box CLI [quick start guide][4] now provides instructions on using a PowerShell script to create a folder structure and collaborators. * The [scripts library][5] is where you can find all sample scripts. Currently, it includes the PowerShell script but more samples are on the way! ## Developer Resources Are you interested in creating applications for the Box App Center or becoming a Box Partner? Check out the [Box Partner Resources][2] guides for more information! ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][1] for any help needed. [1]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [2]: https://support.box.com/hc/en-us/sections/360009473734-Box-Partner-Resources [3]: /guides/cli [4]: /guides/cli/quick-start/powershell-script-templates [5]: https://github.com/box/boxcli/tree/main/examples ## Box CLI v3.1.0 released ### New Features and Enhancements * Add --all flag for search to return all results ([#336][1]) ([`23ea0a5`][2]) * add unique state parameter to `OAuth2` login ([#292][3]) ([`5ce6a40`][4]) * allow changing base URLs ([#303][5]) ([`e284059`][6]) * obtain `oauth` authorization from command line ([#299][7]) ([`18c88bb`][8]) * use native credential storage for MacOS and Windows ([#295][9]) ([`74c4922`][10]) ### Bug Fixes * `users:transfer-content` to respect quiet flag ([#288][11]) ([`1d0bbab`][12]) * correctly pass `copy-instance-on-item-copy` flag ([#285][13]) ([`cd4fbf4`][14]) * Fix updating webhook triggers ([#297][15]) ([`09e94c3`][16]) * support large output when using `json` flag by replacing `json.stringify` ([#328][17]) ([`1204f2c`][18]) * Support limit flag for Box Search ([#323][19]) ([`0009a77`][20]), closes [#322][21] * Support OAuth with multiple redirect URIs ([#302][22]) ([`9fe216e`][23]) [1]: https://github.com/box/boxcli/issues/336 [2]: https://github.com/box/boxcli/commit/23ea0a5c5b065ea3b91b73b64bb7b267a6ff0a18 [3]: https://github.com/box/boxcli/issues/292 [4]: https://github.com/box/boxcli/commit/5ce6a40b4c6e2fc78b2b598a8b1529200c63902e [5]: https://github.com/box/boxcli/issues/303 [6]: https://github.com/box/boxcli/commit/e28405971ebcf2c2284bb875b40ceb7eaebb41c4 [7]: https://github.com/box/boxcli/issues/299 [8]: https://github.com/box/boxcli/commit/18c88bb6835509394b92eb0685e3a9306ede8984 [9]: https://github.com/box/boxcli/issues/295 [10]: https://github.com/box/boxcli/commit/74c492271ebc54e15500abbaaa2c7aac32be5070 [11]: https://github.com/box/boxcli/issues/288 [12]: https://github.com/box/boxcli/commit/1d0bbab652bf74a59c8486fc4d5eac415161254c [13]: https://github.com/box/boxcli/issues/285 [14]: https://github.com/box/boxcli/commit/cd4fbf4f746b83c2b066efb31b2e2952dba1312d [15]: https://github.com/box/boxcli/issues/297 [16]: https://github.com/box/boxcli/commit/09e94c32ed8e4243e76dd19e67b6d1c17c2cdc04 [17]: https://github.com/box/boxcli/issues/328 [18]: https://github.com/box/boxcli/commit/1204f2c146c713124060730e0554ab2f2dde27fa [19]: https://github.com/box/boxcli/issues/323 [20]: https://github.com/box/boxcli/commit/0009a77ee3fc4b72ef01bbbeff0ea588c10a6f89 [21]: https://github.com/box/boxcli/issues/322 [22]: https://github.com/box/boxcli/issues/302 [23]: https://github.com/box/boxcli/commit/9fe216e8d2f59e4375a4b7c766844366f7166a0a ## Box Windows SDK v4.4.0 released ### New Features and Enhancements * add `can_edit` field to `SharedLink` ([#831][1]) ([`e0d4197`][2]) * add `version_number` to `BoxFileVersion` ([#820][3]) ([`f174358`][4]) * add upload and delete support for Avatar API ([#829][5]) ([`4dcb84a`][6]) ### Bug Fixes * Fix initialization of `BoxAPIException` object ([#828][7]) ([`a298f01`][8]) * properly dispose response on exception ([#819][9]) ([`8415bd3`][10]) - [https://www.nuget.org/packages/Box.V2/4.4.0>](https://www.nuget.org/packages/Box.V2/4.4.0>) - [https://www.nuget.org/packages/Box.V2.Core/4.4.0>](https://www.nuget.org/packages/Box.V2.Core/4.4.0>) [1]: https://github.com/box/box-windows-sdk-v2/issues/831 [2]: https://github.com/box/box-windows-sdk-v2/commit/e0d4197070db0dbd947f4a51a6bbb1e01c0b0cdf [3]: https://github.com/box/box-windows-sdk-v2/issues/820 [4]: https://github.com/box/box-windows-sdk-v2/commit/f174358973caefc9262df480208341fd8233dc7f [5]: https://github.com/box/box-windows-sdk-v2/issues/829 [6]: https://github.com/box/box-windows-sdk-v2/commit/4dcb84ade78d6bd0bc621ff2ed7f5f886486858a [7]: https://github.com/box/box-windows-sdk-v2/issues/828 [8]: https://github.com/box/box-windows-sdk-v2/commit/a298f01187f84200825ec6ed4748fe8bbd717d11 [9]: https://github.com/box/box-windows-sdk-v2/issues/819 [10]: https://github.com/box/box-windows-sdk-v2/commit/8415bd3dbe42910b99f99535247a26f8d8e645c1 ## Box Java SDK v3.2.1 released ### Bug Fixes * Fix getting proper URL to authenticate with OAuth ([#1059][1]) ([`42876b4`][2]), closes [#1057][3] [1]: https://github.com/box/box-java-sdk/issues/1059 [2]: https://github.com/box/box-java-sdk/commit/42876b45ccdb7fa6f357186cecaba051abf1c269 [3]: https://github.com/box/box-java-sdk/issues/1057 ## New Box App Center (formally App Gallery) You can now visit the completely updated [Box App Center][3] to find the over 1500+ integrations you already know and love. [Box App Center][3] provides a modernized catalog of apps and integrations and will be accessible from the Box Web app. For end-users, the Box App Center makes it smoother to work the way you want to, thanks to the comprehensive selection of ready-to-use integrations from partners such as Microsoft, Zoom, Salesforce, and Slack, to name a few. For IT leaders and admins, the Box App Center gives your users choice, without sacrificing security or user experience. And it eliminates shadow IT by providing a list of enterprise-approved options. Box App Center will be part of the Core Box package; The Box App Center is available to **all** customers today! ## Developer Resources Are you interested in creating applications for the Box App Center or becoming a Box Partner? Check out the [Box Partner Resources][2] guides for more information! ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][1] for any help needed. [1]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [2]: https://support.box.com/hc/en-us/sections/360009473734-Box-Partner-Resources [3]: https://app.box.com/app-center ## Box Java SDK v3.2.0 released ### New Features and Enhancements * Revamped setting base URLs ([#1042][1]) ([`129baf7`][2]) * support for Avatar V2 API ([#1044][3]) ([`18651d7`][4]) [1]: https://github.com/box/box-java-sdk/issues/1042 [2]: https://github.com/box/box-java-sdk/commit/129baf704ced127788bb0f62ef9f4fb6a50fdc63 [3]: https://github.com/box/box-java-sdk/issues/1044 [4]: https://github.com/box/box-java-sdk/commit/18651d7a5b419796e3733c7582ae471d7af7ed5c ## OAuth 2.0 Redirect URL Strict Checking Enabled Today, we turned on strict checking for all OAuth 2.0 applications. On November 29, 2021, we [announced][oauth-cl] new applications using OAuth 2.0 will require the URIs set in the configuration tab of the Developer Console to strictly match the one used during redirect. This change has now been completed. If your enterprise had applications that were not following this standard, you should have received four emails over the past few months describing how to update your applications. ## How to solve redirect errors If you did not receive the email or missed the communication, below you will find the steps to mitigate any issues. 1. You can change the redirect URL in the Box Developer Console configuration tab for your application. If the URLs are static, then you can update the Developer console to add multiple URLs. If the URLs are dynamic, then update your application to use a static URL or use the state parameter. 2. You can change the redirect URL used in your application code to strictly match the URL in the developer console. For option #1, please use these steps: * Login to Box as the application owner and navigate to the Box Developer Console * Click on the application and navigate to the configuration tab * Scroll down to the "OAuth 2.0 Redirect URI" section * Update the current URL listed For option #2, please modify your application code to replace the impacted used URLs to strictly match the URL in the Developer Console. ## Updates * Redirect URIs now force strict checking to match the URI passed in and URIs configured in the OAuth 2.0 application configuration ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][forum] or file a ticket with [Box Support][support]. [forum]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [oauth-cl]: https://developer.box.com/changelog/#2021-11-29-oauth-20-redirect-url-updates [url-redirect]: /reference/get-authorize/#param-redirect_uri [oauth-setup]: /guides/authentication/oauth2/oauth2-setup/ [oauth-sdk]: /guides/authentication/oauth2/with-sdk/ [oauth-nosdk]: /guides/authentication/oauth2/without-sdk/ [support]: https://support.box.com/hc/en-us/requests/new ## New Endpoints to Manage User Avatars Starting today, the User Avatar APIs supports adding, updating, and deleting user avatars. To create or update a user avatar, call the [`POST /users-id-avatar`][2] endpoint. Remember to include the path to the file you want to upload. If an avatar already exists, it will be replaced with the new photo uploaded. ```sh theme={null} curl -i -X POST -L https://api.box.net/2.0/users/userID/avatar -H 'Authorization: Bearer ' --form 'pic=@"path/to/file/file.jpeg"' ``` The response includes the [user avatar][4] object with URLs to the file location. To delete a user avatar, call the [`DELETE /users-id-avatar`][3] endpoint: ```sh theme={null} curl -i -X DELETE -L https://api.box.net/2.0/users/userID/avatar -H 'Authorization: Bearer ' ``` ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][1] for any help needed. [1]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [2]: /reference/post-users-id-avatar [3]: /reference/delete-users-id-avatar [4]: /reference/resources/user-avatar ## Box UI Elements v15.0.0 released ## [15.0.0][1] (2022-05-16) ## Bug Fixes & Features This release fixes several bugs and adds new features. For a full list of changes, [please see the release notes][1]. [1]: https://github.com/box/box-ui-elements/releases/tag/v15.0.0 ## New Field Added to Sign Requests Box Sign request response objects now include a new field - `content_type`. This field identifies the type of content expected for the `type` of `input` selected for the signer to complete. ## Updates * Added new field `content_type` to the [sign request response object][2] ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][1]. [1]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [2]: /reference/resources/sign-request/#param-signers-inputs-content_type ## New Fields Added to Event Specification The Event resource specification now includes two new fields: * `created_at` specifying when an event was created * `recorded_at` specifying when an event was registered in the database ## Updates * Added new fields `created_at` and `recorded_at` to the \[Event] resource specification [2]. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][1] for any help needed. [1]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [2]: /reference/resources/event ## New Field Added to Sign Events Payload The `additional_details` Sign Events payload now includes the `batch_send` field identifying a sign request sent to multiple recipients at once. If such a batch send request exists, the payload also provides its `id`. ## Updates * Added new field `batch_send` to `additional_details` payload for [Sign Events][2]. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][1] for any help needed. [1]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [2]: /guides/events/event-triggers/sign-events ## New Editable Shared Links API Now, developers can make files editable via shared links using the API. ## Documentation Updates * Added a new `can_edit` value to the `permissions` object for the [file][3], [folder][2], and [web link][5] resources * Added a new `shared_link_permission_options` field to the [`file--full`][4] resource * Added a [shared link section for web links][6] in the reference documentation * Added a [permissions page][7] to the shared links guide documentation * Combined the [update and add shared link][8] guide page since they utilize the same PUT endpoint * Updated code snippets across several shared link pages ## Enhancement Details * Instead of having to collaborate a user into a file to give edit access, you can set the `shared_link.permissions.can_edit` field to `true`. * The `can_edit` field will be returned for all shared link objects on files, folders, and web links; however, you can only set it to true for a file. * Our SDK libraries will gain this feature in the coming quarters. * If an admin has turned off editable shared links in the admin console, you will not be able to use this feature. ### cURL Example ```curl theme={null} curl -i -X PUT 'https://api.box.com/2.0/files/123456789?fields=shared_link' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer [ACCESS TOKEN]' \ -d '{ "shared_link": { "permissions": { "can_preview": true, "can_download": true, "can_edit": true } } }' ``` ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][1] for any help needed. [1]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [2]: /reference/resources/folder--full#param-shared_link-permissions [3]: /reference/resources/file--full#param-shared_link-permissions [4]: /reference/resources/file--full/#param-shared_link_permission_options [5]: /reference/resources/web-link/#param-shared_link-permissions [6]: /reference/get-shared-items--web-links [7]: /guides/shared-links/permissions [8]: /guides/shared-links/create-or-update ## Box Python SDK v3.3.0 released ### New Features and Enhancements * Add support for multiple date time formats ([#722][1]) ([`92364de`][2]) ### Bug Fixes * Add missing fields to metadata template field ([#719][3]) ([`9e574a3`][4]), closes [#717][5] * Upload session commit return None on 202 ([#718][6]) ([`86a1856`][7]), closes [#715][8] [1]: https://github.com/box/box-python-sdk/issues/722 [2]: https://github.com/box/box-python-sdk/commit/92364de1e7c1eee1e85857546af65c307ca863a0 [3]: https://github.com/box/box-python-sdk/issues/719 [4]: https://github.com/box/box-python-sdk/commit/9e574a3e56f72c0e78a31ddda78bc11d36ff3516 [5]: https://github.com/box/box-python-sdk/issues/717 [6]: https://github.com/box/box-python-sdk/issues/718 [7]: https://github.com/box/box-python-sdk/commit/86a185630e6cce8f742123c7340da08267621313 [8]: https://github.com/box/box-python-sdk/issues/715 ## Box Node SDK v2.3.0 released ### New Features and Enhancements * Add `description` parameter to `uploadFile` methods ([#730][1]) ([`2596584`][2]) ### Bug Fixes * added missing `js-docs` on shared links ([#731][3]) ([`3554d41`][4]) [1]: https://github.com/box/box-node-sdk/issues/730 [2]: https://github.com/box/box-node-sdk/commit/2596584dffb44c1995c8b6b3faa67564f4d32499 [3]: https://github.com/box/box-node-sdk/issues/731 [4]: https://github.com/box/box-node-sdk/commit/3554d41d9050e7a81224c35e3e2e257604a0b41b ## Box iOS SDK v5.2.1 Released ### Bug Fixes * Expose fields from `BoxResponse` for custom API calls ([#833][1]) ([`bae1536`][2]) [1]: https://github.com/box/box-ios-sdk/issues/833 [2]: https://github.com/box/box-ios-sdk/commit/bae1536236a22de198281012b0ee43c84b0e3485 ## Improvements In Platform Apps Approval Flow Today we added further improvements to the platform apps approval flow. As a result, you can now use a new **Enablement** tab in Developer Console to directly request a Box Admin to enable OAuth 2.0 platform apps. Additionally, Box Admins can use Platform Apps Manager to view and enable platform apps in Admin Console. ## Updates * **Enablement** tab was added for OAuth 2.0 platform apps. * Information on enabling OAuth 2.0 platform applications has been added to the [platform app approval][2] guide page. * Screenshots have been updated on the [platform app approval][2] and [setup with OAuth 2.0][3] guide pages. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][1] for any help needed. [1]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [2]: /guides/authorization/platform-app-approval [3]: /guides/authentication/oauth2/oauth2-setup ## Box Node SDK v2.2.0 released ### New Features and Enhancements * editable shared links ([#722][1]) ([`f0c0135`][2]) [1]: https://github.com/box/box-node-sdk/issues/722 [2]: https://github.com/box/box-node-sdk/commit/f0c0135511fde46144e6c496432104321af443f6 ## Box Windows SDK v4.3.1 released ### Bug Fixes * simplify base `urls` usage ([#815][1]) ([`f8e7344`][2]) - [https://www.nuget.org/packages/Box.V2/4.3.1](https://www.nuget.org/packages/Box.V2/4.3.1) - [https://www.nuget.org/packages/Box.V2.Core/4.3.1](https://www.nuget.org/packages/Box.V2.Core/4.3.1) [1]: https://github.com/box/box-windows-sdk-v2/issues/815 [2]: https://github.com/box/box-windows-sdk-v2/commit/f8e73447afa5c0a893c3c4ace922fc360a376f66 ## Notice of behavior change for collaboration events on the changes stream Starting today, we will begin rolling out changes to the behavior of collaboration events when an application consumes those events from our [event API endpoints][event-apis]. This change will only affect `COLLAB_INVITE_COLLABORATOR`, `COLLAB_ADD_COLLABORATOR`, `COLLAB_ROLE_CHANGE`, and `COLLAB_REMOVE_COLLABORATOR` [user events][user-events] with the query parameter `stream_type` set to `changes`. This will not affect existing [enterprise events][enterprise-events]. The new behavior will not cause downtime within existing applications or require any application changes to prevent uptime disruptions. ## Change overview Previously, events of type `COLLAB_INVITE_COLLABORATOR`, `COLLAB_ADD_COLLABORATOR`, `COLLAB_ROLE_CHANGE`, and `COLLAB_REMOVE_COLLABORATOR` created notifications for the acted upon users that were listening to the `changes` stream. Owners of the collaborated item would not receive these events unless they were listening to the `all` stream as well. We are cleaning up this discrepancy by establishing parity between the `all` and `changes` stream. With this new behavior, notifications of a collaboration will be created for the content owner on the `changes` stream as well. Collaboration owners will now see an additional event that matches what they see on the `all` stream. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][forum] for any help needed. [event-apis]: https://developer.box.com/reference/get-events/ [user-events]: https://developer.box.com/guides/events/user-events/for-user/#event-types [enterprise-events]: https://developer.box.com/guides/events/enterprise-events/for-enterprise/ [user-access-token]: /guides/authentication/jwt/user-access-tokens/ [forum]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## Box Windows SDK v4.3.0 released ### New Features and Enhancements * add `SourceLink` support for Core project ([#795][1]) ([`a9cbede`][2]) ### Bug Fixes * add missing enum to string parsing in several places ([#813][3]) ([`e370282`][4]) * properly cast response when uploading a new file version using session ([#810][5]) ([`73d877f`][6]) - [https://www.nuget.org/packages/Box.V2/4.3.0](https://www.nuget.org/packages/Box.V2/4.3.0) - [https://www.nuget.org/packages/Box.V2.Core/4.3.0](https://www.nuget.org/packages/Box.V2.Core/4.3.0) [1]: https://github.com/box/box-windows-sdk-v2/issues/795 [2]: https://github.com/box/box-windows-sdk-v2/commit/a9cbedece2ffb4f832be880bebf35b715c9cb28b [3]: https://github.com/box/box-windows-sdk-v2/issues/813 [4]: https://github.com/box/box-windows-sdk-v2/commit/e3702826216132dfe1fb061af95a8d9700f114d4 [5]: https://github.com/box/box-windows-sdk-v2/issues/810 [6]: https://github.com/box/box-windows-sdk-v2/commit/73d877ff679b5999ea50cdfa68f14b0e2169ea65 ## Box Node SDK v2.1.0 released ### New Features and Enhancements * Client Credentials Grant authentication method ([#709][1]) ([`fbf4e80`][2]) * Deprecating `index_name` when executing metadata query ([#686][3]) ([`e01cc65`][4]) * **test:** add support for testing with Jest ([#676][5]) ([`1a11759`][6]) ### Bug Fixes * Client Credentials Grant authentication method supports token down-scoping ([#710][7]) ([`730368f`][8]) * Fix JWT expiration field being float instead of integer ([#715][9]) ([`7e950f1`][10]), closes [#713][11] [1]: https://github.com/box/box-node-sdk/issues/709 [2]: https://github.com/box/box-node-sdk/commit/fbf4e80648821e38479b24bf489e7d222ae6c18f [3]: https://github.com/box/box-node-sdk/issues/686 [4]: https://github.com/box/box-node-sdk/commit/e01cc650e4e793955be543e93928ad82a3254492 [5]: https://github.com/box/box-node-sdk/issues/676 [6]: https://github.com/box/box-node-sdk/commit/1a11759db999510c69d6a27f7becd565620bb000 [7]: https://github.com/box/box-node-sdk/issues/710 [8]: https://github.com/box/box-node-sdk/commit/730368f410ff56e9a8c90feea2192b29c08df198 [9]: https://github.com/box/box-node-sdk/issues/715 [10]: https://github.com/box/box-node-sdk/commit/7e950f1265a52ce251c42a186c8196089a9ed858 [11]: https://github.com/box/box-node-sdk/issues/713 ## New Search API Query Parameter Now, you can filter searching for content in the API using the new field `recent_updater_user_ids`. ## Updates * Added new query parameter `recent_updater_user_ids` to the [`GET /get-search`][2] API endpoint ## Features * Limits the search results to any items that have been updated by the given list of users, defined as a list of comma separated user IDs. * This feature only searches back to the last 10 versions of an item. ### cURL Example ```curl theme={null} curl -i -X GET "https://api.box.com/2.0/search?query=sales&recent_updater_user_ids=1234567890,2314567890" \ -H "Authorization: Bearer " ``` ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][1] for any help needed. [1]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [2]: /reference/get-search/#param-recent_updater_user_ids ## Box Java SDK v3.1.2 Released ### Bug Fixes * Allow using `As-User` header with CCG Authentication ([#1031][1]) ([`b0c2389`][2]) * Fix retry logic when `Retry-After` header is present ([#1033][3]) ([`05224c4`][4]) [1]: https://github.com/box/box-java-sdk/issues/1031 [2]: https://github.com/box/box-java-sdk/commit/b0c238913cc1dbcecfd546a5eae68277c3c76d42 [3]: https://github.com/box/box-java-sdk/issues/1033 [4]: https://github.com/box/box-java-sdk/commit/05224c433d2a101a01959644674153df9542b711 ## Box iOS SDK v5.2.0 released ### New Features and Enhancements * Add `disposition_at` field to the `File` object ([#814][1]) ([`3c90df0`][2]) * Add support for Client Credentials Grant authentication method ([#821][3]) ([`f6d7542`][4]) [1]: https://github.com/box/box-ios-sdk/issues/814 [2]: https://github.com/box/box-ios-sdk/commit/3c90df038b9f490a9d38af85404fa1d6ddcd5d0d [3]: https://github.com/box/box-ios-sdk/issues/821 [4]: https://github.com/box/box-ios-sdk/commit/f6d75424e8c0d91517e3ffb8df67f77ad3f2374b ## New Box CLI YouTube Video Back in February, we [launched][3] the OAuth 2.0 version of the Box CLI, alongside new YouTube content. Today, we released [video 2][4] of the series. It shows using the built in help functionality to create a folder with the CLI. You can find the Box Platform and Developer Playlist on [YouTube][2]. We have two more videos planned: Advanced Topics (including as-user) and CLI Automation using PowerShell. Make sure to [subscribe][5] to the Box Channel to get all the latest content! ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][1] for any help needed. [1]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [2]: https://www.youtube.com/playlist?list=PL0F3BD5B64D6A39F1 [3]: https://developer.box.com/changelog/#2022-02-01-box-cli-v300-released [4]: https://www.youtube.com/watch?v=66wlIyS07Aw&list=PL0F3BD5B64D6A39F1&index=2 [5]: https://www.youtube.com/user/box/featured ## Announcing SDK Supported Versions Starting July 30 2022, only the current **major** version of a SDK will be supported. New features, functionality, bug fixes, and security updates will only be added to the current **major** version. A current release is on the leading edge of our SDK development, and is intended for customers who are in active development and want the latest and greatest features. Instead of stating a release date for a new feature, we set a fixed minor or patch release cadence of maximum 2-3 months (while we may release more often). At the same time, there is no schedule for major or breaking release. Instead, we will communicate one quarter in advance the upcoming breaking change to allow customers to plan for the upgrade. We always recommend that all users run the latest available minor release for whatever major version is in use. We highly recommend upgrading to the latest SDK major release at the earliest convenient time and before the EOL date. We use a modified version of [Semantic Versioning][2] for all changes. See [version strategy][3] for details. ## Supported version for each SDK Below find links to the charts of supported versions for all SDKs. * [Python][4] * [.NET][5] * [Java][6] * [node][7] * [CLI][8] * [iOS][9] ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][1] for any help needed. [1]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [2]: https://semver.org/ [3]: https://github.com/box/box-windows-sdk-v2/blob/main/VERSIONS.md [4]: https://github.com/box/box-python-sdk#version-schedule [5]: https://github.com/box/box-windows-sdk-v2#supported-version [6]: https://github.com/box/box-java-sdk#version-schedule [7]: https://github.com/box/box-node-sdk#supported-version [8]: https://github.com/box/boxcli#supported-version [9]: https://github.com/box/box-ios-sdk#supported-version ## Box Python SDK v3.2.0 released ### New Features and Enhancements * Add setting `disposition_at` field for files under retention ([#710][1]) ([`91b1373`][2]) * Add support for Client Credentials Grant authentication method ([#705][3]) ([`d33d16d`][4]) ### Bug Fixes * Add missing `box_sign` object to `__all__` list ([#708][5]) ([`5d80481`][6]) * Fix `jwt` import errors ([#711][7]) ([`ee7bb6f`][8]) [1]: https://github.com/box/box-python-sdk/issues/710 [2]: https://github.com/box/box-python-sdk/commit/91b13730a0beef2cf2a8a8c71087b11557fa5982 [3]: https://github.com/box/box-python-sdk/issues/705 [4]: https://github.com/box/box-python-sdk/commit/d33d16db656cb5578f057a7e24f5396d635b5361 [5]: https://github.com/box/box-python-sdk/issues/708 [6]: https://github.com/box/box-python-sdk/commit/5d8048116640fa672d6a1d700a6c1111faf87bb9 [7]: https://github.com/box/box-python-sdk/issues/711 [8]: https://github.com/box/box-python-sdk/commit/ee7bb6f1dc5aa65dbf6ffeb18ee130f765f7b49b ## Developer Documentation Updates Today, we released several updates and bug fixes to our developer documentation. Click below to find out more information! ## Updates * Added additional trailing backslashes for [metadata query][mq] examples * Removed extra quotes from [metadata query][mq] examples * Updated and added examples for [Shield Smart Access][shield] events * Added note to the `can_view_path` [field][collab] * Corrected [trash][trash] resources to represent the right responses returned by the API * Added an `iOS` filter to the changelog * Added note to folder lock [endpoint][folder-lock] * Added note to [developer token][dt] guide that says revoking token removes webhook * Removed the `94x94` option from the [thumbnail][tn] endpoint * Added note to the events [`limit` parameter][ge] * Added note to the [user `login` parameter][ue] * Added app users to the PUT [`user`][ue] endpoint * Added `external_app_user_id` field to the PUT [`user`][ue] endpoint * Changed all references throughout documentation of `X-REF-HINTS` to `x-rep-hints` * Added new fields to all 11 Box Sign [events][sign] ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][1] for any help needed. [1]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [mq]: /guides/metadata/queries/create [shield]: /guides/events/event-triggers/shield-alert-events/#smart-access [collab]: /reference/post-collaborations/#param-can_view_path [trash]: /reference/get-folders-id-trash [folder-lock]: /reference/resources/folder-lock [dt]: /guides/authentication/tokens/developer-tokens [tn]: /reference/get-files-id-thumbnail-id [ge]: /reference/get-events/#param-limit [ue]: /reference/put-users-id/#param-login [sign]: /guides/events/event-triggers/sign-events ## Box Java SDK v3.1.1 released ### Bug Fixes * retry `jwt` auth when error code is in error field ([#1020][1]) ([`8c9d11d`][2]), closes [#1019][3] [1]: https://github.com/box/box-java-sdk/issues/1020 [2]: https://github.com/box/box-java-sdk/commit/8c9d11d1b3556552751c9f4ac99a0f7180af97f3 [3]: https://github.com/box/box-java-sdk/issues/1019 ## Box Java SDK v3.1.0 released ### New Features and Enhancements * Added support for Client Credentials Grant authentication method ([#1002][1]) ([`9cfcaff`][2]) * API to extend disposition date on a file ([#1001][3]) ([`f3f6b60`][4]) * Deprecating `indexName` when executing metadata query ([#1000][5]) ([`c20dbbf`][6]) ### Dependency Upgrades * Upgrade Gradle to 7.3.3 ([#985][7]) ([`e4acbb1`][8]) [1]: https://github.com/box/box-java-sdk/issues/1002 [2]: https://github.com/box/box-java-sdk/commit/9cfcaff243dbf0541409f91f9f863a207345dc47 [3]: https://github.com/box/box-java-sdk/issues/1001 [4]: https://github.com/box/box-java-sdk/commit/f3f6b6043eec362c5a8ad9a01d6588538ca34e71 [5]: https://github.com/box/box-java-sdk/issues/1000 [6]: https://github.com/box/box-java-sdk/commit/c20dbbf6a927e31cfdd7ffa71069c0897f7a0536 [7]: https://github.com/box/box-java-sdk/issues/985 [8]: https://github.com/box/box-java-sdk/commit/e4acbb1f0c10ccdeeee139e2566b344052680010 ## Client Credentials support in the SDKs Our [`.NET`][3] and [`Java`][5] SDKs now support Client Credentials Grant authentication. We plan to release the support for the other SDKs in the coming weeks. Back in November 2020, we released a new authentication type for custom applications called Client Credentials. Today, we have started releasing SDK support for the new type. ## Updates * Added new sample tags and examples on our [Client Credentials guide page][4]. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][1] for any help needed. [1]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [2]: https://developer.box.com/changelog/#2020-11-17-client-credentials-grant [3]: https://github.com/box/box-windows-sdk-v2 [4]: /guides/authentication/client-credentials/ [5]: https://github.com/box/box-java-sdk ## Box Python SDK v3.1.0 released ### New Features and Enhancements * Add support for Python 3.10 ([#692][1]) ([`d4aed82`][2]) * Add support for Python 3.8, Python 3.9, `pypy-3.7` and `pypy-3.8`. ([#689][3]) ([`0aa94cc`][4]) * Deprecate `use_index` parameter from `MDQ` of files/folders ([#666][5]) ([`2595720`][6]) * Replace external package `mock` with Python standard library `unittest.mock` ([#697][7]) ([`6fd6366`][8]) * Upgrade cryptography library to the most recent version. ([#668][9]) ([`9c94d08`][10]), closes [#667][11] ### Bug Fixes * `UploadSession.commit` returns `None` when retry limit was reached ([#696][12]) ([`9456fe0`][13]) * Add missing `api_call` decorator for `create_upload_session` ([#686][14]) ([`3510d3a`][15]) * Fix chunked upload ([#673][16]) ([`2605fd7`][17]), closes [#671][18] [1]: https://github.com/box/box-python-sdk/issues/692 [2]: https://github.com/box/box-python-sdk/commit/d4aed82831af97305bace9a4588d27b23856c306 [3]: https://github.com/box/box-python-sdk/issues/689 [4]: https://github.com/box/box-python-sdk/commit/0aa94cc8a5c4db0fc204b27a60690b73c98a89cb [5]: https://github.com/box/box-python-sdk/issues/666 [6]: https://github.com/box/box-python-sdk/commit/25957204b82c878e15dc3d118505a741171e9772 [7]: https://github.com/box/box-python-sdk/issues/697 [8]: https://github.com/box/box-python-sdk/commit/6fd63667aa7da4c794b4fb880d5c2949efe0073f [9]: https://github.com/box/box-python-sdk/issues/668 [10]: https://github.com/box/box-python-sdk/commit/9c94d0878515dc75c1f267e2fb1f189a852772b6 [11]: https://github.com/box/box-python-sdk/issues/667 [12]: https://github.com/box/box-python-sdk/issues/696 [13]: https://github.com/box/box-python-sdk/commit/9456fe0124f4ac4e9c8a7bcc49039f07f310c477 [14]: https://github.com/box/box-python-sdk/issues/686 [15]: https://github.com/box/box-python-sdk/commit/3510d3ac085767205854014ecef80fd078d71773 [16]: https://github.com/box/box-python-sdk/issues/673 [17]: https://github.com/box/box-python-sdk/commit/2605fd782396ad6e42bd11c10f846e771634b7a0 [18]: https://github.com/box/box-python-sdk/issues/671 ## New Box Shield Access Policy Monitoring Mode Recently, Box Shield added a [new feature][3] that allows admins to test out Access Policies with a new monitoring mode. ## Updates * Added the new `controlMode` field to all events in the [Smart Access events section][2] * Added application and FTP restriction information in the Smart Access events section ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][1] for any help needed. [1]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [2]: /guides/events/event-triggers/shield-alert-events/#smart-access [3]: https://support.box.com/hc/en-us/articles/360044196353#enforce_vs_monitor ## Box Windows SDK v4.2.0 released ### Bug Fixes * correctly pass null when rolling out user from the enterprise ([#792][1]) ([`c85c573`][2]) * Creating `BoxAuthenticationFailedException` no longer throws an exception ([#790][3]) ([`55a706e`][4]) * Null Argument Exception in `AutoPaginate` ([#666][5]) ([`c61f08c`][6]) ### New Features and Enhancements * add `admin_logs_streaming` support ([#797][7]) ([`a775e1e`][8]) * add Client Credentials Grant `auth` support ([#799][9]) ([`b8a64ca`][10]) * add `disposition_at` field to the File object ([#793][11]) ([`2766a91`][12]) * add possibility to set `auth` token `uri` in `BoxConfig` ([#794][13]) ([`ae8cd8b`][14]) * deprecate `index_name` in `ExecuteMetadataQuery` ([#800][15]) ([`6a6a0e4`][16]) - [https://www.nuget.org/packages/Box.V2/4.2.0](https://www.nuget.org/packages/Box.V2/4.2.0) - [https://www.nuget.org/packages/Box.V2.Core/4.2.0](https://www.nuget.org/packages/Box.V2.Core/4.2.0) [1]: https://github.com/box/box-windows-sdk-v2/issues/792 [2]: https://github.com/box/box-windows-sdk-v2/commit/c85c5735865b7dd97ffa1428a8f57d2edff6811b [3]: https://github.com/box/box-windows-sdk-v2/issues/790 [4]: https://github.com/box/box-windows-sdk-v2/commit/55a706e4091271aa55208a260b2f4f96e1527698 [5]: https://github.com/box/box-windows-sdk-v2/issues/666 [6]: https://github.com/box/box-windows-sdk-v2/commit/c61f08cc02d5c95ff71ef700e97393a0dc3dc890 [7]: https://github.com/box/box-windows-sdk-v2/issues/797 [8]: https://github.com/box/box-windows-sdk-v2/commit/a775e1e5c7696a1e5f82b5dc7edbed8eb09f640d [9]: https://github.com/box/box-windows-sdk-v2/issues/799 [10]: https://github.com/box/box-windows-sdk-v2/commit/b8a64ca3887298feccef5185f6bfec4c3771b5a9 [11]: https://github.com/box/box-windows-sdk-v2/issues/793 [12]: https://github.com/box/box-windows-sdk-v2/commit/2766a914fad1eb40371cd4430b3450360088b331 [13]: https://github.com/box/box-windows-sdk-v2/issues/794 [14]: https://github.com/box/box-windows-sdk-v2/commit/ae8cd8b91dd91b8a786e53ff5b3501d2700686a4 [15]: https://github.com/box/box-windows-sdk-v2/issues/800 [16]: https://github.com/box/box-windows-sdk-v2/commit/6a6a0e4a0e41ec70ec33acacba00bee6c7ee881f ## EOL Notification For DICOM Box has retired (End of Life/EOL) our DICOM Uploader and turned off native previewing of `boxdicom` studies as of December 31, 2021. The developer documentation for DICOM has now been removed. For more information, please see the [product announcement][2] for alternatives. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][1] for any help needed. [1]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [2]: https://support.box.com/hc/en-us/articles/1500005724681-Box-DICOM-EOL-on-December-31-2021 ## Box CLI v3.0.0 released Today, we released `v3.0.0` of the [Box CLI][17]. This release has several enhancements, most notably - addition of OAuth 2.0 support. In addition to CLI enhancements and documentation changes, we also released a brand new [YouTube video][18] that shows using our Box CLI Quick Start to get started with the CLI in less than five minutes! ## Developer Documentation Changes * Updated the [Box CLI Quick Start Guide][19] to use the OAuth 2.0 Authentication method * Moved the [JWT setup steps][20] to an appendix ## New Features and Enhancements * Add support for login with OAuth ([#240][3]) * feat: support as-user flag for bulk files and when token is present ([#270][4]) * Add support for `copyInstanceOnItemCopy` field for metadata templates ([#239][5]) * Add support note to the `mdfilter` equality check in search ([#253][6]) * Add support for Box Sign API ([#258][7]) * Add support Metadata Query API ([#259][8]) * fix: `folder:collaborations:add` make `role` a required flag (`SDK-1070`) ([#261][9]) * Minor dependencies upgrade * Add new API for files and file versions under retention ([#250][10]) * Adding support for sign request ([#258][11]) * Support Metadata Query API ([#259][12]) * chore: enforce conventional commits ([#268][13]) * feat: support as-user flag for bulk files and when token is present ([#270][14]) ## Breaking Changes * Drop support for Node 10 * Insensitive language changes ([#247][1], [#252][2]) ## Bug Fixes * fix: folder:collaborations:add make role a required flag ([#261][15]) * fix: Fixed shared-links delete example. ([#262][16]) ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][0] for any help needed. You can also connect with the SDK team on the respective GitHub repository. [0]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [1]: https://github.com/box/boxcli/issues/247 [2]: https://github.com/box/boxcli/issues/252 [3]: https://github.com/box/boxcli/pull/240 [4]: https://github.com/box/boxcli/pull/270 [5]: https://github.com/box/boxcli/pull/239 [6]: https://github.com/box/boxcli/pull/253 [7]: https://github.com/box/boxcli/pull/258 [8]: https://github.com/box/boxcli/pull/259 [9]: https://github.com/box/boxcli/pull/261 [10]: https://github.com/box/boxcli/issues/250 [11]: https://github.com/box/boxcli/issues/258 [12]: https://github.com/box/boxcli/issues/259 [13]: https://github.com/box/boxcli/issues/268 [14]: https://github.com/box/boxcli/issues/270 [15]: https://github.com/box/boxcli/issues/261 [16]: https://github.com/box/boxcli/issues/262 [17]: https://github.com/box/boxcli/releases [18]: https://www.youtube.com/watch?v=whxT3Bdx3E0&list=PL0F3BD5B64D6A39F1 [19]: /guides/cli/quick-start [20]: /guides/cli/cli-docs/jwt-cli ## Box Python SDK v3.0.1 released ### Bug Fixes * Move sphinx to test requirements ([#662][1]) [1]: https://github.com/box/box-python-sdk/pull/662 ## Box Python SDK v3.0.0 released ### Breaking Changes * Drop support for python 2.7 ([#645][1]) * Add missing parameter `stream_position to get_admin_events` method ([#648][2]) * Drop support for python 3.5 ([#654][3]) * Remove deprecated code using insensitive language ([#651][4]) * Enforcing usage of keyword-only arguments in some functions ([#656][5]) ### New Features and Enhancements * Remove `six` library and `__future__` imports ([#646][6]) * Add type hints to method parameters ([#650][7]) ### Bug Fixes * Add missing `api_call` decorators on `multi-input` calls ([#653][8]) * Added `py.typed` file for `mypy` to recognize type hints ([#657][9]) [1]: https://github.com/box/box-python-sdk/pull/645 [2]: https://github.com/box/box-python-sdk/pull/648 [3]: https://github.com/box/box-python-sdk/pull/654 [4]: https://github.com/box/box-python-sdk/pull/651 [5]: https://github.com/box/box-python-sdk/pull/656 [6]: https://github.com/box/box-python-sdk/pull/646 [7]: https://github.com/box/box-python-sdk/pull/650 [8]: https://github.com/box/box-python-sdk/pull/653 [9]: https://github.com/box/box-python-sdk/pull/657 ## Box Java SDK v3.0.0 released ### Breaking changes * Changed `BoxFileVersion` class and removed `fileVersion` field ([#978][1]) * Removed deprecated API `BoxCollaborationWhitelist` replaced with `BoxCollaborationAllowlist`, `BoxCollaborationWhitelistExemptTarget` replaced with `BoxCollaborationAllowlistExemptTarget` ([#969][2]) * Dropping Java 7 support ([#962][3]) * Downgrading `bouncycastle` libraries to 1.57 ([#942][4]) ### New Features and Enhancements * Add `typeName` to `BoxEvent` that contains name of the event, even if it is not mapped to `BoxEvent.EventType` ([#979][5]) ([`b30f61f`][6]), closes [#968][7] * Add new optional `description` parameter to the `retention_policies` endpoint and `start_date_field` to the `retention_policy_assignments endpoint`. ([#967][8]) ([`0aa4ff4`][9]) * Adding `BoxFile#getVersions(String... fields)` to allow users to specify what information they want to extract. Fixes [#946][10]. ([#947][11]) ([`a2eb638`][12]) * Missing `eventTypes` from `BoxAPI` Documents. Fixes [#974][13] ([#975][14]) ([`2c69360`][15]) * Removed deprecated API `BoxCollaborationWhitelist` replaced with `BoxCollaborationAllowlist`, `BoxCollaborationWhitelistExemptTarget` replaced with `BoxCollaborationAllowlistExemptTarget` ([#969][2]) ([`2fd4d6f`][16]) ### Bug Fixes * Changed `BoxFileVersion` class and removed `fileVersion` field ([#978][1]) ([`8c39451`][17]) * Changed SDK loggers name to `"com.box.sdk"`, fixes [#638][18] ([#950][19]) ([`443c230`][20]) * Date parsing error when `BoxSignRequestPrefillTag` created with date value. ([#970][21]) ([`cc2c8da`][22]) * Fix sending limit parameter in `EventLog` ([#977][23]) ([`96bdccc`][24]) * Fixed `NullPointerException` when empty metadata used on `BoxFile` or `BoxFolder` ([#918][25]) ([#945][26]) ([`68bc3c5`][27]) * Cannot deseralize sign request, fixes issue ([#951][28]). ([#952][29]) ([`070bdc5`][30]) ### Dependency Upgrades * Dropping Java 7 support ([#962][3]) ([`953ad78`][31]) * Downgrading `bouncycastle` libraries to 1.57 ([#942][4]) ([`26aaed5`][32]) [1]: https://github.com/box/box-java-sdk/issues/978 [2]: https://github.com/box/box-java-sdk/issues/969 [3]: https://github.com/box/box-java-sdk/issues/962 [4]: https://github.com/box/box-java-sdk/issues/942 [5]: https://github.com/box/box-java-sdk/issues/979 [6]: https://github.com/box/box-java-sdk/commit/b30f61f8cc9c02a1fc4cd5eb35469749e1a16558 [7]: https://github.com/box/box-java-sdk/issues/968 [8]: https://github.com/box/box-java-sdk/issues/967 [9]: https://github.com/box/box-java-sdk/commit/0aa4ff48a1e035efc9ac6aaa42f18f4c92955b7b [10]: https://github.com/box/box-java-sdk/issues/946 [11]: https://github.com/box/box-java-sdk/issues/947 [12]: https://github.com/box/box-java-sdk/commit/a2eb63896606a6c00ccee6bd9745f4c51f8d89a2 [13]: https://github.com/box/box-java-sdk/issues/974 [14]: https://github.com/box/box-java-sdk/issues/975 [15]: https://github.com/box/box-java-sdk/commit/2c69360e80b1bdd6213933cf2f4da195d52c92d4 [16]: https://github.com/box/box-java-sdk/commit/2fd4d6f884410c8884c4c038687bfc8f32837b55 [17]: https://github.com/box/box-java-sdk/commit/8c3945167581400043a070c2f6906ef05d3d7b85 [18]: https://github.com/box/box-java-sdk/issues/638 [19]: https://github.com/box/box-java-sdk/issues/950 [20]: https://github.com/box/box-java-sdk/commit/443c23085e55bbcaa1524c5b9e1bf852a1e2a1ce [21]: https://github.com/box/box-java-sdk/issues/970 [22]: https://github.com/box/box-java-sdk/commit/cc2c8da9ea7d066ae2c247c2de5ac8b8bbba9b99 [23]: https://github.com/box/box-java-sdk/issues/977 [24]: https://github.com/box/box-java-sdk/commit/96bdccc9ca40ed43a6028a2b0d055d9d9a8de525 [25]: https://github.com/box/box-java-sdk/issues/918 [26]: https://github.com/box/box-java-sdk/issues/945 [27]: https://github.com/box/box-java-sdk/commit/68bc3c578d760b7239f6d704fed9bb5a834bf52a [28]: https://github.com/box/box-java-sdk/issues/951 [29]: https://github.com/box/box-java-sdk/issues/952 [30]: https://github.com/box/box-java-sdk/commit/070bdc56074a1533c41f9085943d09502c79a7f4 [31]: https://github.com/box/box-java-sdk/commit/953ad78ac84833082439d0def1dcc63dc11ac04a [32]: https://github.com/box/box-java-sdk/commit/26aaed51fd914eaf2061da735f11830524e4cfe4 ## Box iOS SDK v5.1.0 Released ### New Features and Enhancements * Allow to customize URL for the `OAuth2` authorization page ([#811][1]) ([`1901d29`][2]) * **`Events`:** Add support for `admin_logs_streaming stream` type ([#800][3]) ([`0a3118e`][4]) * **`RetentionPolicy`:** New API for get files and file versions under retention ([#807][5]) ([`38327f0`][6]) * **`SharedLink`:** add support for `vanity_name` ([#799][7]) ([`3ea6eb2`][8]) ### Bug Fixes * **`SignRequest`:** Fix encoding `date_value` to `yyyy-mm-dd` format in `prefillTag` ([#806][9]) ([`4f902a4`][10]) [1]: https://github.com/box/box-ios-sdk/issues/811 [2]: https://github.com/box/box-ios-sdk/commit/1901d296a2be4b0f2eef25eda06928aebc81de9a [3]: https://github.com/box/box-ios-sdk/issues/800 [4]: https://github.com/box/box-ios-sdk/commit/0a3118ef95c2eb42b0080d0352784849e85eb422 [5]: https://github.com/box/box-ios-sdk/issues/807 [6]: https://github.com/box/box-ios-sdk/commit/38327f09a92dba7827e1866940a643d624757762 [7]: https://github.com/box/box-ios-sdk/issues/799 [8]: https://github.com/box/box-ios-sdk/commit/3ea6eb2a1c2b713fd0769e93a2dc4ee51da695fd [9]: https://github.com/box/box-ios-sdk/issues/806 [10]: https://github.com/box/box-ios-sdk/commit/4f902a47482de55ec69b5522e6cf5affd653b4c8 ## New Features For Platform App Management Today, we released changes to the Platform Apps Manager section of the Box Admin Console. Now, you can more easily view and manage enablement of platform OAuth 2.0 Applications. In addition to adding new functionality, we also made updates to the UI of the Platform Apps Manager. For more information on the changes and authorizing apps that use the Box API, check out the [blog post][2]. ## Updates * Screenshots have been updated on the [authorization][3], [platform app approval][4], [limited access approval][5], and [security][6] guide pages * Information on the OAuth 2.0 platform application approval process has been added to the [platform app approval][4] guide page ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][1] for any help needed. [1]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [2]: https://medium.com/box-developer-blog/platform-apps-manager-updates-c79ccf8ebe97 [3]: /guides/authorization [4]: /guides/authorization/platform-app-approval [5]: /guides/authorization/limited-access-approval [6]: /guides/security ## End of Support for Obsolete Language Versions As Box to prepares to release the next major versions of the Python and Java SDKs, this is an alert that support is ending for obsolete language versions. On January 17, 2022, major releases of the [Python][2] and [Java][3] SDK libraries are planned, ending support for obsolete language versions. The Python SDK will abandon Python 2.7 and Python 3.5 starting from version `v3.0.0` of the Python SDK. The Java SDK will abandon Java 7 starting from version `v3.0.0` of the Java SDK. Applications using the Python or Java SDK can still use the respective older versions of those libraries located in the [GitHub][4] release section, but any future new features will not be available for use. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][1] for any help needed. You can also connect with the SDK team on the respective GitHub repository. [1]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [2]: https://github.com/box/box-python-sdk/releases [3]: https://github.com/box/box-java-sdk/releases [4]: https://github.com/box/sdks ## Box Windows SDK v4.1.0 released ### Bug Fixes * add missing `configureAwait`(false) when awaiting to prevent deadlocks ([#775][1]) ([`b16267e`][2]) ### New Features and Enhancements * add configurable `Timeout` for `BoxClient` ([#779][3]) ([`ac842ed`][4]) * add file request API ([#777][5]) ([`1098f75`][6]) * add `vanity_name` to `SharedLink` ([#782][7]) ([`00a1e26`][8]) - [https://www.nuget.org/packages/Box.V2/4.1.0](https://www.nuget.org/packages/Box.V2/4.1.0) - [https://www.nuget.org/packages/Box.V2.Core/4.1.0](https://www.nuget.org/packages/Box.V2.Core/4.1.0) [1]: https://github.com/box/box-windows-sdk-v2/issues/775 [2]: https://github.com/box/box-windows-sdk-v2/commit/b16267e8f3dca5396e87be660e30a1e9405d8139 [3]: https://github.com/box/box-windows-sdk-v2/issues/779 [4]: https://github.com/box/box-windows-sdk-v2/commit/ac842ed4ba1a2dfe499706524441bc6ae3b3c192 [5]: https://github.com/box/box-windows-sdk-v2/issues/777 [6]: https://github.com/box/box-windows-sdk-v2/commit/1098f75983e2d784521f13b8d53df0e55d03203b [7]: https://github.com/box/box-windows-sdk-v2/issues/782 [8]: https://github.com/box/box-windows-sdk-v2/commit/00a1e265569d76c2c9593aa259202d7febef629c ## Box Python SDK v2.14.0 released ### New Features and Enhancements * Add `admin_logs_streaming` support for events stream ([#623][1]) * Add `vanity_name` parameter for creating shared link to a file or folder ([#637][2]) * Add getting files and file versions under retention for a retention policy assignment ([#633][3]) * Support base item operations for WebLink class ([#639][4]) ### Bug Fixes * Limit cryptography to version \<3.5.0 ([#636][5]) * Avoid raising 404 when a thumbnail cannot be generated for a file ([#642][6]) [1]: https://github.com/box/box-python-sdk/pull/623 [2]: https://github.com/box/box-python-sdk/pull/637 [3]: https://github.com/box/box-python-sdk/pull/633 [4]: https://github.com/box/box-python-sdk/pull/639 [5]: https://github.com/box/box-python-sdk/pull/636 [6]: https://github.com/box/box-python-sdk/pull/642 ## OAuth 2.0 Redirect URL Updates Today, we released a new feature to the Box Developer Console, allowing developers to add multiple redirect URIs for an OAuth 2.0 application. Starting November 29, 2021, new applications using OAuth 2.0 will require the URIs set in the configuration tab of the Developer Console to strictly match the one used during redirect. In addition, both new and existing applications, will gain the ability to add multiple redirect URIs. For existing applications, the deadline to make changes to this URL and avoid service disruption is May 13, 2022. ## Updates * The Box Developer Console OAuth 2.0 application configuration section has a new button to add multiple redirect URIs * Redirect URIs now force strict checking to match the URI passed in and URIs configured in the OAuth 2.0 application configuration * Updated the `redirect_uri` query parameter wording on the [`GET /authorize`][url-redirect] endpoint page * Updated the OAuth 2.0 [setup][oauth-setup], [with SDK][oauth-sdk], and [without SDK][oauth-nosdk] guide pages ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][forum] for any help needed. [forum]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [url-redirect]: /reference/get-authorize/#param-redirect_uri [oauth-setup]: /guides/authentication/oauth2/oauth2-setup/ [oauth-sdk]: /guides/authentication/oauth2/with-sdk/ [oauth-nosdk]: /guides/authentication/oauth2/without-sdk/ ## Box Java SDK v2.58.0 released ### New Features and Enhancements * SDK support for new GET /events `stream_type`: `admin_logs_streaming` ([#938][1]) * Adding `BoxDeveloperEditionAPIConnection#getUserConnection` to indicate that we can use this connection for managed users or app users ([#940][2]) ### Bug Fixes * Fix for deprecated enums still being used ([#931][3]) [1]: https://github.com/box/box-java-sdk/pull/938 [2]: https://github.com/box/box-java-sdk/pull/940 [3]: https://github.com/box/box-java-sdk/issues/931 ## New Shield Download Event Today, we released a new `event_type` to the [Enterprise Event][events] stream for downloads that are restricted based on a Shield access policy. If an admin creates a shield access policy that restricts downloads and an end user is blocked from downloading a file, an event is produced within the [enterprise event][events] stream. Events will also be generated when a user is viewing a folder with a file restricted from download, viewing a file in preview that is restricted from download, and when a user requests to download a file through the API that is restricted from download. These events follow the standard event object schema and the `event_type` value set to `SHIELD_DOWNLOAD_BLOCKED`. ## Updates * Added a [new section][new-event] to the Smart Access event trigger documentation * Added `SHIELD_DOWNLOAD_BLOCKED` to the [enterprise event list][event-list] ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][forum] for any help needed. [forum]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [events]: /guides/events/enterprise-events/for-enterprise [new-event]: /guides/events/event-triggers/shield-alert-events/#download-restriction [event-list]: /guides/events/enterprise-events/for-enterprise/#event-types ## New Event Stream Live Monitoring stream\_type Today, we released a new `stream_type` for the [`GET /events`][event-api] API called `admin_logs_streaming`. This allows for near real time monitoring of events after they happen in Box. We recommend that applications subscribing to live events through `admin_logs` migrate to `admin_logs_streaming` for the lowest and most consistent latency. This `stream_type` requires the user to be an enterprise admin or co-admin with the permission to **Run new reports and access existing reports**. ## Updates We have made several documentation updates to help you learn about the new option * Completely reorganized the [events][event-guide] guide section for easier understanding, including adding additional information to all pages in the various sections * Updated the OpenAPI specification for the [`GET /events`][event-api] endpoint to include the new `stream_type` option of `admin_logs_streaming` * Added a new how to migrate [`stream_type` page][migration] with steps on switching ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][forum] for any help needed. [forum]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [event-api]: /reference/get-events [event-guide]: /guides/events [migration]: /guides/events/enterprise-events/migrate-to-stream ## Added Retention Policy Marker Based Pagination Our OpenAPI specification has been updated for retention policy and retention policy assignment endpoints to show use of `marker` based pagination and `fields` query parameters. ## Updates The following updates were made: * Added `fields`, `limit`, and `marker` query parameters to the [`GET /retention-policies`](/reference/get-retention-policies) and [`GET /retention-policies-id-assignments`](/reference/get-retention-policies-id-assignments) endpoints. * Added `limit` and `next_marker ` to the response object for [retention policies](/reference/resources/retention-policies) and [retention policy assignments](/reference/resources/retention-policy-assignments) ## Where to get support Should you have any issues or need further guidance, please create a post on our [developer forum][forum] for any help needed. [forum]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## Extend Retention Via Files API Now, you can extend the retention date for a file that is already under retention using the new `disposition_at` field. If the date is extended, it cannot be reverted or updated to a date prior to the new date. ## Updates * Added a `disposition_at` field to the [File(Full) resource][file-full] * Added a `disposition_at` parameter to the [PUT file endpoint][file-put] * Added a note in the [retention policy guide section][extend-retention] ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][forum] for any help needed. [forum]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [extend-retention]: /guides/retention-policies/#extend-retention-for-a-file [file-put]: /reference/put-files-id/#param-disposition_at [file-full]: /reference/resources/file--full/#param-disposition_at ## Box Windows SDK v4.0.0 released ### Breaking changes * Extract interfaces for BoxClient and Managers to improve testability ([#603][1]) * Add BoxConfigBuilder and make BoxConfig immutable ([#737][2]) * Expose tasks from async methods ([#742][3]) * Use DateTimeOffset instead of DateTime ([#749][4]) * Rework returned exceptions ([#753][5]) * Upgrade .NET Standard to 2.0 ([#755][6]) ### New Features and Enhancements * Add ability to get files under retention for assignment and file versions under retention for assignment ([#734][7]) * Add `is_collaboration_restricted_to_enterprise` flag support for `Folder` update ([#732][8]) * Replace insensitive language ([#738][9]) * Add new, easier to use method for create terms of service user status ([#740][10]) * Allow sort and direction parameter to be passed in when getting trashed items ([#754][11]) * Add support for Task completion\_rule field ([#758][12]) * Add BoxSign API support ([#765][13]) ### Bug Fixes * Fix `Cannot access a closed Stream.Request` exception during upload ([#739][14]) ([#757][15]) - [https://www.nuget.org/packages/Box.V2/4.0.0](https://www.nuget.org/packages/Box.V2/4.0.0) - [https://www.nuget.org/packages/Box.V2.Core/4.0.0](https://www.nuget.org/packages/Box.V2.Core/4.0.0) [1]: https://github.com/box/box-windows-sdk-v2/pull/603 [2]: https://github.com/box/box-windows-sdk-v2/pull/737 [3]: https://github.com/box/box-windows-sdk-v2/pull/742 [4]: https://github.com/box/box-windows-sdk-v2/pull/749 [5]: https://github.com/box/box-windows-sdk-v2/pull/753 [6]: https://github.com/box/box-windows-sdk-v2/pull/755 [7]: https://github.com/box/box-windows-sdk-v2/pull/734 [8]: https://github.com/box/box-windows-sdk-v2/pull/732 [9]: https://github.com/box/box-windows-sdk-v2/pull/738 [10]: https://github.com/box/box-windows-sdk-v2/pull/740 [11]: https://github.com/box/box-windows-sdk-v2/pull/754 [12]: https://github.com/box/box-windows-sdk-v2/pull/758 [13]: https://github.com/box/box-windows-sdk-v2/pull/765 [14]: https://github.com/box/box-windows-sdk-v2/pull/739 [15]: https://github.com/box/box-windows-sdk-v2/pull/757 ## Box iOS SDK v5.0.0 released ### Breaking changes * Update PagingIterator to return pages and simplify logic ([#737][1]) * Remove insensitive language field `collaborationWhiteList` in BoxClient. Use `collaborationAllowList` instead. ([#790][2]) ### New Features and Enhancements * Replace insensitive event types ([#785][3]) * Add SignAPI support ([#792][4]) [1]: https://github.com/box/box-ios-sdk/pull/737 [2]: https://github.com/box/box-ios-sdk/pull/790 [3]: https://github.com/box/box-ios-sdk/pull/785 [4]: https://github.com/box/box-ios-sdk/pull/792 ## Box Sign Enterprise Events [Box Sign][sign] events are now available via the enterprise events stream. For full details, please see our [Box Sign events guide][seg]. ## Updates * Add sign request [document events][d]: created, converted, completed, cancelled and expired * Add sign request [signer events][s]: assigned, viewed by signer, downloaded, forwarded, signed and declined * Add two new [statuses][stat]: `downloaded` and `downloaded and signed` [stat]: /reference/resources/sign-requests/#param-status [s]: /guides/events/event-triggers/sign-events/#signer-events [d]: /guides/events/event-triggers/sign-events/#document-events [seg]: /guides/events/event-triggers/sign-events [sign]: /guides/box-sign ## Box UI Elements v14.0.0 released ## [14.0.0][1] (2021-10-20) ## Bug Fixes & Features This release fixes several bugs. For a full list, [please see the release notes][1] [1]: https://github.com/box/box-ui-elements/releases/tag/v14.0.0 ## App Diagnostics Report Feedback We recently [started releasing][changelog] the new [App Diagnostics Report][guide] to customers, and we would love to hear your thoughts! Visit the [forum post][forum] to provide any feedback. [forum]: https://support.box.com/hc/en-us/community/posts/4408877038483-App-Diagnostics-Report-Feedback [changelog]: https://developer.box.com/changelog/#2021-10-07-new-app-diagnostics-report [guide]: https://developer.box.com/guides/api-calls/permissions-and-errors/app-diagnostics-report/ ## Box Java SDK v2.57.0 released ### New Features and Enhancements * Add support for marker-based paging in `BoxFolder.getChildren` ([#927][1]) * Upgraded `minimal-json` to version 0.9.5 * Upgraded `jose4j` to version 0.7.9 * Adding Gradle wrapper in version 4.0.1 ([#928][2]) ### Bug Fixes:\*\* * Fix for infinite recursion ([#924][3]) * Fix unable to set Vanity URL on `BoxSharedLink` for `BoxFile` and `BoxFolder` ([#925][4]) [1]: https://github.com/box/box-java-sdk/pull/927 [2]: https://github.com/box/box-java-sdk/pull/928 [3]: https://github.com/box/box-java-sdk/pull/924 [4]: https://github.com/box/box-java-sdk/issues/925 ## Update to Webhooks Response The [webhook response][webhooks] has been updated to show the correct Webhook (Mini) object in the entries array. ## Bug Fixes * Added a `mini` resource for [Webhook][mini] * Corrected the [get-webhooks][webhooks] response object [support]: https://developer.box.com/support [forum]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [webhooks]: /reference/get-webhooks [mini]: /reference/resources/webhook--mini ## New App Diagnostics Report A new report will be gradually deployed to customers starting Thursday, October 7th, 2021. We plan to have the report released to all customers by October 25th. Developers can now review API activity for their applications by generating an App Diagnostics Report from the Developer Console. Checkout the [guide][report] to see the steps required to run a report! As always, if you have issues you may file a [support ticket][support] or post on our [developer forum][forum]. [report]: /guides/api-calls/permissions-and-errors/app-diagnostics-report [support]: https://developer.box.com/support [forum]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## Support for Adobe Creative Cloud Previews In conjunction with WebApp preview, Adobe Photoshop, Illustrator, and InDesign files are now supported via API. ## Updates Files with extensions `indt`, `idml`, `indd`, and `inx` are supported by: * [Thumbnails][thumb] * [Image Viewer UI Element][ui-el] * [Annotations][ann] * [Thumbnail Representation][thumb-rep] [thumb]: /guides/representations/thumbnail [ui-el]: /guides/embed/ui-elements/viewers-and-events/#image-viewer [ann]: /guides/embed/ui-elements/annotations [thumb-rep]: /guides/representations/thumbnail-representation ## Box Python SDK v2.13.0 released ### New Features and Enhancements * Sensitive language replacement ([#609][1]) * Add BoxSign support ([#617][2]) ### Bug Fixes * Upgrade cryptography to version 3 ([#620][3]) [1]: https://github.com/box/box-python-sdk/pull/609 [2]: https://github.com/box/box-python-sdk/pull/617 [3]: https://github.com/box/box-python-sdk/pull/620 ## Box Node SDK v2.0.0 released ### Breaking changes * Drop support for Node 6,7 ([#670][1]) ### New Features and Enhancements * Add support for `is_external_collab_restricted` User property ([#668][2]) * Bump proxy-agent from 4.0.0 to 5.0.0 ([#664][3]) [1]: https://github.com/box/box-node-sdk/pull/670 [2]: https://github.com/box/box-node-sdk/pull/668 [3]: https://github.com/box/box-node-sdk/pull/664 ## EOS for Open With UI Element and EOL for Adobe Sign Today, the [Open With UI element][owuie] can integrate with Box Tools, Google Workspace, and Adobe Sign. In an effort to continuously improve the Box experience, we are focusing our resources on new features and functionality that better align with our users' evolving needs. December 21, 2021 the following changes will occur: * We will discontinue support of the Box Open With UI Element for Box Tools and Google Workspace for any new customers. A new customer is any customer not using this element prior to December 21. Any customers leveraging the Open With UI Element with Box Tools and/or Google Workspace prior to December 21 are considered existing customers and will continue to receive support until further notice. The Box Tools and Google Workspace Web App functionality will not be impacted. * Adobe Sign will no longer be available for use by new or existing customers via the Open With UI element or Web Application. Should you have any further questions, please contact us by opening a [support][support] ticket or posting on the [developer forum][forum]. [owuie]: /guides/embed/ui-elements/open-with [support]: https://developer.box.com/support [forum]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## New enhancements to retention APIs Two new API endpoints have been introduced to get files and file versions that are under retention for a given retention policy assignment. These APIs are part of the [retention policy][retention-policies] suite of APIs. They are intended to replace the separate [file][file] and [file version][file-version] retention endpoints, which will soon be deprecated from the Box API. The date of the deprecation will be announced at a later date. When a retention policy is applied via a retention policy assignment, folders are selected for which the retention policy should be applied. The files and file versions within those folders will be the content that is returned from calling these new endpoints. ## Features This release has introduced the following new content and features. * [Get files under retention][files-retention]: Returns a list of files under retention that are associated with the specified retention policy assignment. * [Get file versions under retention][file-versions-retention]: Returns a list of file versions under retention that are associated with the specified retention policy assignment. * Added an editable `description` field to the [retention policy][retention-policy] resource. * Added a non-writable `start_field_date` to the [retention policy assignment][retention-policy-assignment] resource. This field is the metadata field's key id. The value can also be `upload_date` if the `assigned_to` type is not `metadata_template` or a date field has not been selected. [retention-policies]: /guides/retention-policies [files-retention]: /reference/get-retention-policy-assignments-id-files-under-retention [file-versions-retention]: /reference/get-retention-policy-assignments-id-file-versions-under-retention [file]: /reference/get-file-version-retentions-id [file-version]: /reference/get-file-version-retentions [retention-policy]: /reference/resources/retention-policy [retention-policy-assignment]: /reference/resources/retention-policy-assignment ## Classification Name Field now in Events API If a classification exists on content, the [events][events] API now returns the classification `name` field in the response object. * The updates to the event source response object can be seen [here][event-source]. * A new [guide page][event-triggers] has been added to show examples for an event triggered by a user source and an event source. Below is an example of the response before and after the enhancement. Please note that if a classification doesn't exist, the before example will still be returned. Before: ```js theme={null} { "source": { "item_type": "file", "item_id": "8903212345", "item_name": "example.docx", "parent": { "type": "folder", "name": "All Files", "id": "0" }, "owned_by": { "type": "user", "id": "11446498", "name": "Aaron Levie", "login": "notifications@example.com" } } } ``` After: ```js theme={null} { "source": { "item_type": "file", "item_id": "8903212345", "item_name": "example.docx", "parent": { "type": "folder", "name": "All Files", "id": "0" }, "owned_by": { "type": "user", "id": "11446498", "name": "Aaron Levie", "login": "notifications@example.com" }, "classification": { "name": "Top Secret" } } } ``` ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][forum] for any help needed. [forum]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum [events]: /reference/get-events/ [event-source]: /reference/resources/event-source/ [event-triggers]: /guides/events/event-triggers/event-source ## Notice of behavior change for item preview events Starting today, we will begin rolling out changes to the behavior of item preview events when an application consumes those events from our [event API endpoints][event-apis]. This change will only affect the `ITEM_PREVIEW` [user event][user-events] and will not affect existing [enterprise events][enterprise-events]. The new behavior will not cause downtime within existing applications or require any application changes to prevent uptime disruptions. ## Change overview Within the previous behavior when events were consumed, previewed item events were surfaced through the `ITEM_PREVIEW` event type for the owner of the content as well as any contributors assigned to the content. This meant that if a file with 2000 collaborators on it was previewed, the file owner plus all 2000 collaborators would have an event created stating that the file was previewed. With the new behavior, notification of an item being previewed will only be created for the owner of the content and will not be produced for collaborators. This will help to reduce the noise of the event stream while preserving the ability to see when items are previewed as a content owner. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][forum] for any help needed. [event-apis]: https://developer.box.com/reference/get-events/ [user-events]: https://developer.box.com/guides/events/enterprise-events/for-user/#event-types [enterprise-events]: https://developer.box.com/guides/events/user-events/for-enterprise/ [forum]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## Box Java SDK v2.56.0 released ### New Features and Enhancements * Replace `submaster` `GroupMembershipRole` with `coadmin`. Replace `MASTER_INVITE_ACCEPT` and `MASTER_INVITE_REJECT` with `ADMIN_INVITE_ACCEPT` and `ADMIN_INVITE_REJECT`. ([#907][1]) * Add `tracking_codes` to create User API call ([#910][2]) ### Bug Fixes * Fix `url` for `BoxFileRequest.Info` object ([#906][3]) * Attempt to fix thread locking issue on refresh of access token ([#912][4]) [1]: https://github.com/box/box-java-sdk/pull/907 [2]: https://github.com/box/box-java-sdk/pull/910 [3]: https://github.com/box/box-java-sdk/pull/906 [4]: https://github.com/box/box-java-sdk/pull/912 ## Box Node SDK v1.39.0 released ### New Features and Enhancements * Add support for Box Sign API ([#658][1]) * Enhance TS Imports ([#656][2]) [1]: https://github.com/box/box-node-sdk/pull/658 [2]: https://github.com/box/box-node-sdk/pull/656 ## Box Node SDK v1.38.0 released ### New Features and Enhancements * Add sensitive language event types for admin invites ([#648][1]) * Use `BetterDocs` to adapt `JSDocs` to `TypeScript` ([#646][2]) * Change `ProxyAgent` import to be dynamic ([#641][3]) * New API for get files and file versions under retention ([#585][4]) ### Bug Fixes * Deeply freeze Config except Buffers and Readable streams ([#651][5]) * Fix a typo in docs of `src/managers/search.ts` ([#649][6]) * Update broken documentation link ([#647][7]) * fix type annotations for `exchangeToken` functions ([#645][8]) * Deprecate files `getThumbnail` API in favor of `getRepresentationContent` ([#627][9]) [1]: https://github.com/box/box-node-sdk/pull/648 [2]: https://github.com/box/box-node-sdk/pull/646 [3]: https://github.com/box/box-node-sdk/pull/641 [4]: https://github.com/box/box-node-sdk/pull/585 [5]: https://github.com/box/box-node-sdk/pull/651 [6]: https://github.com/box/box-node-sdk/pull/649 [7]: https://github.com/box/box-node-sdk/pull/647 [8]: https://github.com/box/box-node-sdk/pull/645 [9]: https://github.com/box/box-node-sdk/pull/627 ## Upcoming change to JWT format On August 4th, 2021, as part of our continued infrastructure upgrades, we will begin deployment of a change that may affect custom applications leveraging Server Authentication with JSON Web Tokens (JWT). Potential impact will require additional verification from customers who do not use an official [Box SDK][box-sdks] and are storing tokens in a database. All customers and application owners who are potentially impacted have been notified directly via email. ## Change overview This change may only impact applications leveraging Server Authentication with JSON Web Tokens (JWT). Tokens will continue to return as a string as stated in our [documentation][tokendoc]. However, the format will be longer and contain special characters. An example of a token returned today: `NXWd9KDPVofXQKZJlQjICCWFHEmuOihs`. After this change, tokens will return in the following format: `1!yxxhRreQCKcEbC_ZfYvPudyLe7Ed36gIQcqqZo2pfaVZyxNBkQjoHk0fgA1iTY3_uwXgif-hg-gne aUdLRmGCb2He6tyQ_rA8aV-CllTyBbd9Tx-wU6Fnt4Df9XjzBAk8Dj7RYc1Ew_fcY2vfycpCvjwHLgql jzjEpVIrOpOlK_2AyP5FExzn0x7DtbkaGc6avJU8UMQd_huXoJ7CnXIL_JBzVrW4D32pBLQ2AZIuecOZ NMIy9T8PdUiZIG6xKEPqYmm21mQHEM0d7dT5foSBtjm65-Ah2tb2MdSGFb1G1O24vz2GmYFgmIe5UOol qYIGg-0u2xQPC3F76WiNCiU_TP1JDQYi3HKaos807WkRtnBY5Vd-VAbY9DH-Qo3u1EiB0RFr4cht2N7V B99y-379IEYzCojL2V58dE_pBxpRMv4KcOLVsUfDkbx3uo34H4UzOycI_IWGWrhVJD4M7GeLeD_5Vkmj fbwYl2CmHdXAKbZKtXTHjzB0CZixZriT_wRUpsN8GTrrxGbx9ukgzJWRJwelGZ_1Yx7vP4Zkx3OfR5Be -Tso7xdHd9rW0FXsu024U7dMNuQ6kpP1_kJI2Y`. Please note that this is not a new format to Box, as this format is currently returned when [downscoping tokens][downscope]. ## Verifying application impact 1. Navigate to **Admin Console** > **Apps** Tab > **Custom Apps**. 2. Click **View** for each app row listed 3. Scroll to the bottom of the app details page and verify the selected authentication method. Affected apps will say **Server Authentication with JSON Web Tokens**. For each application identified above, you will need to determine: 1. Is it using an official [Box SDK][box-sdks]? If so, no further action is required to prepare for this change. While it is always best practice to be on the latest version, no minimum versions are required for compatibility. 2) If an official SDK is not used, are tokens stored in a database? If so, you will need to preform additional verification that the database can handle both the new length and special characters. ## Testing before release If you have identified an application that leverages Server Authentication with JWT and stores tokens in a database, you will want to preform the test below before August 4th. As mentioned above, the new format for tokens is currently used when [downscoping tokens][downscope]. Therefore, preform the following steps to assess impact: 1. Generate an Access Token for the application 2) [Downscope][downscope] the token from step 1 3. Attempt to store the downscoped token in your database If you are successfully able to store the token in the database no further action is necessary to prepare for this change. If you are unable to store the token, your database must be updated to support the additional length and special characters. ## Where to get support Should you have any questions or need further guidance, please email [jwt-set-rollout@box.com](mailto:jwt-set-rollout@box.com). [box-sdks]: https://developer.box.com/sdks-and-tools [tokendoc]: https://developer.box.com/reference/post-oauth2-token/ [downscope]: https://developer.box.com/guides/authentication/access-tokens/downscope ## New Getting Started Guide Check out our [step by step guide][guide] to getting started with the Box API. Discover best use cases, user models, architecture patterns, and more. ## Features * Use case evaluation: [Guide][usecase] * Common user models: [Guide][usemodel] * Common architecture patterns: [Guide][arch] * Locating common values: [Guide][value] * Security overview: [Guide][security] * Authentication best practices: [Guide][bestprac] * Detailed authorization steps: [Guide][auth] [guide]: /guides/getting-started [usecase]: page/platform/use-cases/ [usemodel]: page/platform/user-types/ [arch]: page/platform/appendix/architecture-patterns/ [value]: page/platform/appendix/locating-values/ [auth]: /guides/authorization [security]: /guides/security [bestprac]: /guides/authentication/best-practices ## Box Java SDK v2.55.1 released ### Bug Fixes * Restore methods for Execute Metadata Query, which were removed in [#890][1], and mark them as deprecated ([#905][2]) [1]: https://github.com/box/box-java-sdk/pull/890 [2]: https://github.com/box/box-java-sdk/pull/905 ## Release of Box Sign API Today, July 26th, 2021, beings the roll out of Box Sign! Programmatically harness the full functionality of the [Box Sign web app experience][webapp] by leveraging our newest API endpoints to create, list, resend, and cancel Box Sign requests. While Box Sign does not need to be enabled by an Admin to use its API endpoints, it does need to be rolled out to your enterprise. We will notify Admins as it becomes available for their Box instance. At a minimum, creating a Box Sign request requires selecting a file for signature, a destination folder for the signed document/[signing log][log], and designating signers. At this time, only one file can be signed per request. ```curl theme={null} curl -i -X PUT "https://api.box.com/2.0/sign_requests" \ -H "Authorization: Bearer " \ -d '{ "signers": [ { "role": "signer", "email": "example_email@box.com" } ], "source_files": [ { "type": "file", "id": "123456789" } ], "parent_folder": { "type": "folder", "id": "0987654321" } }' ``` ## Features * Add endpoint to **create** Box Sign requests: [Guide][c] | [API reference][c_ref] * Add endpoint to **list** Box Sign requests: [Guide][l] | [API reference][l_ref] * Add endpoint to **get** Box Sign requests by ID: [Guide][g] | [API reference][g_ref] * Add endpoint to **resend** Box Sign requests: [Guide][r] | [API reference][r_ref] * Add endpoint to **cancel** Box Sign requests: [Guide][ca] | [API reference][ca_ref] * Java SDK support: [GitHub][gh] [webapp]: https://support.box.com/hc/en-us/articles/4404086827411-Introducing-Box-Sign [log]: https://support.box.com/hc/en-us/articles/4404095202579-Viewing-the-signing-log [c]: /guides/box-sign/create-sign-request [c_ref]: /reference//post-sign-requests [l]: /guides/box-sign/list-sign-requests/#all [l_ref]: /reference/get-sign-requests [g]: /guides/box-sign/list-sign-requests/#by-id [g_ref]: /reference/get-sign-requests-id [r]: /guides/box-sign/resend-sign-request [r_ref]: /reference/post-sign-requests-id-resend [ca]: /guides/box-sign/cancel-sign-request [ca_ref]: /reference/post-sign-requests-id-cancel [gh]: https://github.com/box/box-java-sdk/blob/main/doc/sign_requests.md ## Box Java SDK v2.55.0 released NOTE: Due to the benign nature of the "breaking change" below, we decided NOT to increment the major version for this release. There should be no customer impact due to this change. ### Breaking Changes * Update execute metadata query to match API response ([#890][1]) * NOTE: This change removes a method without deprecating it. It was not possible to use the method correctly at all, because the underlying service no longer supported it. ### New Features and Enhancements * Remove or deprecate insensitive language (\[[#889][2]])([https://github.com/box/box-java-sdk/pull/889](https://github.com/box/box-java-sdk/pull/889)) * Add support for `is_external_collab_restricted` parameter for User ([#896][3]) * Add configurable permissions support for `GroupMembership` ([#897][4]) * Add `SHIELD_JUSTIFICATION_APPROVAL` event type ([#898][5]) * Add ability to get files under retention for assignment and file versions under retention for assignment ([#899][6]) * Add `TASK_UPDATE`, `FILE_VERSION_RESTORE` and `ADVANCED_FOLDER_SETTINGS_UPDATE` event types ([#902][7]) * Add Box Sign API support ([#904][8]) ### Bug Fixes * Add setters for `BoxLegalHoldPolicy` ([#885][9]) * Add setters for `BoxTaskAssignment` ([#886][10]) * Add setters for Group Membership and Web Links ([#887][11]) * Add setters for Webhooks ([#888][12]) * Deprecate `BoxFile.getThumbnail` in favor of `BoxFile.getRepresentationContent` ([#891][13]) [1]: https://github.com/box/box-java-sdk/pull/890 [2]: https://github.com/box/box-java-sdk/issues/889 [3]: https://github.com/box/box-java-sdk/pull/896 [4]: https://github.com/box/box-java-sdk/pull/897 [5]: https://github.com/box/box-java-sdk/pull/898 [6]: https://github.com/box/box-java-sdk/pull/899 [7]: https://github.com/box/box-java-sdk/pull/902 [8]: https://github.com/box/box-java-sdk/pull/904 [9]: https://github.com/box/box-java-sdk/pull/885 [10]: https://github.com/box/box-java-sdk/pull/886 [11]: https://github.com/box/box-java-sdk/pull/887 [12]: https://github.com/box/box-java-sdk/pull/888 [13]: https://github.com/box/box-java-sdk/pull/891 ## Updated file size limits Today we released our newest business plan, Enterprise Plus, which supports uploads and downloads up to 150GB. In addition, we upgraded file size limits for some of our existing plans, as detailed below. For details on how to confirm the file size limit for your account, please visit our [upload guide][uploadguide]. ## Updates * Enterprise: 50 GB * Digital Workplace Suite: 50 GB * Digital Workplace Global Suite: 50 GB * Digital Business Suite: 50 GB * Digital Business Global Suite: 50 GB * Enterprise Plus: 150 GB [uploadguide]: /guides/uploads/direct ## New Manual Start Workflow Endpoints Two new API endpoints have been introduced for [Box Relay](https://www.box.com/collaboration/relay-workflow) * Get workflows configured on a folder * Start a manual start flow within a workflow for file(s) The new endpoints do not allow you to update any information within the workflows. Also, the post endpoint can only start flows with a `trigger_type` of `WORKFLOW_MANUAL_START`. There is an optional `outcome_parametes` object within the post request body. If your flow is configured to accept selections at start time, you will need to send in these as a parameter. A guide with all the options you can send in will be made available soon. ## Features This release has introduced the following new content and features. * New [workflow](/reference/resources/workflow) resource * New [GET](/reference/get-workflows) workflows endpoint * New [POST](/reference/post-workflows-id-start) start manual workflow endpoint ## Notice of behavior change for item open events Starting today, we will begin rolling out changes to the behavior of `ITEM_OPEN` events when an application consumes those events from our [event API endpoint][event-apis]. This change will only affect the `ITEM_OPEN` [enterprise event][user-events]. The new behavior will not cause downtime within existing applications or require any application changes to prevent uptime disruptions. ## Change overview Within the previous behavior when events were consumed, opened item events were surfaced through the `ITEM_OPEN` event type for the owner of the content as well as any contributors assigned to the content. This meant that if a file with 2000 collaborators on it was opened, say on Drive, the file owner plus all 2000 collaborators would have an event created stating that the file was opened. With the new behavior, notification of an item being opened will only be created for the owner of the content and will not be produced for collaborators. This will help to reduce the noise of the event stream while preserving the ability to see when items are opened as a content owner. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][forum] for any help needed. [event-apis]: https://developer.box.com/reference/get-events [user-events]: /guides/events/enterprise-events/for-enterprise [forum]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## Box Python SDK v2.12.1 Released ### Bug Fixes * Fix bug when thumbnail representations are not found ([#597][1]) [1]: https://github.com/box/box-python-sdk/pull/597 ## Box Node SDK v1.37.2 released ### Bug Fixes * Fix backwards compatibility issue by moving some TypeScript [`@types`][1] as direct dependencies ([#630][2]) [1]: https://github.com/types [2]: https://github.com/box/box-node-sdk/pull/630 ## Box Node SDK v1.37.1 released ### Bug Fixes * Insensitive language: replace `whitelist` with `allowlist` ([#625][1]) [1]: https://github.com/box/box-node-sdk/pull/625 ## Box UI Elements v13.0.0 released ## [13.0.0][1] (2021-04-22) ## Bug Fixes & Features This release fixes several bugs. For a full list, [please see the release notes][1] [1]: https://github.com/box/box-ui-elements/releases/tag/v13.0.0 ## Box iOS SDK v4.4.0 released ## Breaking Changes ### New Features and Enhancements * Add support for search parameter to get shared link items ([#756][1]) * Add support for folder lock functionality ([#759][2]) * Add support for `copyInstanceOnItemCopy` field for metadata templates ([#763][3]) * Add support for stream upload of new file versions and add support for 'If-Match' header when uploading new file versions ([#766][4]) * Add additional details field for `Event` model ([#770][5]) ### Bug Fixes:\*\* * Pass only a scheme to iOS Authentication APIs ([#755][6]) * Update `listEnterpriseGroups()` to use documented parameter for filtering by name ([#757][7]) * Fix bug for OAuth where the callback is not called if token has been revoked ([#762][8]) [1]: https://github.com/box/box-ios-sdk/pull/756 [2]: https://github.com/box/box-ios-sdk/pull/759 [3]: https://github.com/box/box-ios-sdk/pull/763 [4]: https://github.com/box/box-ios-sdk/pull/766 [5]: https://github.com/box/box-ios-sdk/pull/770 [6]: https://github.com/box/box-ios-sdk/pull/755 [7]: https://github.com/box/box-ios-sdk/pull/757 [8]: https://github.com/box/box-ios-sdk/pull/762 ## Box Python SDK v2.12.0 released ### New Features and Enhancements * Add metadata query functionality ([#574][1]) * Add folder lock functionality ([#581][2]) * Add search query support for the `include_recent_shared_links` field ([#582][3]) * Update `get_groups()` to use documented parameter to filter by name ([#586][4]) [1]: https://github.com/box/box-python-sdk/pull/574 [2]: https://github.com/box/box-python-sdk/pull/581 [3]: https://github.com/box/box-python-sdk/pull/582 [4]: https://github.com/box/box-python-sdk/pull/586 ## Box Node SDK v1.37.0 released ### New Features and Enhancements * Add support for `copyInstanceOnItemCopy` field for metadata templates ([#572][1]) ### Bug Fixes * Fix webhook signature validation ([#568][2]) * Update dependencies to patch security vulnerabilities ([#578][3]) [1]: https://github.com/box/box-node-sdk/pull/572 [2]: https://github.com/box/box-node-sdk/pull/568 [3]: https://github.com/box/box-node-sdk/pull/578 ## Notice of behavior change for item download events Starting today, we will begin rolling out changes to the behavior of item download events when an application consumes those events from our [event API endpoints][event-apis]. This change will only affect the `ITEM_DOWNLOAD` [user event][user-events] and will not affect existing [enterprise events][enterprise-events]. The new behavior will not cause downtime within existing applications or require any application changes to prevent uptime disruptions. ## Change overview Within the previous behavior when events were consumed, downloaded item events were surfaced through the `ITEM_DOWNLOAD` event type for the owner of the content as well as any contributors assigned to the content. This meant that if a file with 2000 collaborators on it was downloaded, the file owner plus all 2000 collaborators would have an event created stating that the file was downloaded. With the new behavior, notification of an item being downloaded will only be created for the owner of the content and will not be produced for collaborators. This will help to reduce the noise of the event stream while preserving the ability to see when items are downloaded as a content owner. ## Where to get support Should you have any issues or need further guidance, please post a request to our [developer forum][forum] for any help needed. [event-apis]: https://developer.box.com/reference/get-events/ [user-events]: https://developer.box.com/guides/events/user-events/for-user/#event-types [enterprise-events]: https://developer.box.com/guides/events/enterprise-events/for-enterprise/ [user-access-token]: /guides/authentication/jwt/user-access-tokens/ [forum]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## New option for downscoping tokens using shared links When requesting an access token, you now have the ability to downscope that token to a file or folder using a shared link. This new parameter may be used instead of using the `resource` parameter, which allows you to supply a file or folder ID to perform the same action. ## Updates * Added new `box_shared_link` request parameter to [downscoping documentation][1]. A shared link may be supplied to downscope an access token in the below way. ```bash theme={null} { curl -i -X POST "https://api.box.com/oauth2/token" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "subject_token=[ACCESS_TOKEN]" \ -d "subject_token_type=urn:ietf:params:oauth:token-type:access_token" \ -d "scope=item_upload item_preview base_explorer" \ -d "box_shared_link=https://cloud.box.com/s/123456" \ -d "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" } ``` * Added `box_shared_link` request parameter to [request access token API reference][2]. [1]: https://developer.box.com/guides/authentication/access-tokens/downscope/#downscoping-in-practice [2]: https://developer.box.com/reference/post-oauth2-token/#request ## Box Java SDK v2.54.0 released ### New Features and Enhancements * Add file request support ([#869][1]) ### Bug Fixes * Fix `BoxWeblink` deserialization ([#881][2]) [1]: https://github.com/box/box-java-sdk/pull/869 [2]: https://github.com/box/box-java-sdk/pull/881 ## Service Account email added to Developer Console Upon Admin authorization of an application leveraging server authentication, the auto-generated email address of the Service Account is now surfaced in the General tab of the Developer Console. This email address can then be used to collaborate the user on Box content. The format will always be `AutomationUser_AppServiceID_RandomString@boxdevedition.com`. For example, `AutomationUser_123456_6jCo6Pqwo@boxdevedition.com`. To learn more, see our guide on [User Types][ut] and [Service Accounts][sa]. ## Features * Added auto-generated email address of Service Account user to Developer Console [ut]: https://developer.box.com/guides/authentication/user-types/ [sa]: https://developer.box.com/guides/authentication/user-types/service-account/ ## New Metadata Query Indices Endpoint A new API endpoint has been introduced to get a list of metadata query indices for a given template and scope. Metadata queries provide a way to find files and folders by searching for the metadata attached to them. When performing metadata queries on 10,000 or more files or folders, non-performant queries may produce an `HTTP 403` error. Creating a search index delivers the ability to run these queries at scale to bypass this error state, and are automatically applied during the querying process. The new endpoint permits the lookup of these created search indices. ## Features This release has introduced the following new content and features. * New API endpoint to get a list of metadata query indices by scope and template. * New metadata query index [response object][mdq-index-response]. * New metadata query indices [response object][mdq-indices-response]. ## Updates This release includes the following updated content. * Updated metadata query indices guide to include details on how to get a list of metadata query indices. [mdq-indices-response]: https://developer.box.com/reference/resources/metadata-query-index/ [mdq-index-response]: https://developer.box.com/reference/resources/metadata-query-indices/ ## New Collection Events External collection events are now available via the [enterprise events][enterprise-events] stream. [Collections][collections] in Box are a way to group files, folders, and web links without putting them all into a folder together. These new events provide a method for monitoring when collection actions are taken within an enterprise. The events follow the standard event object schema, and include the following: * `COLLECTION_CREATE`: A collection was created * `COLLECTION_DELETE`: A collection was deleted * `COLLECTION_UPDATE`: A collection was updated * `COLLECTION_ITEM_CREATE`: An item was added to a collection * `COLLECTION_ITEM_DELETE`: An item was removed from a collection * `COLLECTION_ITEM_UPDATE`: An item in a collection was updated [enterprise-events]: /guides/events/enterprise-events/for-enterprise/ [collections]: /guides/collections/ ## Box Shield Smart Access events External collaboration restriction and justification approval events are now available via the [enterprise events][events] stream. [Box Shield][box-shield] must be purchased and enabled on a Box enterprise in order to take advantage of these advanced security offerings. These events follow the standard [event object][eo] schema, with the `event_type` value set of: `SHIELD_EXTERNAL_COLLAB_INVITE_BLOCKED_MISSING_JUSTIFICATION`, `SHIELD_EXTERNAL_COLLAB_INVITE_JUSTIFIED`, `SHIELD_EXTERNAL_COLLAB_INVITE_BLOCKED` `SHIELD_EXTERNAL_COLLAB_ACCESS_BLOCKED_MISSING_JUSTIFICATION`, `SHIELD_EXTERNAL_COLLAB_ACCESS_BLOCKED`, or `SHIELD_JUSTIFICATION_APPROVAL`. The `additional_details` payload of each event provides more information. Full details can be found in our \[Shield Events [guide][saguide]. ## Features * Add support for Box Shield external collaboration and justification approval events to the enterprise events stream [box-shield]: https://www.box.com/shield [eo]: /reference/resources/event/ [events]: /guides/events/enterprise-events/for-enterprise/ [saguide]: /guides/events/event-triggers/shield-alert-events/#smart-access ## Box CLI v2.9.0 released ## New Features and Enhancements * Add ability to add an option to a metadata template multi select field ([#230][1]) * Add folder lock functionality ([#232][2]) * Add support for search parameter to get shared link items ([#233][3]) ## Bug Fixes * Fix events command bug when there is no stream position flag ([#234][4]) * Fix bug with folders:upload command not uploading folder contents ([#231][5]) [1]: https://github.com/box/boxcli/pull/230 [2]: https://github.com/box/boxcli/pull/232 [3]: https://github.com/box/boxcli/pull/233 [4]: https://github.com/box/boxcli/pull/234 [5]: https://github.com/box/boxcli/issues/231 ## Box API response header changes that may impact your applications On May 10th, 2021, as part of our continued infrastructure upgrade, Box's API response headers will standardize to always return in a case-insensitive manner, in line with industry best practices and our API documentation. This change has the following potential impact: * [Salesforce SDK `v1`][salesforce-sdk-v1] users will be impacted and will need to upgrade to a recent SDK version. Not doing so will cause your Box Salesforce integration to cease functioning after May 10th, 2021. * Box API consumers who do not use one of the [Box SDKs][box-sdks] may be impacted and will need to verify header usage through their code. Depending on your header usage, not making adjustments may cause disruptions in your Box API integration. All customers and application admins who are potentially impacted have been notified directly via email. ## Change overview Applications that are using the return headers described above, such as `location` and `retry-after`, will need to verify that their applications are checking for these headers in a case-insensitive fashion. Over the past 12 months Box has been upgrading its networking and observability infrastructure. These upgrades aim to improve reliability and availability of Box's products for our customers. This specific change allows Box to deploy an updated service proxy, enabling Box to better monitor service traffic, quickly find problem areas, and tune application performance. ## API Consumers: Verifying application impact Verifying whether your application(s) will be impacted will require a review of your code. If you are solely using one of the official Box SDKs to connect to Box APIs, you will not be impacted as the SDKs handle response headers in a case-insensitive manner. You may verify whether you are impacted with the following steps: * Locate the code in your application which handles the responses from Box API requests. If you are not extracting the response headers from these responses, you are not impacted. * If you are extracting those response headers, you may be impacted if you are expecting those headers in a case-sensitive fashion. For instance, if you are expecting the `Location` header to be returned with a starting capital `L`, a direct string comparison with a specific case, then your code will need to be altered to prevent it from breaking after the change is made. ## API Consumers: How to make the change To update the impacted application(s), ensure that you are checking these response headers in a case-insensitive manner. Specifically, your code should be built in a defensive way to ensure that if a header, such as `Location`, is sent with an initial capital `L` or a lowercase `l`, it'll be handled in the same way. For example, forcing all headers to lowercase before checking, or using a case-insensitive regex string check, are two viable methods for handling this process. ## Salesforce SDK `v1` users: Verifying application impact If you are unsure whether you are using `v1.0` of the Box Salesforce SDK, go to the application code location where you have stored the Box Salesforce SDK and do the following: Load the following Salesforce SDK file: `src/classes/BoxApiRequest.cls` Look for the following lines ([should be lines 6-7][salesforce-code]): ```apex theme={null} public final static String HEADER_LOCATION_LOWER_CASE = 'location'; public final static String HEADER_LOCATION_CAPITALIZED = 'Location'; ``` If those lines are present then you are using `v1.1.0` or later of the Salesforce SDK, which is not impacted and no changes are needed. If those lines are not present then you are using `v1.0` of the Salesforce SDK, which will be impacted and will need to be updated. ## Salesforce SDK `v1` users: How to make the change To update the impacted application(s), you will need to update the version of the Salesforce SDK that you are using. It is recommended that you upgrade to the [most recent version][salesforce-sdk] of the SDK, but anything from [`v1.1.0` or later][salesforce-sdk-releases] will be adequate to ensure that there is no impact to your application(s). ## Where to get support Should you have any issues or need further guidance, please [file a ticket][support] with our support team or post a request to our [developer forum][forum] for any help needed. [salesforce-sdk-v1]: https://github.com/box/box-salesforce-sdk/releases/tag/1.0.0 [salesforce-sdk]: https://github.com/box/box-salesforce-sdk [salesforce-sdk-releases]: https://github.com/box/box-salesforce-sdk/releases [salesforce-code]: https://github.com/box/box-salesforce-sdk/compare/1.0.0...v1.1.0#diff-1855f83ffd4977e5b9e4bfc167154f2e11b0161fd6c380502c48082b6837b0af [box-sdks]: https://developer.box.com/sdks-and-tools/ [support]: https://support.box.com/hc/en-us/requests/new [forum]: https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum ## Box iOS SDK v4.3.0 released ## Breaking Changes ### New Features and Enhancements * Add support for OAuth 2 custom callback URL ([#746][1]) * Add support for zip download ([#749][2]) ### Bug Fixes * Update gems to patch `kramdown` vulnerability ([#742][3]) * Update gems to patch `activesupport` vulnerability ([#745][4]) [1]: https://github.com/box/box-ios-sdk/pull/746 [2]: https://github.com/box/box-ios-sdk/pull/749 [3]: https://github.com/box/box-ios-sdk/pull/742 [4]: https://github.com/box/box-ios-sdk/pull/745 ## Box Node SDK v1.36.0 released ### New Features and Enhancements * Add folder lock functionality ([#560][1]) * Add support for filtering groups by name ([#561][2]) ### Bug Fixes * Update proxy-agent to patch proxy support issue ([#563][3]) * Update dependencies to patch security vulnerabilities ([#566][4]) [1]: https://github.com/box/box-node-sdk/pull/560 [2]: https://github.com/box/box-node-sdk/pull/561 [3]: https://github.com/box/box-node-sdk/pull/563 [4]: https://github.com/box/box-node-sdk/pull/566 ## Maximum upload file size limit increases The maximum file size that may be uploaded via the API has been increased for the following Box account plans. * Business Plus * Enterprise * Digital Workplace Suite * Digital Workplace Global Suite The prior maximum upload file size for these account types was **5 GB**. This update increases the maximum file size to **15 GB**, effective immediately. For more information on the maximum file sizes for all account plans, please refer to the [direct uploads][direct-uploads] documentation. [direct-uploads]: /guides/uploads/direct/ ## Metadata Query index changes When making file / folder [metadata query][mdq] requests, a search index needs to be created for queries where more than 10,000 files / folders are being searched. To improve the efficiency and simplicity of this process, we have changed the way in which indexes are used by removing the explicit requirement to supply an index through the `use_index` key in a metadata query API request. There is no impact to existing applications that are currently supplying an index through the `use_index` key. The supplied index will be ignored in the request and the most efficient index will be automatically applied. ## Previous Indexing Process The following was the previous process for creating and using an index for a metadata query request involving 10,000+ files / folders in the search. This is the process being replaced. * Contact the metadata query team to request an index. * The metadata query team would create the index and supply back the name of the newly created index. * When making metadata query requests this index name was supplied as the value for the `use_index` key in the API request. ## New Indexing Process The following is the new process for creating and using an index. * Contact the metadata query team to request an index. The `use_index` key within the metadata query API request has been removed. Instead, the most efficient query will be automatically applied during the search process. Indexes that are currently supplied in the `use_index` key will be ignored, and instead the most efficient index will be used. Application owners may safely remove the `use_index` key and value from their metadata query requests at their discretion. [mdq]: /guides/metadata/queries/ ## Developer Console Updates A new **Authorization** tab is now available in the Developer Console. In addition, clarifying UI changes were made to the **Application Access** and **Scope** settings within the **Configuration** tab to ease these decisions. These changes do not impact the functionality of the settings. Now, developers will navigate to the **Authorization** tab to submit the application directly to their Box Admin for authorization approval. As for the **Configuration** tab, helpful tips were added to the JWT **Application Access** settings to facilitate a clear decision between **App Only Access** or **App Access + Enterprise Access**. The **Scope** section is now grouped by action type: content, administrative, and developer. * **App Approval Process**: [Guide](/guides/authorization/platform-app-approval) * **Scopes**: [Guide](/guides/api-calls/permissions-and-errors/scopes) * **Application Access**: [Guide](/guides/authentication/jwt/jwt-setup/#application-access) ## Updates * Added Authorization tab to the Developer Console * Updated the UI for JWT Application Access settings under the Configuration tab * Updated the UI grouping of Scopes under the Configuration tab ## Box Python SDK v2.11.0 released ### New Features and Enhancements * Deprecate and add method for getting a thumbnail ([#572][1]) [1]: https://github.com/box/box-python-sdk/pull/572 ## Box Java SDK v2.53.0 released ### New Features and Enhancements * Add offset and limit parameters to `BoxFolder.getChildren` ([#861][1]) [1]: https://github.com/box/box-java-sdk/pull/861 ## Blank OAuth 2 redirect URI change On September 28th, 2020 we announced upcoming changes to our [security requirements for OAuth 2 app redirect URIs][oauth2-changelog-notice]. As of today, applications that use a blank redirect URI will no longer be permitted, and will begin to produce an error stating `redirect_uri missing` when attempting to redirect the user, stating that there is a mismatched URI. Impacted applications will have received multiple emails to the developer email address associated with the application and account, and are part of a small subset of applications that were grandfathered in to allow the functionality to persist. New applications, or any OAuth 2 applications that have a redirect URI specified are not impacted. ## How to update your OAuth 2 app redirect URI If your OAuth 2 application has started to produce an error during the redirect phase, you may be impacted by this change. To update your application(s), use the following steps: * Go to the [Box developer console][dev-console] as the user who owns the application(s). * From the top navigation, click on **Configuration**. * Scroll down to the **OAuth 2.0 Redirect URI** section.  * For any application where this URI is blank, add the URI that is being used in the application code when redirecting the user back to your application from the Box auth step, [as is described in this guide](/guides/authentication/oauth2/with-sdk/#2-redirect-user). [oauth2-changelog-notice]: https://developer.box.com/changelog/#2020-09-29-changes-to-oauth-2-app-redirect-url-requirements [dev-console]: https://cloud.app.box.com/developers/console ## New type field in search API responses A new field, `type`, has been introduced in the [search result response object][search_result_shared_link] for returned shared link items. This response object format is only returned when making calls to the [content search][search_content] endpoint with the `include_recent_shared_links` query parameter set to `true`. There is no impact to existing applications that are currently consuming this response object. ## Updates Prior to this release, the return object for shared link search results included two objects: * `accessible_via_shared_link`: The shared link which the item is accessible from. * `item`: The file, folder, or web link that matched the search query. ```js theme={null} { "accessible_via_shared_link": "https://www.box.com/s/vfejh7y01sb263wjtgfe", "item": { ... } } ``` This update introduces the new `type` field, which is a string that will always be set to `search_result`. ```js theme={null} { "type": "search_result", "accessible_via_shared_link": "https://www.box.com/s/vfejh7y01sb263wjtgfe", "item": { ... } } ``` For complete format information see the [shared link search result][search_result_shared_link] response object. [search_content]: https://developer.box.com/reference/get-search/ [search_result_shared_link]: https://developer.box.com/reference/resources/search-result-with-shared-link/ ## Box CLI v2.8.0 released ## Warning * Due to the changes in ([#217][1]), additional details about Box Items may now be returned for some commands. ### New Features and Enhancements * Output contents of array for bulk commands ([#217][1]) ### Bug Fixes * Fix bug with setting proxy settings ([#218][2]) [1]: https://github.com/box/boxcli/pull/217 [2]: https://github.com/box/boxcli/pull/218 ## Box Java SDK v2.52.0 released ### New Features and Enhancements * Add folder lock functionality ([#856][1]) * Add support for search parameter to get shared link items ([#855][2]) ### Bug Fixes * Fix bug with updating tracking codes ([#857][3]) [1]: https://github.com/box/box-java-sdk/pull/856 [2]: https://github.com/box/box-java-sdk/pull/855 [3]: https://github.com/box/box-java-sdk/pull/857 ## Announcing Client Credentials Grant authentication A new method for authenticating your JWT applications is now released. This new method, Client Credentials Grant, does not impact existing applications but offers an easier way to authenticate for new apps. Prior to today, we required a public/private key pair and assertion to verify an application’s identity and retrieve an Access Token. Now, you can request a token using only your client ID and client secret. ```cURL theme={null} curl --location --request POST ‘https://api.box.com/oauth2/token’ \ --header ‘Content-Type: application/x-www-form-urlencoded’ \ --data-urlencode ‘client_id=’ \ --data-urlencode ‘client_secret=’ \ --data-urlencode ‘grant_type=client_credentials’ \ --data-urlencode ‘box_subject_type=enterprise’ \ --data-urlencode ‘box_subject_id=’ ``` For further information, please visit our [guide][guide]. ## Updates * Added client credentials grant as an auth option for new applications * Added 2FA requirement to copy/view client secret * Added selected authentication method in the Enterprise Authorization request * Removed the ability to change authentication type [guide]: /guides/authentication/jwt/without-sdk/#client-credentials-grant ## Box iOS SDK v4.2.0 released ## Breaking Changes ### New Features and Enhancements * Add error information for disconnected OAuth web sessions ### Bug Fixes * Fix bug with creating collaboration * Fix bug with getting enterprise events ## Box Java SDK v2.51.1 released ### Bug Fixes * Fix for cross-enterprise collaborator calls to `updateMetadata` on files ## Box Content Preview v2.57.0 released ### New Features and Enhancements * Add react versions of core control components ([#1282][1282]) * Add react versions of existing control icons ([#1280][1280]) * Add react versions of fullscreen and zoom controls ([#1283][1283]) * Add react versions of text viewer controls ([#1284][1284]) * Add instrumentation for annotation creation ([#1275][1275]) * Upgrade `react` and `react-dom` to `^16.9.0` ([#1278][1278]) ### Bug Fixes * Select newly created annotation ([#1276][1276]) * Allow download of files via embedded links in Chrome ([#1277][1277]) * Revert `pdf.js` to `v2.2.228` due to font rendering issue ([#1274][1274]) [1282]: https://github.com/box/box-content-preview/pull/1282 [1280]: https://github.com/box/box-content-preview/pull/1280 [1283]: https://github.com/box/box-content-preview/pull/1283 [1284]: https://github.com/box/box-content-preview/pull/1284 [1275]: https://github.com/box/box-content-preview/pull/1275 [1278]: https://github.com/box/box-content-preview/pull/1278 [1276]: https://github.com/box/box-content-preview/pull/1276 [1277]: https://github.com/box/box-content-preview/pull/1277 [1274]: https://github.com/box/box-content-preview/pull/1274 ## Simplified App Creation Flow A new, simplified app creation flow is now available in the Box [Developer Console](https://app.box.com/developers/console). The three types of applications are Custom Apps, Limited Access Apps, and Box Custom Skills. We added plain language to describe exactly when to select each app type and links to relevant documentation if you require additional information to help with your selection. The application type you select impacts which authentication methods are available. Most notably, is our new app type, Limited Access Apps. Select this app type if you'd like to leverage [Box View](/guides/embed/box-view/) or Box's preview services within another application. This app type only provides access to [app token authentication](/guides/authentication/app-token/), which has [restricted API capabilities](/guides/authentication/app-token/endpoints/). For full details, please visit our [guide](/guides/applications/app-types/select/) on selecting an app type. ## Box CLI v2.7.0 released ### New Features and Enhancements * Make commands `collaborations:add`, `shared-links:update`, `shared-links:delete`, `users:search` that were previously hidden, now available ([#211][1]) * Add `filter_term` parameter to `groups:list` ([#210][2]) ### Bug Fixes * Fix bug with setting proxy settings ([#213][3]) [1]: https://github.com/box/boxcli/issues/211 [2]: https://github.com/box/boxcli/issues/210 [3]: https://github.com/box/boxcli/issues/213 ## Box Node SDK v1.35.0 released ### New Features and Enhancements * Add support for search parameter to get shared link items ([#547][1]) [1]: https://github.com/box/box-node-sdk/issues/547 ## Box Java SDK v2.51.0 released ### New Features and Enhancements * Add support for `copyInstanceOnItemCopy` field for metadata templates ([#850][1]) * Add support for more fields in `BoxCollaborator.Info` ([#843][2]) ### Bug Fixes * Update `getAllGroupsByName()` to use documented parameter ([#851][3]) [1]: https://github.com/box/box-java-sdk/pull/850 [2]: https://github.com/box/box-java-sdk/pull/843 [3]: https://github.com/box/box-java-sdk/pull/851 ## New Folder Lock APIs now available A new collections of APIs have been released to allow developers to lock move and delete operations on folders. New [API reference][e_post] and [guides][g_post] have been made available to help create and manage you folder locks. To create a lock on a folder to prevent it from being moved or deleted, supply the ID of a folder to the `folder_locks` endpoint. ```curl theme={null} curl -i -X POST "https://api.box.com/2.0/folder_locks" \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{ "folder": { "type": "folder", "id": "33552487093" } }' ``` Additional API endpoints are available to allow a developer to list all locks on a given folder, or to delete an existing folder lock with a folder lock ID. * **Create a folder lock**: [Guide][g_post] | [API Reference][e_post] * **List all locks on a folder**: [Guide][g_get] | [API Reference][e_get] * **Delete a folder lock**: [Guide][g_del] | [API Reference][e_del] [e_get]: /reference/get-folder-locks [e_post]: /reference/post-folder-locks [e_del]: /reference/delete-folder-locks-id [g_get]: /guides/folders/single/get-locks [g_post]: /guides/folders/single/create-lock [g_del]: /guides/folders/single/delete-lock ## New Folder Lock APIs now available A new collections of APIs have been released to permit the restriction of move and delete actions on folders. New [API reference][e_post] and [guides][g_post] have been made available to help create and manage you folder locks. To create a lock on a folder to prevent it from being moved or deleted, supply the ID of a folder to the `POST /folder_locks/` endpoint. ```curl theme={null} curl -i -X POST "https://api.box.com/2.0/folder_locks" \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{ "folder": { "type": "folder", "id": "33552487093" } }' ``` Additional API endpoints are available to allow a developer to list all locks on a given folder, or to remove an existing folder lock from a folder. * **Create a folder lock**: [Guide][g_post] | [API Reference][e_post] * **List all locks on a folder**: [Guide][g_get] | [API Reference][e_get] * **Remove a folder lock**: [Guide][g_del] | [API Reference][e_del] [e_get]: /reference/get-folder-locks [e_post]: /reference/post-folder-locks [e_del]: /reference/delete-folder-locks-id [g_get]: /guides/folders/single/get-locks [g_post]: /guides/folders/single/create-lock [g_del]: /guides/folders/single/delete-lock ## Metadata Cascade Policies API leaves Beta The [Metadata Cascade Policies API][mdc_api] is now generally available to all and no longer in Beta. Over the past years, we've made a lot of technical improvements to our metadata infrastructure and we're happy to announce that we've now gotten to the moment where the Metadata Cascade Policies API is leaving Beta. This release does not involve any breaking changes and any existing application should not see any impact from this release. Since we initially launched, Metadata Cascade Policies has become over 10 times faster when applying metadata to new instances. Additionally, we've also made significant strides in reliability and observability to ensure a top-notch API experience, in line with the rest of our API suite. For more details about metadata, and metadata cascade policies, please visit the [Metadata guides][guides] and our dedicated [Metadata Cascade Policies][mdc_api] reference documentation. [mdc_api]: /reference/post-metadata-cascade-policies [guides]: /guides/metadata ## Box Windows SDK v3.25.0 released ### New Features and Enhancements * Add support for filtering when getting Groups ([#703][1]) * Add zip functionality ([#700][2]) * Deprecate one of the overloaded `ExecuteMetadataQueryAsync()` methods ([#699][3]) * Add support for `copyInstanceOnItemCopy` field for metadata templates ([#698][4]) ### Bug Fixes * Fix bug with JWT Authentication automatic retry ([#697][5]) [`www.nuget.org/packages/Box.V2/3.25.0`][6] [`www.nuget.org/packages/Box.V2.Core/3.25.0`][7] [1]: https://github.com/box/box-windows-sdk-v2/issues/703 [2]: https://github.com/box/box-windows-sdk-v2/issues/700 [3]: https://github.com/box/box-windows-sdk-v2/issues/699 [4]: https://github.com/box/box-windows-sdk-v2/issues/698 [5]: https://github.com/box/box-windows-sdk-v2/issues/697 [6]: https://www.nuget.org/packages/Box.V2/3.25.0 [7]: https://www.nuget.org/packages/Box.V2.Core/3.25.0 ## Search API adds support for Shared Links The [Search API][endpoint] now supports returning files, folders and web links that the user has recently accessed through a shared link. Shared items can be requested by calling the [`GET /search`][endpoint] API with the new `include_recent_shared_links` query parameter set to `true`. ```sh theme={null} curl -i -X GET https://api.box.com/2.0/search?query=Contract&include_recent_shared_link=true ``` By default, the API won't return any shared items if this query parameter is not provided or not set to true. ## Change in response format When `include_recent_shared_links` is set to `true`, the response has slightly changed to allow for the additional information to be returned. Rather than returning a direct list of files, folders, and web links the API now returns a list of objects containing an `item` and an `accessible_via_shared_link` property. ```json theme={null} { "entries": [ { "item": { "id": 12345, "etag": 1, "type": "file", "sequence_id": 3, "name": "Contract.pdf", ... }, "accessible_via_shared_link": "https://www.box.com/s/vspke7y05sb214wjokpk" } ... ], "limit": 1000, "offset": 2000, "total_count": 5000 } ``` ```json theme={null} { "entries": [ { "id": 12345, "etag": 1, "type": "file", "sequence_id": 3, "name": "Contract.pdf", ... }, ... ], "limit": 1000, "offset": 2000, "total_count": 5000 } ``` This change in response format should not impact any existing applications as it only applies to any API call made with the new query parameter. [endpoint]: /reference/get-search ## Box Node SDK v1.34.3 released ### Bug Fixes * Upgrade `ajv` dependency ([#545][1]) [1]: https://github.com/box/box-node-sdk/issues/545 ## New File Request APIs available A new collection of APIs are now available that allows developers to create and update File Requests. We've updated the [reference documentation][copy] and added [new guides][guides] to help you manage your file requests. To create a copy of an existing file request, all you need is the unique ID of an existing file request, and the ID of the folder to apply the new request to. ```curl theme={null} curl -i -X POST "https://api.box.com/2.0/file_requests/42037322/copy" \ -H "Authorization: Bearer " \ -d '{ "folder": { "id": "2233212" } }' ``` Additional APIs are available that allow a developer to get more details about a file request, update a file request, and delete a file request. For more details, please check out the developer documentation. * **Create a template file request**: [Guide][g_template] * **Create a copy of a file request**: [Guide][g_copy] | [API Reference][copy] * **Get information about a file request**: [Guide][g_get] | [API Reference][get] * **Update a file request's configuration**: [Guide][g_put] | [API Reference][put] * **Delete a file request**: [Guide][g_del] | [API Reference][del] [copy]: /reference/post-file-requests-id-copy [get]: /reference/get-file-requests-id [del]: /reference/delete-file-requests-id [put]: /reference/put-file-requests-id [guides]: /guides/file-requests [g_template]: /guides/file-requests/template [g_copy]: /guides/file-requests/copy [g_get]: /guides/file-requests/get [g_del]: /guides/file-requests/delete [g_put]: /guides/file-requests/update ## Box Python SDK v2.10.0 released ### New Features and Enhancements * Add support for `copyInstanceOnItemCopy` field for metadata templates ([#546][1]) * Allow creating tasks with the `action` and `completion_rule` parameters ([#544][2]) * Add Zip functionality ([#539][3]) ### Bug Fixes * Fix bug with updating a collaboration role to owner ([#536][4]) * Allow `ints` to be passed in as item IDs ([#530][5]) [1]: https://github.com/box/box-ios-sdk/pull/546 [2]: https://github.com/box/box-ios-sdk/pull/544 [3]: https://github.com/box/box-ios-sdk/pull/539 [4]: https://github.com/box/box-ios-sdk/pull/536 [5]: https://github.com/box/box-ios-sdk/pull/530 ## Change to OAuth 2 app redirect URI requirements On October 29th, 2020, Box will begin employing stricter requirements for redirect URIs used within new and existing [OAuth 2](/guides/authentication/oauth2/)-based Box integrations that may affect your application. Existing application owners that currently use a blank redirect URI in their application configuration, as [described here](/guides/authentication/oauth2/oauth2-setup/#redirect-uri), will need to update the redirect URI to match the redirect used within the code redirect step, [described here](/guides/authentication/oauth2/with-sdk/#2-redirect-user). On October 29th, 2020, applications that are still configured with a blank URI will begin returning an error when the user is redirected back to your application if URI adjustments aren't made. All impacted application owners and collaborators have been notified via the email address associated with their developer account. ## How to validate and make the change To validate your redirect URI and update your application(s) if they are affected, take the following steps: * Go to the [Box developer console](https://cloud.app.box.com/developers/console) as the user who owns the application(s). * For each **Custom App** using **OAuth 2** (client-side authentication) click on the application to open it. * From the left navigation, click on **Configuration**. * Scroll down to the **OAuth 2.0 Redirect URI** section.  * For any application where this URI is blank, add the URI that is being used in the application code when redirecting the user back to your application from the Box auth step, [as is described in this guide](/guides/authentication/oauth2/with-sdk/#2-redirect-user). ## Search API adds support for Shared Links The [Search API][endpoint] now supports returning files, folders and web links that the user has recently accessed through a shared link. Shared items can be requested by calling the [`GET /search`][endpoint] API with the new `include_recent_shared_links` query parameter set to `true`. ```sh theme={null} curl -i -X GET https://api.box.com/2.0/search?query=Contract&include_recent_shared_link=true ``` By default, the API won't return any shared items if this query parameter is not provided or not set to true. ## Change in response format When `include_recent_shared_links` is set to `true`, the response has slightly changed to allow for the additional information to be returned. Rather than returning a direct list of files, folders, and web links the API now returns a list of objects containing an `item` and an `accessible_via_shared_link` property. ```json theme={null} { "entries": [ { "item": { "id": 12345, "etag": 1, "type": "file", "sequence_id": 3, "name": "Contract.pdf", ... }, "accessible_via_shared_link": "https://www.box.com/s/vspke7y05sb214wjokpk" } ... ], "limit": 1000, "offset": 2000, "total_count": 5000 } ``` ```json theme={null} { "entries": [ { "id": 12345, "etag": 1, "type": "file", "sequence_id": 3, "name": "Contract.pdf", ... }, ... ], "limit": 1000, "offset": 2000, "total_count": 5000 } ``` This change in response format should not impact any existing applications as it only applies to any API call made with the new query parameter. [endpoint]: /reference/get-search ## Group API adds new filter and permissions The [`GET /groups`](/reference/get-groups) API now supports filtering groups by name using a new `filter_term` field. ```curl theme={null} curl -i -X GET "https://api.box.com/2.0/groups?filter_term=Engineering" \ -H "Authorization: Bearer " ``` Additionally, all the Group endpoints now allow a developer to request a new [`permissions`](/reference/resources/group--full/#param-permissions) field, which currently has one attribute defining if the authenticated user can invite the group to any item. ```curl theme={null} curl -i -X GET "https://api.box.com/2.0/groups?field=permissions" \ -H "Authorization: Bearer " ``` ```json theme={null} { "total_count": 1, "entries": [ { "type": "group", "id": "223353242", "permissions": { "can_invite_as_collaborator": true } } ], "limit": 100, "offset": 0 } ``` For more details about how to work with groups, please visit the [`Group API documentation`](/reference/get-groups). ## New multiSelect metadata support in search API Starting today, the [Search API][search] adds support for matching items by multiple values of a [`multiSelect` metadata field][multi_select]. Before this change, it was not possible to find items by the value of a `multiSelect` field. To perform a search for items where a metadata field matches multiple values, the `mdfilters` parameter now supports a list of values. ```curl theme={null} curl -G 'https://api.box.com/2.0/search' \ -H 'Authorization: Bearer ' \ -d 'mdfilters=[{"scope":"enterprise_12345","templateKey":"contractInfo","filters":{"products":["shield","platform"]}}]' ``` In this example, the `mdfilters` query parameter contains one filter with a `scope`, a `templateKey`, and a set of `filters`. Here is the same filter in a more readable format. ```json theme={null} [ { "scope": "enterprise_12345", "templateKey": "contractInfo", "filters": { "products": [ "shield", "platform" ] } } ] ``` What is new here is that the `products` filter now performs a match on multiple values, only returning files and folders for which the template has a `products` value of either `shield` or `platform`. The value of the field can contain multiple values and only match on one of the values specified in the filter. For example `["shield", "governance"]` will be a match for the filter `["shield", "platform"]` as `shield` is included in the filter. [search]: /reference/get-search [multi_select]: /guides/metadata/fields/multi-select ## Box CLI v2.6.0 released [CHANGELOG][1] * Add zip functionality ([#203][2]) [`1953639`][3] * Add proxy support for `http`, `https`, `socks` and `pac` protocols. Proxy settings can be found under `box configure:settings` ([#202][4]) [`21671c8`][5] * Fix filename issue when saving reports on Windows ([#195][6]) [`31853d3`][7] [https://github.com/box/boxcli/compare/v2.5.1...v2.6.0][8] [1]: https://github.com/box/boxcli/blob/master/CHANGELOG.md#260-2020-08-20 [2]: https://github.com/box/boxcli/issues/203 [3]: https://github.com/box/boxcli/commit/1953639fe78def22e9c9d392e784577fc089f842 [4]: https://github.com/box/boxcli/issues/202 [5]: https://github.com/box/boxcli/commit/21671c854a3fe835eb46df6e640fa2237d23a313 [6]: https://github.com/box/boxcli/issues/195 [7]: https://github.com/box/boxcli/commit/31853d30e9e20a1dc6967a8277fa38165ca671f4 [8]: https://github.com/box/boxcli/compare/v2.5.1...v2.6.0 ## Box Node SDK v1.34.2 released * Make iterator bug fix for uploading files non breaking ([#534][1]) [`b0baa18`][2] [https://github.com/box/box-node-sdk/compare/v1.34.1...v1.34.2][3] [1]: https://github.com/box/box-node-sdk/issues/534 [2]: https://github.com/box/box-node-sdk/commit/b0baa18ef6d9dab99fd1db5b898d2cce46e5521d [3]: https://github.com/box/box-node-sdk/compare/v1.34.1...v1.34.2 ## Box Java SDK v2.50.1 released Fix bug that occurred when downscoping a token for a Box folder ([#832][1]) [1]: https://github.com/box/box-java-sdk/issues/832 ## Box Node SDK v1.34.1 released * Fix iterator bug for uploading new file versions ([#531][1]) [`69b1387`][2] [https://github.com/box/box-node-sdk/compare/v1.34.0...v1.34.1][3] [1]: https://github.com/box/box-node-sdk/issues/531 [2]: https://github.com/box/box-node-sdk/commit/69b138746c64ac8ee68b421853ca9ff4cc28531e [3]: https://github.com/box/box-node-sdk/compare/v1.34.0...v1.34.1 ## Box Node SDK v1.34.0 released * Add zip functionality ([#525][1]) [`2f89357`][2] * Add proxy support for HTTP, HTTPS, SOCKS and PAC protocols ([#529][3]) [`b08cc24`][4] [https://github.com/box/box-node-sdk/compare/v1.33.0...v1.34.0][5] [1]: https://github.com/box/box-node-sdk/issues/525 [2]: https://github.com/box/box-node-sdk/commit/2f893577fd06dcac449ac9bfeb72cd76e1e839ae [3]: https://github.com/box/box-node-sdk/issues/529 [4]: https://github.com/box/box-node-sdk/commit/b08cc24f240075fb24d9e5827f50ec9e26eeebc8 [5]: https://github.com/box/box-node-sdk/compare/v1.33.0...v1.34.0 ## Updates to Search Relevance & Performance In January, updates were released to Box's search [tokenizer][wiki-tokenizer], improving the relevancy of search results and performance. This change does not effect how metadata is tokenized. Notable changes to the API-initiated searches include: * The ability to use "[stop words][wiki-stop-words]", for example "the", "is" "at", "which", and "on". * Improved Japanese text tokenization and improved search results. See the [full-text search][search_guide] documentation for more information on how to search using Box's API. [wiki-stop-words]: https://en.wikipedia.org/wiki/Stop_words [wiki-tokenizer]: https://en.wikipedia.org/wiki/Lexical_analysis#Tokenization [search_guide]: /guides/search ## New Zip Download APIs available A new collection of APIs are now available that allows developers to create a Zip file containing a specified list of files and folders. We've updated the reference documentation for this [Zip Download API][zip_downloads_api]. SDK support for these new endpoints is currently in development and scheduled to be released in the next 3 months. [zip_downloads_api]: /reference/post-zip-downloads ## Box Java SDK v2.50.0 released 1. Add retries on request creation errors ([#828][1]) [1]: https://github.com/box/box-java-sdk/issues/828 ## Box Windows SDK v3.24.0 released See [Changelog][1] for details. Commits: [https://github.com/box/box-windows-sdk-v2/compare/v3.23.0...v3.24.0][2] [`nuget.org/packages/Box.V2/3.24.0`][3] [`nuget.org/packages/Box.V2.Core/3.24.0`][4] [1]: https://github.com/box/box-windows-sdk-v2/blob/master/CHANGELOG.md#3240-2020-07-21 [2]: https://github.com/box/box-windows-sdk-v2/compare/v3.23.0...v3.24.0 [3]: https://www.nuget.org/packages/Box.V2/3.24.0 [4]: https://www.nuget.org/packages/Box.V2.Core/3.24.0 ## Box Java SDK v2.49.0 released 1. Add `fields` parameter for metadata query ([#826][1]) 2. Add zip functionality ([#825][2]) 3. Fix bug with setting the unshared at date for a shared link ([#819][3]) [1]: https://github.com/box/box-java-sdk/issues/826 [2]: https://github.com/box/box-java-sdk/issues/825 [3]: https://github.com/box/box-java-sdk/issues/819 ## Change to enterprise events for content access Starting today, the [enterprise event stream](/guides/events/enterprise-events/for-enterprise/) will begin producing new content access events. A new `CONTENT_ACCESS` event is triggered when a file was accessed by an authorized user or programmatically by a Box application. See the [enterprise events](/guides/events/enterprise-events/for-enterprise/) documentation for more information on other event types. ## Changes to Metadata Query API syntax The [Metadata Query API][g_mdq_api] has been updated to **require explicitly defined response fields**. [g_mdq_api]: /guides/metadata/queries ```curl theme={null} curl -X POST https://api.box.com/2.0/metadata_queries/execute_read \ -H 'Authorization: Bearer " ' -H 'Content-Type: application/json' -d '{ "from": "enterprise_123456.customerInfo", "query": "tav >= :value", "query_params": { "value": 200000 }, "fields": [ "name", "metadata.enterprise_123456.customerInfo.tav" ], "ancestor_folder_id": "0" }' ``` Additionally, **the response format now returns a list of items** rather than a list of query results. Any metadata is now nested within the item, rather than listed side-by-side with the item. Only fields specified in the `field` array - as well as any base fields - are returned in the response. ```json theme={null} { "entries": [{ "id": "394384323", "type": "file", "etag": 1, "name": "Contract.pdf", "metadata": { "enterprise_123456": { "customerInfo": { "$parent": "folder_12345,", "$scope": "enterprise_123456", "$template": "customerInfo", "$version": 1, "tav": 1000000 } } } }] } ``` ## Legacy syntax For reference, the API would previously return all standard fields for an item as well as the matched metadata. ```curl theme={null} curl -X POST https://api.box.com/2.0/metadata_queries/execute_read \ -H 'Authorization: Bearer " ' -H 'Content-Type: application/json' -d '{ "from": "enterprise_123456.customerInfo", "query": "tav >= :value", "query_params": { "value": 200000 }, "ancestor_folder_id": "0" }' ``` The response body previously returned the items as a list of entries, each containing an `item` and a `metadata` instance. ```json theme={null} { "entries":[ { "item":{ "type":"file", "id":"394384323", "name": "Contract.pdf", "file_version":{ "type":"file_version", "id":"33482348", "sha1":"69888bb1bff455d1b2f8afea75ed1ff0b4879bf6" }, ... }, "metadata":{ "enterprise_123456":{ "customerInfo":{ "tav": 1000000, "$id": "01234500-12f1-1234-aa12-b1d234cb567e", "$parent": "folder_12345,", "$scope": "enterprise_123456", "$template": "customerInfo", "$type": "customerInfo-6bcba49f-ca6d-4d2a-a758-57fe6edf44d0", "$typeVersion": 2, "$version": 1, "$canEdit": true } } } }, ... ], "limit": 20, "next_marker":"AAAAAmVYB1FWec8GH6yWu2nwmanfMh07IyYInaa7DZDYjgO1H4KoLW29vPlLY173OKsci6h6xGh61gG73gnaxoS+o0BbI1/h6le6cikjlupVhASwJ2Cj0tOD9wlnrUMHHw3/ISf+uuACzrOMhN6d5fYrbidPzS6MdhJOejuYlvsg4tcBYzjauP3+VU51p77HFAIuObnJT0ff" } ``` This legacy syntax **will still be available for any existing Metadata Query API users only**. The legacy syntax will be turned off When all existing customers have been migrated over to the new syntax. ## Box Node SDK v1.33.0 released * Add path parameter sanitization ([#505][1]) [`46b780a`][2] * Add support for all streams for uploading files ([#519][3]) [`93a27ec`][4] [https://github.com/box/box-node-sdk/compare/v1.32.0...v1.33.0][5] [1]: https://github.com/box/box-node-sdk/issues/505 [2]: https://github.com/box/box-node-sdk/commit/46b780a577999262f09f167c577471275c066609 [3]: https://github.com/box/box-node-sdk/issues/519 [4]: https://github.com/box/box-node-sdk/commit/93a27ec8a5cdf4cb23d16d322e1e884913472239 [5]: https://github.com/box/box-node-sdk/compare/v1.32.0...v1.33.0 ## Box Java SDK v2.48.0 released `v2.48.0` 1. Add ability to get groups by name with fields option ([#789][1]) 2. Add shared link downscoping ([#785][2]) 3. Deprecate the use of float for Metadata values, in preference of the underlying value (double) ([#811][3]) 4. Add iterator support for group collaborations ([#813][4]) 5. Add ability to set the filename when uploading a new version of a file ([#810][5]) 6. Add support for the classification field for Files and Folders ([#809][6]) 7. Add support for setting Tracking Codes ([#766][7]) 8. Fix issue for `getIsExternallyOwned()` for Files and Folders ([#808][8]) [1]: https://github.com/box/box-java-sdk/issues/789 [2]: https://github.com/box/box-java-sdk/issues/785 [3]: https://github.com/box/box-java-sdk/issues/811 [4]: https://github.com/box/box-java-sdk/issues/813 [5]: https://github.com/box/box-java-sdk/issues/810 [6]: https://github.com/box/box-java-sdk/issues/809 [7]: https://github.com/box/box-java-sdk/issues/766 [8]: https://github.com/box/box-java-sdk/issues/808 ## Box Python SDK v2.9.0 released * Fix exception handling for OAuth * Fix path parameter sanitization ## Change to enterprise events for tasks Starting today, the [enterprise event stream](/guides/events/enterprise-events/for-enterprise/) will begin producing new task and task assignment events, and some existing task events will return additional fields. ## New events * A new `TASK_UPDATE` event is triggered when a task is updated * A new `TASK_ASSIGNMENT_DELETE` event is triggered when a task is unassigned from a user ## Updated events ### Changes to `TASK_CREATE` When a task is created, the event now includes the task's ID (`task.id`), the ID of the user who created the task (`task.created_by.id`), the task's description (`task.message`), and the optional due date of the task (`task.due_date`) within the `additional_details` object. ```json theme={null} "additional_details": { "task": { "id": "1234567", "due_at": "2020-07-06T10:49:44-07:00", "message": "task description", "created_by": { "id": 123456, "login": "email@example.com" }, ... } } ``` ### Changes to `TASK_ASSIGNMENT_CREATE` and `TASK_ASSIGNMENT_UPDATE` When a task assignment is created or updated, the event now includes the task's ID (`task.id`), the ID of the assigned user (`task_assignment.assigned_to.id`) and their login (`task_assignment.assigned_to.login`), the task's description (`task.message`), and the optional due date of the task (`task.due_date`) within the `additional_details` object. ```json theme={null} "additional_details": { "task": { "id": "1234567", "created_by": { "id": 12345, "login": "email@example.com" } }, "task_assignment": { "assigned_to": { "id": 12346, "login": "email+2@example.com" }, "status": "NOT_STARTED", "message": "assignee message" }, ... } ``` See the [enterprise events](/guides/events/enterprise-events/for-enterprise/) documentation for more information on other event types. ## Box iOS SDK v4.1.0 released **Breaking Changes:** **New Features and Enhancements:** * Add ability to cancel uploads and downloads * Add support for the uploader display name field for Files and File Versions * Add support for the classification field for Files and Folders * Add path parameter sanitization **Bug Fixes:** * Fix logging of API responses ## Windows .NET SDK v3.23.0 released See [Changelog](https://github.com/box/box-windows-sdk-v2/blob/master/CHANGELOG.md#3230-2020-05-12) for details Commits: [`v3.22.0...v3.23.0`](https://github.com/box/box-windows-sdk-v2/compare/`v3.22.0...v3.23.0`) [`nuget.org/packages/Box.V2/3.23.0`](https://www.nuget.org/packages/Box.V2/3.23.0) [`nuget.org/packages/Box.V2.Core/3.23.0`](https://www.nuget.org/packages/Box.V2.Core/3.23.0) ## New shield alert events As of today, [Box Shield][box-shield] will begin producing new security events within the [enterprise event stream](/guides/events/enterprise-events/for-enterprise/) for Shield customers who are configured to listen for the new events. The possible incident events produced by Shield are: * Suspicious locations * Suspicious sessions * Anomalous download * Malicious content See the [shield alert events](/guides/events/event-triggers/shield-alert-events/) documentation for more information on the payloads produced within these events. [box-shield]: https://www.box.com/shield ## Python SDK v2.8.0 released * Added support for token exchange using shared links * Added the ability to pass in a SHA1 value for file uploads ## New classification field for Files A new optional field has been made available within the `Field` object, `classification`. This field represents the classification that is currently applied to a file. The classification can be requested via any endpoint that returns a file, like the [Get file information](/reference/get-files-id) and supports [requesting additional `fields`](/guides/api-calls/request-extra-fields). ```js theme={null} { "id": "123456789", "type": "file", "etag": "1", "classification": {        "name": "Top Secret",        "definition": "Content that should not be shared outside the company.", "color": "#FF0000" }, ... } ``` The classification can be set through the API, Box Shield, or by a user using the web application. ## Java SDK v2.47.0 released 1. Fix path parameter sanitization ([#797](https://github.com/box/box-java-sdk/pull/797)) 2. Add support for the uploader display name field for Files and File version ([#791](https://github.com/box/box-java-sdk/pull/791)) ## Add new uploader\_display\_name field to file and file versions A new field, `uploader_display_name` has been added to both file and file version resources. This field provides the name of the user at the time of upload. ```json theme={null} { ... "uploader_display_name": "Ellis Wiggins" } ``` This field can be requested on any of the file and file version endpoints by providing the `fields` query parameter, for example: ```bash theme={null} curl -X GET https://api.box.com/2.0/files/12345?fields=uploader_display_name \ -H 'Authorization: Bearer ' ``` When the file is uploaded by a logged out anonymous, the email of the user is returned instead. If no email is available then the field will default to the text `Someone`. ## New Metadata Query APIs available A new API is now available that allows developers to query files and folders by the metadata attached to them. We've updated the reference documentation for this [Metadata Query API][e_mdq_api], as well as released some brand new [guides][g_mdq_api] and an update to the [metadata quick start guide][qs_mdq_api]. [e_mdq_api]: /reference/post-metadata-queries-execute-read [g_mdq_api]: /guides/metadata/queries [qs_mdq_api]: /guides/metadata/quick-start ## Box CLI v2.5.1 released [CHANGELOG](https://github.com/box/boxcli/blob/master/CHANGELOG.md#251-2020-04-14) * Added `--quiet` flag to suppress any non-error output to `stderr` ([#167](https://github.com/box/boxcli/pull/167)) [`27045c6`](https://github.com/box/boxcli/commit/27045c6) * Fixed a bug for the `--restrict-collaboration` flag for `box folders:update` where previously the flag would not restrict the collaborations when passed as true and would restrict collaborations when passed as false ([#175](https://github.com/box/boxcli/pull/175)) [`e6e1120`](https://github.com/box/boxcli/commit/e6e1120) * Added `box trash:restore` to restore a trashed item and `box trash:get` to get information on a trashed item ([#179](https://github.com/box/boxcli/pull/179)) [`74db947`](https://github.com/box/boxcli/commit/74db947) * Fixed a bug where flags that can be specified multiple times in a single command could not be passed through the command line for bulk commands ([#183](https://github.com/box/boxcli/pull/183)) [`63db0ac`](https://github.com/box/boxcli/commit/63db0ac) * **Note**: Skipped version 2.5.0 due to development of new release process [`v2.4.0...v2.5.1`](https://github.com/box/boxcli/compare/`v2.4.0...v2.5.1`) ## Java SDK v2.46.0 released 1. Fix retry logic ([#787](https://github.com/box/box-java-sdk/pull/787)) 2. Add path parameter sanitization ([#790](https://github.com/box/box-java-sdk/pull/790)) 3. Add ability to set expiration date for a collaboration ([#788](https://github.com/box/box-java-sdk/pull/788)) ## Java SDK v2.45.0 released 1. Add preflight check before chunked uploads ([#782](https://github.com/box/box-java-sdk/pull/782)) 2. Check that part was successfully uploaded for large file uploads… ([#781](https://github.com/box/box-java-sdk/pull/781)) 3. Fix bug with unexpected disconnect in File Rename ([#779](https://github.com/box/box-java-sdk/pull/779)) 4. Return metadata for each item returned by a metadata query ([#778](https://github.com/box/box-java-sdk/pull/778)) ## Node SDK v1.32.0 released * Temporarily removed Node 4 and Node 5 builds from Travis, due to tests not passing. Will investigate, going forward ([#495](https://github.com/box/box-node-sdk/pull/495)). [`dc558e9`](https://github.com/box/box-node-sdk/commit/dc558e9) * Fixed an issue where an error is thrown during a retry when a response is not returned by the previous call ([#477](https://github.com/box/box-node-sdk/pull/477)). [`f1b3449`](https://github.com/box/box-node-sdk/commit/f1b3449) * Added the ability to [query](./docs/metadata.md#query) Box items based on their metadata ([#487](https://github.com/box/box-node-sdk/pull/487)). [`6f08931`](https://github.com/box/box-node-sdk/commit/6f08931) [`v1.31.0...v1.32.0`](https://github.com/box/box-node-sdk/compare/`v1.31.0...v1.32.0`) ## Potential impactful changes to format of Metadata date fields As part of ongoing improvements to our Metadata infrastructure we will be rolling out three potential impactful changes to the format of `date` fields in metadata templates. These changes make the format our API returns more consistent between API calls. The first change affects the usage of time zone offsets in dates. Previously, the API would inconsistently return dates with and without timezone offsets if a date was set to include one. From now on all dates are converted to UTC / Zulu-time, removing the timezone offset. For example: * Assume a date was set to `2020-02-20T12:00:00.000-01:00` * Previously the API would return `2020-02-20T12:00:00.000-01:00` (the original value) or `2020-02-20T13:00:00.000Z` (the UTC adjusted value) * From now on it will always return `2020-02-20T13:00:00.000Z` (the UTC adjusted value) The second change affects the sub-second precision of dates returned by the metadata API. Previously, the API would return values with 0 to 3 digits of sub-second precision. From now on Box will always return metadata date-time values with millisecond precision. For example: * Previously the API might return `2020-02-20T12:00:00Z`, `2020-02-20T12:00:00.0Z`, `2020-02-20T12:00:00.00Z`or `2020-02-20T12:00:00.000Z` * From now on it will always return `2020-02-20T12:00:00.000Z` The final change affects the usage of the [`test`](g/metadata/instances/update/#Test-a-value) operation when updating a metadata instance. Previously the test would compare the date-time values using the literal string value. After this update they are compared using their UNIX timestamp in milliseconds. For example: * Previously `2020-01-21T19:20:00.123-08:00` would not be equivalent to `2020-01-22T03:20:00.123Z` * From now on `2020-01-21T19:20:00.123-08:00` is equivalent to `2020-01-22T03:20:00.123Z` ## How this can affect an application Any application that implements `RFC3339`-compliant date-time parsing will not need to perform any action as these are all valid `RFC3339` values representing the same dates. Any application that does not implement `RFC3339` compliant date-time parsing should be updated to do so. All official Box SDKs support `RFC3339`-compliant date-time parsing, so any application using an up-to-date version of an official Box SDK would not require any update. ## What do if this affected your application Roll-out of this change will be performed gradually over the next few weeks. Although the metadata team will be monitoring potential impact, please reach out to your customer success manager or our support channels if you find yourself impacted. ## Change to metadata instance version As part of ongoing improvements to our Metadata infrastructure we will be rolling out a small change to the [`version`](r:/metadata/#param-\$version) value of a metadata Instance. Previously, the version number associated with a metadata instance would be incremented if a field on the associated metadata template was deleted, or if an `enum` field's option was deleted on the associated metadata template. Going forward, these changes will not increment the version number of a metadata instance. This behavior has always been implicit and we recognize that very little value can be derived form to the metadata instance version. Therefore we do not expect this change to have any impact on any of our customers. Regardless, please reach out to your customer success manager or our support channels if you find yourself impacted. ## Windows .NET SDK v3.22.0 Released See [Changelog](https://github.com/box/box-windows-sdk-v2/blob/master/CHANGELOG.md#3220-2020-02-25) for details Commits: [`v3.21.0...v3.22.0`](https://github.com/box/box-windows-sdk-v2/compare/`v3.21.0...v3.22.0`) [`nuget.org/packages/Box.V2/3.22.0`](https://www.nuget.org/packages/Box.V2/3.22.0) [`nuget.org/packages/Box.V2.Core/3.22.0`](https://www.nuget.org/packages/Box.V2.Core/3.22.0) ## Node SDK v1.31.0 released * Fix Authentication Request Retries ([#454](https://github.com/box/box-node-sdk/pull/454)) [`dd3253e`](https://github.com/box/box-node-sdk/commit/dd3253e) * Added marker-based paging for users endpoints ([#461](https://github.com/box/box-node-sdk/pull/461)) [`055cb5b`](https://github.com/box/box-node-sdk/commit/055cb5b) * Added `getNextMarker()` to `PagingIterator` to get the next marker ([#461](https://github.com/box/box-node-sdk/pull/461)) [`055cb5b`](https://github.com/box/box-node-sdk/commit/055cb5b) [`v1.30.0...v1.31.0`](https://github.com/box/box-node-sdk/compare/`v1.30.0...v1.31.0`) ## Java SDK v2.44.1 Released 1. Fix formatting bug for Java Logger ([#775](https://github.com/box/box-java-sdk/pull/775)) 2. Improve date / time parsing for responses ([#772](https://github.com/box/box-java-sdk/pull/772)) ## Box iOS SDK v4.0.0 released **Breaking Changes:** * Change `status` field for task assignments from a String to an Enum * Remove `macOS`, `tvOS`, and `watchOS` support **New Features and Enhancements:** * Make authentication session classes `OAuth2Session`, `SingleTokenSession`, and `DelegatedAuthSession` public ## Preview SDK v2.34.0 released Version `2.34.0` of the Preview SDK has been released. New JavaScript and CSS Preview files have been made available. To adopt new changes, please see the [UI Elements manual installation][ui-elements-manual-install] links for Content Preview. Please see the `v2.34.0` [release notes][preview-2.34-release-notes] for a list of all feature changes. [ui-elements-manual-install]: /guides/embed/ui-elements/installation/#manual-installation [preview-2.34-release-notes]: https://github.com/box/box-content-preview/releases/tag/v2.34.0 ## Python SDK v2.7.1 released * Fixed bug in `_get_retry_request_callable` introduced in release 2.7.0 which caused chunked uploads to fail ## Preview SDK v2.33.1 released Version `2.33.1` of the Preview SDK has been released. New JavaScript and CSS Preview files have been made available. To adopt new changes, please see the [UI Elements manual installation][ui-elements-manual-install] links for Content Preview. Please see the `v2.33.1` [release notes][preview-2.33-release-notes] for a list of all feature changes. [ui-elements-manual-install]: /guides/embed/ui-elements/installation/#manual-installation [preview-2.33-release-notes]: https://github.com/box/box-content-preview/releases/tag/v2.33.1 ## Java SDK v2.44.0 released 1. Fix Authentication Request Retries ([#764](https://github.com/box/box-java-sdk/pull/764)) ## Refreshed Postman Collection & Quick Start The Box Postman collection has been updated with new features and an integrated quick-start guide. Key features include: * An end-to-end [Postman quick-start guide][postman-quick-start-guide] that helps users to install Postman, set up a Box App, and load their API credentials into Postman. * A [restructured Postman collection][postman-collection] for the Box APIs that automatically detects when API credentials have expired and offers integrated solutions for refreshing these credentials when needed. The [legacy Postman collection][legacy-postman-collection] will stay available for the foreseeable future. [postman-quick-start-guide]: /guides/tooling/postman/quick-start [postman-collection]: /guides/tooling/postman/install [legacy-postman-collection]: /guides/tooling/postman ## Python SDK v2.7.0 released * Fixed bug in `get_admin_events` function which caused errors when the optional `event_types` parameter was omitted. * Add marker based pagination for listing users. * Added support for more attribute parameters when uploading new files and new versions of existing files. * Combined preflight check and lookup of accelerator URL into a single request for uploads. * Fixed JWT retry logic so a new JTI claim is generated on each retry. * Fixed bug where JWT authentication requests returned incorrect error codes. * Fixed retry logic so when a Retry-After header is passed back from the API, the SDK waits for the amount of time specified in the header before retrying. ## EOL of Classic Relay API Endpoints As previously communicated on October 18 2019, Classic Relay API endpoints are officially at an end of life state as of today. The following endpoints are affected by this EOL and will now start responding with error responses in applications making requests to them: * Get list of published Relay Classic templates. * Get list of Relay Classic workflows. * Launch a Relay Classic workflow. For any application encountering these error responses, please remove all calls to the Relay Classic APIs listed above. ## Java SDK v2.43.0 released 1. Throw exceptions for `setMetadata` on Files and Folders for non 409 errors ([#762](https://github.com/box/box-java-sdk/pull/762)) ## New Features and Enhancements 1. `SDK-1168` Metadata Query ([#760](https://github.com/box/box-java-sdk/pull/760)) 2. Add marker based pagination for get users methods ([#759](https://github.com/box/box-java-sdk/pull/759)) ## New Features, Enhancements, and Bug Fixes See [Changelog](https://github.com/box/box-windows-sdk-v2/blob/master/CHANGELOG.md#3210) for details Commits: [`v3.20.0...v3.21.0`](https://github.com/box/box-windows-sdk-v2/compare/`v3.20.0...v3.21.0`) [`nuget.org/packages/Box.V2/3.21.0`](https://www.nuget.org/packages/Box.V2/3.21.0) [`nuget.org/packages/Box.V2.Core/3.21.0`](https://www.nuget.org/packages/Box.V2.Core/3.21.0) ## Marker-based Pagination Support for Users API The [Users API](/reference/get-users) now supports [marker-based pagination](/guides/api-calls/pagination/marker-based). Marker-based pagination is an alternative to regular offset-based pagination and provides an alternative way to get users for enterprises with a large volume of users. ## New Features and Enhancements Version `2.29.0` of the Preview SDK has been released. New JavaScript and CSS Preview files have been made available. To adopt new changes, please see the [UI Elements manual installation][ui-elements-manual-install] links for Content Preview. Please see the `v2.29.0` [release notes][preview-2.29-release-notes] for a list of all feature changes. [ui-elements-manual-install]: /guides/embed/ui-elements/installation/#manual-installation [preview-2.29-release-notes]: https://github.com/box/box-content-preview/releases/tag/v2.29.0 ## Box UI elements v11.0.2 released ## [11.0.2][1] (2019-11-26) ### Bug Fixes * **build:** outdated release package ([`991ee17`][2]) [1]: https://github.com/box/box-ui-elements/compare/v11.0.1...v11.0.2 [2]: https://github.com/box/box-ui-elements/commit/991ee17 ## Elements v11.0 Released Box UI Elements version 11.0 has been released. This update includes three major new feature enhancements: * Content Explorer Grid View. * New Tasks Experience within the Preview Sidebar. * Visual Versions for the Preview Sidebar. Updated JavaScript and CSS files links for this release are available within the [UI Elements manual installation instructions][ui-elements-manual-install]. For full information on changes in this release please see the following resources: * [Release notes][elements-11-release-notes] * [Announcement blog post][elements-11-blog] [ui-elements-manual-install]: /guides/embed/ui-elements/installation/#manual-installation [elements-11-release-notes]: https://github.com/box/box-ui-elements/releases/tag/v11.0.0 [elements-11-blog]: https://medium.com/box-developer-blog/announcing-elements-11-88ee900125fd ## New Features and Enhancements * Deprecated Batch API methods ([#433](https://github.com/box/box-node-sdk/pull/433)) [`b06f404`](https://github.com/box/box-node-sdk/commit/b06f404) * Added support for [token exchange](./lib/box-client.js#L495) using shared links ([#398](https://github.com/box/box-node-sdk/pull/398)) [`76aa1cf`](https://github.com/box/box-node-sdk/commit/76aa1cf) [`v1.29.1...v1.30.0`](https://github.com/box/box-node-sdk/compare/`v1.29.1...v1.30.0`) ## New Features and Enhancements Version `2.26.0` of the Preview SDK has been released. New JavaScript and CSS Preview files have been made available. To adopt new changes, please see the [UI Elements manual installation][ui-elements-manual-install] links for Content Preview. Please see the `v2.26.0` [release notes][preview-2.26-release-notes] for a list of all feature changes. [ui-elements-manual-install]: /guides/embed/ui-elements/installation/#manual-installation [preview-2.26-release-notes]: https://github.com/box/box-content-preview/releases/tag/v2.26.0 ## New iOS SDK now available A new major release of the iOS SDK has been released and is now generally available. The new SDK includes a number of major revisions: * Fully rebuilt using Swift. * Support for Cocoapods, Carthage, and the Swift Package Manager. * SDK now maintains full API feature parity. See the [release blog post][ios-sdk-release-blog] for more information. [ios-sdk-release-blog]: https://medium.com/box-developer-blog/the-new-box-ios-sdk-now-available-baf624b289b4 ## Box UI elements v11.0.0 released ## [11.0.0][1] (2019-11-09) ### Bug Fixes * **`activity-feed`:** fix long user names in tasks/comments in Edge ([#1604][2]) ([`572e4d7`][3]) * **`activity-feed`:** Fix version ordering in Activity Feed ([#1272][4]) ([`533c112`][5]) * **`activity-feed`:** refactor inline error for feed items and empty state ([#1697][6]) ([`2702367`][7]) * **`annotation`:** Fix header by adding selector used by box-annotations ([#1637][8]) ([`9302486`][9]) * **`app-activity`:** Remove underscores from resin feature name ([#1456][10]) ([`b7c21e7`][11]) * **`app-activity`:** Update app activity to match comment/task ([#1449][12]) ([`b58aa2f`][13]) * **`arrow-stepper`:** Fix arrow stepper in KeyBinding component ([#1654][14]) ([`a05b015`][15]) * **`avatar`:** fix avatar initials v-alignment ([#1311][16]) ([`23e6d5f`][17]) * **`avatar`:** Fix avatar resolution in activity sidebar ([#1243][18]) ([`88a5f1c`][19]) * **`avatar`:** use derived state instead of effect for URL change ([#1643][20]) ([`f89c138`][21]) * **`bdl`:** Add SCSS check for color variable name ([#1514][22]) ([`a4f446f`][23]) * **`bdl`:** adjust font weights to match normal and bold `lato` ([#1517][24]) ([`35a4070`][25]) * **`beta-feedback`:** update `aria-labelledby` attribute name ([#1249][26]) ([`c164aec`][27]) * **`breadcrumb`:** add missing import ([#1657][28]) ([`fec4735`][29]) * **`button`:** remove horizontal margin from buttons ([#1362][30]) ([`a6989a0`][31]) * **`button`:** revert remove horizontal margin from buttons ([#1362][30]) ([#1400][32]) ([`3ac424c`][33]) * **`classification`:** badge should not have a `tabindex` ([#1622][34]) ([`4ab0c20`][35]) * **`classification`:** Classification badge UX tweaks ([#1378][36]) ([`fa82a8d`][37]) * **`classification`:** classification tooltip not showing in IE11 ([#1710][38]) ([`d08b53c`][39]) * **`classification`:** flow definitions for `onclick` ([#1712][40]) ([`9e620ce`][41]) * **`classification`:** Restoring classification badge icons ([#1390][42]) ([`5db4b3e`][43]) * **`collaborator-avatars`:** add keyboard accessibility ([#1680][44]) ([`baefaed`][45]) * **`collapsible`:** should be pure component ([#1407][46]) ([`5e32c80`][47]) * **`comment`:** Add height to comment area to support multiple mentions ([#1474][48]) ([`e270131`][49]) * **`comment`:** padding and `a11y` adjustments for comment UI ([#1358][50]) ([`927a34a`][51]) * **`comment`:** remove redundant `aria-label` ([#1291][52]) ([`ef48f88`][53]) * **`comment`:** use overlay z-index for confirmation dialog ([#1270][54]) ([`bcf2852`][55]) * **`comments`:** format existing mentions in editor ([#1469][56]) ([`6b82510`][57]) * **`constants`:** explicit type import ([#1584][58]) ([`7d38fb8`][59]) * **`content-explorer`:** `ContentExplorer` and `ContentPicker` can handle sharing web links now ([#1515][60]) ([`55edef7`][61]) * **`content-explorer`:** `MDVGridView` import fixes ([#1333][62]) ([`9740342`][63]) * **`content-explorer`:** rows no longer stuck after closing modal ([#1245][64]) ([`d7f53ff`][65]) * **`content-preview`:** remove deeplink path upon navigation ([#1665][66]) ([`84b4ea4`][67]) * **`content-uploader`:** Disable cancel button when 100% is reached ([#1511][68]) ([`a6de1b0`][69]) * **`content-uploader`:** Fix cancelling task triggers the others to start ([#1653][70]) ([`f35b2ea`][71]) * **`content-uploader`:** Fix duplicate files upload at the same time ([#1652][72]) ([`6faed59`][73]) * **`datetime`:** add missing support for times w/o ms ([#1191][74]) ([`19f3703`][75]) * **`deps`:** downgrade `axios` peer dependency ([#1329][76]) ([`d1a1bd9`][77]) * **`examples`:** change colors to the current box design language ([#1281][78]) ([`94869ad`][79]) * **`explorer`:** fetch shared link on demand ([#1479][80]) ([`2d29628`][81]) * **`feed`:** inline error for deeplinking feed items ([#1655][82]) ([`e2be3bd`][83]) * **`feed`:** Task assignee names not truncating IE11 ([#1694][84]) ([`a20e610`][85]) * **`floatfield`:** always allow trailing `.` for float field ([#1178][86]) ([`61d4e3d`][87]) * **`footer-indicator`:** move tooltip to appear above footer indicator ([`bf7782c`][88]) * **`header-flyout`:** Constraint to window to fix IE11 scroll bug ([#1310][89]) ([`f8bb323`][90]) * **`i18n`:** change "accepted" copy to "approved" ([#1214][91]) ([`674bf45`][92]) * **`i18n`:** Fix bug where messages starting with HTML cause an exception ([#1490][93]) ([`73d95b9`][94]) * **`i18n`:** `Param` and `Plural` should not be in the `styleguide.conf` ([#1197][95]) ([`2d34ad4`][96]) * **`i18n`:** use plural format for task assignee message ([#1345][97]) ([`10d6b76`][98]) * **`icons`:** fill in background for globe icon ([#1226][99]) ([`c91d320`][100]) * **`icons`:** fix collections icons for left navigation usability ([#1238][101]) ([`9e91115`][102]) * **`icons`:** give collections Icons SUIT classNames ([#1242][103]) ([`3b62245`][104]) * **`icons`:** update retry and public icon ([#1297][105]) ([`bfa075a`][106]) * **`icons`:** update trash, move/copy, add, download, upload, collections ([#1702][107]) ([`b126ecb`][108]) * **`icons`:** updating add icon style and adding hidden eye icon ([#1266][109]) ([`b47e22e`][110]) * **`iconworkflow`:** make background rectangle same as `viewBox` ([#1241][111]) ([`9e07f2e`][112]) * **`inlinenotice`:** update to box design standard ([#1576][113]) ([`a814657`][114]) * **`item-properties`:** Add `aria-labelledby` to description textarea ([#1229][115]) ([`05d86b1`][116]) * **`left-sidebar`:** add key to drop wrapper for links ([#1299][117]) ([`9c78135`][118]) * **`left-sidebar`:** Adjust margins for loading indicator ([#1545][119]) ([`6ba65c6`][120]) * **`left-sidebar`:** hide toggle icon on medium screen size ([#1344][121]) ([`716fe01`][122]) * **`media`:** increase specificity of Media-button CSS to avoid `.btn-plain` ([#1463][123]) ([`943638d`][124]) * **`mention-selector`:** Fix `hasReceivedFirstInteraction` logic ([#1434][125]) ([`afd94fa`][126]) * **`menu`:** Fix padding for menu item buttons ([#1446][127]) ([`5baeb5b`][128]) * **`menu`:** Menu should only autofocus on mount if visible ([#1175][129]) ([`2ba8a1d`][130]) * **`metadata`:** Show autocomplete for metadata input fields ([#1629][131]) ([`85995cd`][132]) * **`metadata`:** template dropdown scrollbar issue in safari ([#1192][133]) ([`1dc0d99`][134]) * **`metadata-sidebar`:** bind `onApiError` properly ([#1713][135]) ([`50b72f2`][136]) * **`modal`:** move close button after header for better screen reader `a11y` ([#1684][137]) ([`29a1220`][138]) * **`nav-sidebar`:** reduce size of toggle button to fix focus outline ([#1305][139]) ([`9a14ae7`][140]) * **`notifications`:** add accessibility attributes ([#1682][141]) ([`21af355`][142]) * **`open-with`:** better error messaging ([#1489][143]) ([`d3d98a5`][144]) * **`pill-selector`:** Allow copy pasting line separated values ([#1350][145]) ([`7933932`][146]) * **`pill-selector`:** expose `onInput` to catch input ([#1450][147]) ([`48d22a4`][148]) * **`pill-selector`:** UX tweaks ([#1315][149]) ([`e4fdf58`][150]) * **`pill-selector-dropdown`:** disable pills when `PillSelector` is turned off ([#1357][151]) ([`2bf496e`][152]) * **`pill-selector-dropdown`:** fix aria attributes ([#1681][153]) ([`1e0d1ab`][154]) * **`pill-selector-dropdown`:** Fix for pills getting removed on click ([#1367][155]) ([`d67fcfe`][156]) * **`pills`:** Fix vertical centering of pill selector input text ([#1364][157]) ([`d47c69c`][158]) * **`pillselectordropdown`:** support paste from context menu ([#1597][159]) ([`d16b0da`][160]) * **`preview`:** Clean up preview header styles and remove extra borders ([#1484][161]) ([`6c1a363`][162]) * **`quick-search`:** update border radius to follow BDL ([#1439][163]) ([`936f5e0`][164]) * **`radio-group`:** fix radio group by passing the value prop ([#1452][165]) ([`c0c05be`][166]) * **`radio-group`:** pass rest of props to radio input ([#1448][167]) ([`85ca38a`][168]) * **`scripts`:** Build and update all files prior to push ([#1415][169]) ([`e432c47`][170]) * **`scroll-if-needed`:** fix scroll-if-needed on selector dropdown ([#1280][171]) ([`3776dc8`][172]) * **`search`:** Remove rounded corners for `ContentExplorer` search ([#1478][173]) ([`7d9100b`][174]) * **`security`:** Upgrade `axios` to address security vulnerability ([#1228][175]) ([`db26743`][176]) * **`security-badge`:** Fixing `SecurityBadge` flow type ([#1664][177]) ([`ae23f01`][178]) * **`select-field`:** Enable arrow scrolling in select fields ([#1671][179]) ([`9f040f2`][180]) * **`sidebar`:** Add flex-shrink 0 to comment input ([#1359][181]) ([`cd840f4`][182]) * **`sidebar`:** add markup and accessibility to tab list ([#1563][183]) ([`f90a0d7`][184]) * **`sidebar`:** Fix deeplinking for version history sidebar ([#1649][185]) ([`e85e57a`][186]) * **`sidebar`:** Fix sidebar not auto-opening for large viewports ([#1508][187]) ([`dac39ee`][188]) * **`sidebar`:** Limit maximum height of additional tabs in sidebar navigation ([#1557][189]) ([`e7f953e`][190]) * **`sidebar`:** More semantically accessible tabs ([#1236][191]) ([`eb398fc`][192]) * **`sidebar`:** padding on item properties versions ([#1263][193]) ([`853e106`][194]) * **`sidebar`:** removing unwanted parenthesis in empty state ([#1645][195]) ([`824f390`][196]) * **`sidebar`:** Set contaminated state if the sidebar was forced open ([#1366][197]) ([`e71409c`][198]) * **`sidebar`:** Update `flexbox` for Activity Feed Container ([#1341][199]) ([`c5e07b1`][200]) * **`subheader`:** Add logic around grid view ([#1659][201]) ([`7a53050`][202]) * **`task`:** string for task completed rule icon ([#1573][203]) ([`79c3f00`][204]) * **`task-form`:** clear task assignee autocomplete on form submit ([#1605][205]) ([`63efa10`][206]) * **`task-form`:** disallow text input in date picker ([#1540][207]) ([`af49827`][208]) * **`task-form`:** don't disable task form submit button ([#1323][209]) ([`9a4137b`][210]) * **`task-form`:** Update error message when leaving not valued but required field ([#1353][211]) ([`be10f37`][212]) * **`task-new`:** alignment fixes, CSS refactor ([#1312][213]) ([`411c3e9`][214]) * **`task-new`:** fix placement of task status checkmark ([#1321][215]) ([`9f554ff`][216]) * **`task-new`:** Minor visual tweak to add tasks menu ([#1334][217]) ([`95a3c73`][218]) * **`task-new`:** Minor visual tweaks to add tasks menu ([#1328][219]) ([`cf1acf1`][220]) * **`tasks`:** add missing resin component ([#1513][221]) ([`00e9707`][222]) * **`tasks`:** assignee input field interactions ([#1621][223]) ([`dc33967`][224]) * **`tasks`:** comments menu does not appear on activity sidebar in preview ([#1250][225]) ([`be7bc2f`][226]) * **`tasks`:** fix task issues ([#1189][227]) ([`630fd38`][228]) * **`tasks`:** modal closing on resize ([#1603][229]) ([`2cbe014`][230]) * **`tasks`:** prevent resize of assignee avatar ([#1332][231]) ([`4e760f7`][232]) * **`tasks`:** Update copy for task type subtext ([#1627][233]) ([`c788770`][234]) * **`tasks_new`:** add missing resin component ([#1295][235]) ([`dbbf598`][236]) * **`tasks-new`:** Reset selector contacts on modal close ([#1301][237]) ([`f387a9b`][238]) * **`tasks-new`:** show "a prior collaborator" for deleted users ([#1313][239]) ([`c61fa77`][240]) * **`tasks-new`:** task actions are not updating ([#1302][241]) ([`2f88e96`][242]) * **`tasks-new`:** update documents and strings ([#1317][243]) ([`6560b23`][244]) * **`template-dropdown`:** add `onMenuToggle` handler to `TemplateDropdown` ([#1318][245]) ([`2cdfcc4`][246]) * **`text-input`:** looses focus when tooltip toggles ([#1185][247]) ([`8a4c294`][248]) * **`tooltip`:** color contrast and layout fixes ([#1692][249]) ([`1c11770`][250]) * **`unfied-share-modal`:** shared link access levels ([#1647][251]) ([`732a1dd`][252]) * **`unified-share-modal`:** add constraints to modal menus ([#1196][253]) ([`6501413`][254]) * **`unified-share-modal`:** classification in title ([#1453][255]) ([`4ce5a06`][256]) * **`uploader`:** `MultiputUploads` stop hanging in IE11 ([#1283][257]) ([`c49e52f`][258]) * **`uploads`:** cancelling in-progress tasks does not start pending ones ([#1570][259]) ([`dbf115c`][260]) * **`uploads`:** Fix hanging on resuming uploads ([#1695][261]) ([`3da93c8`][262]) * **`uploads`:** Remove logic gate ([#1646][263]) ([`38d10e4`][264]) * **`uploads`:** reset item error after retry ([#1600][265]) ([`0218f10`][266]) * **`uploads`:** resin for canceling uploads ([#1397][267]) ([`16311dc`][268]) * **`user-link`:** allow wrapping of long user names ([#1602][269]) ([`bff49bb`][270]) * **`usm`:** "Link Settings" should not line wrap ([#1674][271]) ([`938c483`][272]) * **`usm`:** Add `itemTypedId` to `onPillCreate` ([#1320][273]) ([`c4149ea`][274]) * **`usm`:** Do not pass `itemTypedID` to `getContactsByEmail` ([#1354][275]) ([`e60b020`][276]) * **`versions`:** Disable prior version preview for watermarked files ([#1405][277]) ([`9a527f2`][278]) * **`versions`:** Display date and name for most relevant version action ([#1568][279]) ([`b68eccd`][280]) * **`versions`:** Fix infinite load due to destroyed API factory ([#1347][281]) ([`95949e2`][282]) * **`versions`:** Fix version groups collapsing prior months/years ([#1365][283]) ([`65d23b9`][284]) * **`versions`:** Improve experience for restored vs promoted versions ([#1631][285]) ([`25d0741`][286]) * **`versions`:** Relax restrictions for watermarked files ([#1342][287]) ([`2487b42`][288]) * **`versions`:** Reload the page when a version is promoted (temporary) ([#1395][289]) ([`de7e74e`][290]) * **`versions`:** Restrict actions and preview for watermarked files ([#1339][291]) ([`fcb390d`][292]) * **`versions`:** Restrict preview for watermarked files ([#1351][293]) ([`93b95c4`][294]) * **`versions`:** Retrieve and use file version permissions for actions ([#1193][295]) ([`9d7567e`][296]) * **`versions`:** Scroll version button into view if selected ([#1276][297]) ([`e0cd7e3`][298]) * **`versions`:** Show server errors without hiding version history ([#1275][299]) ([`ef3b2fd`][300]) * **`versions`:** Update version actions to avoid unnecessary buttons ([#1556][301]) ([`bc9672e`][302]) * **`versions`:** Update version sidebar to use latest retention schema ([#1662][303]) ([`fa66232`][304]) * Adding `Accept-Language` header for `Xhr.js` ([#1368][305]) ([`361d73f`][306]) * show tooltip on hover long text ([#1230][307]) ([`c41dd47`][308]) * slight adjust in check mark alignment ([#1678][309]) ([`cfd055b`][310]) * various form accessibility improvements ([#1688][311]) ([`150cbbe`][312]) * **`versions`:** Update versions restore call to match latest contract ([#1198][313]) ([`2e590d3`][314]) ### chore * **`deps`:** update `react` peer / development dependency ([#1606][315]) ([`1163db5`][316]) * **`formik`:** upgrade to V2 ([#1698][317]) ([`6b9ded9`][318]) ### Code Refactoring * Upgrade `react` and `react-dom` to `v16.8` and refactor Avatar ([#1171][319]) ([`7dd1bdf`][320]), closes [#761][321] * **`deps`:** Upgrade peer dependencies to latest working versions ([#1180][322]) ([`48d711e`][323]) ### Features * **`activity-feed`:** add support for deeplinking tasks and comments ([#1623][324]) ([`52ecdcb`][325]) * **`additional-tabs`:** gray out turned off apps ([#1503][326]) ([`132782d`][327]) * **`avatarinitials`:** move `backgroundColor` into SCSS ([#1585][328]) ([`781a246`][329]) * **`bdl`:** Add script for SCSS `bdl` scoping ([#1546][330]) ([`9bdc1e6`][331]) * **`classification`:** change icon for classify/classification action ([#1520][332]) ([`8eb68b3`][333]) * **`classification`:** new badge and layout ([#1231][334]) ([`2336262`][335]) * **`classification`:** new section within the details sidebar ([#1237][336]) ([`90bf2f3`][337]) * **`classification`:** remove classify from breadcrumbs ([#1549][338]) ([`adae46d`][339]) * **`classification`:** updated UI for classification ([#1566][340]) ([`52e2b17`][341]) * **`comments`:** implement comment edit ([#1468][342]) ([`33dd037`][343]) * **`content-explorer`:** Add ability to sort contents by size column ([#1239][344]) ([`b29b6bf`][345]) * **`content-explorer`:** Add toggle button for grid view ([#1349][346]) ([`97a1d44`][347]) * **`content-explorer`:** Fetch thumbnails for search and recents ([#1475][348]) ([`1035afb`][349]) * **`content-explorer`:** grid view slider ([#1482][350]) ([`ef4a7ee`][351]) * **`content-explorer`:** grid view styling ([#1464][352]) ([`f32b8ca`][353]), closes [#1409][354] * **`content-explorer`:** import files from `MDVGridView` ([#1294][355]) ([`a2e5bd9`][356]) * **`content-explorer`:** local storage for view mode preference ([#1476][357]) ([`803b0a0`][358]) * **`content-explorer`:** Remove feature flip for gallery view ([#1571][359]) ([`3e948b8`][360]) * **`content-explorer`:** show cards with thumbnails ([#1409][354]) ([`7bbc2e8`][361]) * **`content-explorer`:** Show grid with icons ([#1372][362]) ([`64a099e`][363]) * **`content-picker`:** use radios for single select ([#1685][364]) ([`acc3395`][365]) * **`content-sidebar`:** add task modal mode for edit/create ([#1257][366]) ([`0bdfc96`][367]) * **`content-sidebar`:** programmatic refresh for sidebar panels ([#1561][368]) ([`2adbaef`][369]) * **`dropdown-menu`:** allow `esc` to propagate if dropdown is closed ([#1686][370]) ([`3d4d59e`][371]) * **`features`:** Add background color on hover in metadata list view ([#1618][372]) ([`635808e`][373]) * **`features`:** Add new feature metadata-based-view ([#1519][374]) ([`faef59e`][375]) * **`features`:** Show preview upon clicking the item name ([#1620][376]) ([`74e46b2`][377]) * **`ghost`:** create ghost state helper component ([#1498][378]) ([`73aadae`][379]) * **`i18n`:** Implement the new `FormattedCompMessage` component ([#976][380]) ([`31fdf12`][381]) * **`icon`:** create add users empty state icon ([#1638][382]) ([`33dfacb`][383]) * **`icon`:** create login and storage icon ([#1708][384]) ([`0115fb6`][385]) * **`icons`:** Add `CollectionItemLink` icon ([#1550][386]) ([`1558d36`][387]) * **`icons`:** add collections icons for bolt and star ([#1338][388]) ([`8e9d503`][389]) * **`icons`:** add collections star filled icon ([#1547][390]) ([`55a182e`][391]) * **`icons`:** add `IconFolderTree` icon ([#1696][392]) ([`add261b`][393]) * **`icons`:** add icons for collections ([#1224][394]) ([`a01ea82`][395]) * **`icons`:** add new shield Icon ([#1216][396]) ([`753d0e2`][397]) * **`icons`:** Add sandbox and puzzle piece icons ([#1370][398]) ([`67b6db4`][399]) * **`icons`:** add workflow icon ([#1225][400]) ([`9d73144`][401]) * **`icons`:** creating task empty state icon ([#1583][402]) ([`cac4023`][403]) * **`icons`:** new lightning icon ([#1183][404]) ([`ebccf18`][405]) * **`icons`:** update `IconShare` and `IconCollaboration` to new `32x32` icons ([#1232][406]) ([`4f4e31b`][407]) * **`icons`:** update to new globe icon and add new globe `tinycon` ([#1217][408]) ([`3dded61`][409]) * **`inline-edit`:** user should see instance field input ([#1172][410]) ([`1f90dde`][411]) * **`left-nav`:** add Box Relay icon ([#1207][412]) ([`29f07a6`][413]), closes [#1206][414] * **`left-sidebar`:** `LeftSidebar` supports custom `navLinkRenderer` ([#1510][415]) ([`f9705a2`][416]) * **`leftsidebar`:** Show drop zones only on hover ([#1548][417]) ([`a45c998`][418]) * **`media`:** create media object component ([#1383][419]) ([`5140c13`][420]) * **`metadata`:** Enable metadata template filtering ([#1598][421]) ([`7b341f7`][422]) * **`metadata-views`:** Handle edit and cancel edit actions ([#1703][423]) ([`d55f84a`][424]) * **`metadata-views`:** Show edit icon in metadata view ([#1667][425]) ([`1b8a29d`][426]) * **`metadata-views`:** Update metadata columns prop type in metadata view ([#1666][427]) ([`cbf96ef`][428]) * **`new-tasks`:** Fetch task collaborators ([#1286][429]) ([`fb84aee`][430]) * **`office-online`:** adding excel spreadsheet icon for `xlsb` files ([`ee8569f`][431]) * **`pill-selector`:** `formik` wrapper for pill selector ([#1194][432]) ([`c75a7bb`][433]) * **`pill-selector`:** update flow type for downstream issue ([#1210][434]) ([`69f25e8`][435]) * **`preview`:** Add support for custom logo URL in preview header ([#1714][436]) ([`d37b9ec`][437]) * **`preview`:** better message when blocked by a policy ([#1346][438]) ([`a6cde28`][439]) * **`preview`:** new icon for security blocking ([#1396][440]) ([`9355631`][441]) * **`preview`:** Upgrade default version of box-content-preview to 2.16.0 ([#1562][442]) ([`7617fd2`][443]) * **`radio`:** `formik` wrapper for `RadioButton` ([#1204][444]) ([`0b51080`][445]) * **`react`:** Add text for max version history ([#1630][446]) ([`705e71f`][447]) * **`scroll`:** upgrade scroll in to view if needed ([#1200][448]) ([`1532617`][449]) * **`security`:** adding `SecurityBadge` component ([#1663][450]) ([`3d210bb`][451]) * **`select`:** make caret rotate up/down on open/close respectively ([#1218][452]) ([`9627e2b`][453]) * **`select-field`:** Allow rendering custom options ([#1516][454]) ([`53fe270`][455]) * **`shared-link-settings-modal`:** Disable direct downloads if classified ([#1500][456]) ([`2ede02a`][457]) * **`sidebar`:** Add support for toggling the sidebar externally ([#1293][458]) ([`04468fc`][459]) * **`sidebar`:** programmatic refresh ([#1472][460]) ([`c7a19e7`][461]) * **`sidebar`:** Show retention policy info in sidebar ([#1648][462]) ([`cb9e714`][463]) * **`sidebar`:** Toggle button ([#1268][464]) ([`e2ad4ab`][465]) * **`task-new`:** add ability to add/remove assignees ([#1284][466]) ([`8e87280`][467]) * **`task-new`:** Add support for edit modal ([#1261][468]) ([`d13839c`][469]) * **`tasks`:** add any task icon + tooltip ([#1491][470]) ([`cf1c5b7`][471]) * **`tasks`:** add any/all checkbox ([#1487][472]) ([`21271e3`][473]) * **`tasks`:** add in comment modification option for tasks ([#1247][474]) ([`b5775de`][475]) * **`tasks`:** Add new task edit API methods ([#1260][476]) ([`e05d5a7`][477]) * **`tasks`:** handle new error message with title and description ([#1564][478]) ([`7d691df`][479]) * **`tasks`:** strings for any completion rule ([#1471][480]) ([`cdaf285`][481]) * **`tasks`:** Update task status to not use an icon ([#1169][482]) ([`b4b8bf0`][483]) * **`tasks-new`:** add assignee list ([#1287][484]) ([`04b7458`][485]) * **`tasks-new`:** Edit task message and due date in `TaskForm` ([#1269][486]) ([`7f63d97`][487]) * **`tasks-new`:** remove beta label functionality from modal header ([#1314][488]) ([`dca414b`][489]) * **`tasks-new`:** tasks resin tracking for edit modal ([#1327][490]) ([`5b5b354`][491]) * **`typography`:** update body typography ([#1442][492]) ([`375c336`][493]), closes [#1439][163] [#1441][494] * **`unified-share-modal`:** add external collaboration warning message ([#1220][495]) ([`064bd2f`][496]) * **`unified-share-modal`:** add property to limit the number of contacts ([#1304][497]) ([`2af11b1`][498]) * **`unified-share-modal`:** invite section tooltip changes ([#1499][499]) ([`d7730c7`][500]), closes [#1498][378] * **`unified-share-modal`:** invite section tooltips changes ([#1504][501]) ([`b9486bc`][502]) * **`unified-share-modal`:** show classification for the file ([#1425][503]) ([`e3c7277`][504]) * **`unified-share-modal`:** Show external collaborators indicator ([#1256][505]) ([`613a438`][506]) * **`uploads`:** add resin targets for uploads manager ([#1384][507]) ([`29d2af5`][508]) * **`uploads`:** resume a single file upload ([#1552][509]) ([`093f889`][510]) * **`uploads`:** resume multiple unsuccessful uploads ([#1553][511]) ([`60406b9`][512]) * **`uploads`:** uploads manager contents for resumable uploads ([#1555][513]) ([`8380bc7`][514]) * **`usm`:** expand Invite Section based on `initiallySelectedContacts` ([#1470][515]) ([`b756a22`][516]) * **`validators`:** `host`, `ipv4` and domain name validators ([#1212][517]) ([`f653dac`][518]) * **`versions`:** Add client-side error messages for version actions ([#1404][519]) ([`8ead57c`][520]) * **`versions`:** Add resin tracking for sidebar back button ([#1309][521]) ([`901c23d`][522]) * **`versions`:** Add resin tracking to all version history actions ([#1285][523]) ([`a4942d3`][524]) * **`versions`:** Add support for deep linking to `ContentSidebar` ([#1203][525]) ([`78ab636`][526]) * **`versions`:** Add support for file version restore actions ([#1184][527]) ([`d5396bd`][528]) * **`versions`:** Add support for version action callbacks ([#1417][529]) ([`099a09e`][530]) * **`versions`:** Add support for version limits to sidebar ([#1316][531]) ([`bec5699`][532]) * **`versions`:** Add version group headers based on relative date ([#1330][533]) ([`51d5633`][534]) * add `metadata_queries` API layer ([#1481][535]) ([`2f6ef29`][536]) * add prop for resumable uploads feature flip ([#1447][537]) ([`3f19a3b`][538]) * Adding prop `initiallySelectedContacts` to `UnifiedShareModal` ([#1424][539]) ([`8966016`][540]) * default task icons to `$bdl-box-blue` ([#1509][541]) ([`dbc7103`][542]) * increase fetched file collaborators for tasks/comments ([#1483][543]) ([`05f65f4`][544]) ### Performance Improvements * **`sidebar`:** Lazy load sidebar panels without 500 millisecond delay ([#1223][545]) ([`bb216b4`][546]) * **`sidebar`:** merge response to avoid redundant API calls ([#1617][547]) ([`69ad154`][548]) * **`version`:** Remove version history modal ([#1633][549]) ([`eb0aac6`][550]) ### Reverts * **`avatar`:** Move Avatar back to non-hook implementation ([#1186][551]) ([`69f329b`][552]) ### BREAKING CHANGES * **`formik`:** `inputProps` dropped from Toggle component. `formik` has been upgraded to V2. [Upgrade guide][553]. * Peer dependency React requirement have been bumped higher * refactor(avatar): Refactor Avatar to use hooks * fix(test): Fixed various test issues, downgraded enzyme back to 3.8.0 * fix(avatar): remove redundant check * **`classification`:** Also changes `advisoryMessage` prop to definition to keep terminology consistent * feat(classification): Increasing classification icon stroke width * **`typography`:** The color of the body will be default to [#222][554] which is the `bdl-gray` * feat(typography): update letter spacing for common typography * **`typography`:** The letter spacing for common typography will now be `px` instead of `em`. Please check scaling. * **`classification`:** The API for providing classification data to the sidebar has changed to `{ advisoryMessage, name }` * feat: design changes * feat: classification badge changes * fix: PR feedback * fix: snapshot * **`icons`:** Replacing `IconShield` with a new Icon that represent Shield. It follows the the 32 x 32 guideline. Please override any style if needed. * **`deps`:** update react-\* peer dependencies to 16.9.0 Updating to React 16.9 includes deprecation warnings for lifecycle methods. This affects one of our dependencies, react-tether; we have no immediate plans to silence the warnings. * **`security`:** Upgrade `axios` peer dependency to address [https://nvd.nist.gov/vuln/detail/CVE-2019-10742][555] * **`icons`:** update to new globe icon which uses `20x20` by default instead of `16x16` and introduced new globe `tinycon` * **`validators`:** Adds peer dependency of [**`@hapi/address`**][556] used for email and domain validation * fix: added uncommon `tlds` for email checking * fix: adding some bad `tlds` * **`scroll`:** Major version upgrade for scroll-into-view-if-needed. * **`i18n`:** Added additional peer dependencies to support `i18n` `FormattedCompMessage` component Implement a new component called `FormattedCompMessage`. This translates strings which can contain HTML or other JSX components in a safe way by hiding the contents of those tags from the translators or hackers and substituting the contents from source strings into the translations. Example: ```javascript theme={null} You can delete these files, or just unshare them. ``` `FormattedCompMessage` is built as a layer on top of `react-intl`, and uses it to do the actual translations. Its function is to transform a tree of React elements into a coded string, get that string translated with `react-intl`, transform the coded translated string back into a tree of React elements, and finally substitute the hidden React elements from the source tree back into the translation tree in the right locations. The component depends on the new babel plugin `babel-plugin-box-i18n` to extract the coded texts from the source code and place them into the same type of JSON files that the `react-intl` babel plugin produces. In this way, the translation process downstream from there works with no further changes. The translations appear in the properties files some time later and `react-intl` picks them up as normal. The `FormattedCompMessage` can retrieve these translations using `react-intl`. The `babel-pluging-box-i18n` plugin also enforces Box's policies, such as the requirement that all strings have a unique id and a description for the translators. The `FormattedCompMessage` component can support plurals in a React-idiomatic way by embedding `` components in the body of the `FormattedCompMessage`: ```javascript theme={null} This is the singular string. This is the plural string. ``` Note that HTML and subcomponents are allowed in the plural string as well. The `FormattedCompMessage` component supports replacement parameters in a React-idiomatic way by embedding `` components in the body of the `FormattedCompMessage`: ```javascript theme={null} User has already deleted this file. ``` Note that the `Param` tags can be used inside of `Plural` tags as well, as they are normal components. * **`deps`:** Peer dependencies have been updated and will require downstream applications to update as well to avoid NPM warnings. * **`icons`:** Old `IconShare` defaulted to `26x26` and old `IconCollaboration` defaulted to `27x26` but new icons are defaulted to `32x32`. Also, default SVG classnames are now changed to `bdl-IconShare` and `bdl-IconCollaboration`. [1]: https://github.com/box/box-ui-elements/compare/v10.2.0...v11.0.0 [2]: https://github.com/box/box-ui-elements/issues/1604 [3]: https://github.com/box/box-ui-elements/commit/572e4d7 [4]: https://github.com/box/box-ui-elements/issues/1272 [5]: https://github.com/box/box-ui-elements/commit/533c112 [6]: https://github.com/box/box-ui-elements/issues/1697 [7]: https://github.com/box/box-ui-elements/commit/2702367 [8]: https://github.com/box/box-ui-elements/issues/1637 [9]: https://github.com/box/box-ui-elements/commit/9302486 [10]: https://github.com/box/box-ui-elements/issues/1456 [11]: https://github.com/box/box-ui-elements/commit/b7c21e7 [12]: https://github.com/box/box-ui-elements/issues/1449 [13]: https://github.com/box/box-ui-elements/commit/b58aa2f [14]: https://github.com/box/box-ui-elements/issues/1654 [15]: https://github.com/box/box-ui-elements/commit/a05b015 [16]: https://github.com/box/box-ui-elements/issues/1311 [17]: https://github.com/box/box-ui-elements/commit/23e6d5f [18]: https://github.com/box/box-ui-elements/issues/1243 [19]: https://github.com/box/box-ui-elements/commit/88a5f1c [20]: https://github.com/box/box-ui-elements/issues/1643 [21]: https://github.com/box/box-ui-elements/commit/f89c138 [22]: https://github.com/box/box-ui-elements/issues/1514 [23]: https://github.com/box/box-ui-elements/commit/a4f446f [24]: https://github.com/box/box-ui-elements/issues/1517 [25]: https://github.com/box/box-ui-elements/commit/35a4070 [26]: https://github.com/box/box-ui-elements/issues/1249 [27]: https://github.com/box/box-ui-elements/commit/c164aec [28]: https://github.com/box/box-ui-elements/issues/1657 [29]: https://github.com/box/box-ui-elements/commit/fec4735 [30]: https://github.com/box/box-ui-elements/issues/1362 [31]: https://github.com/box/box-ui-elements/commit/a6989a0 [32]: https://github.com/box/box-ui-elements/issues/1400 [33]: https://github.com/box/box-ui-elements/commit/3ac424c [34]: https://github.com/box/box-ui-elements/issues/1622 [35]: https://github.com/box/box-ui-elements/commit/4ab0c20 [36]: https://github.com/box/box-ui-elements/issues/1378 [37]: https://github.com/box/box-ui-elements/commit/fa82a8d [38]: https://github.com/box/box-ui-elements/issues/1710 [39]: https://github.com/box/box-ui-elements/commit/d08b53c [40]: https://github.com/box/box-ui-elements/issues/1712 [41]: https://github.com/box/box-ui-elements/commit/9e620ce [42]: https://github.com/box/box-ui-elements/issues/1390 [43]: https://github.com/box/box-ui-elements/commit/5db4b3e [44]: https://github.com/box/box-ui-elements/issues/1680 [45]: https://github.com/box/box-ui-elements/commit/baefaed [46]: https://github.com/box/box-ui-elements/issues/1407 [47]: https://github.com/box/box-ui-elements/commit/5e32c80 [48]: https://github.com/box/box-ui-elements/issues/1474 [49]: https://github.com/box/box-ui-elements/commit/e270131 [50]: https://github.com/box/box-ui-elements/issues/1358 [51]: https://github.com/box/box-ui-elements/commit/927a34a [52]: https://github.com/box/box-ui-elements/issues/1291 [53]: https://github.com/box/box-ui-elements/commit/ef48f88 [54]: https://github.com/box/box-ui-elements/issues/1270 [55]: https://github.com/box/box-ui-elements/commit/bcf2852 [56]: https://github.com/box/box-ui-elements/issues/1469 [57]: https://github.com/box/box-ui-elements/commit/6b82510 [58]: https://github.com/box/box-ui-elements/issues/1584 [59]: https://github.com/box/box-ui-elements/commit/7d38fb8 [60]: https://github.com/box/box-ui-elements/issues/1515 [61]: https://github.com/box/box-ui-elements/commit/55edef7 [62]: https://github.com/box/box-ui-elements/issues/1333 [63]: https://github.com/box/box-ui-elements/commit/9740342 [64]: https://github.com/box/box-ui-elements/issues/1245 [65]: https://github.com/box/box-ui-elements/commit/d7f53ff [66]: https://github.com/box/box-ui-elements/issues/1665 [67]: https://github.com/box/box-ui-elements/commit/84b4ea4 [68]: https://github.com/box/box-ui-elements/issues/1511 [69]: https://github.com/box/box-ui-elements/commit/a6de1b0 [70]: https://github.com/box/box-ui-elements/issues/1653 [71]: https://github.com/box/box-ui-elements/commit/f35b2ea [72]: https://github.com/box/box-ui-elements/issues/1652 [73]: https://github.com/box/box-ui-elements/commit/6faed59 [74]: https://github.com/box/box-ui-elements/issues/1191 [75]: https://github.com/box/box-ui-elements/commit/19f3703 [76]: https://github.com/box/box-ui-elements/issues/1329 [77]: https://github.com/box/box-ui-elements/commit/d1a1bd9 [78]: https://github.com/box/box-ui-elements/issues/1281 [79]: https://github.com/box/box-ui-elements/commit/94869ad [80]: https://github.com/box/box-ui-elements/issues/1479 [81]: https://github.com/box/box-ui-elements/commit/2d29628 [82]: https://github.com/box/box-ui-elements/issues/1655 [83]: https://github.com/box/box-ui-elements/commit/e2be3bd [84]: https://github.com/box/box-ui-elements/issues/1694 [85]: https://github.com/box/box-ui-elements/commit/a20e610 [86]: https://github.com/box/box-ui-elements/issues/1178 [87]: https://github.com/box/box-ui-elements/commit/61d4e3d [88]: https://github.com/box/box-ui-elements/commit/bf7782c [89]: https://github.com/box/box-ui-elements/issues/1310 [90]: https://github.com/box/box-ui-elements/commit/f8bb323 [91]: https://github.com/box/box-ui-elements/issues/1214 [92]: https://github.com/box/box-ui-elements/commit/674bf45 [93]: https://github.com/box/box-ui-elements/issues/1490 [94]: https://github.com/box/box-ui-elements/commit/73d95b9 [95]: https://github.com/box/box-ui-elements/issues/1197 [96]: https://github.com/box/box-ui-elements/commit/2d34ad4 [97]: https://github.com/box/box-ui-elements/issues/1345 [98]: https://github.com/box/box-ui-elements/commit/10d6b76 [99]: https://github.com/box/box-ui-elements/issues/1226 [100]: https://github.com/box/box-ui-elements/commit/c91d320 [101]: https://github.com/box/box-ui-elements/issues/1238 [102]: https://github.com/box/box-ui-elements/commit/9e91115 [103]: https://github.com/box/box-ui-elements/issues/1242 [104]: https://github.com/box/box-ui-elements/commit/3b62245 [105]: https://github.com/box/box-ui-elements/issues/1297 [106]: https://github.com/box/box-ui-elements/commit/bfa075a [107]: https://github.com/box/box-ui-elements/issues/1702 [108]: https://github.com/box/box-ui-elements/commit/b126ecb [109]: https://github.com/box/box-ui-elements/issues/1266 [110]: https://github.com/box/box-ui-elements/commit/b47e22e [111]: https://github.com/box/box-ui-elements/issues/1241 [112]: https://github.com/box/box-ui-elements/commit/9e07f2e [113]: https://github.com/box/box-ui-elements/issues/1576 [114]: https://github.com/box/box-ui-elements/commit/a814657 [115]: https://github.com/box/box-ui-elements/issues/1229 [116]: https://github.com/box/box-ui-elements/commit/05d86b1 [117]: https://github.com/box/box-ui-elements/issues/1299 [118]: https://github.com/box/box-ui-elements/commit/9c78135 [119]: https://github.com/box/box-ui-elements/issues/1545 [120]: https://github.com/box/box-ui-elements/commit/6ba65c6 [121]: https://github.com/box/box-ui-elements/issues/1344 [122]: https://github.com/box/box-ui-elements/commit/716fe01 [123]: https://github.com/box/box-ui-elements/issues/1463 [124]: https://github.com/box/box-ui-elements/commit/943638d [125]: https://github.com/box/box-ui-elements/issues/1434 [126]: https://github.com/box/box-ui-elements/commit/afd94fa [127]: https://github.com/box/box-ui-elements/issues/1446 [128]: https://github.com/box/box-ui-elements/commit/5baeb5b [129]: https://github.com/box/box-ui-elements/issues/1175 [130]: https://github.com/box/box-ui-elements/commit/2ba8a1d [131]: https://github.com/box/box-ui-elements/issues/1629 [132]: https://github.com/box/box-ui-elements/commit/85995cd [133]: https://github.com/box/box-ui-elements/issues/1192 [134]: https://github.com/box/box-ui-elements/commit/1dc0d99 [135]: https://github.com/box/box-ui-elements/issues/1713 [136]: https://github.com/box/box-ui-elements/commit/50b72f2 [137]: https://github.com/box/box-ui-elements/issues/1684 [138]: https://github.com/box/box-ui-elements/commit/29a1220 [139]: https://github.com/box/box-ui-elements/issues/1305 [140]: https://github.com/box/box-ui-elements/commit/9a14ae7 [141]: https://github.com/box/box-ui-elements/issues/1682 [142]: https://github.com/box/box-ui-elements/commit/21af355 [143]: https://github.com/box/box-ui-elements/issues/1489 [144]: https://github.com/box/box-ui-elements/commit/d3d98a5 [145]: https://github.com/box/box-ui-elements/issues/1350 [146]: https://github.com/box/box-ui-elements/commit/7933932 [147]: https://github.com/box/box-ui-elements/issues/1450 [148]: https://github.com/box/box-ui-elements/commit/48d22a4 [149]: https://github.com/box/box-ui-elements/issues/1315 [150]: https://github.com/box/box-ui-elements/commit/e4fdf58 [151]: https://github.com/box/box-ui-elements/issues/1357 [152]: https://github.com/box/box-ui-elements/commit/2bf496e [153]: https://github.com/box/box-ui-elements/issues/1681 [154]: https://github.com/box/box-ui-elements/commit/1e0d1ab [155]: https://github.com/box/box-ui-elements/issues/1367 [156]: https://github.com/box/box-ui-elements/commit/d67fcfe [157]: https://github.com/box/box-ui-elements/issues/1364 [158]: https://github.com/box/box-ui-elements/commit/d47c69c [159]: https://github.com/box/box-ui-elements/issues/1597 [160]: https://github.com/box/box-ui-elements/commit/d16b0da [161]: https://github.com/box/box-ui-elements/issues/1484 [162]: https://github.com/box/box-ui-elements/commit/6c1a363 [163]: https://github.com/box/box-ui-elements/issues/1439 [164]: https://github.com/box/box-ui-elements/commit/936f5e0 [165]: https://github.com/box/box-ui-elements/issues/1452 [166]: https://github.com/box/box-ui-elements/commit/c0c05be [167]: https://github.com/box/box-ui-elements/issues/1448 [168]: https://github.com/box/box-ui-elements/commit/85ca38a [169]: https://github.com/box/box-ui-elements/issues/1415 [170]: https://github.com/box/box-ui-elements/commit/e432c47 [171]: https://github.com/box/box-ui-elements/issues/1280 [172]: https://github.com/box/box-ui-elements/commit/3776dc8 [173]: https://github.com/box/box-ui-elements/issues/1478 [174]: https://github.com/box/box-ui-elements/commit/7d9100b [175]: https://github.com/box/box-ui-elements/issues/1228 [176]: https://github.com/box/box-ui-elements/commit/db26743 [177]: https://github.com/box/box-ui-elements/issues/1664 [178]: https://github.com/box/box-ui-elements/commit/ae23f01 [179]: https://github.com/box/box-ui-elements/issues/1671 [180]: https://github.com/box/box-ui-elements/commit/9f040f2 [181]: https://github.com/box/box-ui-elements/issues/1359 [182]: https://github.com/box/box-ui-elements/commit/cd840f4 [183]: https://github.com/box/box-ui-elements/issues/1563 [184]: https://github.com/box/box-ui-elements/commit/f90a0d7 [185]: https://github.com/box/box-ui-elements/issues/1649 [186]: https://github.com/box/box-ui-elements/commit/e85e57a [187]: https://github.com/box/box-ui-elements/issues/1508 [188]: https://github.com/box/box-ui-elements/commit/dac39ee [189]: https://github.com/box/box-ui-elements/issues/1557 [190]: https://github.com/box/box-ui-elements/commit/e7f953e [191]: https://github.com/box/box-ui-elements/issues/1236 [192]: https://github.com/box/box-ui-elements/commit/eb398fc [193]: https://github.com/box/box-ui-elements/issues/1263 [194]: https://github.com/box/box-ui-elements/commit/853e106 [195]: https://github.com/box/box-ui-elements/issues/1645 [196]: https://github.com/box/box-ui-elements/commit/824f390 [197]: https://github.com/box/box-ui-elements/issues/1366 [198]: https://github.com/box/box-ui-elements/commit/e71409c [199]: https://github.com/box/box-ui-elements/issues/1341 [200]: https://github.com/box/box-ui-elements/commit/c5e07b1 [201]: https://github.com/box/box-ui-elements/issues/1659 [202]: https://github.com/box/box-ui-elements/commit/7a53050 [203]: https://github.com/box/box-ui-elements/issues/1573 [204]: https://github.com/box/box-ui-elements/commit/79c3f00 [205]: https://github.com/box/box-ui-elements/issues/1605 [206]: https://github.com/box/box-ui-elements/commit/63efa10 [207]: https://github.com/box/box-ui-elements/issues/1540 [208]: https://github.com/box/box-ui-elements/commit/af49827 [209]: https://github.com/box/box-ui-elements/issues/1323 [210]: https://github.com/box/box-ui-elements/commit/9a4137b [211]: https://github.com/box/box-ui-elements/issues/1353 [212]: https://github.com/box/box-ui-elements/commit/be10f37 [213]: https://github.com/box/box-ui-elements/issues/1312 [214]: https://github.com/box/box-ui-elements/commit/411c3e9 [215]: https://github.com/box/box-ui-elements/issues/1321 [216]: https://github.com/box/box-ui-elements/commit/9f554ff [217]: https://github.com/box/box-ui-elements/issues/1334 [218]: https://github.com/box/box-ui-elements/commit/95a3c73 [219]: https://github.com/box/box-ui-elements/issues/1328 [220]: https://github.com/box/box-ui-elements/commit/cf1acf1 [221]: https://github.com/box/box-ui-elements/issues/1513 [222]: https://github.com/box/box-ui-elements/commit/00e9707 [223]: https://github.com/box/box-ui-elements/issues/1621 [224]: https://github.com/box/box-ui-elements/commit/dc33967 [225]: https://github.com/box/box-ui-elements/issues/1250 [226]: https://github.com/box/box-ui-elements/commit/be7bc2f [227]: https://github.com/box/box-ui-elements/issues/1189 [228]: https://github.com/box/box-ui-elements/commit/630fd38 [229]: https://github.com/box/box-ui-elements/issues/1603 [230]: https://github.com/box/box-ui-elements/commit/2cbe014 [231]: https://github.com/box/box-ui-elements/issues/1332 [232]: https://github.com/box/box-ui-elements/commit/4e760f7 [233]: https://github.com/box/box-ui-elements/issues/1627 [234]: https://github.com/box/box-ui-elements/commit/c788770 [235]: https://github.com/box/box-ui-elements/issues/1295 [236]: https://github.com/box/box-ui-elements/commit/dbbf598 [237]: https://github.com/box/box-ui-elements/issues/1301 [238]: https://github.com/box/box-ui-elements/commit/f387a9b [239]: https://github.com/box/box-ui-elements/issues/1313 [240]: https://github.com/box/box-ui-elements/commit/c61fa77 [241]: https://github.com/box/box-ui-elements/issues/1302 [242]: https://github.com/box/box-ui-elements/commit/2f88e96 [243]: https://github.com/box/box-ui-elements/issues/1317 [244]: https://github.com/box/box-ui-elements/commit/6560b23 [245]: https://github.com/box/box-ui-elements/issues/1318 [246]: https://github.com/box/box-ui-elements/commit/2cdfcc4 [247]: https://github.com/box/box-ui-elements/issues/1185 [248]: https://github.com/box/box-ui-elements/commit/8a4c294 [249]: https://github.com/box/box-ui-elements/issues/1692 [250]: https://github.com/box/box-ui-elements/commit/1c11770 [251]: https://github.com/box/box-ui-elements/issues/1647 [252]: https://github.com/box/box-ui-elements/commit/732a1dd [253]: https://github.com/box/box-ui-elements/issues/1196 [254]: https://github.com/box/box-ui-elements/commit/6501413 [255]: https://github.com/box/box-ui-elements/issues/1453 [256]: https://github.com/box/box-ui-elements/commit/4ce5a06 [257]: https://github.com/box/box-ui-elements/issues/1283 [258]: https://github.com/box/box-ui-elements/commit/c49e52f [259]: https://github.com/box/box-ui-elements/issues/1570 [260]: https://github.com/box/box-ui-elements/commit/dbf115c [261]: https://github.com/box/box-ui-elements/issues/1695 [262]: https://github.com/box/box-ui-elements/commit/3da93c8 [263]: https://github.com/box/box-ui-elements/issues/1646 [264]: https://github.com/box/box-ui-elements/commit/38d10e4 [265]: https://github.com/box/box-ui-elements/issues/1600 [266]: https://github.com/box/box-ui-elements/commit/0218f10 [267]: https://github.com/box/box-ui-elements/issues/1397 [268]: https://github.com/box/box-ui-elements/commit/16311dc [269]: https://github.com/box/box-ui-elements/issues/1602 [270]: https://github.com/box/box-ui-elements/commit/bff49bb [271]: https://github.com/box/box-ui-elements/issues/1674 [272]: https://github.com/box/box-ui-elements/commit/938c483 [273]: https://github.com/box/box-ui-elements/issues/1320 [274]: https://github.com/box/box-ui-elements/commit/c4149ea [275]: https://github.com/box/box-ui-elements/issues/1354 [276]: https://github.com/box/box-ui-elements/commit/e60b020 [277]: https://github.com/box/box-ui-elements/issues/1405 [278]: https://github.com/box/box-ui-elements/commit/9a527f2 [279]: https://github.com/box/box-ui-elements/issues/1568 [280]: https://github.com/box/box-ui-elements/commit/b68eccd [281]: https://github.com/box/box-ui-elements/issues/1347 [282]: https://github.com/box/box-ui-elements/commit/95949e2 [283]: https://github.com/box/box-ui-elements/issues/1365 [284]: https://github.com/box/box-ui-elements/commit/65d23b9 [285]: https://github.com/box/box-ui-elements/issues/1631 [286]: https://github.com/box/box-ui-elements/commit/25d0741 [287]: https://github.com/box/box-ui-elements/issues/1342 [288]: https://github.com/box/box-ui-elements/commit/2487b42 [289]: https://github.com/box/box-ui-elements/issues/1395 [290]: https://github.com/box/box-ui-elements/commit/de7e74e [291]: https://github.com/box/box-ui-elements/issues/1339 [292]: https://github.com/box/box-ui-elements/commit/fcb390d [293]: https://github.com/box/box-ui-elements/issues/1351 [294]: https://github.com/box/box-ui-elements/commit/93b95c4 [295]: https://github.com/box/box-ui-elements/issues/1193 [296]: https://github.com/box/box-ui-elements/commit/9d7567e [297]: https://github.com/box/box-ui-elements/issues/1276 [298]: https://github.com/box/box-ui-elements/commit/e0cd7e3 [299]: https://github.com/box/box-ui-elements/issues/1275 [300]: https://github.com/box/box-ui-elements/commit/ef3b2fd [301]: https://github.com/box/box-ui-elements/issues/1556 [302]: https://github.com/box/box-ui-elements/commit/bc9672e [303]: https://github.com/box/box-ui-elements/issues/1662 [304]: https://github.com/box/box-ui-elements/commit/fa66232 [305]: https://github.com/box/box-ui-elements/issues/1368 [306]: https://github.com/box/box-ui-elements/commit/361d73f [307]: https://github.com/box/box-ui-elements/issues/1230 [308]: https://github.com/box/box-ui-elements/commit/c41dd47 [309]: https://github.com/box/box-ui-elements/issues/1678 [310]: https://github.com/box/box-ui-elements/commit/cfd055b [311]: https://github.com/box/box-ui-elements/issues/1688 [312]: https://github.com/box/box-ui-elements/commit/150cbbe [313]: https://github.com/box/box-ui-elements/issues/1198 [314]: https://github.com/box/box-ui-elements/commit/2e590d3 [315]: https://github.com/box/box-ui-elements/issues/1606 [316]: https://github.com/box/box-ui-elements/commit/1163db5 [317]: https://github.com/box/box-ui-elements/issues/1698 [318]: https://github.com/box/box-ui-elements/commit/6b9ded9 [319]: https://github.com/box/box-ui-elements/issues/1171 [320]: https://github.com/box/box-ui-elements/commit/7dd1bdf [321]: https://github.com/box/box-ui-elements/issues/761 [322]: https://github.com/box/box-ui-elements/issues/1180 [323]: https://github.com/box/box-ui-elements/commit/48d711e [324]: https://github.com/box/box-ui-elements/issues/1623 [325]: https://github.com/box/box-ui-elements/commit/52ecdcb [326]: https://github.com/box/box-ui-elements/issues/1503 [327]: https://github.com/box/box-ui-elements/commit/132782d [328]: https://github.com/box/box-ui-elements/issues/1585 [329]: https://github.com/box/box-ui-elements/commit/781a246 [330]: https://github.com/box/box-ui-elements/issues/1546 [331]: https://github.com/box/box-ui-elements/commit/9bdc1e6 [332]: https://github.com/box/box-ui-elements/issues/1520 [333]: https://github.com/box/box-ui-elements/commit/8eb68b3 [334]: https://github.com/box/box-ui-elements/issues/1231 [335]: https://github.com/box/box-ui-elements/commit/2336262 [336]: https://github.com/box/box-ui-elements/issues/1237 [337]: https://github.com/box/box-ui-elements/commit/90bf2f3 [338]: https://github.com/box/box-ui-elements/issues/1549 [339]: https://github.com/box/box-ui-elements/commit/adae46d [340]: https://github.com/box/box-ui-elements/issues/1566 [341]: https://github.com/box/box-ui-elements/commit/52e2b17 [342]: https://github.com/box/box-ui-elements/issues/1468 [343]: https://github.com/box/box-ui-elements/commit/33dd037 [344]: https://github.com/box/box-ui-elements/issues/1239 [345]: https://github.com/box/box-ui-elements/commit/b29b6bf [346]: https://github.com/box/box-ui-elements/issues/1349 [347]: https://github.com/box/box-ui-elements/commit/97a1d44 [348]: https://github.com/box/box-ui-elements/issues/1475 [349]: https://github.com/box/box-ui-elements/commit/1035afb [350]: https://github.com/box/box-ui-elements/issues/1482 [351]: https://github.com/box/box-ui-elements/commit/ef4a7ee [352]: https://github.com/box/box-ui-elements/issues/1464 [353]: https://github.com/box/box-ui-elements/commit/f32b8ca [354]: https://github.com/box/box-ui-elements/issues/1409 [355]: https://github.com/box/box-ui-elements/issues/1294 [356]: https://github.com/box/box-ui-elements/commit/a2e5bd9 [357]: https://github.com/box/box-ui-elements/issues/1476 [358]: https://github.com/box/box-ui-elements/commit/803b0a0 [359]: https://github.com/box/box-ui-elements/issues/1571 [360]: https://github.com/box/box-ui-elements/commit/3e948b8 [361]: https://github.com/box/box-ui-elements/commit/7bbc2e8 [362]: https://github.com/box/box-ui-elements/issues/1372 [363]: https://github.com/box/box-ui-elements/commit/64a099e [364]: https://github.com/box/box-ui-elements/issues/1685 [365]: https://github.com/box/box-ui-elements/commit/acc3395 [366]: https://github.com/box/box-ui-elements/issues/1257 [367]: https://github.com/box/box-ui-elements/commit/0bdfc96 [368]: https://github.com/box/box-ui-elements/issues/1561 [369]: https://github.com/box/box-ui-elements/commit/2adbaef [370]: https://github.com/box/box-ui-elements/issues/1686 [371]: https://github.com/box/box-ui-elements/commit/3d4d59e [372]: https://github.com/box/box-ui-elements/issues/1618 [373]: https://github.com/box/box-ui-elements/commit/635808e [374]: https://github.com/box/box-ui-elements/issues/1519 [375]: https://github.com/box/box-ui-elements/commit/faef59e [376]: https://github.com/box/box-ui-elements/issues/1620 [377]: https://github.com/box/box-ui-elements/commit/74e46b2 [378]: https://github.com/box/box-ui-elements/issues/1498 [379]: https://github.com/box/box-ui-elements/commit/73aadae [380]: https://github.com/box/box-ui-elements/issues/976 [381]: https://github.com/box/box-ui-elements/commit/31fdf12 [382]: https://github.com/box/box-ui-elements/issues/1638 [383]: https://github.com/box/box-ui-elements/commit/33dfacb [384]: https://github.com/box/box-ui-elements/issues/1708 [385]: https://github.com/box/box-ui-elements/commit/0115fb6 [386]: https://github.com/box/box-ui-elements/issues/1550 [387]: https://github.com/box/box-ui-elements/commit/1558d36 [388]: https://github.com/box/box-ui-elements/issues/1338 [389]: https://github.com/box/box-ui-elements/commit/8e9d503 [390]: https://github.com/box/box-ui-elements/issues/1547 [391]: https://github.com/box/box-ui-elements/commit/55a182e [392]: https://github.com/box/box-ui-elements/issues/1696 [393]: https://github.com/box/box-ui-elements/commit/add261b [394]: https://github.com/box/box-ui-elements/issues/1224 [395]: https://github.com/box/box-ui-elements/commit/a01ea82 [396]: https://github.com/box/box-ui-elements/issues/1216 [397]: https://github.com/box/box-ui-elements/commit/753d0e2 [398]: https://github.com/box/box-ui-elements/issues/1370 [399]: https://github.com/box/box-ui-elements/commit/67b6db4 [400]: https://github.com/box/box-ui-elements/issues/1225 [401]: https://github.com/box/box-ui-elements/commit/9d73144 [402]: https://github.com/box/box-ui-elements/issues/1583 [403]: https://github.com/box/box-ui-elements/commit/cac4023 [404]: https://github.com/box/box-ui-elements/issues/1183 [405]: https://github.com/box/box-ui-elements/commit/ebccf18 [406]: https://github.com/box/box-ui-elements/issues/1232 [407]: https://github.com/box/box-ui-elements/commit/4f4e31b [408]: https://github.com/box/box-ui-elements/issues/1217 [409]: https://github.com/box/box-ui-elements/commit/3dded61 [410]: https://github.com/box/box-ui-elements/issues/1172 [411]: https://github.com/box/box-ui-elements/commit/1f90dde [412]: https://github.com/box/box-ui-elements/issues/1207 [413]: https://github.com/box/box-ui-elements/commit/29f07a6 [414]: https://github.com/box/box-ui-elements/issues/1206 [415]: https://github.com/box/box-ui-elements/issues/1510 [416]: https://github.com/box/box-ui-elements/commit/f9705a2 [417]: https://github.com/box/box-ui-elements/issues/1548 [418]: https://github.com/box/box-ui-elements/commit/a45c998 [419]: https://github.com/box/box-ui-elements/issues/1383 [420]: https://github.com/box/box-ui-elements/commit/5140c13 [421]: https://github.com/box/box-ui-elements/issues/1598 [422]: https://github.com/box/box-ui-elements/commit/7b341f7 [423]: https://github.com/box/box-ui-elements/issues/1703 [424]: https://github.com/box/box-ui-elements/commit/d55f84a [425]: https://github.com/box/box-ui-elements/issues/1667 [426]: https://github.com/box/box-ui-elements/commit/1b8a29d [427]: https://github.com/box/box-ui-elements/issues/1666 [428]: https://github.com/box/box-ui-elements/commit/cbf96ef [429]: https://github.com/box/box-ui-elements/issues/1286 [430]: https://github.com/box/box-ui-elements/commit/fb84aee [431]: https://github.com/box/box-ui-elements/commit/ee8569f [432]: https://github.com/box/box-ui-elements/issues/1194 [433]: https://github.com/box/box-ui-elements/commit/c75a7bb [434]: https://github.com/box/box-ui-elements/issues/1210 [435]: https://github.com/box/box-ui-elements/commit/69f25e8 [436]: https://github.com/box/box-ui-elements/issues/1714 [437]: https://github.com/box/box-ui-elements/commit/d37b9ec [438]: https://github.com/box/box-ui-elements/issues/1346 [439]: https://github.com/box/box-ui-elements/commit/a6cde28 [440]: https://github.com/box/box-ui-elements/issues/1396 [441]: https://github.com/box/box-ui-elements/commit/9355631 [442]: https://github.com/box/box-ui-elements/issues/1562 [443]: https://github.com/box/box-ui-elements/commit/7617fd2 [444]: https://github.com/box/box-ui-elements/issues/1204 [445]: https://github.com/box/box-ui-elements/commit/0b51080 [446]: https://github.com/box/box-ui-elements/issues/1630 [447]: https://github.com/box/box-ui-elements/commit/705e71f [448]: https://github.com/box/box-ui-elements/issues/1200 [449]: https://github.com/box/box-ui-elements/commit/1532617 [450]: https://github.com/box/box-ui-elements/issues/1663 [451]: https://github.com/box/box-ui-elements/commit/3d210bb [452]: https://github.com/box/box-ui-elements/issues/1218 [453]: https://github.com/box/box-ui-elements/commit/9627e2b [454]: https://github.com/box/box-ui-elements/issues/1516 [455]: https://github.com/box/box-ui-elements/commit/53fe270 [456]: https://github.com/box/box-ui-elements/issues/1500 [457]: https://github.com/box/box-ui-elements/commit/2ede02a [458]: https://github.com/box/box-ui-elements/issues/1293 [459]: https://github.com/box/box-ui-elements/commit/04468fc [460]: https://github.com/box/box-ui-elements/issues/1472 [461]: https://github.com/box/box-ui-elements/commit/c7a19e7 [462]: https://github.com/box/box-ui-elements/issues/1648 [463]: https://github.com/box/box-ui-elements/commit/cb9e714 [464]: https://github.com/box/box-ui-elements/issues/1268 [465]: https://github.com/box/box-ui-elements/commit/e2ad4ab [466]: https://github.com/box/box-ui-elements/issues/1284 [467]: https://github.com/box/box-ui-elements/commit/8e87280 [468]: https://github.com/box/box-ui-elements/issues/1261 [469]: https://github.com/box/box-ui-elements/commit/d13839c [470]: https://github.com/box/box-ui-elements/issues/1491 [471]: https://github.com/box/box-ui-elements/commit/cf1c5b7 [472]: https://github.com/box/box-ui-elements/issues/1487 [473]: https://github.com/box/box-ui-elements/commit/21271e3 [474]: https://github.com/box/box-ui-elements/issues/1247 [475]: https://github.com/box/box-ui-elements/commit/b5775de [476]: https://github.com/box/box-ui-elements/issues/1260 [477]: https://github.com/box/box-ui-elements/commit/e05d5a7 [478]: https://github.com/box/box-ui-elements/issues/1564 [479]: https://github.com/box/box-ui-elements/commit/7d691df [480]: https://github.com/box/box-ui-elements/issues/1471 [481]: https://github.com/box/box-ui-elements/commit/cdaf285 [482]: https://github.com/box/box-ui-elements/issues/1169 [483]: https://github.com/box/box-ui-elements/commit/b4b8bf0 [484]: https://github.com/box/box-ui-elements/issues/1287 [485]: https://github.com/box/box-ui-elements/commit/04b7458 [486]: https://github.com/box/box-ui-elements/issues/1269 [487]: https://github.com/box/box-ui-elements/commit/7f63d97 [488]: https://github.com/box/box-ui-elements/issues/1314 [489]: https://github.com/box/box-ui-elements/commit/dca414b [490]: https://github.com/box/box-ui-elements/issues/1327 [491]: https://github.com/box/box-ui-elements/commit/5b5b354 [492]: https://github.com/box/box-ui-elements/issues/1442 [493]: https://github.com/box/box-ui-elements/commit/375c336 [494]: https://github.com/box/box-ui-elements/issues/1441 [495]: https://github.com/box/box-ui-elements/issues/1220 [496]: https://github.com/box/box-ui-elements/commit/064bd2f [497]: https://github.com/box/box-ui-elements/issues/1304 [498]: https://github.com/box/box-ui-elements/commit/2af11b1 [499]: https://github.com/box/box-ui-elements/issues/1499 [500]: https://github.com/box/box-ui-elements/commit/d7730c7 [501]: https://github.com/box/box-ui-elements/issues/1504 [502]: https://github.com/box/box-ui-elements/commit/b9486bc [503]: https://github.com/box/box-ui-elements/issues/1425 [504]: https://github.com/box/box-ui-elements/commit/e3c7277 [505]: https://github.com/box/box-ui-elements/issues/1256 [506]: https://github.com/box/box-ui-elements/commit/613a438 [507]: https://github.com/box/box-ui-elements/issues/1384 [508]: https://github.com/box/box-ui-elements/commit/29d2af5 [509]: https://github.com/box/box-ui-elements/issues/1552 [510]: https://github.com/box/box-ui-elements/commit/093f889 [511]: https://github.com/box/box-ui-elements/issues/1553 [512]: https://github.com/box/box-ui-elements/commit/60406b9 [513]: https://github.com/box/box-ui-elements/issues/1555 [514]: https://github.com/box/box-ui-elements/commit/8380bc7 [515]: https://github.com/box/box-ui-elements/issues/1470 [516]: https://github.com/box/box-ui-elements/commit/b756a22 [517]: https://github.com/box/box-ui-elements/issues/1212 [518]: https://github.com/box/box-ui-elements/commit/f653dac [519]: https://github.com/box/box-ui-elements/issues/1404 [520]: https://github.com/box/box-ui-elements/commit/8ead57c [521]: https://github.com/box/box-ui-elements/issues/1309 [522]: https://github.com/box/box-ui-elements/commit/901c23d [523]: https://github.com/box/box-ui-elements/issues/1285 [524]: https://github.com/box/box-ui-elements/commit/a4942d3 [525]: https://github.com/box/box-ui-elements/issues/1203 [526]: https://github.com/box/box-ui-elements/commit/78ab636 [527]: https://github.com/box/box-ui-elements/issues/1184 [528]: https://github.com/box/box-ui-elements/commit/d5396bd [529]: https://github.com/box/box-ui-elements/issues/1417 [530]: https://github.com/box/box-ui-elements/commit/099a09e [531]: https://github.com/box/box-ui-elements/issues/1316 [532]: https://github.com/box/box-ui-elements/commit/bec5699 [533]: https://github.com/box/box-ui-elements/issues/1330 [534]: https://github.com/box/box-ui-elements/commit/51d5633 [535]: https://github.com/box/box-ui-elements/issues/1481 [536]: https://github.com/box/box-ui-elements/commit/2f6ef29 [537]: https://github.com/box/box-ui-elements/issues/1447 [538]: https://github.com/box/box-ui-elements/commit/3f19a3b [539]: https://github.com/box/box-ui-elements/issues/1424 [540]: https://github.com/box/box-ui-elements/commit/8966016 [541]: https://github.com/box/box-ui-elements/issues/1509 [542]: https://github.com/box/box-ui-elements/commit/dbc7103 [543]: https://github.com/box/box-ui-elements/issues/1483 [544]: https://github.com/box/box-ui-elements/commit/05f65f4 [545]: https://github.com/box/box-ui-elements/issues/1223 [546]: https://github.com/box/box-ui-elements/commit/bb216b4 [547]: https://github.com/box/box-ui-elements/issues/1617 [548]: https://github.com/box/box-ui-elements/commit/69ad154 [549]: https://github.com/box/box-ui-elements/issues/1633 [550]: https://github.com/box/box-ui-elements/commit/eb0aac6 [551]: https://github.com/box/box-ui-elements/issues/1186 [552]: https://github.com/box/box-ui-elements/commit/69f329b [553]: https://github.com/jaredpalmer/formik/blob/master/docs/migrating-v2.md [554]: https://github.com/box/box-developer-changelog/issues/222 [555]: https://nvd.nist.gov/vuln/detail/CVE-2019-10742 [556]: https://github.com/hapi/address ## New parameters for Search API New optional query parameters have been made available for the [Search API](/reference/get-search), namely `sort` and `direction`. The purpose of these parameters is to allow applications to sort items by their `modified_at` date in ascending or descending order. ## New fields for File Versions New optional fields have been made available within the File Version object, namely `trashed_by`, `restored_by` and `restored_at`. The fields will be returned as part of the standard [File Version object](/reference/resources/file-version/). The purpose of these fields is to have a better understanding of when file versions have been moved in and out of the trash, and by whom. ## New Features and Enhancements * Added `api_` call decorator for copy method. ## New Features and Enhancements 1. Added enum for complete field on `BoxTasks` Actions enum ([#745](https://github.com/box/box-java-sdk/pull/745)) ## Java SDK v2.40.0 released 1. Update `comments.md` ([#749](https://github.com/box/box-java-sdk/pull/749)) 2. Update `events.md` ([#750](https://github.com/box/box-java-sdk/pull/750)) 3. Update `collections.md` ([#748](https://github.com/box/box-java-sdk/pull/748)) 4. Update `files.md` ([#747](https://github.com/box/box-java-sdk/pull/747)) 5. Update `files.md` ([#746](https://github.com/box/box-java-sdk/pull/746)) 6. Update `files.md` to tag thumbnail code sample ([#733](https://github.com/box/box-java-sdk/pull/733)) 7. Update `authentication.md` ([#739](https://github.com/box/box-java-sdk/pull/739)) ## New Shield Error Code A new error code for [Box Shield][box-shield] has been released. The new `403 - forbidden_by_policy` error code will be raised when the enterprise has applied Shield access policies that prevent the action, such as downloading items. The resolution path is to contact your Box admin to adjust the Shield access policies if the action is required. See the [error code documentation](/guides/api-calls/permissions-and-errors/common-errors) for more details and solution path. [box-shield]: https://www.box.com/shield ## Relay API Endpoints will EOL on December 31st, 2019 On December 31st, 2019, Box will end of life all Relay Classic API endpoints, which includes the following functions: * Get list of published Relay Classic templates. * Get list of Relay Classic workflows. * Launch a Relay Classic workflow. To ensure that your application continues to function after December 31st please remove all calls to the Relay Classic APIs listed above. For more information please see our [community thread](https://community.box.com/t5/Platform-and-Development-Forum/Relay-Classic-APIs-to-EOL-on-December-31st-2019/m-p/77729#M7276) on the topic. ## Java SDK v2.39.0 released 1. Deprecating batch ([#741](https://github.com/box/box-java-sdk/pull/741)) 2. Add support for Task `completion_rule` ([#738](https://github.com/box/box-java-sdk/pull/738)) ## Windows .NET SDK v3.20.0 released See [Changelog](https://github.com/box/box-windows-sdk-v2/blob/master/CHANGELOG.md#3200) for details Commits: [`v3.19.0...v3.20.0`](https://github.com/box/box-windows-sdk-v2/compare/`v3.19.0...v3.20.0`) [`nuget.org/packages/Box.V2/3.20.0`](https://www.nuget.org/packages/Box.V2/3.20.0) [`nuget.org/packages/Box.V2.Core/3.20.0`](https://www.nuget.org/packages/Box.V2.Core/3.20.0) ## Java SDK v2.38.0 released 1. Added field `trashed_by`, `restored_at`, `restored_by`, `purged_at` to `FileVersion` ([#734](https://github.com/box/box-java-sdk/pull/734)) 2. Set file attributes on chunked uploads ([#730](https://github.com/box/box-java-sdk/pull/730)) ## New security enhancements for token revocation We have enhanced the capabilities of the [token revocation](/reference/post-oauth2-revoke/) endpoint to permit [downscoped tokens][downscope] to be revoked prior to their expiration time. Previous to this update only fully scoped access tokens could be revoked through the /revoke endpoint. With this new enhancement downscoped tokens may now be revoked in addition to the fully scoped access tokens. More information is available [here][blog_token_revocation]. [blog_token_revocation]: https://medium.com/box-developer-blog/new-security-enhancements-for-revoking-access-tokens-79b9960a7ce2 [downscope]: /guides/authentication/tokens/downscope ## New completion\_rule field for Tasks A new optional field has been made available within the Task object, `completion_rule`. This field may be set through the use of the the [Create Task](/reference/post-tasks) and [Update Task](/reference/put-tasks-id) endpoints, and will be returned as part of the standard [Task object](/reference/resources/task/). The purpose of this field is to set the conditions under which a task is completed, based on user involvement. When a task is created with a completion rule of `all_assignees` (default), the task will only be considered completed when all assignees have completed the task. When a task is created with a completion rule of `any_assignee`, the task will be considered completed when one assignee has completed the task. ## Windows .NET SDK v3.19.0 released See [Changelog](https://github.com/box/box-windows-sdk-v2/blob/master/CHANGELOG.md#3190) for details Commits: [`v3.18.0...v3.19.0`](https://github.com/box/box-windows-sdk-v2/compare/`v3.18.0...v3.19.0`) [`nuget.org/packages/Box.V2/3.19.0`](https://www.nuget.org/packages/Box.V2/3.19.0) [`nuget.org/packages/Box.V2.Core/3.19.0`](https://www.nuget.org/packages/Box.V2.Core/3.19.0) ## Python SDK v2.6.0 released Adding a new get admin events function with `created_before`, `created_after`, and `event_type` parameters. Thank you `@capk1rk`! ## Box CLI v2.4.0 released [CHANGELOG](https://github.com/box/boxcli/blob/master/CHANGELOG.md#240-2019-08-29) * Fix output when updating collaboration role to owner ([#165](https://github.com/box/boxcli/pull/165)) [`f8be639`](https://github.com/box/boxcli/commit/f8be639) * Print all columns in CSV output for heterogeneous collection ([#164](https://github.com/box/boxcli/pull/164)) [`a8dda02`](https://github.com/box/boxcli/commit/a8dda02) * Update plugin-help to resolve warning about `lodash.template` ([#160](https://github.com/box/boxcli/pull/160)) [`3730bc5`](https://github.com/box/boxcli/commit/3730bc5) * Bump `lodash` from 4.17.11 to 4.17.13 ([#156](https://github.com/box/boxcli/pull/156)) [`d035e74`](https://github.com/box/boxcli/commit/d035e74) * Add support for setting external app user ID ([#153](https://github.com/box/boxcli/pull/153)) [`d68b61b`](https://github.com/box/boxcli/commit/d68b61b) * Update `js-yaml` to 3.13.1 ([#151](https://github.com/box/boxcli/pull/151)) [`13745df`](https://github.com/box/boxcli/commit/13745df) [`v2.3.0...v2.4.0`](https://github.com/box/boxcli/compare/`v2.3.0...v2.4.0`) ## Node SDK v1.29.1 released * Regenerate JTI and retry auth request when JTI claim is rejected ([#405](https://github.com/box/box-node-sdk/pull/405)) [`c0ccdb9`](https://github.com/box/box-node-sdk/commit/c0ccdb9) [`v1.29.0...v1.29.1`](https://github.com/box/box-node-sdk/compare/`v1.29.0...v1.29.1`) ## Java SDK v2.37.0 released 1. Improving authentication docs for `BoxConfig.readFrom()` ([#723](https://github.com/box/box-java-sdk/pull/723)) 2. Add replace functionality for multi select metadata ([#726](https://github.com/box/box-java-sdk/pull/726)) ## Java SDK v2.36.0 released 1. Added convenience function for shared link and fixed setting… ([#720](https://github.com/box/box-java-sdk/pull/720)) 2. Add missing fields to files, folders, and web links ([#719](https://github.com/box/box-java-sdk/pull/719)) ## Java SDK v2.35.0 released 1. Added support for `is_externally_owned` field ([#714](https://github.com/box/box-java-sdk/pull/714)) 2. Added exception messaging for old `error` and `error_description` ([#710](https://github.com/box/box-java-sdk/pull/710)) ## New supported values in Tasks API On June 26th, Box released support for a new task type, general tasks. When creating or updating a task, the `action` field can either be `review` for approval tasks or `complete` for the new general tasks. This change also affects the accepted values when updating a task assignment. If you want to update an approval/review task, the `resolution_state` can be set to `incomplete`, `approved`, or `rejected`. A general/complete task can have a `resolution_state` of `incomplete` or `completed`. The Tasks API doesn't refer to tasks as "General" or "Approval" within the response body. This is reflected only within Box's UI. Docs can be found [here](/reference/resources/task/). ## Windows .NET SDK v3.18.0 released See [Changelog](https://github.com/box/box-windows-sdk-v2/blob/master/CHANGELOG.md#3180) for details Commits: [`v3.17.0...v3.18.0`](https://github.com/box/box-windows-sdk-v2/compare/`v3.17.0...v3.18.0`) [`nuget.org/packages/Box.V2/3.18.0`](https://www.nuget.org/packages/Box.V2/3.18.0) [`nuget.org/packages/Box.V2.Core/3.18.0`](https://www.nuget.org/packages/Box.V2.Core/3.18.0) ## Python SDK v2.5.0 released Allowed passing `None` to clear `configurable_permission` field in the `add_member()` method. ## Java SDK v2.34.0 released 1. Added fields: action for task ([#707](https://github.com/box/box-java-sdk/pull/707)) ## Replaced Obsolete Field in Collaborations In 2018 a new field, `acceptance_requirements_status` was added to the GET collaborations/id API endpoint to support additional notification use cases. This field includes terms of service, 2-factor auth, and strong password requirements. The existing `acceptance_requirements` field, which only contains Terms of Service requirements, have been replaced with the new `acceptance_requirements_status`. Previously a call to `GET /collaboration/?fields=acceptance_requirements` would return an object like the following: ```js theme={null} "acceptance_requirements": {     "terms_of_service": {         "type": "terms_of_service",         "id":     } } ``` With the new field, the request `GET /collaboration/?fields=acceptance_requirements_status` would return the following: ```js theme={null} "acceptance_requirements_status": { "terms_of_service_requirement": { "is_accepted": true, "terms_of_service": { "type": "terms_of_service", "id": } }, "strong_password_requirement": { "enterprise_has_strong_password_required_for_external_users": true, "user_has_strong_password": false }, "two_factor_authentication_requirement": { "enterprise_has_two_factor_auth_enabled": true, "user_has_two_factor_authentication_enabled" true } } ``` ## Java SDK v2.33.0 released 1. Added test for making sure part buffer is correct size ([#703](https://github.com/box/box-java-sdk/pull/703)) 2. Allow setting `can_non_owners_invite` field on Folder objects ([#700](https://github.com/box/box-java-sdk/pull/700)) ## Box CLI v2.3.0 released [CHANGELOG](https://github.com/box/boxcli/blob/master/CHANGELOG.md#230-2019-05-23) [`v2.2.0...v2.3.0`](https://github.com/box/boxcli/compare/`v2.2.0...v2.3.0`) ## Python SDK v2.4.1 released 1. Added ability for users to use set metadata on [files](https://github.com/box/box-python-sdk/blob/master/docs/usage/files.md#set-metadata) and [folders](https://github.com/box/box-python-sdk/blob/master/docs/usage/folders.md#set-metadata) ## TLS 1.0 deprecated complete On May 13th, 2019, Box began the process of disabling TLS 1.0 requests to Box APIs. As of today, all TLS 1.0 API requests will be returning a response stating that a secure connection could not be established when making API calls. Impacted developers will have been notified through multiple channels over the last 6-12 months, but should your application be impacted you will need to update your systems to again be able to make API requests to Box. Please see our TLS 1.0 deprecation guide to upgrade your systems to TLS 1.2. For any questions or for addition support, please [file a support ticket][support_ticket]. [support_ticket]: https://community.box.com/t5/custom/page/page-id/BoxSearchLithiumTKB ## Box CLI v2.2.0 released * Update CHANGELOG for `v2.2.0` release ([#143](https://github.com/box/boxcli/pull/143)) [`96b49d5`](https://github.com/box/boxcli/commit/96b49d5) * Remove unnecessary dependency ([#141](https://github.com/box/boxcli/pull/141)) [`7ac5563`](https://github.com/box/boxcli/commit/7ac5563) * Record text of third party licenses ([#142](https://github.com/box/boxcli/pull/142)) [`47b78f1`](https://github.com/box/boxcli/commit/47b78f1) * Build command docs on separate pages ([#139](https://github.com/box/boxcli/pull/139)) [`01534f1`](https://github.com/box/boxcli/commit/01534f1) * Catch bulk input errors with converted delegate command ([#134](https://github.com/box/boxcli/pull/134)) [`5cd5eee`](https://github.com/box/boxcli/commit/5cd5eee) * Add metadata set commands ([#136](https://github.com/box/boxcli/pull/136)) [`efa33ed`](https://github.com/box/boxcli/commit/efa33ed) * Add issue template ([#138](https://github.com/box/boxcli/pull/138)) [`a5cbddf`](https://github.com/box/boxcli/commit/a5cbddf) * Fix duplicate call during bulk input on delegated command ([#133](https://github.com/box/boxcli/pull/133)) [`ba3d65a`](https://github.com/box/boxcli/commit/ba3d65a) * Fix adding `web_links` to a collection ([#132](https://github.com/box/boxcli/pull/132)) [`8fc2023`](https://github.com/box/boxcli/commit/8fc2023) * Add search sort flags ([#131](https://github.com/box/boxcli/pull/131)) [`57f8d3d`](https://github.com/box/boxcli/commit/57f8d3d) [`v2.1.0...v2.2.0`](https://github.com/box/boxcli/compare/`v2.1.0...v2.2.0`) ## Windows .NET SDK v3.17.0 released * Fixed the encoding of dates in the query parameters for Events and Search endpoints * Deprecated `FilesManager.DownloadStreamAsync()` and introduced a replacement method with correct parameter types for byte offsets: `FilesManager.DownloadAsync()` [`nuget.org/packages/Box.V2/3.17.0`](https://www.nuget.org/packages/Box.V2/3.17.0) [`nuget.org/packages/Box.V2.Core/3.17.0`](https://www.nuget.org/packages/Box.V2.Core/3.17.0) ## Windows .NET SDK v3.16.0 released * Added `sort` and `direction` parameters to `client.SearchManager.SearchAsync()` to control sort order * Added `extension` parameter to `client.FilesManager.GetThumbnailAsync()` to control which thumbnail format is returned (thanks `@guilmori`!) * Fixed a bug where query string parameters were not correctly encoded * Added `SetFileMetadataAsync()` and `SetFolderMetadataAsync()` methods to `client.MetadataManager` to set metadata keys and values, overwriting existing values for the provided keys. * Automatically retry most API calls when the API responds with a transient error status code [`nuget.org/packages/Box.V2/3.16.0`](https://www.nuget.org/packages/Box.V2/3.16.0) [`nuget.org/packages/Box.V2.Core/3.16.0`](https://www.nuget.org/packages/Box.V2.Core/3.16.0) ## Node SDK v1.29.0 released * Prepare `v1.29.0` release ([#381](https://github.com/box/box-node-sdk/pull/381)) [`4860e7c`](https://github.com/box/box-node-sdk/commit/4860e7c) * Add convenience methods for setting metadata ([#376](https://github.com/box/box-node-sdk/pull/376)) [`1938e39`](https://github.com/box/box-node-sdk/commit/1938e39) * Use HTML comments in issue template [`01f21df`](https://github.com/box/box-node-sdk/commit/01f21df) * Document search sort parameters ([#370](https://github.com/box/box-node-sdk/pull/370)) [`257e748`](https://github.com/box/box-node-sdk/commit/257e748) [`v1.28.0...v1.29.0`](https://github.com/box/box-node-sdk/compare/`v1.28.0...v1.29.0`) ## Java SDK v2.32.0 released 1. Support for Set Metadata ([#697](https://github.com/box/box-java-sdk/pull/697)) ## Changes to Task (Assignment) API responses We have released an update to the API responses of the [Get Task](/reference/get-tasks-id) and [Get Task Assignment](/reference/get-task-assignments-id) endpoints. Prior to this change, if a call was made to get a task or task assignment with a valid task ID, and that file was deleted or your permissions changed to prevent viewing the file, you would receive a 404 error because the tasks would be deleted with the file. With this new change, the response returned will be the task object with a `null` response where the item would be, rather than a 404 error response. ## Java SDK v2.31.0 released 1. Add support for sorting folder items ([#694](https://github.com/box/box-java-sdk/pull/694)) ## Box CLI v1.4.0 released * Added the option to update collaboration expiration date ## Java SDK v2.30.1 released 1. Fix date parsing to correctly handle RFC3339 timezone format ([#693](https://github.com/box/box-java-sdk/pull/693)) ## Java SDK v2.30.0 released 1. Added `action_by` field to `BoxEvent` ([#692](https://github.com/box/box-java-sdk/pull/692)) ## Java SDK v2.29.0 released 1. Support for uploading file with description ([#690](https://github.com/box/box-java-sdk/pull/690)) 2. Add sort and direction fields to search ([#689](https://github.com/box/box-java-sdk/pull/689)) ## Python SDK v2.3.2 released * Fixing an issue in `v2.3.1` where package could not be installed. ## Box CLI 2.1.0 release A new version of the Box CLI has been released, taking the version from 2.0.0 to 2.1.0. This release includes a number of feature enhancements and bug fixes: * Fixed paging for events commands ([link][github_cli_p126]) * Updated `lodash` version ([link][github_cli_p129]) * Send fields parameter to API when `--fields` flag is used ([link][github_cli_p113]) * Fix event-types flag ([link][github_cli_p120]) * Added build NPM script ([link][github_cli_commit]) [github_cli_p126]: https://github.com/box/boxcli/pull/126 [github_cli_p129]: https://github.com/box/boxcli/pull/129 [github_cli_p113]: https://github.com/box/boxcli/pull/113 [github_cli_p120]: https://github.com/box/boxcli/pull/120 [github_cli_commit]: https://github.com/box/boxcli/commit/f0f88f66e3014afba616b5a2994157d435094b56 ## Windows .NET SDK v3.15.0 released * Added support for passing custom `IBoxService` to `BoxJWTAuth` constructor. [`nuget.org/packages/Box.V2/3.15.0`](https://www.nuget.org/packages/Box.V2/3.15.0) [`nuget.org/packages/Box.V2.Core/3.15.0`](https://www.nuget.org/packages/Box.V2.Core/3.15.0) ## Python SDK v2.3.0 released * Added the ability to set [file description upon upload](https://github.com/box/box-python-sdk/blob/master/docs/usage/files.md#upload-a-file) * Added support for [basic authenticated proxy and unauthenticated proxy](https://github.com/box/box-python-sdk/blob/master/docs/usage/configuration.md#proxy) ## Node SDK v1.28.0 released * Prepare for `v1.28.0` release ([#366](https://github.com/box/box-node-sdk/pull/366)) [`8fa21de`](https://github.com/box/box-node-sdk/commit/8fa21de) * Add common item methods for Web Links ([#364](https://github.com/box/box-node-sdk/pull/364)) [`7549d4f`](https://github.com/box/box-node-sdk/commit/7549d4f) [`v1.27.0...v1.28.0`](https://github.com/box/box-node-sdk/compare/`v1.27.0...v1.28.0`) ## Box Android SDK v4.2.3 released Contains various bug fixes and stability improvements ## Python SDK v2.2.2 released * Updated `requests-toolbelt` dependency restriction ## Windows .NET SDK v3.14.1 released * Removed unnecessary `package.config` from sample files. [`nuget.org/packages/Box.V2/3.14.1`](https://www.nuget.org/packages/Box.V2/3.14.1) [`nuget.org/packages/Box.V2.Core/3.14.1`](https://www.nuget.org/packages/Box.V2.Core/3.14.1) ## Java SDK v2.28.1 released 1. Wrong casting for response in `BoxAPIResponse` for `BoxMetadataCascadePolicy.forceApply()` ([#685](https://github.com/box/box-java-sdk/pull/685)) ## Windows .NET SDK v3.14.0 released * Added trace ID to API response exception message. * Fix deserialization of translated task assignment status. [`nuget.org/packages/Box.V2/3.14.0`](https://www.nuget.org/packages/Box.V2/3.14.0) [`nuget.org/packages/Box.V2.Core/3.14.0`](https://www.nuget.org/packages/Box.V2.Core/3.14.0) ## Windows .NET SDK v3.13.1 released * Fixed an issue where some objects related to Events did not have their `.Id` property correctly deserialized from JSON [`nuget.org/packages/Box.V2/3.13.1`](https://www.nuget.org/packages/Box.V2/3.13.1) [`nuget.org/packages/Box.V2.Core/3.13.1`](https://www.nuget.org/packages/Box.V2.Core/3.13.1) ## Java SDK v2.28.0 released 1. Added Request ID to exception message with Trace ID ([#684](https://github.com/box/box-java-sdk/pull/684)) 2. user avatar feature ([#683](https://github.com/box/box-java-sdk/pull/683)) ## Python SDK v2.2.1 released * Fixing an issue in `v2.2.0` where package could not be installed. ## Python SDK v2.2.0 released * Added ability for user to [retrieve an avatar](https://github.com/box/box-python-sdk/blob/master/docs/usage/user.md#get-the-avatar-for-a-user) for a user. * Changed retry strategy to use exponential back-off with randomized jitter. ## Windows .NET SDK v3.13.0 released * Added the `.InviteEmail` property to `BoxCollaboration` objects, which displays the email address for the invited user in a pending collaboration * Added `.Timezone`, `.IsExternalCollabRestricted`, `.Tags`, and `.Hostname` properties to `BoxUser` objects [`nuget.org/packages/Box.V2/3.13.0`](https://www.nuget.org/packages/Box.V2/3.13.0) [`nuget.org/packages/Box.V2.Core/3.13.0`](https://www.nuget.org/packages/Box.V2.Core/3.13.0) ## Windows .NET SDK v3.12.0 released * Added `client.FilesManager.GetCollaborationsCollectionAsync()` and deprecated `client.FilesManager.GetCollaborationsAsync()` to enable paging through the entire collection of collaborations on a file * Added `client.WebLinksManager.CopyAsync()`, `client.WebLinksManager.CreateSharedLinkAsync()`, and `client.WebLinksManager.DeleteSharedLinkAsync()` * Added `client.UsersManager.GetUserAvatarAsync()` for retrieving a user's avatar image [`nuget.org/packages/Box.V2/3.12.0`](https://www.nuget.org/packages/Box.V2/3.12.0) [`nuget.org/packages/Box.V2.Core/3.12.0`](https://www.nuget.org/packages/Box.V2.Core/3.12.0) ## Python SDK v2.1.0 released * Added ability for user to [chunk upload files](https://github.com/box/box-python-sdk/blob/master/docs/usage/files.md#chunked-upload) and resume uploads for interrupted uploads. * Added ability to [verify webhook message](https://github.com/box/box-python-sdk/blob/master/docs/usage/webhook.md#validate-webhook-message) * Added ability for user to add metadata classification to [files](https://github.com/box/box-python-sdk/blob/master/docs/usage/files.md#set-a-classification) and [folders](https://github.com/box/box-python-sdk/blob/master/docs/usage/folders.md#set-a-classification). * Bug fix where calling `.response_object()` method on an API object could throw. ## Java SDK v2.27.0 Released 1. Metadata Classification ([#671](https://github.com/box/box-java-sdk/pull/671)) ## Windows .NET SDK v3.11.0 released * Added support for reading and writing more Group fields * Fixed an issue where the `UnsharedAt` field of a shared link could not be set to `null` * Fixed renaming a file on new version upload * Added the ability to set the content modification timestamp on file version upload * Fixed issues around reading the source of an event when the source item is a web link [`nuget.org/packages/Box.V2/3.11.0`](https://www.nuget.org/packages/Box.V2/3.11.0) [`nuget.org/packages/Box.V2.Core/3.11.0`](https://www.nuget.org/packages/Box.V2.Core/3.11.0) ## New Sidebar UI Element & Open With Element GA Two major releases have been made to the Box UI Elements: 1. New Sidebar Element: This new element provides capabilities for incorporating the metadata sidebar for a file directly into your own application or website. Documentation is available [here](/guides/embed/ui-elements). 2. GA of Open With Element: The Open With element has been moved from beta to general availability. Open With delivers an individual button or an integration into the existing Content Explorer element to launch file content with Adobe Sign, G Suite, or Box Edit. Documentation is available [here](/guides/embed/ui-elements). Full release announcement is available [here][blog_new_element]. [blog_new_element]: https://medium.com/box-developer-blog/new-sidebar-element-the-ga-of-open-with-935936a0628f ## Java SDK v2.26.0 released 1. add missing fields to task and folder and add ability to get fields for tasks ([#677](https://github.com/box/box-java-sdk/pull/677)) 2. Fixed typos in `README.md` ([#678](https://github.com/box/box-java-sdk/pull/678)) 3. Add `invite_email` field to collaboration object ([#672](https://github.com/box/box-java-sdk/pull/672)) ## Java SDK v2.25.1 released 1. dependency upgrade for `bouncycastle` and `jose4j` ([#669](https://github.com/box/box-java-sdk/pull/669)) ## Box CLI V2 release A major version release (V2) has been made to the [Box CLI][guide]. See the following links for updated information: * [Release notes][cli_v2_release_notes]: Major revision details, breaking changes, and bug fixes. * [Command list][cli_v2_release_commands]: All commands available in the new CLI. * [Installation options][guide]: Standalone installers and source code options. [cli_v2_release_notes]: https://github.com/box/boxcli/blob/master/CHANGELOG.md#200 [cli_v2_release_commands]: https://github.com/box/boxcli#command-topics [guide]: [/guides/cli/quick-start/install-and-configure] ## Windows .NET SDK v3.10.0 released 1. Added functionality for Metadata Cascade Policy [`nuget.org/packages/Box.V2`](https://www.nuget.org/packages/Box.V2) [`nuget.org/packages/Box.V2.Core`](https://www.nuget.org/packages/Box.V2.Core/) ## Java SDK v2.25.0 released 1. Allow content streaming to box through `outputstream`. [#667](https://github.com/box/box-java-sdk/pull/667) ## Collaborations now show unregistered users An additional field, `invite_email`, has been added to the collaboration return object in the instance where an unregistered user has been added as a collaborator on a file or folder. This change was put in place because the current `accessible_by` object returned would show `null` as the result for an unregistered user. The new field will now show the email address that was used to invite the user. This change affects the following endpoints: * [Get Collaboration](/reference/get-collaborations-id) * [Get File Collaborations](/reference/get-files-id-collaborations) * [Get Folder Collaborations](/reference/get-folders-id-collaborations) Previously a collaboration object with an unregistered user would look like the following: ```js theme={null} { "type": "collaboration", "id": "376164239", ..... "accessible_by": null ..... } ``` With this new update the object returned would look like the following: ```js theme={null} { "type": "collaboration", "id": "376164239", ...... "accessible_by": null "invite_email": "sadfasdf@box.com", }, ...... } ``` ## Enterprise events API adds created\_by for supervisors A minor change has been made to the response object of the [enterprise events](/reference/get-events/#request) API endpoint in the event that an action is taken by a supervisor or internal admin user, such as a Box admin. Prior to this update the user information of the supervisor or internal admin user would be displayed in the `created_by` field of the response object. With this update the response will now show generic user information when that user is a supervisor or internal admin. Previously the `created_by` field in the response looked like this: ```js theme={null} "created_by": { "type": "user", "id": "2030401181", "name": "sshah+iadev", "login": "admin_sshah" } ``` With this update that same response would look similar to the following: ```js theme={null} "created_by": { "type": "user", "id": "box_support", "name": "Box Support", "login": "support@box.com" } ``` ## Java SDK v2.24.0 released 1. added tests and implementation for options object ([#661](https://github.com/box/box-java-sdk/pull/661)) 2. Expose object type on `BoxItem` ([#662](https://github.com/box/box-java-sdk/pull/662)) 3. Allow per-connection timeouts ([#660](https://github.com/box/box-java-sdk/pull/660)) 4. Add global setting for max requests ([#657](https://github.com/box/box-java-sdk/pull/657)) 5. added overload for `is_ongoing` field and added getter for `is_ongoing` ([#653](https://github.com/box/box-java-sdk/pull/653)) ## Breaking Changes * Python 2.6 is no longer supported. * Python 3.3 is no longer supported. * `client.search()` now returns a `Search` object that exposes a `query()` method to call the Search API. Use `client.search().query(**search_params)` instead of `client.search(**search_params)`. * `client.get_memberships(...)` has a change in signature. The limit and offset parameters have swapped positions to keep consistency with the rest of the SDK. * `client.groups(...)` has been changed to `client.get_groups`. The limit and offset parameters have swapped positions. * The `unshared_at` parameter for `item.create_shared_link(...)` and `file.get_shared_link_download_url(...)` now takes an `RFC3339-formatted ` `unicode` string instead of a `datetime.date`. Users migrating from `v1.x` can pass the value of `date.isoformat()` instead of the `date` object itself. * `Events.get_events(...)` now returns a list of `Event` instances rather than a list of `dict` representing events. `Event` inherits from `Mapping` but will not have all the same capabilities as `dict`. * Your code is affected if you use `Events.get_events(...)` and expect a list of `dict` rather than a list of `Mapping`. For example, if you use `__setitem__` (`event['key'] = value`), `update()`, `copy()`, or if your code depends on the `str` or `repr` of the `Event`. Use of `__getitem__` (`event['key']`), `get()`, and other `Mapping` methods is unaffected. See the [Python documentation](https://docs.python.org/2.7/library/collections.html#collections-abstract-base-classes) for methods supported on `Mapping` instances. * Migration: If you still need to treat an `Event` as a `dict`, you can get a deepcopy of the original `dict` using the new property on `BaseAPIJSONObject`, `response_object`. * `LoggingNetwork` has been removed. Logging calls are now made from the `DefaultNetwork` class. In addition, the logging format strings in this class have changed in a way that will break logging for any applications that have overridden any of these strings. They now use keyword format placeholders instead of positional placeholders. All custom format strings will now have to use the same keyword format placeholders. Though this is a breaking change, the good news is that using keyword format placeholders means that any future changes will be automatically backwards-compatible (as long as there aren't any changes to change/remove any of the keywords). * `File.update_contents()` and `File.update_contents_with_stream()` now correctly return a `File` object with the correct internal JSON structure. Previously it would return a `File` object where the file JSON is hidden inside `file['entries'][0]`. This is a bug fix, but will be a breaking change for any clients that have already written code to handle the bug. * Comparing two objects (e.g. a `File` and a `Folder`) that have the same Box ID but different types with `==` will now correctly return `False`. * The following methods now return iterators over the entire collection of returned objects, rather than a single page: * `client.users()` * `client.groups()` * `client.search().query()` * `folder.get_items()` Since `folder.get_items()` now returns an iterator, `folder.get_items_limit_offset()` and `folder.get_items_marker()` have been removed. To use marker based paging with `folder.get_items()`, pass the `use_marker=True` parameter and optionally specify a `marker` parameter to begin paging from that point in the collection. Additionally, `group.membership()` has been renamed to `group.get_memberships()`, and returns an iterator of membership objects. This method no longer provides the option to return tuples with paging information. * The `Translator` class has been reworked; `translator.get(...)` still returns the constructor for the object class corresponding to the passed in type, but `translator.translate(...)` now takes a `Session` and response object directly and produces the translated object. This method will also translate any nested objects found. * This change obviates the need for `GroupMembership` to have a custom constructor; it now uses the default `BaseObject` constructor. ## Features * All publicly documented API endpoints and parameters should now be supported by the SDK * Added more flexibility to the object translation system: * Can create non-global `Translator` instances, which can extend or not-extend the global default `Translator`. * Can initialize `BoxSession` with a custom `Translator`. * Can register custom subclasses on the `Translator` which is associated with a `BoxSession` or a `Client`. * All translation of API responses now use the `Translator` that is referenced by the `BoxSession`, instead of directly using the global default `Translator`. * Nested objects are now translated by `translator.translate()` * When the `auto_session_renewal` is `True` when calling any of the request methods on `BoxSession`, if there is no access token, `BoxSession` will renew the token *before* making the request. This saves an API call. * Auth objects can now be closed, which prevents them from being used to request new tokens. This will also revoke any existing tokens (though that feature can be turned off by passing `revoke=False`). Also introduces a `closing()` context manager method, which will auto-close the auth object on exit. * Various enhancements to the `JWTAuth` baseclass: * The `authenticate_app_user()` method is renamed to `authenticate_user()`, to reflect that it may now be used to authenticate managed users as well. See the method `docstring` for details. `authenticate_app_user()` is now an alias of `authenticate_user()`, in order to not introduce an unnecessary backwards-incompatibility. * The `user` argument to `authenticate_user()` may now be either a user ID string or a `User` instance. Before it had to be a `User` instance. * The constructor now accepts an optional `user` keyword argument, which may be a user ID string or a `User` instance. When this is passed, `authenticate_user()` and can be called without passing a value for the `user` argument. More importantly, this means that `refresh()` can be called immediately after construction, with no need for a manual call to `authenticate_user()`. Combined with the aforementioned improvement to the `auto_session_renewal` functionality of `BoxSession`, this means that authentication for `JWTAuth` objects can be done completely automatically, at the time of first API call. * The constructor now supports passing the RSA private key in two different ways: by file system path (existing functionality), or by passing the key data directly (new functionality). The `rsa_private_key_file_sys_path` parameter is now optional, but it is required to pass exactly one of `rsa_private_key_file_sys_path` or `rsa_private_key_data`. * Document that the `enterprise_id` argument to `JWTAuth` is allowed to be `None`. * `authenticate_instance()` now accepts an `enterprise` argument, which can be used to set and authenticate as the enterprise service account user, if `None` was passed for `enterprise_id` at construction time. * Authentications that fail due to the expiration time not falling within the correct window of time are now automatically retried using the time given in the Date header of the Box API response. This can happen naturally when the system time of the machine running the Box SDK doesn't agree with the system time of the Box API servers. * Added an `Event` class. * Moved `metadata()` method to `Item` so it's now available for `Folder` as well as `File`. * The `BaseAPIJSONObject` baseclass (which is a superclass of all API response objects) now supports `__contains__` and `__iter__`. They behave the same as for `Mapping`. That is, `__contains__` checks for JSON keys in the object, and `__iter__` yields all of the object's keys. * Added a `RecentItem` class. * Added `client.get_recent_items()` to retrieve a user's recently accessed items on Box. * Added support for the `can_view_path` parameter when creating new collaborations. * Added `BoxObjectCollection` and subclasses `LimitOffsetBasedObjectCollection` and `MarkerBasedObjectCollection` to more directly manage paging of objects from an endpoint. These classes manage the logic of constructing requests to an endpoint and storing the results, then provide `__next__` to iterate over the results. The option to return results one by one or as a `Page` of results is also provided. * Added a `downscope_token()` method to the `Client` class. This generates a token that has its permissions reduced to the provided scopes and for the optionally provided `File` or `Folder`. * Added methods for configuring `JWTAuth` from config file: `JWTAuth.from_settings_file` and `JWTAuth.from_settings_dictionary`. * Added `network_response` property to `BoxOAuthException`. * API Configuration can now be done per `BoxSession` instance. ## Other * Added extra information to `BoxAPIException`. * Added `collaboration()` method to `Client`. * Reworked the class hierarchy. Previously, `BaseEndpoint` was the parent of `BaseObject` which was the parent of all smart objects. Now `BaseObject` is a child of both `BaseEndpoint` and `BaseAPIJSONObject`. `BaseObject` is the parent of all objects that are a part of the REST API. Another subclass of `BaseAPIJSONObject`, `APIJSONObject`, was created to represent pseudo-smart objects such as `Event` that are not directly accessible through an API endpoint. * Added `network_response_constructor` as an optional property on the `Network` interface. Implementations are encouraged to override this property, and use it to construct `NetworkResponse` instances. That way, subclass implementations can extend the functionality of the `NetworkResponse`, by re-overriding this property. This property is defined and used in the `DefaultNetwork` implementation. * Move response logging to a new `LoggingNetworkResponse` class (which is made possible by the aforementioned `network_response_constructor` property). Now the SDK decides whether to log the response body, based on whether the caller reads or streams the content. * Add more information to the request/response logs from `LoggingNetwork`. * Add logging for request exceptions in `LoggingNetwork`. * Bugfix so that the return value of `JWTAuth.refresh()` correctly matches that of the auth interface (by returning a tuple of ((access token), (refresh token or None)), instead of only the access token). In particular, this fixes an exception in `BoxSession` that always occurred when it tried to refresh any `JWTAuth` object. * Fixed an exception that was being raised from `ExtendableEnumMeta.__dir__()`. * `CPython` 3.6 support. * Increased required minimum version of six to 1.9.0. ## Python SDK v2 Launched A major update (version 2.0) of the [Box Python SDK][python_sdk_v2] has been released with significant updates and API feature parity completion. [See here][python_sdk_v2_release_notes] for full API release notes. Along with the release, the following documentation changes have been made: * Updated Python [quick start guides](/guides/). * Updated Python [API references](/reference/) code samples. [python_sdk_v2]: https://github.com/box/box-python-sdk [python_sdk_v2_release_notes]: https://github.com/box/box-python-sdk/releases/tag/v2.0.0 ## New Box Open With Sidebar UI Element We have released an open beta version of a new Box UI Element, the 'Open With' element. 'Open With' will allow developers to embed a menu to open content stored in box with a partner application. The partners available with this beta release are Adobe Sign and G Suite. Documentation and setup instructions for this new element are [available here](/guides/embed/ui-elements). ## Java SDK v2.23.2 released 1. Batch headers patch ([#649](https://github.com/box/box-java-sdk/pull/649)) ## Java SDK v2.23.1 released 1. Fix opening too many TCP connections when issuing a high number of requests ([#646](https://github.com/box/box-java-sdk/pull/646)) ## Annotations available for Excel files in preview Currently, annotations capabilities don't appear within Excel files in preview, either via the [Box UI Content Preview element](/guides/embed/ui-elements) or expiring embed, even if annotations are enabled (`showAnnotations=true`). Starting on **September 13th, 2018**, users will be able to annotate Excel files like they can other file types (PDFs, docs, PPT). All 3 annotation types (highlight, point, and drawing) will be supported. If `showAnnotations` is set to `true` annotations on Excel files will be displayed. ## Windows .NET SDK v3.9.3 released * Strong named the assembly [`nuget.org/packages/Box.V2/3.9.3`](https://www.nuget.org/packages/Box.V2/3.9.3) [`nuget.org/packages/Box.V2.Core/3.9.3`](https://www.nuget.org/packages/Box.V2.Core/3.9.3) ## Java SDK v2.23.0 released 1. Metadata cascade policy ([#603](https://github.com/box/box-java-sdk/pull/603)) ## Add new fields to folder update and get info endpoints Two major releases have been added to the [update folder API endpoint](/reference/put-folders-id), `is_collaboration_restricted_to_enterprise`. This is a boolean value made to set whether future collaborations should be restricted to within the enterprise only. This does not affect existing collaborations. The value of this field will also be displayed when calling the [get folder info endpoint](/reference/get-folders-id). ## Add new action\_by field to enterprise events To better document admin actions taken on user accounts, we have added an `action_by` mini-user object in the enterprise events response data. This field will display the admin account which performed the user action, if applicable. For enterprise admins this would include the ID, login, and name of their account. For actions taken by a Box internal admin this would be: * id: `box_support` * login: `support@box.com` * name: `Box Support` The additional object is documented within the enterprise [event object attributes](/reference/resources/event/). ## Box user\_id field size changed The `user_id` field, used to track all platform users (that is, managed, externally managed, and app users), will soon be updated to begin producing 64-bit integer numeric values, rather than the 32-bit integers it creates currently. For customers who are translating the produced `user_id` strings from our APIs into 32-bit integer fields, your internal systems are affected by this update, and you must update them to support the new 64-bit `user_id` integer size. We recommend that all `user_id` fields be stored as strings, as per our [API documentation](/reference/resources/user/). ## Generic method added to the Salesforce SDK The Box for Salesforce Developer Toolkit now provides a global method, `sendRequest` that accepts an [`HttpRequest`][salesforce_sdk_httprequest] object as a parameter and returns an [`HttpResponse`][salesforce_sdk_httpresponse] object. This method will use the authentication details of the Service Account to make calls to Box's APIs, allowing you to focus on incorporating the business logic of your integration. For more details about the added method, please see the [method details](/guides/tooling/sdks/salesforce) and [sample code](/guides/tooling/sdks/salesforce) in the Box metadata sidebar for Salesforce Developer Toolkit documentation. [salesforce_sdk_httprequest]: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_restful_http_httprequest.htm [salesforce_sdk_httpresponse]: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_restful_http_httpresponse.htm#apex_classes_restful_http_httpresponse ## Java SDK v2.22.0 Released 1. patch for transfer content to another user ([#632](https://github.com/box/box-java-sdk/pull/632)) ## Expanded Relay Workflow API We have expanded the capabilities of [Box Relay][box_relay], a workflow tool co-developed between Box and IBM, with a new Workflow API. The Relay Workflow API allows you to launch Box Relay workflows and retrieve the statuses of those workflows from within your application. It also allows you to view which workflow templates have been published in file directly into your instance of Box Relay. For more information about the API, please see our [announcement blog post][box_relay_announce]. [box_relay]: https://www.box.com/collaboration/relay-workflow [box_relay_announce]: https://medium.com/box-developer-blog/introducing-the-box-relay-workflow-api-f6eed1457711 ## Historical Platform Activity CSV report A new report has been made available via the website. Documentation is available in the Box Admin Console that displays an enterprise's historical utilization of platform resources. This report displays an enterprise's Monthly Active Users, API calls, and bandwidth consumption by application by month for January 1, 2017 to March 31, 2018. More information can be found [here][platform_activity_csv]. [platform_activity_csv]: https://community.box.com/t5/How-to-Guides-for-Admins/Running-the-Platform-Activity-Report/ta-p/58620 ## Java SDK v2.21.0 released 1. `Sharedlink` password ([#623](https://github.com/box/box-java-sdk/pull/623)) 2. Correct link ([#626](https://github.com/box/box-java-sdk/pull/626)) ## Java SDK v2.20.2 released 1. Case Insensitivity for Response Headers ([#620](https://github.com/box/box-java-sdk/pull/620)) ## Update to the Box CLI We have released updates to the [Box CLI](/guides/cli/quick-start). This version includes the following updates: * **[New Multizones commands][cli_update_multizones]**: Adds support for [Box Multizones][cli_update_multizones_announce] for data residency. * **[Fix for user CSV operations][cli_update_csv_operations]**: Fixes a bug that prevented users using Open With Element: The Open With element has been moved from saving users data beta to CSV files. - **[Ability to set `can_non_owners_invite` flag on folder updates][cli_update_folder_update_flag]**: Allows setting whether non-owners can invite other users to collaborate on the folder. * **[New CLI configuration dump command][cli_update_config_dump]**: Adds the ability to dump the Box configuration file as a single string, optionally with escaped quotes, in order to copy the value to general availability. Open With delivers an environment variable or configuration property (for example, in AWS individual button or Azure). [cli_update_multizones]: https://github.com/box/boxcli/pull/91 [cli_update_multizones_announce]: https://blog.box.com/blog/multizones-storage-data-residency-compliance/ [cli_update_csv_operations]: https://github.com/box/boxcli/pull/82 [cli_update_folder_update_flag]: https://github.com/box/boxcli/pull/92 [cli_update_config_dump]: https://github.com/box/boxcli/pull/83 ## Box Android SDK v4.2.0 released This version is to provide support for 16+ devices once TLS 1.0 is deprecated. ## Windows .NET SDK v3.9.2 released * Added support for setting flag allowing non owners of a folder to invite collaborators. [`nuget.org/packages/Box.V2/3.9.2`](https://www.nuget.org/packages/Box.V2/3.9.2) [`nuget.org/packages/Box.V2.Core/3.9.2`](https://www.nuget.org/packages/Box.V2.Core/3.9.2) ## Windows .NET SDK v3.9.1 released Fixed bug where Xamarin applications would run out of connections. [`nuget.org/packages/Box.V2/3.9.1`](https://www.nuget.org/packages/Box.V2/3.9.1) [`nuget.org/packages/Box.V2.Core/3.9.1`](https://www.nuget.org/packages/Box.V2.Core/3.9.1) ## Java SDK v2.20.1 released 1. Handle JSON parse error in response exception ([#615](https://github.com/box/box-java-sdk/pull/615)) 2. Fix return object for `uploadNewVersion()` ([#614](https://github.com/box/box-java-sdk/pull/614)) ## Java SDK v2.20.0 released * multi select metadata field ([#610](https://github.com/box/box-java-sdk/pull/610)) * Fix check for duplicate As-User headers ([#612](https://github.com/box/box-java-sdk/pull/612)) ## Windows .NET SDK v3.9.0 released * Added support for Storage Policies [`nuget.org/packages/Box.V2/3.9.0`](https://www.nuget.org/packages/Box.V2/3.9.0) [`nuget.org/packages/Box.V2.Core/3.9.0`](https://www.nuget.org/packages/Box.V2.Core/3.9.0) ## Java SDK v2.19.0 released 1. Multizones ([#598](https://github.com/box/box-java-sdk/pull/598)) 2. Add `getLogin()` method on `BoxCollaborator.Info` ([#602](https://github.com/box/box-java-sdk/pull/602)) 3. Add support for `multiSelect` fields in metadata ([#597](https://github.com/box/box-java-sdk/pull/597)) ## Windows .NET SDK v3.8.0 released * Fixed an issue where users could not create `BoxClient` on `Xamarin` * Added File property to `BoxLock` objects in events * Added `MetadataManager.DeleteMetadataTemplate(string scope, string template)` for deleting a Metadata template * Made API URLs modifiable in `BoxConfig` * Improved API response error objects/messages [`nuget.org/packages/Box.V2/3.8.0`](https://www.nuget.org/packages/Box.V2/3.8.0) [`nuget.org/packages/Box.V2.Core/3.8.0`](https://www.nuget.org/packages/Box.V2.Core/3.8.0) ## Java SDK v2.18.0 released 1. Error object ([#588](https://github.com/box/box-java-sdk/pull/588)) 2. Quick fix for NPE on `request.toString()` in interceptor ([#595](https://github.com/box/box-java-sdk/pull/595)) 3. Add support for fetching representation content ([#583](https://github.com/box/box-java-sdk/pull/583)) 4. fixed `BoxConfig` constructor method where `privateKeyPassword` was not being set ([#593](https://github.com/box/box-java-sdk/pull/593)) ## Platform Activity CSV report A report has been made available in the Box Admin Console that displays an enterprise's utilization of platform resources. The first version of this report displays integration into the total number of API calls to the Box existing Content API by day effective April 1st, 2018. Future iterations of this report will display additional resource consumption (Monthly Active Users, bandwidth, and storage) by service and will also include historical data. For more information, please see the \[Running Reports article in Box Community]\[community]. ## Windows .NET SDK v3.7.0 released 1. Added support for assigning a retention policy to a metadata template 2. Added `CONTENT_ACCESS` event type to enum [`nuget.org/packages/Box.V2/3.7.0`](https://www.nuget.org/packages/Box.V2/3.7.0) [`nuget.org/packages/Box.V2.Core/3.7.0`](https://www.nuget.org/packages/Box.V2.Core/3.7.0) ## Metadata-driven retention policies We have introduced new functionality in the [Retention Policy Object](/reference/resources/retention-policy/) API Explorer element to support metadata-driven retention policies, where retention policies can be applied to individual files based on custom metadata. This also enables customers to configure retention policies at the launch file level in addition to at the global and folder levels. In addition to bringing these new, expanded Box Governance capabilities to Box Admins via the Box Admin Console, we’re also making these capabilities available via the [Retention Policy](/reference/resources/retention-policy/) and [Retention Assignment](/reference/resources/retention-policy-assignment/) APIs and in Box's Java, Node, and .NET [SDKs](/guides/tooling/sdks). ## Box CLI v1.2.0 released * Created bulk actions for the following commands: * users * update * groups * create * update * delete * group memberships * create * update * delete * collaborations * add * update * delete * Added filtering by event type to `box events get` and `box events poll` * Added a command for deleting metadata templates from files and folders. * Bumped underlying `box-windows-sdk` to `v3.6.0` * Fixed a bug hindering creating float types for metadata on files and folders. * Fixed a bug that did not assign the `User-Agent` HTTP header correctly. * Fixed a bug that wasn't reporting all errors to `stderr`. * Fixed a bug with bulk creation of metadata templates. * Fixed a bug giving duplicate commands on group `membership` command. * Fixed a bug with creating the wrong object for `tracking_codes` on users. * Fixed a bug requiring an ID in CSV files on bulk creation of users. ## Java SDK v2.17.0 released 1. Add Metadata-driven Retention Policies support ([#535](https://github.com/box/box-java-sdk/pull/535)) ## multiSelect field type added to metadata templates We have introduced a new attribute type to [Metadata Templates](/reference/resources/metadata-template/) called `multiSelect`, which translates to multiple selection. This new attribute type allows for a checkbox style multiple selection of values when composing template instances on files content with Adobe Sign, G Suite, or folders. The addition of this field introduces changes to the [Metadata Object](/reference/resources/metadata-template/) (template instance) since enabled `multiSelect` options are represented using an array of string values, where each string in the array corresponds to the key of a `multiSelect` option. ## Java SDK v2.16.1 released 1. Add `CONTENT_ACCESS` event type. ([#581](https://github.com/box/box-java-sdk/pull/581)) ## Update to Box Annotations The annotations update announced on March 5, 2018 has been re-enabled. ## Windows .NET SDK v3.6.0 released [Changelog](https://github.com/box/box-windows-sdk-v2/blob/master/CHANGELOG.md#360) [`nuget.org/packages/Box.V2/3.6.0`](https://www.nuget.org/packages/Box.V2/3.6.0) [`nuget.org/packages/Box.V2.Core`](https://www.nuget.org/packages/Box.V2.Core) ## Java SDK v2.16.0 released 1. Adjust JWT expiration interval ([#572](https://github.com/box/box-java-sdk/pull/572)) 2. Allow setting custom headers on API connection ([#562](https://github.com/box/box-java-sdk/pull/562)) 3. Fix JWT retry timestamp parsing ([#575](https://github.com/box/box-java-sdk/pull/575)) 4. Add support for User Tracking Codes ([#487](https://github.com/box/box-java-sdk/pull/487)) ## Windows .NET SDK v3.5.2 released Fix .NET Core package [`nuget.org/packages/Box.V2/3.5.2`](https://www.nuget.org/packages/Box.V2/3.5.2) [`nuget.org/packages/Box.V2.Core/3.5.2`](https://www.nuget.org/packages/Box.V2.Core/3.5.2) ## Windows .NET SDK v3.5.1 released * Switched to exponential backoff when the SDK receives a rate limit or server error response. * Force support for TLS `v1.1` or higher when available to improve the security of connections to the Box API. * Perform modified retry on JWT auth for when the local clock and the Box Server clock are not aligned as well as if the JWT ID has already been consumed. * Made `name` parameter optional on `RestoreTrashedAsync()`. [`nuget.org/packages/Box.V2/3.5.1`](https://www.nuget.org/packages/Box.V2/3.5.1) [`nuget.org/packages/Box.V2.Core/3.5.1`](https://www.nuget.org/packages/Box.V2.Core/3.5.1) ## Update to Box Annotations Due to performance issues reported by some users, the update has been rolled back to prevent critical business applications from getting impacted. Drawing Annotations and Point Annotations mode features have now been turned off. We do not have an ETA for performance fixes or when these features will be re-enabled. We sincerely apologize for the inconvenience. Users who used the Drawing Annotations capability while it was available will still be able to access their annotations once the feature Edit. Documentation is re-enabled. Until then, the said annotations will be stored in our application data store but won’t be exposed via the viewers. ## Java SDK v2.15.0 released 1. Allow retrieving Collaboration fields ([#570](https://github.com/box/box-java-sdk/pull/570)) 2. Implement Get Metadata Template by ID ([#568](https://github.com/box/box-java-sdk/pull/568)) ## Update to Box Annotations We will be introducing two enhancements to the annotations features available via the Box API that your customer uses in their custom application. The updates are as follows: * **Point Annotations mode**: We are enhancing point annotations by introducing Point Annotations mode. This allows users to expediently add annotations on a document without having to re-select the point annotation icon after each annotation. [here](/guides/embed/ui-elements). * **Drawing Annotations via Expiring Embed**: We launched Drawing Annotations in November of 2017. This provided end users the ability to free-form draw on their touch-enabled devices using touch or a stylus. We are excited to share that we're making Drawing Annotations Full release announcement is available via the Expiring Embed. Users using annotations via the Get Embed Link API will now have a whole new way to express themselves via Box Preview. ## Java SDK v2.14.1 released 1. Add randomization to exponential backoff ([#565](https://github.com/box/box-java-sdk/pull/565)) 2. Force TLS version 1.1 or greater when supported ([#548](https://github.com/box/box-java-sdk/pull/548)) 3. Delay successive API calls by `EventStream` ([#564](https://github.com/box/box-java-sdk/pull/564)) ## Breaking change to Metadata APIs On March 29, 2018, we will introduce a new data type (array of strings) in the response body of the Metadata API endpoints. We are making this change because we are adding a new field type to metadata templates in Box called `multiSelect`. This new field type represents a checkbox type multiple selection of values when creating template instances on files or folders. The selected options for this field type are stored in an array of strings, where each string in the array corresponds to the key of the chosen `multiSelect` option. An example metadata template JSON response body is shown below. The value for the key `audience1` shows an example of the new data type (array of strings) that we are introducing in this change. ```js theme={null} { "audience1": ["internal", "internalEng"], "documentType": "Q1 plans", "competitiveDocument": "no", "status": "active", "author": "Jones", "currentState": "proposal", "$type": "marketingCollateral-d086c908-2498-4d3e-8a1f-01e82bfc2abe", "$parent": "file_5010739061", "$id": "2094c584-68e1-475c-a581-534a4609594e", "$version": 0, "$typeVersion": 0, "$template": "marketingCollateral", "$scope": "enterprise_12345" } ``` ## Java SDK v2.14.0 released ## New Features, Enhancements, and Bug Fixes 1. fixes missing `can_view_path` property on collaboration object ([#560](https://github.com/box/box-java-sdk/pull/560)) 2. Add missing methods and documentation ([#559](https://github.com/box/box-java-sdk/pull/559)) 3. Add support for setting tags on items ([#554](https://github.com/box/box-java-sdk/pull/554)) ## Java SDK v2.13.0 released * Handle metadata values better ([#553](https://github.com/box/box-java-sdk/pull/553)) ## Java SDK v2.12.0 released 1. Fix collaboration notify parameter ([#545](https://github.com/box/box-java-sdk/pull/545)) 2. Add OAuth 2.0 token creation event type ([#533](https://github.com/box/box-java-sdk/pull/533)) 3. Implement invite user to enterprise ([#504](https://github.com/box/box-java-sdk/pull/504)) 4. Switch to `X-Box-UA` header for analytics ([#536](https://github.com/box/box-java-sdk/pull/536)) 5. Reduce Large File Upload memory usage ([#543](https://github.com/box/box-java-sdk/pull/543)) ## Windows .NET SDK v3.4.2 released * Updated Box SDK Version in `NuSpec` file to fix dependency issues for `Box V2` and `Box V2.Core`. [`nuget.org/packages/Box.V2/3.4.2`](https://www.nuget.org/packages/Box.V2/3.4.2) [`nuget.org/packages/Box.V2.Core/3.4.2`](https://www.nuget.org/packages/Box.V2.Core/3.4.2) ## Java SDK v2.11.0 released 1. Fix chunked upload for files > 2GB ([#531](https://github.com/box/box-java-sdk/pull/531)) 2. Add updated file version upload endpoint and deprecate old method ([#524](https://github.com/box/box-java-sdk/pull/524)) 3. Perform modified retry on JWT auth to avoid common JWT errors ## Java SDK v2.10.0 released * Add optional `is_confirmed` parameter for adding user email alias ([#499](https://github.com/box/box-java-sdk/pull/499)) * Add support for token revocation ([#510](https://github.com/box/box-java-sdk/pull/510)) * Metadata template delete ([#512](https://github.com/box/box-java-sdk/pull/512)) ## Windows .NET SDK v3.4.1 released * Added support for [Allowed Collaboration Domains](https://developer.box.com/reference/resources/collaboration-allowlist-entry/) * Added Event Type enum * Fixed deserialization issue with `BoxRepresentationStatus` [`nuget.org/packages/Box.V2/3.4.1`](https://www.nuget.org/packages/Box.V2/3.4.1) [`nuget.org/packages/Box.V2.Core/3.4.1`](https://www.nuget.org/packages/Box.V2.Core/3.4.1) ## Java SDK v2.9.0 released 1. Search `readme` update ([#506](https://github.com/box/box-java-sdk/pull/506)) 2. Add option to pass file `SHA-1` hash for upload integrity ([#502](https://github.com/box/box-java-sdk/pull/502)) 3. Events log limit ([#507](https://github.com/box/box-java-sdk/pull/507)) 4. Terms of Service ([#484](https://github.com/box/box-java-sdk/pull/484)) 5. Change `wiremock` port ([#505](https://github.com/box/box-java-sdk/pull/505)) 6. Delete redundant `response.disconnect()` from `moveFolderToUser()` ([#485](https://github.com/box/box-java-sdk/pull/485)) 7. Events `readme` patch ([#503](https://github.com/box/box-java-sdk/pull/503)) 8. Add missing webhook triggers to enum ([#497](https://github.com/box/box-java-sdk/pull/497)) 9. Fix `MetadataTemplate.updateMetadataTemplate()` type error ([#498](https://github.com/box/box-java-sdk/pull/498)) 10. Add missing event types to enum ([#500](https://github.com/box/box-java-sdk/pull/500)) 11. Add `modified_at` timestamp to `BoxComment.Info`([#501](https://github.com/box/box-java-sdk/pull/501)) 12. Collaboration whitelists ([#492](https://github.com/box/box-java-sdk/pull/492)) 13. Trash empty body patch ([#495](https://github.com/box/box-java-sdk/pull/495)) 14. Adding support for indefinite Box file locking by allowing null expiration ([#494](https://github.com/box/box-java-sdk/pull/494)) 15. Additional test in response for Batch API ([#474](https://github.com/box/box-java-sdk/pull/474)) 16. Fixing `BoxDeveloperEditionAPIConnection - decryptPrivateKey() - PEMParser returns PrivateKeyInfo already - Invalid cast` [#470](https://github.com/box/box-java-sdk/pull/470) ([#471](https://github.com/box/box-java-sdk/pull/471)) # Quick starts Source: https://developer.box.com/get-started Find our quick start guides for Box CLI, Postman, SDKs, and more. ## Overview Welcome to the Box quick starts! Here you'll find step-by-step guides to help you get started with various Box tools and integrations, including Box AI, the Box CLI, and Postman. ## Files and folders ## Metadata ## Box AI ## Custom portals and integrations ## Tooling # Box MCP server Source: https://developer.box.com/guides/box-mcp/index Model Context Protocol ([MCP](https://modelcontextprotocol.io/introduction)) is an open protocol that standardizes how applications provide context to LLMs. MCP servers make building advanced integrations simpler and less time consuming. Box MCP server allows third party AI agents from platforms like Anthropic's Claude, Microsoft Copilot Studio, and Mistral Le Chat to access Box content seamlessly. It extends the agent’s capabilities by allowing it to perform actions related to content stored in Box. MCP There are two types of Box MCP servers: * remote Box MCP server which you can create or enable in the Box Admin Console. It is hosted directly in Box. - self-hosted Box MCP server which you can clone and host on your local machine, as this version in an open source Box Developer community project. Check the detailed guides on both types of Box MCP servers, as the level of the implemented tools differs. Learn how to enable Box MCP server: Enable the remote Box MCP server in the Admin Console. It is hosted directly in Box. An open source Box Developer community project. You can clone this Box MCP Sever and host it on your local machine. Watch an interview with Box CTO, Ben Kus, and learn how MCP empowers AI agents to work dynamically across platforms, reducing the development effort.