Create an external data migration path

NAS File Storage REST API Reference

Version
15.6.x
File Size
1291 KB
Audience
anonymous
Part Number
MK-92HNAS100-07
ft:lastEdition
2026-04-07
post /v9/storage/data-migration/paths/external

Create an external data migration path.

Note: Accepted parameter values may be restricted based on the virtual server access granted by the API key used for authentication.

Authentication: x_subsystem_user Api Key "X-Subsystem-User"
Authentication: x_subsystem_password Api Key "X-Subsystem-Password"
Authentication: api_key Api Key "X-Api-Key"
Authentication: basicAuth HTTP - basic scheme
CLIENT REQUEST
curl -X 'POST'
-H "X-Subsystem-User: [[apiKey]]" \
-H "X-Subsystem-Password: [[apiKey]]" \
-H "X-Api-Key: [[apiKey]]" \
-H "Authorization: Basic [[basicHash]]" \
-H 'Accept: application/json'
-H 'Content-Type: application/json'
'https://172.27.146.40:8444/v9/storage/data-migration/paths/external'
-d ''
import http.client conn = http.client.HTTPSConnection("172.27.146.40:8444") payload = "{\"dataMigrationDestinationId\":\"32383732643333382d353564332d313164392d393030332d3062656637383762323633383a3a3a303a3a3a4f49445f24232140255f56\",\"isCloud\":true,\"name\":\"Name2\",\"sourceFilesystemId\":\"7B263DFFFD71E65A0000000000000000\",\"target\":\"string\",\"virtualVolumeObjectId\":\"313a3a3a30373545414439464546414234454239303030303030303030303030303030303a3a3a323a3a3a303a3a3a4f49445f24232140255f56\"}" headers = { 'Authorization': "Basic REPLACE_BASIC_AUTH", 'content-type': "application/json" } conn.request("POST", "/v9/storage/data-migration/paths/external", payload, headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
require 'uri' require 'net/http' require 'openssl' url = URI("https://172.27.146.40:8444/v9/storage/data-migration/paths/external") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Authorization"] = 'Basic REPLACE_BASIC_AUTH' request["content-type"] = 'application/json' request.body = "{\"dataMigrationDestinationId\":\"32383732643333382d353564332d313164392d393030332d3062656637383762323633383a3a3a303a3a3a4f49445f24232140255f56\",\"isCloud\":true,\"name\":\"Name2\",\"sourceFilesystemId\":\"7B263DFFFD71E65A0000000000000000\",\"target\":\"string\",\"virtualVolumeObjectId\":\"313a3a3a30373545414439464546414234454239303030303030303030303030303030303a3a3a323a3a3a303a3a3a4f49445f24232140255f56\"}" response = http.request(request) puts response.read_body
const data = JSON.stringify({ "dataMigrationDestinationId": "32383732643333382d353564332d313164392d393030332d3062656637383762323633383a3a3a303a3a3a4f49445f24232140255f56", "isCloud": true, "name": "Name2", "sourceFilesystemId": "7B263DFFFD71E65A0000000000000000", "target": "string", "virtualVolumeObjectId": "313a3a3a30373545414439464546414234454239303030303030303030303030303030303a3a3a323a3a3a303a3a3a4f49445f24232140255f56" }); const xhr = new XMLHttpRequest(); xhr.withCredentials = true; xhr.addEventListener("readystatechange", function () { if (this.readyState === this.DONE) { console.log(this.responseText); } }); xhr.open("POST", "https://172.27.146.40:8444/v9/storage/data-migration/paths/external"); xhr.setRequestHeader("Authorization", "Basic REPLACE_BASIC_AUTH"); xhr.setRequestHeader("content-type", "application/json"); xhr.send(data);
HttpResponse<String> response = Unirest.post("https://172.27.146.40:8444/v9/storage/data-migration/paths/external") .header("Authorization", "Basic REPLACE_BASIC_AUTH") .header("content-type", "application/json") .body("{\"dataMigrationDestinationId\":\"32383732643333382d353564332d313164392d393030332d3062656637383762323633383a3a3a303a3a3a4f49445f24232140255f56\",\"isCloud\":true,\"name\":\"Name2\",\"sourceFilesystemId\":\"7B263DFFFD71E65A0000000000000000\",\"target\":\"string\",\"virtualVolumeObjectId\":\"313a3a3a30373545414439464546414234454239303030303030303030303030303030303a3a3a323a3a3a303a3a3a4f49445f24232140255f56\"}") .asString();
import Foundation let headers = [ "Authorization": "Basic REPLACE_BASIC_AUTH", "content-type": "application/json" ] let parameters = [ "dataMigrationDestinationId": "32383732643333382d353564332d313164392d393030332d3062656637383762323633383a3a3a303a3a3a4f49445f24232140255f56", "isCloud": true, "name": "Name2", "sourceFilesystemId": "7B263DFFFD71E65A0000000000000000", "target": "string", "virtualVolumeObjectId": "313a3a3a30373545414439464546414234454239303030303030303030303030303030303a3a3a323a3a3a303a3a3a4f49445f24232140255f56" ] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://172.27.146.40:8444/v9/storage/data-migration/paths/external")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume()
<?php $curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_PORT => "8444", CURLOPT_URL => "https://172.27.146.40:8444/v9/storage/data-migration/paths/external", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => "{\"dataMigrationDestinationId\":\"32383732643333382d353564332d313164392d393030332d3062656637383762323633383a3a3a303a3a3a4f49445f24232140255f56\",\"isCloud\":true,\"name\":\"Name2\",\"sourceFilesystemId\":\"7B263DFFFD71E65A0000000000000000\",\"target\":\"string\",\"virtualVolumeObjectId\":\"313a3a3a30373545414439464546414234454239303030303030303030303030303030303a3a3a323a3a3a303a3a3a4f49445f24232140255f56\"}", CURLOPT_HTTPHEADER => [ "Authorization: Basic REPLACE_BASIC_AUTH", "content-type: application/json" ], ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; }
CURL *hnd = curl_easy_init(); curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST"); curl_easy_setopt(hnd, CURLOPT_URL, "https://172.27.146.40:8444/v9/storage/data-migration/paths/external"); struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Authorization: Basic REPLACE_BASIC_AUTH"); headers = curl_slist_append(headers, "content-type: application/json"); curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers); curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\"dataMigrationDestinationId\":\"32383732643333382d353564332d313164392d393030332d3062656637383762323633383a3a3a303a3a3a4f49445f24232140255f56\",\"isCloud\":true,\"name\":\"Name2\",\"sourceFilesystemId\":\"7B263DFFFD71E65A0000000000000000\",\"target\":\"string\",\"virtualVolumeObjectId\":\"313a3a3a30373545414439464546414234454239303030303030303030303030303030303a3a3a323a3a3a303a3a3a4f49445f24232140255f56\"}"); CURLcode ret = curl_easy_perform(hnd);
var client = new RestClient("https://172.27.146.40:8444/v9/storage/data-migration/paths/external"); var request = new RestRequest(Method.POST); request.AddHeader("Authorization", "Basic REPLACE_BASIC_AUTH"); request.AddHeader("content-type", "application/json"); request.AddParameter("application/json", "{\"dataMigrationDestinationId\":\"32383732643333382d353564332d313164392d393030332d3062656637383762323633383a3a3a303a3a3a4f49445f24232140255f56\",\"isCloud\":true,\"name\":\"Name2\",\"sourceFilesystemId\":\"7B263DFFFD71E65A0000000000000000\",\"target\":\"string\",\"virtualVolumeObjectId\":\"313a3a3a30373545414439464546414234454239303030303030303030303030303030303a3a3a323a3a3a303a3a3a4f49445f24232140255f56\"}", ParameterType.RequestBody); IRestResponse response = client.Execute(request);
Body parameters
application/json
dataMigrationDestinationIdstring

Either the ID of the data migration destination or the object ID of the data migration destination

Example:"32383732643333382d353564332d313164392d393030332d3062656637383762323633383a3a3a303a3a3a4f49445f24232140255f56"
isCloudboolean

True indicates that the path identifies a cloud destination

namestring

Name to associate with the item

Example:"Name2"
sourceFilesystemIdstring

File system ID of the source file system

Example:"7B263DFFFD71E65A0000000000000000"
targetstring

Data migration external target (non-cloud)

virtualVolumeObjectIdstring

Object ID of the virtual volume

Example:"313a3a3a30373545414439464546414234454239303030303030303030303030303030303a3a3a323a3a3a303a3a3a4f49445f24232140255f56"
REQUEST
{ "dataMigrationDestinationId": "32383732643333382d353564332d313164392d393030332d3062656637383762323633383a3a3a303a3a3a4f49445f24232140255f56", "isCloud": false, "name": "Name2", "sourceFilesystemId": "7B263DFFFD71E65A0000000000000000", "target": "example", "virtualVolumeObjectId": "313a3a3a30373545414439464546414234454239303030303030303030303030303030303a3a3a323a3a3a303a3a3a4f49445f24232140255f56" }
Responses

Created - a new object has been created

Body
application/json
dataMigrationPathobject

Data migration path

destinationarray

List of data migration destination paths

[
destinationIdstring

ID of the destination

Example:"bc526470-c2c9-11d4-9000-040402000106"
filesystemIdstring

ID of the file system

Example:"7B263DFD1D71E65A0000000000000000"
filesystemLabelstring

Label of the file system

Example:"Filesystem1"
namestring

Assigned name

Example:"Name2"
statestring (Enum)

State of data migration secondary path

Allowed values:"UNDEFINED""NO_MIGRATED_FILES""MIGRATED_FILES""MIGRATED_FILES_VIA_VOLUME_PATH""MIGRATION_IN_PROGRESS""TARGET_INVALID"
uristring

URI of the target, if it's external. Will be blank for an internal target

]
externalControlboolean

True indicates that the target is under external control

filesystemIdstring

ID of the file system

Example:"7B263DFD1D71E65A0000000000000000"
filesystemLabelstring

Label of the file system

Example:"Filesystem1"
generateHashboolean

True indicates that a hash value is generated for each file as it is migrated

isCloudboolean

True indicates that the path identifies a cloud destination

isExternalboolean

True indicates that the path is external to the system

isOfflineboolean

True indicates that the target is offline

objectIdstring

Unique ID of the object

Example:"333a3a3a3a3a3a303a3a3a4f49445f24232140255f56"
statestring (Enum)

State of data migration path

Allowed values:"UNDEFINED""NO_MIGRATED_FILES""MIGRATED_FILES""MIGRATED_FILES_VIA_VOLUME_PATH""MIGRATION_IN_PROGRESS""TARGET_INVALID"
targetIsRAINboolean

The target has Redundant Array of Independent Nodes (RAIN) behavior

targetIsWORMboolean

The target has Write Once Read Many (WORM) behavior

useIgnoreFileboolean

True indicates that an ignore file should be used if present on the external target

virtualServerIdintegerint32

ID of the virtual server. 0 = management virtual server 255 = not assigned to virtual server

Example:1
virtualVolumeIdinteger

ID of the virtual volume

Example:"646464"
virtualVolumeNamestring

Name of the virtual volume

Example:"vv1"
virtualVolumeObjectIdstring

Object ID of the virtual volume

Example:"313a3a3a30373545414439464546414234454239303030303030303030303030303030303a3a3a323a3a3a303a3a3a4f49445f24232140255f56"
uristring

URI of the newly created or updated object

RESPONSE
{ "dataMigrationPath": { "destination": [ { "destinationId": "bc526470-c2c9-11d4-9000-040402000106", "filesystemId": "7B263DFD1D71E65A0000000000000000", "filesystemLabel": "Filesystem1", "name": "Name2", "state": "UNDEFINED", "uri": "" } ], "externalControl": false, "filesystemId": "7B263DFD1D71E65A0000000000000000", "filesystemLabel": "Filesystem1", "generateHash": false, "isCloud": false, "isExternal": false, "isOffline": false, "objectId": "333a3a3a3a3a3a303a3a3a4f49445f24232140255f56", "state": "UNDEFINED", "targetIsRAIN": false, "targetIsWORM": false, "useIgnoreFile": false, "virtualServerId": 1, "virtualVolumeId": "646464", "virtualVolumeName": "vv1", "virtualVolumeObjectId": "313a3a3a30373545414439464546414234454239303030303030303030303030303030303a3a3a323a3a3a303a3a3a4f49445f24232140255f56" }, "uri": "example" }

Bad Request

Body
application/json
errorCodeintegerint32

Generic error code

Example:1081353
errorMsgstring

Main error message

Example:"Invalid description parameter - the optional parameter must be between 2 and 30 characters long to be valid, if supplied"
RESPONSE
{ "errorCode": 1081353, "errorMsg": "Invalid description parameter - the optional parameter must be between 2 and 30 characters long to be valid, if supplied" }

Unauthorized - the request was rejected because the credentials or API key were either missing or invalid

Forbidden - the client does not have the required permissions to perform the operation

Body
application/json
errorMsgstring

Main error message

Example:"Forbidden request - the client does not have the required permissions to perform the operation"
RESPONSE
{ "errorMsg": "Forbidden request - the client does not have the required permissions to perform the operation" }

Internal Server Error

Body
application/json
errorCodeintegerint32

Generic error code

errorDetailobject

Detailed error information

detailstring

More details on why the error occurred

faultstring
fileNamestring

Source file where the error occurred

Example:"RestApiFilesystems.cpp"
functionstring

Internal function name where the error occurred

Example:"mountFilesystem"
lineNumberintegerint32

Line number within the source file, where the error occurred

messagestring

Reason why the error(s) occurred

Example:"The file system is currently unassigned"
reasonstring

Reason why the error(s) occurred

Example:"The file system is currently unassigned"
returnedValueintegerint32

Not used

subCodeintegerint32

Specific failure error code

errorMsgstring

Main error message

Example:"Failed to mount file system"
RESPONSE
{ "errorCode": 0, "errorDetail": { "detail": "", "fault": "", "fileName": "RestApiFilesystems.cpp", "function": "mountFilesystem", "lineNumber": 0, "message": "The file system is currently unassigned", "reason": "The file system is currently unassigned", "returnedValue": 0, "subCode": 0 }, "errorMsg": "Failed to mount file system" }