Login Resources

Here’s a PHP example calling REST resources to:

  • Login and Acquire a Session Token [POST /Session/]
  • Check the Session is still alive [GET /Session/]
  • Logout a Session [DELETE /Session/]
<?php
# Dynect API REST Examples - PHP
# All examples utilize JSON for the data formating. 
# Output assumes use of PHP CLI

# The Base Dynect API URL - All rest commands will be appended
$base_url = 'https://api2.dynect.net/REST';
?>

<?php
/* ##########################

  Logging In
  ------------
  To log in to the dynect API you must first create a session via a POST command.
 
  Some Returned Values 
	status - success or failure
	data->token - to be used with all other commands

	** Complete Documentations can be found at 
	https://manage.dynect.net/help/docs/api2/rest/ 

########################## */

# Create an associative array with the required arguments
$create_session = array(
			'customer_name' => '<customer_name>',
			'user_name' => '<username>',
			'password' => '<password>');

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly. 
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); # Set the content type of the post body
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_URL, $base_url.'/Session/'); # Where this action is going,
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($create_session));

print "nLogging Inn";
print "----------------n";

$http_result = curl_exec($ch); 

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

if($decoded_result->status == 'success'){
	$token = $decoded_result->data->token;
}

foreach($decoded_result->msgs as $message){
	print $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."n";
}
?>

<?php
/* ###########################

  Checking if still Logged In
  -------------
  To verify if your session is still active you must send a GET request with your Auth-Token in the header

############################# */

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Auth-Token: '.$token)); # Set the token and the content type so we know the response format
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_URL, $base_url.'/Session/'); # Where this action is going,

print "nChecking if Logged Inn";
print "----------------n";

$http_result = curl_exec($ch);

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

foreach($decoded_result->msgs as $message){
        print $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."n";
}
?>

<?php
/* ###########################

  Logging Out
  -------------
  To logout you must send a DELETE request with the session Token in header under 'Auth-Token'

############################# */

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly. 
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Auth-Token: '.$token)); # Set the token and the content type so we know the response format 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_URL, $base_url.'/Session/'); # Where this action is going,

print "nLogging Outn";
print "----------------n";

$http_result = curl_exec($ch); 

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

foreach($decoded_result->msgs as $message){
        print $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."n";
}
?>

Manage A Records

Here’s a PHP example calling REST resources to:

  • Add an A Record to a zone/node [POST /ARecord/<zone>/<fqdn>/]
  • Publish all Zone Changes [PUT /Zone/<zone>/]
  • Get a Specific Zone A Record detail [GET /ARecord/<zone>/<fqdn>/]
  • Remove an A Record [DELETE /ARecord/<zone>/<fqdn>/<record id>/]
<?php
# Dynect API REST Examples - PHP
# All examples utilize JSON for the data formating. 
# Output assumes use of PHP CLI

# The Base Dynect API URL - All rest commands will be appended
$base_url = 'https://api2.dynect.net/REST';
?>

<?php
/* ###########################

  Add an A Record to a node
  ----------------
  To add an A record to a zone you must send a POST request
  with an associatve rdata array with the session token in the header under 'Auth-Token' 
  
  Adding an A record to a node that doesn't exist will create the node and then add the A Record
  
  Note: Zones MUST be published for these changes to take effect.

########################### */

$post_fields = array(
					'rdata' => array(
								'address' => '5.5.5.5',
							),
					'ttl'	=> '3600'							
				);

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Auth-Token: '.$token)); # Set the token and the content type so we know the response format
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_URL, $base_url.'/ARecord/test.com/foo.test.com/'); # Where this action is going,
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_fields));

echo "nAdding A Record to Zone Noden";
echo "----------------n";

$http_result = curl_exec($ch);

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

if($decoded_result->status == 'success'){
	$zone = $decoded_result->data; # Associative Array containing zone data: zone_type, serial_style, serial, zone 
}

foreach($decoded_result->msgs as $message){
        echo $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."n";
}
?>

<?php
/* ###########################

  Publish all Zone Changes
  ----------------
  To publish changes to a Zone you must send a PUT request with the session token in the header under 'Auth-Token'

########################### */

$put_fields = array(
					'publish' => 1
				);

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Auth-Token: '.$token)); # Set the token and the content type so we know the response format
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_URL, $base_url.'/Zone/test.com/'); # Where this action is going,
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($put_fields));

echo "nPublishing Zone Changesn";
echo "----------------n";

$http_result = curl_exec($ch);

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

if($decoded_result->status == 'success'){
	$publish_data = $decoded_result->data; # Associative Array containing zone data: zone_type, serial_style, serial, zone 
}

foreach($decoded_result->msgs as $message){
        echo $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."n";
}
?>

<?php
/* ###########################

  Get a Specific Zone A Record detail
  ----------------
  To get the A Records of a zone you must send a GET request with the session token in the header under 'Auth-Token'

########################### */

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Auth-Token: '.$token)); # Set the token and the content type so we know the response format
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_URL, $base_url.'/ARecord/test.com/foo.test.com/'); # Where this action is going,

echo "nFetching Details about your Zone's A Recordsn";
echo "----------------n";

$http_result = curl_exec($ch);

# Decode from JSON as our results are in the same format as our request
$decoded_result = json_decode($http_result);

if($decoded_result->status == 'success'){
	# Array containing REST URIs for each A record in a node by record ID
	# Example: /REST/ARecord/test.com/foo.test.com/1234567 
	$records = $decoded_result->data; 
	$last_a_record = $records[count($records)-1];
	print_r($records); #All Records located on this node
}

foreach($decoded_result->msgs as $message){
        echo $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."n";
}
?>

<?php
/* ###########################

  Remove an A Record
  ----------------
  To remove an A Records of a zone you must send a DELETE request with the FQDN and the Record ID
  as well session token in the header under 'Auth-Token'
  
  Removing all records on a node will result in the removal of that node.

########################### */

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Auth-Token: '.$token)); # Set the token and the content type so we know the response format
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_URL, $base_url.'/ARecord/test.com/foo.test.com/1234567/'); # Where this action is going;

echo "nDeleting a single Zone A Record: ".$record."n";
echo "----------------n";

$http_result = curl_exec($ch);

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

if($decoded_result->status == 'success'){
	$records = $decoded_result->data; # Array containing REST URIs for each A record in a node by record ID: /REST/ARecord/test.com/foo.test.com/123456 
}

foreach($decoded_result->msgs as $message){
        echo $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."n";
}
?>

Get Any Records

Here’s a PHP example calling REST resources to:

  • Login and Acquire a Session Token [POST /Session/]
  • Get a list of All Records [GET /ANYRecord/<zone>/<fqdn>/]
  • Logout a Session [DELETE /Session/]
<?php
# Dynect API REST Examples - PHP
# All examples utilize JSON for the data formating.

# The Base Dynect API URL - All rest commands will be appended
$base_url = 'https://api2.dynect.net/REST';
?>

<?php
/* ##########################

Logging In
------------
To log in to the dynect API you must first create a session via a POST command.

Some Returned Values
status - success or failure
data->token - to be used with all other commands

** Complete Documentations can be found at
https://manage.dynect.net/help/docs/api2/rest/

########################## */

# Create an associative array with the required arguments
$create_session = array(
'customer_name' => 'customer_name',
'user_name' => 'user_name',
'password' => 'password');

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); # Set the content type of the post body
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_URL, $base_url.'/Session/'); # Where this action is going,
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($create_session));

print "<br/><b>Logging In</b><br/>";
print "----------------<br/>";

$http_result = curl_exec($ch);

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

if($decoded_result->status == 'success'){
$token = $decoded_result->data->token;
}

foreach($decoded_result->msgs as $message){
print $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."<br/>";
}
?>

<?php
/* ###########################

Retrieve a list of record resources for all records of any type at the specified node.
-------------
To retrieve this list you must send a GET request with your Auth-Token in the header to the URL
https://api2.dynect.net/REST/ARecord/<zone>/<fqdn>/

############################# */

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Auth-Token: '.$token)); # Set the token and the content type so we know the response format
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_URL, $base_url.'/ANYRecord/test.com/test.com/'); # Where this action is going,

print "<br/><b>Retrieving list of all records</b><br/>";
print "----------------<br/>";
echo $base_url.'/ANYRecord/test.com/test.com/<br/><br/>';

$http_result = curl_exec($ch);

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

echo '<pre>';
print_r($decoded_result->data);
echo '</pre>';

foreach($decoded_result->msgs as $message){
print $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."<br/>";
}
?>

<?php
/* ###########################

Logging Out
-------------
To logout you must send a DELETE request with the session Token in header under 'Auth-Token'

############################# */

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Auth-Token: '.$token)); # Set the token and the content type so we know the response format
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_URL, $base_url.'/Session/'); # Where this action is going,

print "<br/><b>Logging Out</b><br/>";
print "----------------<br/>";

$http_result = curl_exec($ch);

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

foreach($decoded_result->msgs as $message){
print $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."<br/>";
}
?>

Manage Zones

Here’s a PHP example calling REST resources to:

  • Get a list of All Zones [GET /Zone/]
  • Get a specific Zone Detail [GET /Zone/<zone>/]
  • Add an A Record to a zone [POST /ARecord/<zone>/<fqdn>/]
  • Publish all Zone Changes [PUT /Zone/<zone>/]
  • Remove a Zone Node [DELETE /Node/<zone>/<fqdn>/]
<?php
# Dynect API REST Examples - PHP
# All examples utilize JSON for the data formating. 
# Output assumes use of PHP CLI

# The Base Dynect API URL - All rest commands will be appended
$base_url = 'https://api2.dynect.net/REST';
?>

<?php
/* ###########################

  Get All Zones
  ----------------
  To get a list of zones you must send a GET request with the session token in the header under 'Auth-Token' 

########################### */

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Auth-Token: '.$token)); # Set the token and the content type so we know the response format
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_URL, $base_url.'/Zone/'); # Where this action is going,

print "nFetching List of Zonesn";
print "----------------n";

$http_result = curl_exec($ch);

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

if($decoded_result->status == 'success'){
	$zones = $decoded_result->data; # Array of zones in the following format:  /REST/Zone/test.com/
}

foreach($decoded_result->msgs as $message){
        print $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."n";
}
?>

<?php
/* ###########################

  Get a Specific Zone detail
  ----------------
  To get the details of a zone you must send a GET request with the session token in the header under 'Auth-Token' 

########################### */

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Auth-Token: '.$token)); # Set the token and the content type so we know the response format
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_URL, $base_url.'/Zone/test.com/'); # Where this action is going,

print "nFetching Details about your Zonen";
print "----------------n";

$http_result = curl_exec($ch);

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

if($decoded_result->status == 'success'){
	$zone = $decoded_result->data; # Associative Array containing zone data: zone_type, serial_style, serial, zone 
}

foreach($decoded_result->msgs as $message){
        print $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."n";
}
?>

<?php
/* ###########################

  Add an A Record to a node
  ----------------
  To add an A record to a zone you must send a POST request
  with an associatve rdata array with the session token in the header under 'Auth-Token' 
  
  Adding an A record to a node that doesn't exist will create the node and then add the A Record
  
  Note: Zones MUST be published for these changes to take effect.

########################### */

$post_fields = array(
					'rdata' => array(
								'address' => '5.5.5.5',
							),
					'ttl'	=> '3600'							
				);

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Auth-Token: '.$token)); # Set the token and the content type so we know the response format
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_URL, $base_url.'/ARecord/test.com/foo.test.com/'); # Where this action is going,
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_fields));

echo "nAdding A Record to Zone Noden";
echo "----------------n";

$http_result = curl_exec($ch);

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

if($decoded_result->status == 'success'){
	$zone = $decoded_result->data; # Associative Array containing zone data: zone_type, serial_style, serial, zone 
}

foreach($decoded_result->msgs as $message){
        echo $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."n";
}
?>

<?php
/* ###########################

  Publish all Zone Changes
  ----------------
  To publish changes to a Zone you must send a PUT request with the session token in the header under 'Auth-Token'

########################### */

$put_fields = array(
					'publish' => 1
				);

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Auth-Token: '.$token)); # Set the token and the content type so we know the response format
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_URL, $base_url.'/Zone/test.com/'); # Where this action is going,
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($put_fields));

echo "nPublishing Zone Changesn";
echo "----------------n";

$http_result = curl_exec($ch);

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

if($decoded_result->status == 'success'){
	$publish_data = $decoded_result->data; # Associative Array containing zone data: zone_type, serial_style, serial, zone 
}

foreach($decoded_result->msgs as $message){
        echo $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."n";
}
?>

<?php
/* ###########################

  Remove a Zone Node
  ----------------
  To remove a zone node you must send a DELETE request with the FQDN of the node you wish to remove
  as well session token in the header under 'Auth-Token'
  
  Note: Zones MUST be published for these changes to take effect.

########################### */

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Auth-Token: '.$token)); # Set the token and the content type so we know the response format
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_URL, $base_url.'/Node/test.com/foo.test.com/'); # Where this action is going; 

echo "nDeleting a Zone Noden";
echo "----------------n";

$http_result = curl_exec($ch);

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

if($decoded_result->status == 'success'){
	$records = $decoded_result->data; # Array containing REST URIs for each A record in a node by record ID: /REST/ARecord/test.com/foo.test.com/123456 
}

foreach($decoded_result->msgs as $message){
        echo $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."n";
}
?>

Manage Zones with Node List

Here’s a PHP example calling REST resources to:

  • Get a list of All Zones [GET /Zone/]
  • Get a specific Zone Detail [GET /Zone/<zone>/]
  • Add an A Record to a zone [POST /ARecord/<zone>/<fqdn>/]
  • Publish all Zone Changes [PUT /Zone/<zone>/]
  • Get a list of node names under a specific node [GET /NodeList/<zone>/<fqdn>/]
  • Remove a Zone Node [DELETE /Node/<zone>/<fqdn>/]
<?php
# Dynect API REST Examples - PHP
# All examples utilize JSON for the data formating.

# The Base Dynect API URL - All rest commands will be appended
$base_url = 'https://api2.dynect.net/REST';
?>

<?php
/* ##########################

Logging In
------------
To log in to the dynect API you must first create a session via a POST command.

Some Returned Values
status - success or failure
data->token - to be used with all other commands

** Complete Documentations can be found at
https://manage.dynect.net/help/docs/api2/rest/

########################## */

# Create an associative array with the required arguments
$create_session = array(
'customer_name' => 'customer_name',
'user_name' => 'user_name',
'password' => 'password');

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); # Set the content type of the post body
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_URL, $base_url.'/Session/'); # Where this action is going,
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($create_session));

print "<br/><b>Logging In</b><br/>";
print "----------------<br/>";

$http_result = curl_exec($ch);

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

if($decoded_result->status == 'success'){
$token = $decoded_result->data->token;
}

foreach($decoded_result->msgs as $message){
print $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."<br/>";
}

if(!isset($token)){
die("Quitting<br/>");
}
?>

<?php
/* ###########################

Get All Zones
----------------
To get a list of zones you must send a GET request with the session token in the header under 'Auth-Token'

########################### */

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Auth-Token: '.$token)); # Set the token and the content type so we know the response format
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_URL, $base_url.'/Zone/'); # Where this action is going,

print "<br/><b>Fetching List of Zones</b><br/>";
print "----------------<br/>";

$http_result = curl_exec($ch);

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

if($decoded_result->status == 'success'){
$zones = $decoded_result->data; # Array of zones in the following format: /REST/Zone/test.com/
}

foreach($decoded_result->msgs as $message){
print $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."<br/>";
}
?>

<?php
/* ###########################

Get a Specific Zone detail
----------------
To get the details of a zone you must send a GET request with the session token in the header under 'Auth-Token'

########################### */

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Auth-Token: '.$token)); # Set the token and the content type so we know the response format
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_URL, $base_url.'/Zone/test.com/'); # Where this action is going,

print "<br/><b>Fetching Details about your Zone</b><br/>";
print "----------------<br/>";

$http_result = curl_exec($ch);

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

if($decoded_result->status == 'success'){
echo '<pre>'; print_r($decoded_result->data); echo '</pre>';
$zone = $decoded_result->data; # Associative Array containing zone data: zone_type, serial_style, serial, zone
}

foreach($decoded_result->msgs as $message){
print $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."<br/>";
}
?>

<?php
/* ###########################

Add an A Record to a node
----------------
To add an A record to a zone you must send a POST request
with an associatve rdata array with the session token in the header under 'Auth-Token'

Adding an A record to a node that doesn't exist will create the node and then add the A Record

Note: Zones MUST be published for these changes to take effect.

########################### */

$post_fields = array(
'rdata' => array(
'address' => '5.5.5.5',
),
'ttl' => '3600'
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Auth-Token: '.$token)); # Set the token and the content type so we know the response format
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_URL, $base_url.'/ARecord/test.com/foo.test.com/'); # Where this action is going,
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_fields));

echo "<br/><b>Adding A Record to Zone Node</b><br/>";
echo "----------------<br/>";
echo "foo.test.com<br/>";
echo '<pre>'; print_r($post_fields); echo '</pre>';

$http_result = curl_exec($ch);

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

if($decoded_result->status == 'success'){
$zone = $decoded_result->data; # Associative Array containing zone data: zone_type, serial_style, serial, zone
}

foreach($decoded_result->msgs as $message){
echo $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."<br/>";
}
?>

<?php
/* ###########################

Add an A Record to a node
----------------
To add an A record to a zone you must send a POST request
with an associatve rdata array with the session token in the header under 'Auth-Token'

Adding an A record to a node that doesn't exist will create the node and then add the A Record

Note: Zones MUST be published for these changes to take effect.

########################### */

$post_fields = array(
'rdata' => array(
'address' => '5.5.5.5',
),
'ttl' => '3600'
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Auth-Token: '.$token)); # Set the token and the content type so we know the response format
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_URL, $base_url.'/ARecord/test.com/bar.foo.test.com/'); # Where this action is going,
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_fields));

echo "<br/><b>Adding A Record to Zone Node</b><br/>";
echo "----------------<br/>";
echo "bar.foo.test.com<br/>";
echo '<pre>'; print_r($post_fields); echo '</pre>';

$http_result = curl_exec($ch);

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

if($decoded_result->status == 'success'){
$zone = $decoded_result->data; # Associative Array containing zone data: zone_type, serial_style, serial, zone
}

foreach($decoded_result->msgs as $message){
echo $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."<br/>";
}
?>

<?php
/* ###########################

Publish all Zone Changes
----------------
To publish changes to a Zone you must sent a PUT request the session token in the header under 'Auth-Token'

########################### */

$put_fields = array(
'publish' => 1
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Auth-Token: '.$token)); # Set the token and the content type so we know the response format
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_URL, $base_url.'/Zone/test.com/'); # Where this action is going,
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($put_fields));

echo "<br/><b>Publishing Zone Changes</b><br/>";
echo "----------------<br/>";

$http_result = curl_exec($ch);

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

if($decoded_result->status == 'success'){
$publish_data = $decoded_result->data; # Associative Array containing zone data: zone_type, serial_style, serial, zone
}

foreach($decoded_result->msgs as $message){
echo $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."<br/>";
}
?>

<?php
/* ###########################

Get a list of node names under a specific node.
----------------
To get the details of a zone you must send a GET request with the session token in the header under 'Auth-Token'

########################### */

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Auth-Token: '.$token)); # Set the token and the content type so we know the response format
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_URL, $base_url.'/NodeList/test.com/'); # Where this action is going,

print "<br/><b>Fetching Nodes under your Zone</b><br/>";
print "----------------<br/>";
echo 'test.com';

$http_result = curl_exec($ch);

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

if($decoded_result->status == 'success'){
echo '<pre>'; print_r($decoded_result->data); echo '</pre>';
$zone = $decoded_result->data; # Associative Array containing zone data: zone_type, serial_style, serial, zone
}

foreach($decoded_result->msgs as $message){
print $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."<br/>";
}
?>

<?php
/* ###########################

Get a list of node names under a specific node.
----------------
To get the details of a zone you must send a GET request with the session token in the header under 'Auth-Token'

########################### */

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Auth-Token: '.$token)); # Set the token and the content type so we know the response format
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_URL, $base_url.'/NodeList/test.com/foo.test.com/'); # Where this action is going,

print "<br/><b>Fetching Nodes under your Zone</b><br/>";
print "----------------<br/>";
echo 'foo.test.com';

$http_result = curl_exec($ch);

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

if($decoded_result->status == 'success'){
echo '<pre>'; print_r($decoded_result); echo '</pre>';
$zone = $decoded_result->data; # Associative Array containing zone data: zone_type, serial_style, serial, zone
}

foreach($decoded_result->msgs as $message){
print $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."<br/>";
}
?>

<?php
/* ###########################

Remove a Zone Node
----------------
To remove a zone node you must send a DELETE request with the FQDN of the node you wish to remove
as well session token in the header under 'Auth-Token'

Note: Zones MUST be published for these changes to take effect.

########################### */

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Auth-Token: '.$token)); # Set the token and the content type so we know the response format
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_URL, $base_url.'/Node/test.com/foo.test.com/'); # Where this action is going;

echo "<br/><b>Deleting a Zone Node</b><br/>";
echo "----------------<br/>";

$http_result = curl_exec($ch);

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

if($decoded_result->status == 'success'){
$records = $decoded_result->data; # Array containing REST URIs for each A record in a node by record ID: /REST/ARecord/test.com/foo.test.com/123456
}

foreach($decoded_result->msgs as $message){
echo $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."<br/>";
}
?>

<?php
/* ###########################

Publish all Zone Changes
----------------
To publish changes to a Zone you must sent a PUT request the session token in the header under 'Auth-Token'

########################### */

$put_fields = array(
'publish' => 1
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Auth-Token: '.$token)); # Set the token and the content type so we know the response format
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_URL, $base_url.'/Zone/test.com/'); # Where this action is going,
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($put_fields));

echo "<br/><b>Publishing Zone Changes</b><br/>";
echo "----------------<br/>";

$http_result = curl_exec($ch);

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

if($decoded_result->status == 'success'){
$publish_data = $decoded_result->data; # Associative Array containing zone data: zone_type, serial_style, serial, zone
}

foreach($decoded_result->msgs as $message){
echo $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."<br/>";
}
?>



<?php
/* ###########################

Logging Out
-------------
To logout you must send a DELETE request with the session Token in header under 'Auth-Token'

############################# */

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Auth-Token: '.$token)); # Set the token and the content type so we know the response format
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_URL, $base_url.'/Session/'); # Where this action is going,

print "<br/><b>Logging Out</b><br/>";
print "----------------<br/>";

$http_result = curl_exec($ch);

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

foreach($decoded_result->msgs as $message){
print $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."<br/>";
}
?>

Secondary Zones

Here’s a PHP example calling REST resources to:

  • Create a Secondary Zone [POST /Secondary/<zone>/<fqdn>/]
  • Get Info about a Secondary Zone [GET /Secondary/<zone>/<fqdn>/]
  • Delete a Secondary Zone [DELETE /Zone/<zone>/<fqdn>/]
<?php
# Dynect API REST Examples - PHP
# All examples utilize JSON for the data formating. 

# The Base Dynect API URL - All rest commands will be appended
$base_url = 'https://api2.dynect.net/REST';
?>

<?php
/* ##########################

  Logging In
  ------------
  To log in to the dynect API you must first create a session via a POST command.
 
  Some Returned Values 
	status - success or failure
	data->token - to be used with all other commands

	** Complete Documentations can be found at 
	https://manage.dynect.net/help/docs/api2/rest/ 

########################## */

# Create an associative array with the required arguments
$create_session = array(
			'customer_name' => 'customer_name',
			'user_name' => 'user_name',
			'password' => 'password');

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly. 
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); # Set the content type of the post body
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_URL, $base_url.'/Session/'); # Where this action is going,
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($create_session));

print "<br/>Logging In<br/>";
print "----------------<br/>";

$http_result = curl_exec($ch); 

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

if($decoded_result->status == 'success'){
	$token = $decoded_result->data->token;
}

foreach($decoded_result->msgs as $message){
	print $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."<br/>";
}

if(!isset($token)){
	die("Quitting<br/>");
}
?>

<?php
/* ###########################

  Create a Secondary Zone - Multi Master
  ----------------
  To add an Secondary zone you must send a POST request
  with the master address(es) along with the session token in the header under 'Auth-Token' 
  
  Note: Zones MUST be published for these changes to take effect.

########################### */

$post_fields = array(
					'masters' => array( '5.5.5.5', '1.2.3.4', '2.3.4.5' ),
				);

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Auth-Token: '.$token)); # Set the token and the content type so we know the response format
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_URL, $base_url.'/Secondary/secondarytest.com/'); # Where this action is going,
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_fields));

echo "<br/>Adding a Secondary Zone with multiple Masters<br/>";
echo "----------------<br/>";

$http_result = curl_exec($ch);

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

if($decoded_result->status == 'success'){
	$zone = $decoded_result->data; # Associative Array containing zone data: zone_type, serial_style, serial, zone 
}

foreach($decoded_result->msgs as $message){
        echo $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."<br/>";
}
?>

<?php
/* ###########################

  Get Secondary Zone Info
  ----------------
  To get information about a Secondary Zone you must send a GET request with the session token in the header under 'Auth-Token' 

########################### */

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Auth-Token: '.$token)); # Set the token and the content type so we know the response format
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_URL, $base_url.'/Secondary/secondarytest.com/'); # Where this action is going,

print "<br/>Fetching Secondary Zone Information<br/>";
print "----------------<br/>";

$http_result = curl_exec($ch);

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

if($decoded_result->status == 'success'){
	$zones = $decoded_result->data; # Array of zones in the following format:  /REST/Zone/test.com/
}

foreach($decoded_result->msgs as $message){
        print $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."<br/>";
}
?>

<?php
/* ###########################

  Delete a Secondary Zone
  ----------------
  To Delete an Secondary zone you must send a DELETE request to /Rest/Zone/<zone name>
  with the session token in the header under 'Auth-Token' 

########################### */


$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Auth-Token: '.$token)); # Set the token and the content type so we know the response format
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_URL, $base_url.'/Zone/secondarytest.com/'); # Where this action is going,

echo "<br/>Delete a Secondary Zone with /REST/Zone/ DELETE<br/>";
echo "----------------<br/>";

$http_result = curl_exec($ch);

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

if($decoded_result->status == 'success'){
	$zone = $decoded_result->data; # Associative Array containing zone data: zone_type, serial_style, serial, zone 
}

foreach($decoded_result->msgs as $message){
        echo $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."<br/>";
}
?>



<?php
/* ###########################

  Logging Out
  -------------
  To logout you must send a DELETE request with the session Token in header under 'Auth-Token'

############################# */

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  # TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly. 
curl_setopt($ch, CURLOPT_FAILONERROR, false); # Do not fail silently. We want a response regardless
curl_setopt($ch, CURLOPT_HEADER, false); # disables the response header and only returns the response body 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Auth-Token: '.$token)); # Set the token and the content type so we know the response format 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_URL, $base_url.'/Session/'); # Where this action is going,

print "<br/>Logging Out<br/>";
print "----------------<br/>";

$http_result = curl_exec($ch); 

$decoded_result = json_decode($http_result); # Decode from JSON as our results are in the same format as our request

foreach($decoded_result->msgs as $message){
        print $message->LVL.": ".($message->ERR_CD != '' ? '('.$message->ERR_CD.') ' : '').$message->SOURCE." - ".$message->INFO."<br/>";
}
?>