# Clone a browser router profile Creates an editable Draft copy of an existing Published Browser Router profile, preserving all of its routing payloads. The source profile must be in Published state and the clone must target the same platform. ## Endpoints `POST /bsp/api/v1/bmp/browser_router/{profile_id}/clone` ## Request URL `https://{server-hostname}:8383/bsp/api/v1/bmp/browser_router/{profile_id}/clone` ## Scope `BrowserManager.CREATE` ## Header `Authorization: d92d4xxxxxxxxxxxxx15f52` ## Request Parameters ### Request Headers - **Accept** `string` — Mandatory - `application/json` ### Path Parameters - **profile_id** `string` — Mandatory - Browser Router Profile ID from [List Browser Router Profiles](https://www.manageengine.com/products/desktop-central/help/api/onpremise/browser-router-list-browser-router-profiles.html) response (`profile_id` field) ## Sample Request ```curl curl --request POST \ --url https://appdomain/bsp/api/v1/bmp/browser_router/{profile_id}/clone \ --header 'Accept: application/json' \ --header 'Authorization: d92d4xxxxxxxxxxxxx15f52' ``` ## Response Parameters ### HTTP Code 200 Response Body — `application/json` - `JSON Object` - **collection_id** `string` - Collection reference ID - **profile_name** `string` - Name of the browser router profile - **profile_type** `string` - Profile type. 64011 for Browser Router - **platform_type** `string` - Platform type. 1=Windows, 2=Mac, -1=All - **latest_version** `string` - Current draft version number - **is_moved_to_trash** `boolean` - Whether the profile is in the trash - **payloads** `JSON Array` - Payload configurations with routing details - **profile_id** `string` - Unique identifier of the profile - **scope** `string` - Profile scope. 0 = device scope - **latest_published_version** `string` - Latest published version, or '--' if not yet published - **profile_description** `string` - Description of the profile ### HTTP Code 400 Response Body — `application/json` - `JSON Object` - **error_description** `string` - Message indicating platform type mismatch during clone ### HTTP Code 401 Response Body — `application/json` - `JSON Object` - **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` - `JSON Object` - **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 404 Response Body — `application/json` - `JSON Object` - **error_description** `string` - Message indicating the specified profile or payload was not found ### HTTP Code 409 Response Body — `application/json` - `JSON Object` - **error_description** `string` - Message indicating only published profiles can be cloned ### HTTP Code 429 Response Body — `application/json` - `JSON Object` - **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` - `JSON Object` - **error_description** `string` - Message describing the server-side failure - **error_code** `string` - Internal server error code ## Possible Response Codes - `200` HTTP code - `400` HTTP code - `401` HTTP code - `403` HTTP code - `404` HTTP code - `409` HTTP code - `429` HTTP code - `500` HTTP code ## Sample Response: HTTP 200 Cloned profile ```json { "collection_id": "222", "profile_name": "Corporate Router Policy", "profile_type": "64011", "platform_type": "1", "latest_version": "2", "is_moved_to_trash": false, "payloads": [ { "config_name": "BROWSER_ROUTER", "payload_type": "64100", "payload_id": "623", "router_details": [ { "config_data_item_id": "623", "urls": [ { "doc_type": "IE11", "id": "601", "url": "localhost" } ], "groups": [ { "group_id": "618", "webdomain_group": "Corporate Intranet Sites", "doc_type": "IE5" } ], "browser_mode": "IEModeInEdge", "intranet_zone": false, "open_in": "chromiumEdge" } ] } ], "profile_id": "111", "scope": "0", "latest_published_version": "1", "profile_description": "Routes internal sites to Edge, others to Chrome" } ``` ## Sample Response: HTTP 400 Platform mismatch ```json { "error_description": "Platform not same" } ``` ## Sample Response: HTTP 401 Unauthorized ```json { "errorCode": "UNAUTHORIZED", "errorMsg": "You are not authorized to perform this action" } ``` ## Sample Response: HTTP 403 Forbidden ```json { "errorCode": "FORBIDDEN", "errorMsg": "You do not have permission to access this resource" } ``` ## Sample Response: HTTP 404 Profile not found ```json { "error_description": "Profile not found" } ``` ## Sample Response: HTTP 409 Not published ```json { "error_description": "Cannot clone unpublished profile." } ``` ## 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" } ``` ## Rate Limiting ![](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.