Development Guides Home >> Guide to Transfer and Restore API Functions
A transfer session check ensures that you can create a system account on the remote server.
- For
rootsessions, analyze the transfer session and validate whether you can transfer a username to the remote server. - For user transfer sessions, validate whether you can transfer a username to the remote server.
In this example, the following statements are true:
remote.example.comandlocal.example.comrepresent the remote server and the local server.- You logged in to the local server with the
cpsess##########security token. - The example account owns
example.com, and you want to transfer it from the remote server to the local server. - The
example.comdomain contains 123,456,789 bytes. - You want to transfer the
package1package from the remote server to the local server. luggage12345represents the root password for the remote server.
To confirm that the transfer session contains all of the items that you want to transfer, analyze the transfer session. To do this, use the WHM API 1 retrieve_transfer_session_remote_analysis function.
Select the method by which you wish to call the function:
https://hostname.example.com:2087/cpsess##########/json-api/retrieve_transfer_session_remote_analysis?api.version=1&transfer_session_id=exampleservercopya20140206192428NtyWinclude_once '../xmlapi.php';
$ip = getenv('REMOTE_HOST');
$root_user = getenv('REMOTE_USER');
$root_pass = getenv('REMOTE_PASSWORD');
$xmlapi = new xmlapi($ip , $root_user , $root_pass);
$xmlapi->set_output('json');
$settings = array(
'api.version'=>1,
'user' => 'transferme'
);
$_result = $xmlapi->xmlapi_query('validate_system_user' , $settings);
print $_result;The function call returns the following list:
- Transfer session settings.
- Local and remote groups and users.
- Databases and database users.
- Packages and accounts (transfer items) that the transfer session contains.
The function only returns metadata, which resembles the following example:
{
"data": {
"options": {
"skip_reseller_privs": null,
"unrestricted": "0"
},
"transfer_session_id": "exampleservercopya20140206192428NtyW",
"config": {
"shared_mysql_server": null
},
"local": {
"groups": {
"never": 1,
"gonna": 1,
"give": 1,
"you": 1,
"up": 1
},
"users": {
"never": 1,
"gonna": 1,
"let": 1,
"you": 1,
"down": 1
},
"dbs": null,
"linked_nodes": [{
"alias": "localmailnode",
"hostname": "localmail.example.com",
"worker_capabilities": {
"Mail": {}
}
}],
"available_ips": [
]
},
"remote": {
"version": 0,
"resellers": {
},
"has_disk_used": 0,
"linked_nodes": [{
"alias": "remotemailnode",
"hostname": "remotemailnode.example.com",
"worker_capabilities": {
"Mail": {}
}
}],
"dbs": null,
"host": null,
"has_xfertool": 0,
"has_owners": 0,
"server_type": null,
"supports_live_transfers": 1
},
"items": {
"packages": [],
"accounts": []
}
},
"metadata": {
"version": 1,
"reason": "OK",
"result": "1",
"command": "retrieve_transfer_session_remote_analysis"
}
}The items and dbs containers are empty. These containers will hold accounts, packages, databases, and database users.
To ensure that the username is not currently in use, validate whether you can transfer that username to the remote server. To do this, use the WHM API 1 validate_system_user function.
Select the method by which you wish to call the function:
https://hostname.example.com:2087/cpsess##########/json-api/validate_system_user?api.version=1&user=usernameinclude_once '../xmlapi.php';
$ip = getenv('REMOTE_HOST');
$root_user = getenv('REMOTE_USER');
$root_pass = getenv('REMOTE_PASSWORD');
$xmlapi = new xmlapi($ip , $root_user , $root_pass);
$xmlapi->set_output('json');
$settings = array(
'api.version'=>1,
'user' => 'transferme'
);
$_result = $xmlapi->xmlapi_query('validate_system_user' , $settings);
print $_result;The output contains the following Boolean values which you can use to check the username:
{
"data": {
"valid_for_transfer": 1,
"reserved": 1,
"exists": 1,
"valid_for_new": 1
},
"metadata": {
"version": 1,
"reason": "OK",
"result": "1",
"command": "validate_system_user"
}