# Bulk import add-ons from a CSV file Bulk imports add-ons from a CSV file. Limited to 5000 entries and 30 MB. ## Endpoint `POST /bsp/api/v1/bmp/addons/import` ## Request ### Request URL `https://{server-hostname}:8383/bsp/api/v1/bmp/addons/import` ### Scope `BrowserManager.CREATE` ### Header `Authorization: d92d4xxxxxxxxxxxxx15f52` ### Request Parameters #### Request Headers | Name | Type | Required | Value | |---|---|---|---| | Content-Type | string | Mandatory | application/json | | Accept | string | Mandatory | application/json | #### Request Body JSON body with CSV file ID and browser type. The CSV file must contain an Identifier column header with addon IDs. Maximum 5000 entries, file size limit 30MB. `application/json` | Name | Type | Required | Description | |---|---|---|---| | file_id | long | Optional | File ID of the previously uploaded CSV file containing addon identifiers | | browser_type | string | Optional | Browser type for all imported add-ons. 1=Chrome, 2=Firefox, 3=Internet Explorer, 5=Chromium Edge, 31=Ulaa, 1024=Other Chromium | ### Sample Request ```curl curl --request POST \ --url https://appdomain/bsp/api/v1/bmp/addons/import \ --header 'Accept: application/json' \ --header 'Authorization: d92d4xxxxxxxxxxxxx15f52' \ --header 'Content-Type: application/json' \ --data '{"file_id":103,"browser_type":1}' ``` ### Sample Request Body #### Import Chrome extensions (browser_type=1) ```json { "file_id": 103, "browser_type": 1 } ``` #### Import Edge extensions (browser_type=5) ```json { "file_id": 105, "browser_type": 5 } ``` #### Import Other Chromium extensions (browser_type=1024) ```json { "file_id": 106, "browser_type": 1024 } ``` ## Response Parameters ### HTTP Code 200 Response Body: `application/json` | Name | Type | Description | |---|---|---| | addons | JSON Array | Imported addon records with assigned binary IDs | ### HTTP Code 400 Response Body: `application/json` | Name | Type | Description | |---|---|---| | errorCode | string | Error code indicating a request parameter has an invalid format | | url | string | The request URL that triggered the error | | errorMsg | string | Message identifying which parameter has an invalid format | ### HTTP Code 401 Response Body: `application/json` | Name | Type | Description | |---|---|---| | errorCode | long | Unauthorized error code returned when authentication credentials are missing, expired, or invalid (authentication=required) | | errorMsg | string | Authentication failure reason | ### HTTP Code 403 Response Body: `application/json` | Name | Type | Description | |---|---|---| | errorCode | long | Forbidden error code returned when the authenticated user does not have the required uem-roles (e.g., DataEncryption_Admin or DataEncryptionRecoveryKey_Admin) | | errorMsg | string | Message indicating insufficient privileges to access this resource | ### HTTP Code 429 Response Body: `application/json` | Name | Type | Description | |---|---|---| | errorCode | long | Rate limit error code returned when the API call threshold (configured via threshold/duration in security XML) is exceeded; client is locked out for lock-period minutes | | errorMsg | string | Rate limit exceeded message with retry guidance | ### HTTP Code 500 Response Body: `application/json` | Name | Type | Description | |---|---|---| | error_description | string | Message describing the internal server error | | error_code | string | Error code identifying the type of server error | ### Possible Response Codes - `200` HTTP code - `400` HTTP code - `401` HTTP code - `403` HTTP code - `429` HTTP code - `500` HTTP code ### Sample Response: HTTP 200 #### Imported extensions with binary IDs ```json { "addons": [ { "extension_group_id": "100", "binary_id": "100", "id": "cjpalhdlnbpafiamejdnhcphjbkeiagm" }, { "extension_group_id": "101", "binary_id": "101", "id": "gighmmpiobklfepjocnamgkkbiglidom" } ] } ``` ### Sample Response: HTTP 400 #### Invalid browser_type value ```json { "errorCode": "IAM0025", "url": "/bsp/api/v1/bmp/addons/import", "errorMsg": "browser_type is an invalid parameter format." } ``` ### Sample Response: HTTP 401 #### Unauthorized ```json { "errorCode": "UNAUTHORIZED", "errorMsg": "You are not authorized to perform this action" } ``` ### Sample Response: HTTP 403 #### Insufficient permissions ```json { "errorCode": "FORBIDDEN", "errorMsg": "You do not have permission to access this resource" } ``` ### Sample Response: HTTP 429 #### Rate limit exceeded ```json { "errorCode": "RATE_LIMIT_EXCEEDED", "errorMsg": "You have exceeded the maximum number of API calls. Please try again later." } ``` ### Sample Response: HTTP 500 #### Server error ```json { "error_description": "Internal Server error, Please try again in a moment.", "error_code": "COM0004" } ``` #### File not found ```json { "error_description": "Internal Server error, Please try again in a moment.", "error_code": "COM0004" } ``` ## API Rate Limit ![](https://www.zohowebstatic.com/sites/zweb/images/people/ico-help.png) **Duration:** 1 minute | **Threshold:** 60 | **Lock period:** 5 minutes Duration - Time window for the threshold. Threshold - Number of API calls allowed within the specified duration. Lock Period - Wait time before consecutive API requests.