RACKCORP REST API EXAMPLES

Reference material: 

 Swagger App: https://app.swaggerhub.com/apis-docs/RackCorp/Rackcorp-REST-API/2.8 

 Rackcorp REST API docs: https://wiki.rackcorp.com/books/help-and-support-en/page/rest-api-architecture-and-standards 

 PHP Code: 

 Simple server creation: 

 <?php

// IMPORTANT - as described in our documentation, Rackcorp follows the REST API standards 

and each function must be requested with the correct METHOD (GET, POST, PUT, DELETE). 

Pay attention to this detail when create your code to use CURL

function rackcorpAPI($action, $request) {

		$URL = 'https://api.rackcorp.net/api/v2.8'+$action;

 $request["APIUUID"] = "";

 $request["APISECRET"] = "";

 $curl = curl_init($URL);

 curl_setopt($curl, CURLOPT_POST, true);

 curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($request));

 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

 $response = curl_exec($curl);

 curl_close($curl);

 if ( !$response ) {

 return Array("code" => "FAULT", "message" => "API Error");

 }

 return json_decode($response, true);

}

$customerID = 1000; // Change this to your customer ID (available in portal under ADMINISTRATION -> MY DETAILS)

// locations are defined here: https://wiki.rackcorp.com/books/help-and-support-en/page/rackcorp-datacenter-locations-and-codes

$neworder = "data": [

 "customerid": $customerID,

 "currency": "AUD",

 "servicebilltag": "CLOUDSERVER",

 "productdetails": [

 "BILLINGMODEL": "monthly",

 "NOINSTANCES": 1,

 "HOSTNAME": "Test Machine",

 "CLOUDTYPE": "public",

 "DCID": "89",

 "OS": "OS-ALMALINUX-16.1",

 "VMHID": "",

 "CPU": 2,

 "MEMORYGB": 4,

 "STORAGEGB": 20,

 "IPV6": 0,

 "IPV4": 1,

 "NT-SPEED": "NT-SPEED100",

 "TRAFFICGB": "TRAFFICGB-100",

 "BKP": "BKP-FREE",

 "SUPPORT": "SUPPORT-STD",

 "DDOS": "",

 "SECURITY":[]

 ]

 ];

// Lodge the order (this just locks pricing in for up to 72 hours but doesnt actually create any resources)

// IMPORTANT - method POST

$response = rackcorpAPI("/order/create/server", $neworder);

var_dump($response);

// You can look up the order if you want:

// IMPORTANT - method GET

$response = rackcorpAPI("/order/"+$response['data']["orderid"]);

var_dump($response);

// Then confirm the order to start provisioning:

// IMPORTANT - method GET

$response = rackcorpAPI("/order/confirm/server/"+$response['data']["orderid"]);

var_dump($response);

?> 

 Starting a server using cloud-init: 

 After creating a server, you can also choose to start it using cloud-init with your own custom code: 

 $cloudInitStartupData = Array(

 "cloudInit" => Array(

 "volumeName" => "config-2",

 "userData" => "#cloud-config

ssh_pwauth: True

users:

 - default

 - name: user1

 groups: sudo

 shell: /bin/bash

 sudo: ['ALL=(ALL) NOPASSWD:ALL']

 plain_text_passwd: testtest888

 lock_passwd: false

",

 "metaData" => "instance-id: ServerTest9999

local-hostname: MyServerHostname9999

"

 )

);

$serverIDToStart = 9999;

$tx = Array ("objId"=>$serverIDToStart, "objType"=>"DEVICE", "type"=>"STARTUP", "data"=>json_encode($cloudInitStartupData));

// See earlier example for rackcorpAPI function

$response = rackcorpAPI("rctransaction.create", $tx);

var_dump($response);

?>