API v2.0 Authentication Overview
Important Notice! The Lumen Public Cloud Platform will go end-of-life on September 30th, 2023. Please ensure that you have a plan to migrate prior to this date as all services will terminate on October 1st, 2023.
Summary
Authentication to the API v2 is done with the same credentials used to access the CenturyLink Cloud Control Portal. The username and password are provided to the API and in return, the user gets back a credentials object that contains a valid bearer token. This token -- which can be reused for up to 2 weeks -- must be provided on each subsequent API request.
Walkthrough
.NET Framework Example
Below is a brief demonstration of using the .NET framework to retrieve a valid token from the API authentication service.
- Reference the assemblies needed to make HTTP requests.
using System.Net.Http;
using System.Net.Http.Headers;
- Create an instance of the HttpClient object.
HttpClient authClient = new HttpClient();
- Add an
Accept
header to indicate that returning JSON as a response is ok.
authClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
- Create an HttpContent object to hold the JSON payload (
{"username": "[username]", "password": "[password]"}
) sent to the API. Also, note that the content typeapplication/json
is set.
HttpContent content =
new StringContent("{ \"username\":\"[username]\", \"password\":\"[password]\" }", null, "application/json");
- Invoke the API and send the HTTP content using a POST command.
HttpResponseMessage message =
await authClient.PostAsync("https://api.ctl.io/v2/authentication/login", content);
- Load the response into a string for parsing.
string responseString = await message.Content.ReadAsStringAsync();
If valid credentials are provided, an HTTP 200 status is returned along with the following JSON payload:
{
"userName":"user@company.com",
"accountAlias":"RLS1",
"locationAlias":"WA1",
"roles":[
"ServerAdmin",
"AccountAdmin"
],
"bearerToken":"[LONG TOKEN VALUE]"
}
These results show the user's parent account, default data center location, and assigned platform roles. The bearerToken is the value that must be added to the HTTP Authorization
header when calling any other API service. This token identifies who the user is and what they are allowed to do in the API.
If you provide invalid credentials, you will get an HTTP 400 (Bad Request) and the following response message:
{"message":"We didn't recognize the username or password you entered. Please try again."}
- Submit a request: the following .NET code demonstrates how a user can make a secure API request to retrieve the root Group in a particular data center. Note that the bearerToken is added to the header of the request, with a prefix of "Bearer ".
HttpClient authClient = new HttpClient();
authClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// Add bearer token to the header
authClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "Bearer [LONG TOKEN VALUE]");
HttpResponseMessage message = await authClient.GetAsync("https://api.ctl.io/v2/datacenters/DEMO/CA1");
string responseString = await message.Content.ReadAsStringAsync();
PowerShell Example
Below is a brief demonstration of how PowerShell can be used to retrieve a valid token from the API authentication service.
- Log into the API.
$Body = @{
Username = 'CONTROL_USERNAME'
Password = 'CONTROL_PASSWORD'
}
- Log in to the Platform and get back a
bearerToken
.
$LogonUri = 'https://api.ctl.io/v2/authentication/login'
$LogonResponse = Invoke-RestMethod -Method Post -Uri $LogonUri -Body $Body -SessionVariable WebSession
- Pull the BearerToken out of the response and format it correctly. Note that a prefix of "Bearer " is required.
$Bearer = 'Bearer ' + $LogonResponse.bearerToken
- Add Accept and Authorization headers to the session variable to be used on future requests.
$WebSession.Headers.Add('Accept', 'application/json')
$WebSession.Headers.Add('Authorization', $Bearer)
You can now use the session variable for authenticating further API calls. Example:
Here's an example of pulling server credentials:
$AccountAlias = 'ACCOUNT_ALIAS'
$ServerName = 'SERVER_NAME'
$ServercredsURL = "https://api.ctl.io/v2/servers/$AccountAlias/$ServerName/credentials"
$ServerCreds = Invoke-RestMethod -Uri $servercredsURL -WebSession $WebSession
$ServerCreds
Raw HTTP Example
Below is an example of the raw HTTP request and response messages when retrieving a valid token from the API authentication service.
Request
POST https://api.ctl.io/v2/authentication/login HTTP/1.1
Host: api.ctl.io
Content-Type: application/json
Content-Length: 54
{
"username": "[username]",
"password": "[password]"
}
Response
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Date: Fri, 03 Jan 2015 21:23:45 GMT
Content-Length: 149
{
"userName": "user@company.com",
"accountAlias": "RLS1",
"locationAlias": "WA1",
"roles": [
"ServerAdmin",
"AccountAdmin"
],
"bearerToken": "[LONG TOKEN VALUE]"
}
These results show the user's parent account, default data center location, and assigned platform roles. The bearerToken is the value that must be added to the HTTP Authorization
header when calling any other API service. This token identifies who the user is and what they are allowed to do in the API.
If you provide invalid credentials, you will get an HTTP 400 (Bad Request) and the following response message:
HTTP/1.1 400 Bad Request
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Date: Fri, 03 Jan 2015 21:26:45 GMT
Content-Length: 89
{"message":"We didn't recognize the username or password you entered. Please try again."}
The following raw HTTP request message shows how a user can make a secure API request to retrieve the root Group in a particular data center. Note that the bearerToken is added to the header of the request, with a prefix of "Bearer ".
GET https://api.ctl.io/v2/datacenters/RLS1/WA1 HTTP/1.1
Host: api.ctl.io
Content-Type: application/json
Content-Length: 0
Authorization: Bearer [LONG TOKEN VALUE]
API v2.0 Links Framework
Overview
The CenturyLink Cloud v2 REST API utilizes the concept of "linking" to reference other related entities from within JSON response payloads. Many of the JSON response entities include a links
attribute which contains an array of link entities for resources that are related the object that was just acted upon.
This link model helps with both discoverability as well as use-case scalability. In addition, it provides a mechanism for exposing only those endpoints that are available to a user based on their role. In other words, a user will only see links and associated actions that they have access to. Each link entity contains a URL in the href
attribute so the API user may simply follow the link to perform a followup action.
Link Entity
Each link entity defines the following properties. For more details about each specific link type, see the Link Definitions for each resource type.
Name | Type | Description | Req. |
---|---|---|---|
rel | string | The link type, as described in the table below. | Yes |
href | string | Address of the resource. | Yes |
id | string | Unique ID of the resource. | No |
name | string | Friendly name of the resource. | No |
verbs | array | Valid HTTP verbs that can act on this resource. If none are explicitly listed, GET is assumed to be the only one. | No |
API v2.0 Overview
The CenturyLink Cloud has a new, improved API for performing the same actions programmatically as you can with the Control Portal. The API is RESTful and works with JSON messages over HTTP. It relies on the standard HTTP verbs including GET, POST, PUT, DELETE, and PATCH.
The URL format of the service is: https://api.ctl.io/v2/{resource}/{account alias}
. As an example, to retrieve the top level Group for a given data center, you would issue a GET request to https://api.ctl.io/v2/datacenters/ALIAS/WA1
. The HTTP request must include Content-Type
and Accepts
headers set to application/json
.
Authentication
Service authentication is done via bearer tokens and is outlined in the Authentication Overview and also the Login API description.
Links Framework
The CenturyLink Cloud v2 REST API utilizes the concept of "linking" to reference other related entities from within JSON response payloads. See more information in our overview of the Links Framework.
HTTP Response Codes
The service responds to requests using standard HTTP codes, and if applicable, a JSON payload.
HTTP Code | Description |
---|---|
200 | OK. Sent when requests are immediately successful and did NOT create a new URL-addressable resource. |
201 | CREATED. Sent when requests are immediately successful and DID create a new URL-addressable resource. |
202 | ACCEPTED. Sent when requests result in a scheduled activity. Response body will include a URL for them to get the status of the activity. |
204 | NO CONTENT. Sent when requests are immediately successful but return no additional information about the resource. |
400 | BAD REQUEST. Sent when something is wrong with the query string or message body. |
401 | UNAUTHORIZED. Sent when a bearer token is not provided. |
403 | FORBIDDEN. Sent if the request violates the security demands of the service. |
404 | NOT FOUND. Sent if the URL points to a non-existent resource. |
500 | INTERNAL SERVER ERROR. Sent if the service experiences an error through no fault of the user. |
Data Center Links
Overview
The following link definitions are related to the data center resource. They may be returned when making a call to Get Data Center List or other data center-related resources.
Data Center Link Definitions
Relation (rel) | Description | Verbs |
---|---|---|
availableOvfs | Retrieve the list of available servers that can be imported. These are OVFs that have been uploaded to the FTP server. | GET |
computeLimits | Retrieve or modify the limits for CPU, memory, storage allowed in the data center for the account. | GET / POST |
deploymentCapabilities | Retrieve the list of capabilities that a specific data center supports, including the deployable networks and OS templates. | GET |
loadBalancers | Retrieve the list of shared load balancers in the data center for the account. | GET / POST |
networkLimits | Retrieve the limits for number of networks allowed in the data center for the account. | GET |
Firewall Policy Links
Overview
The following link definitions are related to the firewall policy resource. They may be returned when making a call to Get Firewall Policy List or other network-related resources.
Firewall Link Definitions
Relation (rel) | Description | Verbs |
---|---|---|
firewallPolicies | Retrieves the list of intra data center firewall policies associated with an account | GET |
Group Links
Overview
The following link definitions are related to the groups resource. They may be returned when making a call to Get Group or other group-related resources.
Group Link Definition
Relation (rel) | Description | Verbs |
---|---|---|
archiveGroupAction | Archive the given group. | POST |
billing | Retrieve billing information for the given group. | GET |
createGroup | Create a group. | POST |
defaults | Retrieve or modify the default values of the given group. | GET / POST |
parentGroup | Retrieve the parent group of the given group. | GET |
scheduledActivities | Retrieve the list of scheduled activities for the given group. | GET |
upcomingScheduledActivities | Retrieve the list of upcoming scheduled activities for the given group. | GET |
Network Links
Overview
The following link definitions are related to the network resource. They may be returned when making a call to Get Network List or other network-related resources.
Network Link Definitions
Relation (rel) | Description | Verbs |
---|---|---|
ipAddresses | Retrieves the list of IP Addresses associated with a network | GET |
release | Releases a given network in a given data center; the network may then be claimed | POST |
Server Links
Overview
The following link definitions are related to the servers resource. They may be returned when making a call to Get Server or other server-related resources.
Server Link Definitions
Relation (rel) | Description | Verbs |
---|---|---|
alertPolicyMap | Retrieve or modify the given alert policy for the given server. | GET / DELETE |
alertPolicyMappings | Retrieve or modify the list of alert policies for the given server. | GET / PUT / DELETE |
billing | Retrieve billing information for the given server. | GET |
capabilities | Retrieve the supported capabilities listing for the given server. | GET |
cpuAutoscalePolicyMapping | Retrieve or modify the vertical autoscale policy for the given server. | GET / PUT / DELETE |
createServer | Create a server. | POST |
credentials | Retrieve credentials for the given server. | GET |
publicIPAddress | Retrieve or modify a public IP address of the specific server. | GET / DELETE / PUT |
publicIPAddresses | Add a public IP address for the given server. | POST |
scheduledActivities | Retrieve the list of scheduled activities for the given server. | GET |
Server Snapshot Definitions
Relation (rel) | Description | Verbs |
---|---|---|
delete | Delete the snapshot for the given server. | DELETE |
restore | Restore the snapshot for the given server. | POST |
Add Alert Policy To A Server
Adds an alert policy in a given account to a server. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to add a new alert policy within a given account to a server.
URL
Structure
POST https://api.ctl.io/v2/servers/{accountAlias}/{serverId}
Example
POST https://api.ctl.io/v2/servers/ALIAS/WA1ACCTWB01
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
ServerId | string | ID of the server for alert policy to be added. Retrieved from query to containing group, or by looking at the URL when viewing a server in the Control Portal. | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
id | string | Id of the alert policy. | Yes |
Examples
JSON
{
"id": "f02f8fbe23a211e8b4670ed5f89f718b"
}
Response
Entity Definition
Name | Type | Description |
---|---|---|
id | string | ID of the alert policy. |
links | array | Collection of entity links that point to resources related to this policy. |
Examples
JSON
{
"id": "f02f8fbe23a211e8b4670ed5f89f718b",
"links": [
{
"rel": "self",
"href": "/v2/servers/ACCT/WA1ACCTWB01/alertPolicies/f02f8fbe23a211e8b4670ed5f89f718b",
"verbs": [
"DELETE"
]
}
]
}
Create Alert Policy
Creates an alert policy in a given account. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to create a new alert policy within a given account.
URL
Structure
POST https://api.ctl.io/v2/alertPolicies/{accountAlias}
Example
POST https://api.ctl.io/v2/alertPolicies/ALIAS
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
name | string | Name of the alert policy. | Yes |
actions | array | The actions to perform when the alert is triggered. | Yes |
triggers | array | The definition of the triggers that fire the alert. | Yes |
Actions Entity
Name | Type | Description |
---|---|---|
action | string | The only action currently supported by alerts is email . |
settings | complex | The only setting currently supported is the recipients list, which is an array of email addresses to be notified when the alert is triggered. |
Triggers Entity
Name | Type | Description |
---|---|---|
metric | string | The metric on which to measure the condition that will trigger the alert: cpu , memory , or disk . |
duration | string | The length of time in minutes that the condition must exceed the threshold: 00:05:00 , 00:10:00 , 00:15:00 . |
threshold | number | The threshold that will trigger the alert when the metric equals or exceeds it. This number represents a percentage and must be a value between 5.0 - 95.0 that is a multiple of 5.0. |
Examples
JSON
{
"name":"Disk Above 80%",
"actions":[
{
"action":"email",
"settings":{
"recipients":[
"user@company.com"
]
}
}
],
"triggers":[
{
"metric":"disk",
"duration":"00:05:00",
"threshold":80.0
}
]
}
Response
Entity Definition
Name | Type | Description |
---|---|---|
id | string | ID of the alert policy. |
name | string | Name of the alert policy. |
actions | array | The actions to perform when the alert is triggered. |
triggers | array | The definition of the triggers that fire the alert. |
links | array | Collection of entity links that point to resources related to this policy. |
Examples
JSON
{
"id" : "6fbe6ba659424b738e1134ab3be7b4b4",
"name" : "Disk Above 80%",
"actions" : [
{
"action" : "email",
"settings" : {
"recipients" : [
"user@company.com"
]
}
}
],
"links" : [
{
"rel" : "self",
"href" : "/v2/alertPolicies/ALIAS/6fbe6ba659424b738e1134ab3be7b4b4",
"verbs" : [
"GET",
"DELETE",
"PUT"
]
}
],
"triggers" : [
{
"metric" : "disk",
"duration" : "00:05:00",
"threshold" : 80.0
}
]
}
Delete Alert Policy
Deletes a given alert policy by ID. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to delete a specific alert policy within a given account.
URL
Structure
DELETE https://api.ctl.io/v2/alertPolicies/{accountAlias}/{policyId}
Example
DELETE https://api.ctl.io/v2/alertPolicies/ALIAS/80a7bf90b199454b859399bff54f4173
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
PolicyId | string | ID of the alert policy being queried. | Yes |
Response
The response will not contain JSON content, but should return a standard HTTP 200 OK
response upon deletion of the policy.
Get Alert Policies
Gets a list of alert policies within a given account. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to get a list of alert policies within a given account and what servers are part of these policies. You can also use the IDs provided in this list to add a server to that alert policy using the API.
URL
Structure
GET https://api.ctl.io/v2/alertPolicies/{accountAlias}
Example
GET https://api.ctl.io/v2/alertPolicies/ALIAS
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
Response
The response will be an items
objects referencing an array containing one entity for each alert policy in the given account.
Entity Definition
Name | Type | Description |
---|---|---|
id | string | ID of the alert policy. |
name | string | Name of the alert policy. |
actions | array | The actions to perform when the alert is triggered. |
triggers | array | The definition of the triggers that fire the alert. |
links | array | Collection of entity links that point to resources related to this policy. |
Actions Entity
Name | Type | Description |
---|---|---|
action | string | The only action currently supported by alerts is email . |
settings | complex | The only setting currently supported is the recipients list, which is an array of email addresses to be notified when the alert is triggered. |
Triggers Entity
Name | Type | Description |
---|---|---|
metric | string | The metric on which to measure the condition that will trigger the alert: cpu , memory , or disk . |
duration | string | The length of time in minutes that the condition must exceed the threshold: 00:05:00 , 00:10:00 , 00:15:00 . |
threshold | number | The threshold that will trigger the alert when the metric equals or exceeds it. This number represents a percentage and must be a value between 5.0 - 95.0 that is a multiple of 5.0. |
Examples
JSON
{
"items":[
{
"id":"999de90f25ab4308a6c346cd03602fef",
"name":"Memory Above 90%",
"actions":[
{
"action":"email",
"settings":{
"recipients":[
"user@company.com"
]
}
}
],
"links":[
{
"rel":"self",
"href":"/v2/alertPolicies/ALIAS/999de90f25ab4308a6c346cd03602fef",
"verbs":[
"GET",
"DELETE",
"PUT"
]
}
],
"triggers":[
{
"metric":"memory",
"duration":"00:10:00",
"threshold":90.0
}
]
},
{
"id":"175c3b5743d64cea952a5cca03bdb2da",
"name":"CPU Above 75%",
"actions":[
{
"action":"email",
"settings":{
"recipients":[
"user@company.com"
]
}
}
],
"links":[
{
"rel":"self",
"href":"/v2/alertPolicies/ALIAS/175c3b5743d64cea952a5cca03bdb2da",
"verbs":[
"GET",
"DELETE",
"PUT"
]
}
],
"triggers":[
{
"metric":"cpu",
"duration":"00:05:00",
"threshold":75.0
}
]
}
],
"links":[
{
"rel":"self",
"href":"/v2/alertPolicies/ALIAS",
"verbs":[
"GET",
"POST"
]
}
]
}
Get Alert Policy
Gets a given alert policy by ID. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to get the details of a specific alert policy within a given account.
URL
Structure
GET https://api.ctl.io/v2/alertPolicies/{accountAlias}/{policyId}
Example
GET https://api.ctl.io/v2/alertPolicies/ALIAS/80a7bf90b199454b859399bff54f4173
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
PolicyId | string | ID of the alert policy being queried. | Yes |
Response
Entity Definition
Name | Type | Description |
---|---|---|
id | string | ID of the alert policy. |
name | string | Name of the alert policy. |
actions | array | The actions to perform when the alert is triggered. |
triggers | array | The definition of the triggers that fire the alert. |
links | array | Collection of entity links that point to resources related to this policy. |
Actions Entity
Name | Type | Description |
---|---|---|
action | string | The only action currently supported by alerts is email . |
settings | complex | The only setting currently supported is the recipients list, which is an array of email addresses to be notified when the alert is triggered. |
Triggers Entity
Name | Type | Description |
---|---|---|
metric | string | The metric on which to measure the condition that will trigger the alert: cpu , memory , or disk . |
duration | string | The length of time in minutes that the condition must exceed the threshold: 00:05:00 , 00:10:00 , 00:15:00 . |
threshold | number | The threshold that will trigger the alert when the metric equals or exceeds it. This number represents a percentage and must be a value between 5.0 - 95.0 that is a multiple of 5.0. |
Examples
JSON
{
"id":"999de90f25ab4308a6c346cd03602fef",
"name":"Memory Above 90%",
"actions":[
{
"action":"email",
"settings":{
"recipients":[
"user@company.com"
]
}
}
],
"links":[
{
"rel":"self",
"href":"/v2/alertPolicies/ALIAS/999de90f25ab4308a6c346cd03602fef",
"verbs":[
"GET",
"DELETE",
"PUT"
]
}
],
"triggers":[
{
"metric":"memory",
"duration":"00:10:00",
"threshold":90.0
}
]
}
Update Alert Policy
Updates the name of an alert policy in a given account. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to change the name of an existing alert policy within a given account.
URL
Structure
PUT https://api.ctl.io/v2/alertPolicies/{accountAlias}/{policyId}
Example
PUT https://api.ctl.io/v2/alertPolicies/ALIAS/80a7bf90b199454b859399bff54f4173
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
PolicyId | string | ID of the alert policy being updated. | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
name | string | Name of the alert policy. | Yes |
actions | array | The actions to perform when the alert is triggered. | Yes |
triggers | array | The definition of the triggers that fire the alert. | Yes |
Actions Entity
Name | Type | Description |
---|---|---|
action | string | The only action currently supported by alerts is email . |
settings | complex | The only setting currently supported is the recipients list, which is an array of email addresses to be notified when the alert is triggered. |
Triggers Entity
Name | Type | Description |
---|---|---|
metric | string | The metric on which to measure the condition that will trigger the alert: cpu , memory , or disk . |
duration | string | The length of time in minutes that the condition must exceed the threshold: 00:05:00 , 00:10:00 , 00:15:00 . |
threshold | number | The threshold that will trigger the alert when the metric equals or exceeds it. This number represents a percentage and must be a value between 5.0 - 95.0 that is a multiple of 5.0. |
Examples
JSON
{
"name":"Disk Above 90%",
"actions":[
{
"action":"email",
"settings":{
"recipients":[
"user@company.com"
]
}
}
],
"triggers":[
{
"metric":"disk",
"duration":"00:05:00",
"threshold":90.0
}
]
}
Response
Entity Definition
Name | Type | Description |
---|---|---|
id | string | ID of the alert policy. |
name | string | Name of the alert policy. |
actions | array | The actions to perform when the alert is triggered. |
triggers | array | The definition of the triggers that fire the alert. |
links | array | Collection of entity links that point to resources related to this policy. |
Examples
JSON
{
"id" : "6fbe6ba659424b738e1134ab3be7b4b4",
"name" : "Disk Above 90%",
"actions" : [
{
"action" : "email",
"settings" : {
"recipients" : [
"user@company.com"
]
}
}
],
"links" : [
{
"rel" : "self",
"href" : "/v2/alertPolicies/ALIAS/6fbe6ba659424b738e1134ab3be7b4b4",
"verbs" : [
"GET",
"DELETE",
"PUT"
]
}
],
"triggers" : [
{
"metric" : "disk",
"duration" : "00:05:00",
"threshold" : 90.0
}
]
}
Login
Acquires an authentication token used for subsequent queries to the API.
When to Use It
Use this API operation before you call any other API operation. It shows a user's roles, primary data center, and a valid bearer token.
URL
Structure
POST https://api.ctl.io/v2/authentication/login
Request
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
username | string | Control Portal user name value | Yes |
password | string | Control Portal password value. | Yes |
Examples
JSON
{
"username":"demouser1",
"password":"mypassword"
}
Response
Entity Definition
Name | Type | Description |
---|---|---|
userName | string | Control Portal user name value |
accountAlias | string | Account that contains this user record |
locationAlias | string | Default data center of the user |
roles | array | Permission roles associated with this user |
bearerToken | string | Security token for this user that is included in the Authorization header for all other API requests as "Bearer [LONG TOKEN VALUE]". |
Examples
JSON
{
"userName": "user@email.com",
"accountAlias": "ALIAS",
"locationAlias": "DC1",
"roles": [
"AccountAdmin",
"ServerAdmin"
],
"bearerToken": "[LONG TOKEN VALUE]"
}
Get Vertical Autoscale Policies
Gets a list of vertical autoscale policies for a given account. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to get a list of vertical autoscale policies for a given account, and to see what servers are associated with these policies. You can also use the IDs provided in this list to add a server to that autoscale policy using Set Vertical Autoscale Policy On Server API method.
URL
Structure
GET https://api.ctl.io/v2/autoscalePolicies/{accountAlias}
Example
GET https://api.ctl.io/v2/autoscalePolicies/ALIAS
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for a particular account | Yes |
Response
The response will be an array containing one entity for each autoscale policy in the given account.
Entity Definition
Name | Type | Description |
---|---|---|
id | string | ID of the vertical autoscale policy |
name | string | Name of the vertical autoscale policy |
resourceType | string | The resource type to autoscale; only cpu is supported at this time |
thresholdPeriodMinutes | integer | Duration the resource must be at min/max in order to autoscale (5, 10, 15, or 30 minutes) |
scaleUpIncrement | integer | Number of CPU to increase on a scale up event (1, 2, or 4) |
range | complex | The range defining the minimum and maximum number of CPU to allow (between 1-16) |
scaleUpThreshold | integer | Will scale up when resource it at this setting for at least the threshold period (between 1-100) |
scaleDownThreshold | integer | Will scale down when resource it at this setting for at least the threshold period (between 1-100) |
scaleDownWindow | complex | A server reboot is required for all resource scale downs; this is the scale down window during which the resource will be set to the policy's minimum value. |
links | array | Collection of entity links that point to resources related to this policy |
Range Definition
Name | Type | Description |
---|---|---|
min | integer | Maximum number of CPU |
max | integer | Minimum number of CPU |
ScaleDownWindow Definition
Name | Type | Description |
---|---|---|
start | string | Start time of window in UTC |
end | string | End time of window in UTC |
Examples
JSON
{
"id": "3b6f26003c224596bc7e748a0adc97d5",
"name": "Production Database Scale Policy",
"resourceType": "cpu",
"thresholdPeriodMinutes": 5,
"scaleUpIncrement": 1,
"range": {
"max": 6,
"min": 2
},
"scaleUpThreshold": 85,
"scaleDownThreshold": 15,
"scaleDownWindow": {
"start": "02:00",
"end": "04:00"
},
"links": [
{
"rel": "self",
"href": "/v2/autoscalePolicies/ALIAS/3b6f26003c224596bc7e748a0adc97d5"
}
]
},
{
"id": "23a68b22e35b4983abd1051fae10ee7b",
"name": "Another CPU Autoscale Policy",
"resourceType": "cpu",
"thresholdPeriodMinutes": 5,
"scaleUpIncrement": 1,
"range": {
"max": 4,
"min": 1
},
"scaleUpThreshold": 85,
"scaleDownThreshold": 15,
"scaleDownWindow": {
"start": "00:00",
"end": "23:00"
},
"links": [
{
"rel": "self",
"href": "/v2/autoscalePolicies/ALIAS/23a68b22e35b4983abd1051fae10ee7b"
}
]
}
Get Vertical Autoscale Policy
Gets a given vertical autoscale policy by ID. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to get the details of a vertical autoscale policy for a given account.
URL
Structure
GET https://api.ctl.io/v2/autoscalePolicies/{accountAlias}/{policyId}
Example
GET https://api.ctl.io/v2/autoscalePolicies/ALIAS/80a7bf90b199464b859399bff54f4173
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for a particular account | Yes |
policyId | string | ID of the autoscale policy being queried | Yes |
Response
Entity Definition
Name | Type | Description |
---|---|---|
id | string | ID of the vertical autoscale policy |
name | string | Name of the vertical autoscale policy |
resourceType | string | The resource type to autoscale; only cpu is supported at this time |
thresholdPeriodMinutes | integer | Duration the resource must be at min/max in order to autoscale (5, 10, 15, or 30 minutes) |
scaleUpIncrement | integer | Number of CPU to increase on a scale up event (1, 2, or 4) |
range | complex | The range defining the minimum and maximum number of CPU to allow (between 1-16) |
scaleUpThreshold | integer | Will scale up when resource it at this setting for at least the threshold period (between 1-100) |
scaleDownThreshold | integer | Will scale down when resource it at this setting for at least the threshold period (between 1-100) |
scaleDownWindow | complex | A server reboot is required for all resource scale downs. This is the scale down window during which the resource will be set to the policy's minimum value. |
links | array | Collection of entity links that point to resources related to this policy |
Range Definition
Name | Type | Description |
---|---|---|
min | integer | Maximum number of CPU |
max | integer | Minimum number of CPU |
ScaleDownWindow Definition
Name | Type | Description |
---|---|---|
start | string | Start time of window in UTC |
end | string | End time of window in UTC |
Examples
JSON
{
"id": "9d14822c1e8541cea11703cf2b078c9d",
"name": "Production Database Scale Policy",
"resourceType": "cpu",
"thresholdPeriodMinutes": 5,
"scaleUpIncrement": 1,
"range": {
"max": 6,
"min": 2
},
"scaleUpThreshold": 85,
"scaleDownThreshold": 15,
"scaleDownWindow": {
"start": "02:00",
"end": "04:00"
},
"links": [
{
"rel": "self",
"href": "/v2/autoscalePolicies/ALIAS/9d14822c1e8541cea11703cf2b078c9d"
}
]
}
Remove Vertical Autoscale Policy from Server
Removes the autoscale policy from a given server, if the policy has first been applied to the server. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to remove the autoscale policy from a server.
URL
Structure
DELETE https://api.ctl.io/v2/servers/{accountAlias}/{serverId}/cpuAutoscalePolicy
Example
DELETE https://api.ctl.io/v2/servers/ALIAS/WA1ALIASSERV0101/cpuAutoscalePolicy
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for a particular account | Yes |
serverId | string | ID of the server. Retrieved from query to containing a group, or by looking at the URL when viewing a server in the Control Portal. | Yes |
Response
The response will not contain JSON content, but should return the HTTP 204 No Content
response upon deletion of the policy from the server.
Set Vertical Autoscale Policy on Server
Sets the autoscale policy for a specified server. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to set the autoscale policy of a server.
URL
Structure
PUT https://api.ctl.io/v2/servers/{accountAlias}/{serverId}/cpuAutoscalePolicy
Example
PUT https://api.ctl.io/v2/servers/ALIAS/WA1ALIASSERV0101/cpuAutoscalePolicy
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for a particular account | Yes |
serverId | string | ID of the server. Retrieved from query to containing group, or by looking at the URL when viewing a server in the Control Portal. | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
id | string | The unique identifier of the autoscale policy to apply to the server. Can be retrieved by calling Get Vertical Autoscale Policies. | Yes |
Examples
JSON
{
"id": "3440b69f139c435b8f9462b0661014fc"
}
Response
Entity Definition
Name | Type | Value | Description |
---|---|---|---|
id | string | ID of the autoscale policy. | |
links | array | Collection of entity links that point to resources related to this policy. |
Examples
JSON
{
"id": "3440b69f139c435b8f9462b0661014fc",
"links": [
{
"rel": "self",
"href": "/v2/servers/ALIAS/WA1ALIASSERV0101/cpuAutoscalePolicy"
}
]
}
View Vertical Autoscale Policy on Server
Gets the autoscale policy of a given server, if a policy has been applied on the server. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to get the autoscale policy of a given server.
URL
Structure
GET https://api.ctl.io/v2/servers/{accountAlias}/{serverId}/cpuAutoscalePolicy
Example
GET https://api.ctl.io/v2/servers/ALIAS/WA1ALIASSERV0101/cpuAutoscalePolicy
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for a particular account | Yes |
serverId | string | ID of the server. Retrieved from query to containing group, or by looking at the URL when viewing a server in the Control Portal. | Yes |
Response
Entity Definition
Name | Type | Value | Description |
---|---|---|---|
id | string | ID of the autoscale policy | |
links | array | Collection of entity links that point to resources related to this policy |
Examples
JSON
{
"id": "6c8d7b5349054fe6a532539ff066b53b",
"links": [
{
"rel": "self",
"href": "/v2/servers/ALIAS/WA1ALIASSERV0101/cpuAutoscalePolicy"
}
]
}
Get Invoice Data for an Account Alias
Gets a list of invoicing data for a given account alias for a given month. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
NOTE: THE DATA RETURNED IN THIS API ARE USAGE ESTIMATES ONLY, AND DOES NOT REPRESENT AN ACTUAL BILL.
When to Use It
Use this API operation when you want to get invoicing data for a given account for a given month.
URL
Structure
GET https://api.ctl.io/v2/invoice/{accountAlias}/{year}/{month}
Example
GET https://api.ctl.io/v2/invoice/ALIAS/2015/7/?pricingAccount=PALIAS
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for a particular account | Yes |
year | integer | Year of usage, in YYYY format. | Yes |
month | integer | Monthly period of usage, in M format. | Yes |
pricingAccountAlias | string | Short code of the account that sends the invoice for the accountAlias | No |
Response
The response includes a JSON object containing an array with invoicing data.
Entity Definition
Name | Type | Description |
---|---|---|
id | string | ID of the account alias being queried |
terms | string | payment terms associated with the account |
companyName | string | Description of the account name |
accountAlias | string | Short code for a particular account |
pricingAccountAlias | string | Short code for a particular account that receives the bill for the accountAlias usage |
parentAccountAlias | string | Short code for the parent account alias associated with the account alias being queried |
address1 | string | First line of the address associated with accountAlias |
address2 | string | Second line of the address associated with accountAlias |
city | string | City associated with the accountAlias |
stateProvince | string | State or province associated with the accountAlias |
postalCode | string | Postal code associated with the accountAlias |
billingContactEmail | string | Billing email address associated with the accountAlias |
invoiceCCEmail | string | Additional billing email address associated with the accountAlias |
totalAmount | decimal | Invoice amount in dollars |
invoiceDate | string | Date the invoice is finalized |
poNumber | string | Purchase Order associated with the Invoice |
lineItems | array | Usage details of a resource or collection of similar resources |
Line Items Definition
Name | Type | Description |
---|---|---|
quantity | integer | Quantity of the line item |
description | string | Text description of the line item |
unitCost | decimal | Unit cost of the line item |
itemTotal | decimal | Total cost of the line item |
serviceLocation | string | Location of the line item |
itemDetails | complex | Details about the line item |
Examples
JSON
{
"id": "ALIAS69849A66",
"terms": "Net 15",
"companyName": "CTL Cloud Solutions",
"accountAlias": "ALIAS",
"pricingAccountAlias": "ALIAS",
"parentAccountAlias": "PALIAS",
"address1": "1100 112th Ave NE",
"address2": "Suite 400",
"city": "Bellevue",
"stateProvince": "WA",
"postalCode": "98004",
"billingContactEmail": "billing@domain.com",
"invoiceCCEmail": "",
"totalAmount": 0,
"invoiceDate": "2015-08-01T00:00:00Z",
"poNumber": "",
"lineItems": [
{
"quantity": 1,
"description": "Server Group: DEMO - VA1",
"unitCost": 153.93,
"itemTotal": 153.93,
"serviceLocation": "VA1",
"itemDetails": [
{
"description": "VA1ALIASJMB01",
"cost": 153.93
}
]
},
{
"quantity": 1,
"description": "Shared Load Balancer - CA1",
"unitCost": 29.76,
"itemTotal": 29.76,
"serviceLocation": "CA1",
"itemDetails": []
},
{
"quantity": 1,
"description": "Additional Networks - GB3",
"unitCost": 45,
"itemTotal": 45,
"serviceLocation": "GB3",
"itemDetails": []
},
]
}
Get Custom Fields
Retrieves the custom fields defined for a given account. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation to find out the details of what custom fields are defined for an account.
URL
Structure
GET https://api.ctl.io/v2/accounts/{accountAlias}/customFields
Example
GET https://api.ctl.io/v2/accounts/ACCT/customFields
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
Response
The response will be an array containing one entity for each custom field defined in the given account.
Entity Definition
Name | Type | Description |
---|---|---|
id | string | Unique identifier of the custom field. |
name | string | Friendly name of the custom field as it appears in the UI. |
isRequired | boolean | Boolean value representing whether or not a value is required for this custom field. |
type | string | The type of custom field defined. Will be either "text" (free-form text field), "checkbox" (boolean value), or "option" (dropdown list). |
options | array | Array of name-value pairs corresponding to the options defined for this field. (Empty for "text" or "checkbox" field types.) |
Examples
JSON
[
{
"id":"dba67b156f77123fb413ddfa3dc4ac1d",
"name":"Cost Center",
"isRequired":false,
"type":"text",
"options":[]
},
{
"id":"58f83af6123846769ee6cb091ce3561e",
"name":"Production",
"isRequired":true,
"type":"checkbox",
"options":[]
},
{
"id":"22f002123e3b46d9a8b38ecd4c6df7f9",
"name":"Color",
"isRequired":true,
"type":"option",
"options":[
{
"name":"red",
"value":"Red"
},
{
"name":"blue",
"value":"Blue"
}
]
}
]
Get Data Center Bare Metal Capabilities
Gets the list of bare metal capabilities that a specific data center supports for a given account, including the list of configuration types and the list of supported operating systems. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to discover the available capabilities of related to provisioning bare metal servers in a data center for your account. Specifically, this operation is helpful for retrieving the list of configuration identifiers and OS types to use when creating a bare metal server.
URL
Structure
GET https://api.ctl.io/v2/datacenters/{accountAlias}/{dataCenter}/bareMetalCapabilities
Example
GET https://api.ctl.io/v2/datacenters/ALIAS/VA1/bareMetalCapabilities
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
DataCenter | string | Short string representing the data center you are querying. Valid codes can be retrieved from the Get Data Center List API operation. | Yes |
Response
Entity Definition
Name | Type | Description |
---|---|---|
skus | array | Collection of available bare metal configuration types to pass in to configurationId when creating a bare metal server |
operatingSystems | array | Collection of available operating systems when creating a bare metal server |
SKUs Definition
Name | Type | Description |
---|---|---|
id | string | The configurationId to pass to the Create Server API operation when creating a bare metal server. |
hourlyRate | number | Price per hour for the given configuration. |
availability | string | The level of availability for the given configuration: either high , low , or none . |
memory | array | Information about the memory on the server. |
processor | complex | Information about the physical processors on the server. |
storage | array | Collection of disk information, each item representing one physical disk on the server. |
Memory Definition
Name | Type | Description |
---|---|---|
capacityGB | number | Memory capacity in gigabytes |
Processor Definition
Name | Type | Description |
---|---|---|
coresPerSocket | number | Number of cores for each processor socket |
description | string | Description of the processor including model and clock speed |
sockets | number | Number of sockets |
Storage Definition
Name | Type | Description |
---|---|---|
capacityGB | number | Drive capacity in gigabytes |
speedRpm | number | RPM (revolutions per minutes) speed of the disk |
type | string | Disk type. Only Hdd currently supported. |
OperatingSystems Definition
Name | Type | Description |
---|---|---|
type | string | Underlying unique name for the OS type |
description | string | Friendly description for the OS type |
hourlyRatePerSocket | number | Price per hour per socket for the OS type. |
Examples
JSON
{
"skus": [
{
"id": "529e2592a3e640a7c2617b5e8bc8feaed95eab22",
"hourlyRate": 0.56,
"availability": "high",
"memory": [
{
"capacityGB": 16
}
],
"processor": {
"coresPerSocket": 4,
"description": "Intel(R) Xeon(R) CPU E3-1271 v3 @ 3.60GHz",
"sockets": 1
},
"storage": [
{
"capacityGB": 1000,
"speedRpm": 7200,
"type": "Hdd"
},
{
"capacityGB": 1000,
"speedRpm": 7200,
"type": "Hdd"
}
]
},
{
"id": "f24b18ba2ce23657657444601649c7b8b7f9b60c",
"hourlyRate": 1.65,
"availability": "none",
"memory": [
{
"capacityGB": 64
}
],
"processor": {
"coresPerSocket": 6,
"description": "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz",
"sockets": 2
},
"storage": [
{
"capacityGB": 2000,
"speedRpm": 7200,
"type": "Hdd"
},
{
"capacityGB": 2000,
"speedRpm": 7200,
"type": "Hdd"
},
{
"capacityGB": 2000,
"speedRpm": 7200,
"type": "Hdd"
},
{
"capacityGB": 2000,
"speedRpm": 7200,
"type": "Hdd"
}
]
}
],
"operatingSystems": [
{
"type": "centOS6_64Bit",
"description": "CentOS 6 64-bit",
"hourlyRatePerSocket": 0
},
{
"type": "redHat6_64Bit",
"description": "RedHat Enterprise Linux 6 64-bit",
"hourlyRatePerSocket": 0.075
},
{
"type": "ubuntu14_64Bit",
"description": "Ubuntu 14 64-bit",
"hourlyRatePerSocket": 0
},
{
"type": "windows2012R2Standard_64bit",
"description": "Windows 2012 R2 Standard 64-bit",
"hourlyRatePerSocket": 0.04
},
{
"type": "windows2012R2Datacenter_64bit",
"description": "Windows 2012 R2 Datacenter 64-bit",
"hourlyRatePerSocket": 0.279
}
]
}
Get Data Center Deployment Capabilities
Gets the list of capabilities that a specific data center supports for a given account, including the deployable networks, OS templates, and whether features like shared load balancer configuration are available. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to discover the available capabilities of a data center for your account. Specifically, this operation is helpful for retrieving network identifiers and OS template names to use when creating a server.
URL
Structure
GET https://api.ctl.io/v2/datacenters/{accountAlias}/{dataCenter}/deploymentCapabilities
Example
GET https://api.ctl.io/v2/datacenters/ALIAS/UC1/deploymentCapabilities
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
DataCenter | string | Short string representing the data center you are querying. Valid codes can be retrieved from the Get Data Center List API operation. | Yes |
Response
Entity Definition
Name | Type | Description |
---|---|---|
supportsSharedLoadBalancer | boolean | Whether or not this data center provides support for shared load balancer configuration |
supportsBareMetalServers | boolean | Whether or not this data center provides support for provisioning bare metal servers |
deployableNetworks | array | Collection of networks that can be used for deploying servers |
templates | array | Collection of available templates in the data center that can be used to create servers |
importableOSTypes | array | Collection of available OS types that can be imported as virtual machines. |
DeployableNetworks Definition
Name | Type | Description |
---|---|---|
name | string | User-defined name of the network |
networkId | string | Unique identifier of the network |
type | string | Network type, usually "private" for networks created by the user |
accountID | string | Account alias for the account in which the network exists |
Templates Definition
Name | Type | Description |
---|---|---|
name | string | Underlying unique name for the template |
description | string | Description of the template at it appears in the Control Portal UI |
storageSizeGB | integer | The amount of storage allocated for the primary OS root drive |
capabilities | array | List of capabilities supported by this specific OS template (example: whether adding CPU or memory requires a reboot or not) |
reservedDrivePaths | array | List of drive path names reserved by the OS that can't be used to name user-defined drives |
drivePathLength | integer | Length of the string for naming a drive path, if applicable |
Examples
JSON
{
"supportsBareMetalServers":false,
"supportsSharedLoadBalancer":true,
"deployableNetworks":[
{
"name":"My Network",
"networkId":"a933432bd8894e84b6c4fb123e48cb8b",
"type":"private",
"accountID":"ACCT"
}
],
"templates":[
{
"name":"UBUNTU-14-64-TEMPLATE",
"description":"Ubuntu 14 | 64-bit",
"storageSizeGB":17,
"capabilities":[
"cpuAutoscale"
],
"reservedDrivePaths":[
"bin",
"boot",
"build",
"cdrom",
"compat",
"dist",
"dev",
"entropy",
"etc",
"home",
"initrd.img",
"lib",
"lib64",
"libexec",
"lost+found",
"media",
"mnt",
"opt",
"proc",
"root",
"sbin",
"selinux",
"srv",
"sys",
"tmp",
"usr",
"var",
"vmlinuz"
]
},
{
"name":"WIN2012R2DTC-64",
"description":"Windows 2012 R2 Datacenter Edition | 64-bit",
"storageSizeGB":60,
"capabilities":[
"cpuAutoscale"
],
"reservedDrivePaths":[
"a",
"b",
"c",
"d"
],
"drivePathLength":1
},
{
"name":"WA1ACCTCUST01",
"description":"My Custom Template",
"storageSizeGB":16,
"capabilities":[
"cpuAutoscale"
],
"reservedDrivePaths":[
"bin",
"boot",
"build",
"cdrom",
"compat",
"dist",
"dev",
"entropy",
"etc",
"home",
"initrd.img",
"lib",
"lib64",
"libexec",
"lost+found",
"media",
"mnt",
"opt",
"proc",
"root",
"sbin",
"selinux",
"srv",
"sys",
"tmp",
"usr",
"var",
"vmlinuz"
]
}
]
}
Get Data Center List
Gets the list of data centers that a given account has access to. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need the list of data center names and codes that you have access to. Using that list of data centers, you can then query for the root group, and all the child groups in an entire data center.
URL
Structure
GET https://api.ctl.io/v2/datacenters/{accountAlias}
Example
GET https://api.ctl.io/v2/datacenters/ALIAS
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
Response
Entity Definition
Name | Type | Description |
---|---|---|
id | string | Short value representing the data center code |
name | string | Full, friendly name of the data center |
links | array | Collection of entity links that point to resources related to this data center |
Examples
JSON
[
{
"id": "DC1",
"name": "DC FRIENDLY NAME",
"links": [
{
"rel": "self",
"href": "/v2/datacenters/ALIAS/DC1"
}
]
},
{
"id": "DC2",
"name": "DC2 FRIENDLY NAME",
"links": [
{
"rel": "self",
"href": "/v2/datacenters/ALIAS/DC2"
}
]
}
]
Get Data Center
Gets the details of a specific data center the account has access to. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to discover the name of the root hardware group for a data center. Once you have that group alias, you can issue a secondary query to retrieve the entire group hierarchy for a given data center.
URL
Structure
GET https://api.ctl.io/v2/datacenters/{accountAlias}/{dataCenter}?groupLinks=true|false
Example
GET https://api.ctl.io/v2/datacenters/ALIAS/UC1?groupLinks=true
Request
URI and Querystring Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
DataCenter | string | Short string representing the data center you are querying. Valid codes can be retrieved from the Get Data Center List API operation. | Yes |
GroupLinks | boolean | Determine whether link collections are returned for each group | No |
Response
Entity Definition
Name | Type | Description |
---|---|---|
id | string | Short value representing the data center code |
name | string | Full, friendly name of the data center |
links | array | Collection of entity links that point to resources related to this data center |
Examples
JSON
{
"id": "DC1",
"name": "DC FRIENDLY NAME",
"links": [
{
"rel": "self",
"href": "/v2/datacenters/ALIAS/DC1"
},
{
"rel":"group",
"href":"/v2/groups/ALIAS/54faef9c2bfd41d6b30f787567f9b0d4",
"id":"54faef9c2bfd41d6b30f787567f9b0d4",
"name":"DC1 Hardware"
}
]
}
Add Public IP Address
Claims a public IP address and associates it with a server, allowing access to it on a given set of protocols and ports. It may also be set to restrict access based on a source IP range. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to add a public IP address to an existing server. The public IP can be exposed on multiple protocols and ports and also be set to restrict access based on source IP ranges.
URL
Structure
POST https://api.ctl.io/v2/servers/{accountAlias}/{serverId}/publicIPAddresses
Example
POST https://api.ctl.io/v2/servers/ACCT/WA1ACCTSERV0101/publicIPAddresses
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
ServerId | string | ID of the server being queried. Retrieved from query to containing group, or by looking at the URL when viewing a server in the Control Portal. | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
internalIPAddress | string | The internal (private) IP address to map to the new public IP address. If not provided, one will be assigned for you. | No |
ports | array | The set of ports and protocols to allow access to for the new public IP address. Only these specified ports on the respective protocols will be accessible when accessing the server using the public IP address claimed here. | Yes |
sourceRestrictions | array | The source IP address range allowed to access the new public IP address. Used to restrict access to only the specified range of source IPs. | No |
Ports Definition
Name | Type | Description |
---|---|---|
protocol | string | The specific protocol to support for the given port(s). Should be one of the following: "tcp", "udp", or "icmp". |
port | integer | The port to open for the given protocol. If defining a range of ports, this represents the first port in the range. |
portTo | integer | If defining a range of ports, optionally provide the last number of the range. |
SourceRestrictions Definition
Name | Type | Description |
---|---|---|
cidr | string | The IP range allowed to access the public IP, specified using CIDR notation. |
Examples
JSON
{
"ports":[
{
"protocol":"TCP",
"port":80
},
{
"protocol":"TCP",
"port":443
},
{
"protocol":"TCP",
"port":8080,
"portTo":8081
},
{
"protocol":"UDP",
"port":123
}
],
"sourceRestrictions":[
{
"cidr":"70.100.60.140/32"
},
{
"cidr":"71.100.60.0/24"
}
]
}
Response
The response is a link to the Get Status operation so the asynchronous job can be tracked. Once successfully completed, the public IP address will be available for use as specified.
Entity Definition
Name | Type | Value | Description |
---|---|---|---|
rel | string | status | The link type |
href | string | /v2/operations/[ALIAS]/status/[ID] | Address of the job in the queue |
id | string | [ID] | The identifier of the job in queue. Can be passed to Get Status call to retrieve status of job. |
Examples
JSON
{
"rel":"status",
"href":"/v2/operations/alias/status/wa1-12345",
"id":"wa1-12345"
}
Create a Cross Data Center Firewall Policy
Creates a firewall policy for a given account, between networks in different data centers ("cross data center firewall policy"). Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need to create a firewall policy between networks in different data centers for a given account.
NOTE: This API operation is experimental only, and subject to change without notice. Please plan accordingly.
URL
Structure
POST https://api.ctl.io/v2-experimental/crossDcFirewallPolicies/{sourceAccountAlias}/{dataCenter}
Example
POST https://api.ctl.io/v2-experimental/crossDcFirewallPolicies/SRC_ALIAS/VA1
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
sourceAccountAlias | string | Short code for a particular account | Yes |
dataCenter | string | Short string representing the target data center for the new policy. Valid codes can be retrieved from the Get Data Center List API operation. | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
destinationAccountId | string | Short code for a particular account | Yes |
destinationLocationId | string | Short code for a particular location | Yes |
destinationCidr | string | Destination address for traffic on the terminating firewall, specified using CIDR notation | Yes |
enabled | string | Indicates if the policy is enabled (true ) or disabled (false ) |
Yes |
sourceCidr | string | Source address for traffic on the originating firewall, specified using CIDR notation, on the originating firewall | Yes |
Example
JSON
{
"destinationAccountId" : "dest",
"destinationLocationId" : "UC1",
"destinationCidr" : "10.1.1.0/24",
"enabled" : true,
"sourceCidr" : "10.2.2.0/24"
}
Response
The response will be an entity representing the new firewall policy that was created.
Example
JSON
{
"id": "921670344d781378a8df6159c00bddea",
"status": "pending",
"enabled": true,
"sourceCidr": "10.2.2.0/24",
"sourceAccount": "src",
"sourceLocation": "va1",
"destinationCidr": "10.1.1.0/24",
"destinationAccount": "dest",
"destinationLocation": "uc1",
"links": [
{
"rel": "self",
"href": "/v2-experimental/crossDcFirewallPolicies/src/va1/921670344d781378a8df6159c00bddea",
"verbs": [
"GET",
"PUT",
"DELETE"
]
}
]
}
Create an Intra Data Center Firewall Policy
Creates a firewall policy for a given account in a given data center ("intra data center firewall policy"). Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need to create a firewall policy in a given data center for a given account.
NOTE: This API operation is experimental only, and subject to change with no notice. Please plan accordingly.
URL
Structure
POST https://api.ctl.io/v2-experimental/firewallPolicies/{sourceAccountAlias}/{dataCenter}
Example
POST https://api.ctl.io/v2-experimental/firewallPolicies/SRC_ALIAS/WA1
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
sourceAccountAlias | string | Short code for a particular account | Yes |
dataCenter | string | Short string representing the target data center for the new policy. Valid codes can be retrieved from the Get Data Center List API operation. | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
destinationAccount | string | Short code for a particular account | Yes |
source | string | Source addresses for traffic on the originating firewall, specified using CIDR notation, on the originating firewall | Yes |
destination | string | Destination addresses for traffic on the terminating firewall, specified using CIDR notation | Yes |
ports | string | Type of ports associated with the policy. Supported ports include: any , icmp , TCP and UDP with single ports (tcp/123 , udp/123 ) and port ranges (tcp/123-456 , udp/123-456 ). Some common ports include: tcp/21 (for FTP), tcp/990 (FTPS), tcp/80 (HTTP 80), tcp/8080 (HTTP 8080), tcp/443 (HTTPS 443), icmp (PING), tcp/3389 (RDP), and tcp/22 (SSH/SFTP). |
No |
Examples
JSON
{
"destinationAccount": "DEST_ALIAS",
"source":["123.45.223.1/32", "123.45.223.2/32", "123.45.223.3/32"],
"destination":["123.45.223.1/32", "123.45.223.2/32"],
"ports":["tcp/1-600"]
}
Response
The response will be an entity representing the new firewall policy that was created.
Entity Definition
Name | Type | Description |
---|---|---|
links | array | Collection of entity links that point to resources related to this firewall policy |
Examples
JSON
{
"links": [
{
"rel": "self",
"href": "https://api.ctl.io/v2-experimental/firewallPolicies/DEST_ALIAS/WA1/71f912d00e1c11e5b9390800200c9a66",
"verbs": [
"GET",
"PUT",
"DELETE"
]
}
]
}
Delete a Cross Data Center Firewall Policy
Deletes a firewall policy for a given account, between networks in different data centers ("cross data center firewall policy"). Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need to delete a firewall policy between networks in different data centers.
NOTE: This API operation is experimental only, and subject to change without notice. Please plan accordingly.
URL
Structure
DELETE https://api.ctl.io/v2-experimental/crossDcFirewallPolicies/{sourceAccountAlias}/{dataCenter}/{policyId}
Example
DELETE https://api.ctl.io/v2-experimental/crossDcFirewallPolicies/SRC_ALIAS/VA1/921670344d781378a8df6159c00bddea
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
sourceAccountAlias | string | Short code for a particular account | Yes |
dataCenter | string | Short string representing the target data center for the new policy. Valid codes can be retrieved from the Get Data Center List API operation. | Yes |
policyId | string | ID of the firewall policy | Yes |
Response
There is no response upon the successful removal of the firewall policy.
Delete an Intra Data Center Firewall Policy
Deletes a firewall policy for a given account in a given data center ("intra data center firewall policy"). Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need to delete a firewall policy in a given data center for a given account.
NOTE: This API operation is experimental only, and subject to change with no notice. Please plan accordingly.
URL
Structure
DELETE https://api.ctl.io/v2-experimental/firewallPolicies/{sourceAccountAlias}/{dataCenter}/{firewallPolicy}
Example
DELETE https://api.ctl.io/v2-experimental/firewallPolicies/SRC_ALIAS/WA1/1ac853b00e1011e5b9390800200c9a66
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
sourceAccountAlias | string | Short code for a particular account | Yes |
dataCenter | string | Short string representing the target data center for the new policy. Valid codes can be retrieved from the Get Data Center List API operation. | Yes |
firewallPolicy | string | ID of the firewall policy | Yes |
Response
Entity Definition
The response will not contain JSON content, but should return the HTTP 204 No Content
response upon the successful removal of the firewall policy.
Get Cross Data Center Firewall Policy List
Gets the list of firewall policies associated with a given account, between networks in different data centers ("cross data center firewall policies"). Users can optionally filter results by requesting policies associated with a second "destination" account. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need the list of available firewall policies between networks in different data centers.
NOTE: This API operation is experimental only, and subject to change without notice. Please plan accordingly.
URL
Structure
GET https://api.ctl.io/v2-experimental/crossDcFirewallPolicies/{sourceAccountId}/{dataCenter}?destinationAccountId={destinationAccountId}
Example
GET https://api.ctl.io/v2-experimental/crossDcFirewallPolicies/SRC_ALIAS/VA1?destinationAccountId=DEST_ALIAS
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
sourceAccountId | string | Short code for a particular account | Yes |
dataCenter | string | Short string representing the target data center for the new policy. Valid codes can be retrieved from the Get Data Center List API operation. | Yes |
destinationAccountId | string | Short code for another account | No |
Response
Example
JSON
[
{
"id": "921670344d781378a8df6159c00bddea",
"status": "pending",
"enabled": true,
"sourceCidr": "10.2.2.0/24",
"sourceAccount": "src",
"sourceLocation": "va1",
"destinationCidr": "10.1.1.0/24",
"destinationAccount": "dest",
"destinationLocation": "uc1",
"links": [
{
"rel": "self",
"href": "/v2-experimental/crossDcFirewallPolicies/src/va1/921670344d781378a8df6159c00bddea",
"verbs": [
"GET",
"PUT",
"DELETE"
]
}
]
},
{
"id": "1a4b72963130e7a4d1a3343299f84edc",
"status": "active",
"enabled": true,
"sourceCidr": "10.5.5.0/24",
"sourceAccount": "src",
"sourceLocation": "va1",
"destinationCidr": "10.1.1.0/24",
"destinationAccount": "dest1",
"destinationLocation": "uc1",
"links": [
{
"rel": "self",
"href": "/v2-experimental/crossDcFirewallPolicies/src5/wa1/1a4b72963130e7a4d1a3343299f84edc",
"verbs": [
"GET",
"PUT",
"DELETE"
]
}
]
},
{
"id": "372d37109487b0584db2c87b16f654b1",
"status": "active",
"enabled": true,
"sourceCidr": "10.7.7.0/24",
"sourceAccount": "src",
"sourceLocation": "va1",
"destinationCidr": "10.9.9.0/24",
"destinationAccount": "dest2",
"destinationLocation": "il1",
"links": [
{
"rel": "self",
"href": "/v2-experimental/crossDcFirewallPolicies/src7/gb3/372d37109487b0584db2c87b16f654b1",
"verbs": [
"GET",
"PUT",
"DELETE"
]
}
]
}
]
Get Cross Data Center Firewall Policy
Gets the details of a specific firewall policy associated with a given account, between networks in different data centers ("cross data center firewall policy"). Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need the details of a specific firewall policy between networks in different data centers.
NOTE: This API operation is experimental only, and subject to change without notice. Please plan accordingly.
URL
Structure
GET https://api.ctl.io/v2-experimental/crossDcFirewallPolicies/{sourceAccountAlias}/{dataCenter}/{policyId}
Example
GET https://api.ctl.io/v2-experimental/firewallPolicies/SRC_ALIAS/VA1/921670344d781378a8df6159c00bddea
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
sourceAccountAlias | string | Short code for a particular account | Yes |
dataCenter | string | Short string representing the data center you are querying. Valid codes can be retrieved from the Get Data Center List API operation. | Yes |
policyId | string | ID of the firewall policy | Yes |
Response
Example
JSON
{
"id": "921670344d781378a8df6159c00bddea",
"status": "active",
"enabled": true,
"sourceCidr": "10.2.2.0/24",
"sourceAccount": "src",
"sourceLocation": "va1",
"destinationCidr": "10.1.1.0/24",
"destinationAccount": "dest",
"destinationLocation": "uc1",
"links": [
{
"rel": "self",
"href": "/v2-experimental/crossDcFirewallPolicies/src/va1/921670344d781378a8df6159c00bddea",
"verbs": [
"GET",
"PUT",
"DELETE"
]
}
]
}
Get Intra Data Center Firewall Policy List
Gets the list of firewall policies associated with a given account in a given data center ("intra data center firewall policies"). Users can optionally filter results by requesting policies associated with a second "destination" account. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need the list of available firewall policies in a given data center for a given account. Using that list of firewall policies, you can then query for a specific policy in a given data center.
NOTE: This API operation is experimental only, and subject to change with no notice. Please plan accordingly.
URL
Structure
GET https://api.ctl.io/v2-experimental/firewallPolicies/{sourceAccountAlias}/{dataCenter}?destinationAccount={destinationAccountAlias}
Example
GET https://api.ctl.io/v2-experimental/firewallPolicies/SRC_ALIAS/WA1?destinationAccount=DEST_ALIAS
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
sourceAccountAlias | string | Short code for a particular account | Yes |
dataCenter | string | Short string representing the data center you are querying. Valid codes can be retrieved from the Get Data Center List API operation. | Yes |
destinationAccountAlias | string | Short code for a particular account | No |
Response
Entity Definition
Name | Type | Description |
---|---|---|
id | string | ID of the firewall policy |
status | string | The state of the policy: either active (policy is available and working as expected), error (policy creation did not complete as expected) or pending (the policy is in the process of being created) |
enabled | boolean | Indicates if the policy is enabled (true ) or disabled (false ) |
source | array | Source addresses for traffic on the originating firewall, specified using CIDR notation |
destination | array | Destination addresses for traffic on the terminating firewall, specified using CIDR notation |
destinationAccount | string | Short code for a particular account |
ports | array | Type of ports associated with the policy. Supported ports include: any , icmp , TCP and UDP with single ports (tcp/123 , udp/123 ) and port ranges (tcp/123-456 , udp/123-456 ). Some common ports include: tcp/21 (for FTP), tcp/990 (FTPS), tcp/80 (HTTP 80), tcp/8080 (HTTP 8080), tcp/443 (HTTPS 443), icmp (PING), tcp/3389 (RDP), and tcp/22 (SSH/SFTP). |
links | array | Collection of entity links that point to resources related to this list of firewall policies |
Examples
JSON
[
{
"id": "c59b96600e0d11e5b9390800200c9a66",
"status": "active",
"enabled": true,
"source": [
"123.45.678.1/32",
"123.45.678.2/32",
"123.45.678.3/32"
],
"destination": [
"234.56.789.1/32",
"234.56.789.2/32"
],
"destinationAccount": "DEST_ALIAS",
"ports": [
"any"
],
"links": [
{
"rel": "self",
"href": "https://api.ctl.io/v2-experimental/firewallPolicies/SRC_ALIAS/WA1/c59b96600e0d11e5b9390800200c9a66",
"verbs": [
"GET",
"PUT",
"DELETE"
]
}
]
},
{
"id": "bbb377290e0e11e5b9390800200c9a66",
"status": "active",
"enabled": false,
"source": [
"145.67.890.1/32",
"145.67.890.2/32",
"145.67.890.3/32"
],
"destination": [
"156.78.901.1/32",
"156.78.901.2/32"
],
"destinationAccount": "DEST_ALIAS",
"ports": [
"any"
],
"links": [
{
"rel": "self",
"href": "https://api.ctl.io/v2-experimental/firewallPolicies/SRC_ALIAS/WA1/bbb377290e0e11e5b9390800200c9a66",
"verbs": [
"GET",
"PUT",
"DELETE"
]
}
]
},
{
"id": "d56587800e0e11e5b9390800200c9a66",
"status": "active",
"enabled": true,
"source": [
"123.45.678.1/32"
],
"destination": [
"234.23.435.200/32"
],
"destinationAccount": "DEST_ALIAS",
"ports": [
"tcp/8080",
"tcp/1-8000"
],
"links": [
{
"rel": "self",
"href": "https://api.ctl.io/v2-experimental/firewallPolicies/SRC_ALIAS/WA1/d56587800e0e11e5b9390800200c9a66",
"verbs": [
"GET",
"PUT",
"DELETE"
]
}
]
},
]
Get Intra Data Center Firewall Policy
Gets the details of a specific firewall policy associated with a given account in a given data center (an "intra data center firewall policy"). Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need the details of a specific firewall policy in a given data center for a given account.
NOTE: This API operation is experimental only, and subject to change with no notice. Please plan accordingly.
URL
Structure
GET https://api.ctl.io/v2-experimental/firewallPolicies/{sourceAccountAlias}/{dataCenter}/{firewallPolicy}
Example
GET https://api.ctl.io/v2-experimental/firewallPolicies/SRC_ALIAS/WA1/1ac853b00e1011e5b9390800200c9a66
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
sourceAccountAlias | string | Short code for a particular account | Yes |
dataCenter | string | Short string representing the data center you are querying. Valid codes can be retrieved from the Get Data Center List API operation. | Yes |
firewallPolicy | string | ID of the firewall policy | Yes |
Response
Entity Definition
Name | Type | Description |
---|---|---|
id | string | ID of the firewall policy |
status | string | The state of the policy; either active (policy is available and working as expected), error (policy creation did not complete as expected) or pending (the policy is in the process of being created) |
enabled | boolean | Indicates if the policy is enabled (true ) or disabled (false ) |
source | string | Source addresses for traffic on the originating firewall, specified using CIDR notation |
destination | string | Destination addresses for traffic on the terminating firewall, specified using CIDR notation |
destinationAccount | string | Short code for a particular account |
ports | string | Type of ports associated with the policy. Supported ports include: any , icmp , TCP and UDP with single ports (tcp/123 , udp/123 ) and port ranges (tcp/123-456 , udp/123-456 ). Some common ports include: tcp/21 (for FTP), tcp/990 (FTPS), tcp/80 (HTTP 80), tcp/8080 (HTTP 8080), tcp/443 (HTTPS 443), icmp (PING), tcp/3389 (RDP), and tcp/22 (SSH/SFTP). |
links | array | Collection of entity links that point to resources related to this list of firewall policies |
Examples
JSON
{
"id": "1ac853b00e1011e5b9390800200c9a6",
"status": "active",
"enabled": true,
"source": [
"123.45.678.1/32",
"123.45.678.2/32",
"123.45.678.3/32"
],
"destination": [
"245.21.223.1/32",
"245.21.223.2/32"
],
"destinationAccount": "DEST_ALIAS",
"ports": [
"any"
],
"links": [
{
"rel": "self",
"href": "https://api.ctl.io/v2-experimental/firewallPolicies/SRC_ALIAS/WA1/1ac853b00e1011e5b9390800200c9a6",
"verbs": [
"GET",
"PUT",
"DELETE"
]
}
]
}
Get Public IP Address
Gets the details for the public IP address of a server, including the specific set of protocols and ports allowed and any source IP restrictions. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to find out information about a specific public IP address for an existing server. This operation is linked to from the Get Server response that lists all public IPs assigned to a server.
URL
Structure
GET https://api.ctl.io/v2/servers/{accountAlias}/{serverId}/publicIPAddresses/{publicIP}
Example
GET https://api.ctl.io/v2/servers/ACCT/WA1ACCTSERV0101/publicIPAddresses/12.34.56.78
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
ServerId | string | ID of the server being queried. Retrieved from query to containing group, or by looking at the URL when viewing a server in the Control Portal. | Yes |
PublicIP | string | The specific public IP to return details about. A server may have more than one public IP, and the list of available ones can be retrieved from the call to Get Server. | Yes |
Response
Entity Definition
Name | Type | Description |
---|---|---|
internalIPAddress | string | The internal (private) IP address mapped to the public IP address. |
ports | array | The set of accessible ports and protocols for the public IP address. |
sourceRestrictions | array | The source IP address range allowed to access the new public IP address. Only traffic from this range will have access to the public IP on the specified ports. |
Ports Definition
Name | Type | Description |
---|---|---|
protocol | string | The specific protocol to support for the given port(s). Should be either "tcp", "udp", or "icmp" (which is enabled by default). |
port | integer | The port to open for the given protocol. If defining a range of ports, this represents the first port in the range. |
portTo | integer | If defining a range of ports, optionally provide the last number of the range. |
SourceRestrictions Definition
Name | Type | Description |
---|---|---|
cidr | string | The IP range allowed to access the public IP, specified using CIDR notation. |
Examples
JSON
{
"internalIPAddress":"10.11.12.13",
"ports":[
{
"protocol":"ICMP",
"port":0
},
{
"protocol":"TCP",
"port":80
},
{
"protocol":"TCP",
"port":443
},
{
"protocol":"TCP",
"port":8080,
"portTo":8081
},
{
"protocol":"UDP",
"port":123
}
],
"sourceRestrictions":[
{
"cidr":"70.100.60.140/32"
},
{
"cidr":"71.100.60.0/24"
}
]
}
Remove Public IP Address
Releases the given public IP address of a server so that it is no longer associated with the server and available to be claimed again by another server. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to stop using a specific public IP address on an existing server.
URL
Structure
DELETE https://api.ctl.io/v2/servers/{accountAlias}/{serverId}/publicIPAddresses/{publicIP}
Example
DELETE https://api.ctl.io/v2/servers/ACCT/WA1ACCTSERV0101/publicIPAddresses/12.34.56.78
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
ServerId | string | ID of the server being queried. Retrieved from query to containing group, or by looking at the URL when viewing a server in the Control Portal. | Yes |
PublicIP | string | The specific public IP to return details about. A server may have more than one public IP, and the list of available ones can be retrieved from the call to Get Server. | Yes |
Response
The response is a link to the Get Status operation so the asynchronous job can be tracked. Once successfully completed, the public IP address will no longer be associated with the server.
Entity Definition
Name | Type | Value | Description |
---|---|---|---|
rel | string | status | The link type |
href | string | /v2/operations/[ALIAS]/status/[ID] | Address of the job in the queue |
id | string | [ID] | The identifier of the job in queue. Can be passed to Get Status call to retrieve status of job. |
Examples
JSON
{
"rel":"status",
"href":"/v2/operations/alias/status/wa1-12345",
"id":"wa1-12345"
}
Update Cross Data Center Firewall Policy
Updates a given firewall policy associated with a given account, between networks in different data centers ("cross data center firewall policy"). Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need to update a firewall policy between networks in different data centers.
NOTE: This API operation is experimental only, and subject to change without notice. Please plan accordingly.
URL
Structure
PUT https://api.ctl.io/v2-experimental/crossDcFirewallPolicies/{sourceAccountAlias}/{dataCenter}/{policyId}?enabled=true/false
Example
PUT https://api.ctl.io/v2-experimental/crossDcFirewallPolicies/SRC_ALIAS/VA1/921670344d781378a8df6159c00bddea?enabled=false
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
sourceAccountAlias | string | Short code for a particular account | Yes |
dataCenter | string | Short string representing the data center associated with the policy of interest. Valid codes can be retrieved from the Get Data Center List API operation. | Yes |
enabled | string | true or false | Yes |
Response
There is no response upon the successful update of the firewall policy.
Update Intra Data Center Firewall Policy
Updates a given firewall policy associated with a given account in a given data center (an "intra data center firewall policy"). Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need to update a firewall policy in a given data center for a given account.
NOTE: This API operation is experimental only, and subject to change with no notice. Please plan accordingly.
URL
Structure
PUT https://api.ctl.io/v2-experimental/firewallPolicies/{sourceAccountAlias}/{dataCenter}/{firewallPolicy}
Example
PUT https://api.ctl.io/v2-experimental/firewallPolicies/SRC_ALIAS/WA1/e46ef2500e1011e5b9390800200c9a66
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
sourceAccountAlias | string | Short code for a particular account | Yes |
dataCenter | string | Short string representing the data center associated with the policy of interest. Valid codes can be retrieved from the Get Data Center List API operation. | Yes |
destinationAccountAlias | string | Short code for a particular account | No |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
enabled | boolean | Indicates if the policy is enabled (true ) or disabled (false ) |
No |
source | string | Source addresses for traffic on the originating firewall, specified using CIDR notation | No |
destination | string | Destination addresses for traffic on the terminating firewall, specified using CIDR notation | No |
ports | string | Type of ports associated with the policy. Supported ports include: any , icmp , TCP and UDP with single ports (tcp/123 , udp/123 ) and port ranges (tcp/123-456 , udp/123-456 ). Some common ports include: tcp/21 (for FTP), tcp/990 (FTPS), tcp/80 (HTTP 80), tcp/8080 (HTTP 8080), tcp/443 (HTTPS 443), icmp (PING), tcp/3389 (RDP), and tcp/22 (SSH/SFTP). |
No |
Examples
JSON
{
"enabled":false,
"source":["123.45.678.1/32"],
"destination":["234.4.678.2/32"],
"ports":["udp/8080"]
}
Response
Entity Definition
The response will not contain JSON content, but should return the HTTP 204 No Content
response upon the successful update of firewall policy attributes.
Update Public IP Address
Updates a public IP address on an existing server, allowing access to it on a given set of protocols and ports as well as restricting access based on a source IP range. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to update the ports and protocols or source IP restrictions for a public IP address on an existing server.
URL
Structure
PUT https://api.ctl.io/v2/servers/{accountAlias}/{serverId}/publicIPAddresses/{publicIP}
Example
PUT https://api.ctl.io/v2/servers/ACCT/WA1ACCTSERV0101/publicIPAddresses/12.34.56.78
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
ServerId | string | ID of the server being queried. Retrieved from query to containing group, or by looking at the URL when viewing a server in the Control Portal. | Yes |
PublicIP | string | The specific public IP to return details about. A server may have more than one public IP, and the list of available ones can be retrieved from the call to Get Server. | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
ports | array | The set of ports and protocols to allow access to for the public IP address. Only these specified ports on the respective protocols will be accessible when accessing the server using the public IP address specified here. | Yes |
sourceRestrictions | array | The source IP address range allowed to access the public IP address. Used to restrict access to only the specified range of source IPs. | No |
Ports Definition
Name | Type | Description |
---|---|---|
protocol | string | The specific protocol to support for the given port(s). Should be one of the following: "tcp", "udp", or "icmp". |
port | integer | The port to open for the given protocol. If defining a range of ports, this represents the first port in the range. |
portTo | integer | If defining a range of ports, optionally provide the last number of the range. |
SourceRestrictions Definition
Name | Type | Description |
---|---|---|
cidr | string | The IP range allowed to access the public IP, specified using CIDR notation. |
Examples
JSON
{
"ports":[
{
"protocol":"TCP",
"port":80
},
{
"protocol":"TCP",
"port":443
},
{
"protocol":"TCP",
"port":8080,
"portTo":8081
},
{
"protocol":"UDP",
"port":123
}
],
"sourceRestrictions":[
{
"cidr":"70.100.60.140/32"
},
{
"cidr":"71.100.60.0/24"
}
]
}
Response
The response is a link to the Get Status operation so the asynchronous job can be tracked. Once successfully completed, the public IP address will be available for use as specified.
Entity Definition
Name | Type | Value | Description |
---|---|---|---|
rel | string | status | The link type |
href | string | /v2/operations/[ALIAS]/status/[ID] | Address of the job in the queue |
id | string | [ID] | The identifier of the job in queue. Can be passed to Get Status call to retrieve status of job. |
Examples
JSON
{
"rel":"status",
"href":"/v2/operations/alias/status/wa1-12345",
"id":"wa1-12345"
}
Create Group
Creates a new group. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to create a new group.
URL
Structure
POST https://api.ctl.io/v2/groups/{accountAlias}
Example
POST https://api.ctl.io/v2/groups/ALIAS/
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
name | string | Name of the group to create. | Yes |
description | string | User-defined description of this group | No |
parentGroupId | string | ID of the parent group. Retrieved from query to parent group, or by looking at the URL on the UI pages in the Control Portal. | Yes |
customFields | complex | Collection of custom field ID-value pairs to set for the server. | No |
CustomFields Definition
Name | Type | Description |
---|---|---|
id | string | ID of the custom field to set. Available custom field IDs can be retrieved from the Get Custom Fields API operation. |
value | string | Value to set the custom field to for this server. |
Examples
JSON
{
"name": "New Group",
"description": "A new group.",
"parentGroupId": "2a5c0b9662cf4fc8bf6180f139facdc0",
"customFields": [
{
"id": "58f83af6123846769ee6cb091ce3561e",
"value": "1100003"
}
]
}
Response
Group Entity Definition
Name | Type | Description |
---|---|---|
id | string | ID of the group being queried |
name | string | User-defined name of the group |
description | string | User-defined description of this group |
locationId | string | Data center location identifier |
type | string | Group type which could include system types like "archive" |
status | string | Describes if group is online or not |
serversCount | integer | Number of servers this group contains |
groups | array | Refers to this same entity type for each sub-group |
links | array | Collection of entity links that point to resources related to this group |
changeInfo | complex | Describes "created" and "modified" details |
customFields | complex | Details about any custom fields and their values |
ChangeInfo Definition
Name | Type | Description |
---|---|---|
createdDate | dateTime | Date/time that the group was created |
createdBy | string | Who created the group |
modifiedDate | dateTime | Date/time that the group was last updated |
modifiedBy | string | Who modified the group last |
CustomFields Definition
Name | Type | Description |
---|---|---|
id | string | Unique ID of the custom field |
name | string | Friendly name of the custom field |
value | string | Underlying value of the field |
displayValue | string | Shown value of the field |
Examples
JSON
{
"id": "56b789a2a72f43a98ae2227061e8f8f8",
"name": "New Group",
"description": "A new group.",
"locationId": "WA1",
"type": "default",
"status": "active",
"groups": [
{
"id": "2a5c0b9662cf4fc8bf6180f139facdc0",
"name": "Parent Group Name",
"description": "The parent group.",
"locationId": "WA1",
"type": "default",
"status": "active",
"serversCount": 0,
"groups": [],
"links": [
{
"rel":"createGroup",
"href":"/v2/groups/acct",
"verbs":[
"POST"
]
},
{
"rel":"createServer",
"href":"/v2/servers/acct",
"verbs":[
"POST"
]
},
{
"rel": "self",
"href": "/v2/groups/acct/2a5c0b9662cf4fc8bf6180f139facdc0",
"verbs":[
"GET",
"PATCH",
"DELETE"
]
},
{
"rel": "parentGroup",
"href": "/v2/groups/acct/2a5c0b9662cf4fc8bf6180f139facdc0",
"id": "2a5c0b9662cf4fc8bf6180f139facdc0"
},
{
"rel": "defaults",
"href": "/v2/groups/acct/2a5c0b9662cf4fc8bf6180f139facdc0/defaults",
"verbs":[
"GET",
"POST"
]
},
{
"rel": "billing",
"href": "/v2/groups/acct/2a5c0b9662cf4fc8bf6180f139facdc0/billing"
},
{
"rel": "archiveGroupAction",
"href": "/v2/groups/acct/2a5c0b9662cf4fc8bf6180f139facdc0/archive"
},
{
"rel": "statistics",
"href": "/v2/groups/acct/2a5c0b9662cf4fc8bf6180f139facdc0/statistics"
},
{
"rel":"upcomingScheduledActivities",
"href":"/v2/groups/acct/2a5c0b9662cf4fc8bf6180f139facdc0/upcomingScheduledActivities"
},
{
"rel":"horizontalAutoscalePolicyMapping",
"href":"/v2/groups/acct/2a5c0b9662cf4fc8bf6180f139facdc0/horizontalAutoscalePolicy",
"verbs":[
"GET",
"PUT",
"DELETE"
]
},
{
"rel": "scheduledActivities",
"href": "/v2/groups/acct/2a5c0b9662cf4fc8bf6180f139facdc0/scheduledActivities",
"verbs":[
"GET",
"POST"
]
}
]
}
],
"links":[
{
"rel": "self",
"href": "/v2/groups/acct/56b789a2a72f43a98ae2227061e8f8f8"
},
{
"rel": "parentGroup",
"href": "/v2/groups/acct/2a5c0b9662cf4fc8bf6180f139facdc0",
"id": "2a5c0b9662cf4fc8bf6180f139facdc0"
},
{
"rel": "billing",
"href": "/v2/groups/acct/56b789a2a72f43a98ae2227061e8f8f8/billing"
},
{
"rel": "archiveGroupAction",
"href": "/v2/groups/acct/56b789a2a72f43a98ae2227061e8f8f8/archive"
},
{
"rel": "statistics",
"href": "/v2/groups/acct/56b789a2a72f43a98ae2227061e8f8f8/statistics"
},
{
"rel": "scheduledActivities",
"href": "/v2/groups/acct/56b789a2a72f43a98ae2227061e8f8f8/scheduledActivities"
}
],
"changeInfo": {
"createdDate": "2012-12-17T01:17:17Z",
"createdBy": "user@domain.com",
"modifiedDate": "2014-05-16T23:49:25Z",
"modifiedBy": "user@domain.com"
},
"customFields": [
{
"id": "22f002123e3b46d9a8b38ecd4c6df7f9",
"name": "Cost Center",
"value": "IT-DEV",
"displayValue": "IT-DEV"
},
{
"id": "58f83af6123846769ee6cb091ce3561e",
"name": "CMDB ID",
"value": "1100003",
"displayValue": "1100003"
}
]
}
Delete Group
Sends the delete operation to a given group and adds operation to queue. This operation will delete the group and all servers and groups underneath it. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to delete a group and all objects underneath it.
URL
Structure
DELETE https://api.ctl.io/v2/groups/{accountAlias}/{groupId}
Example
DELETE https://api.ctl.io/v2/groups/ALIAS/2a5c0b9662cf4fc8bf6180f139facdc0
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
GroupId | string | ID of the group to be deleted. Retrieved from query to parent group, or by looking at the URL on the new UI pages in the Control Portal. | Yes |
Response
Entity Definition
Name | Type | Value | Description |
---|---|---|---|
rel | string | status | The link type |
href | string | /v2/operations/[ALIAS]/status/[ID] | Address of the job in the queue |
id | string | [ID] | The identifier of the job in queue. Can be passed to Get Status call to retrieve status of job. |
Examples
JSON
{
"rel":"status",
"href":"/v2/operations/alias/status/wa1-12345",
"id":"wa1-12345"
}
Get Group Billing Details
Gets the current and estimated charges for each server in a designated group hierarchy. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to find out the charges associated with a specific group.
URL
Structure
GET https://api.ctl.io/v2/groups/{accountAlias}/{groupId}/billing
Example
GET https://api.ctl.io/v2/groups/ALIAS/2a5c0b9662cf4fc8bf6180f139facdc0/billing
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
GroupID | string | ID of the group being queried. Retrieved from query to parent group, or by looking at the URL on the new UI pages in the Control Portal | Yes |
Response
Group Entity Definition
Name | Type | Description |
---|---|---|
date | datetime | Date that this billing information applies to |
groups | array | List of groups (with the first being the queried group) in the requested hierarchy. Group ID listed before each group entity description |
Groups Definition
Name | Type | Description |
---|---|---|
name | string | User-defined name of the group |
servers | array | Collection of servers in this group, each with billing information. Server ID listed before each entity description |
Servers Definition
Name | Type | Description |
---|---|---|
templateCost | float | Cost of templates stored in the group |
archiveCost | float | Cost of archived servers in this group |
monthlyEstimate | float | Projected charges for the servers given current usage |
monthToDate | float | Charges up until the requested time |
currentHour | float | Charges for the most recent hour |
Examples
JSON
{
"date": "2014-04-07T21:33:51.9743015Z",
"groups": {
"8c95fbaf74b7497fb671235aa318b44c": {
"name": "Web Applications",
"servers": {
"wa1acctserv7101": {
"templateCost": 0.0,
"archiveCost": 0.0,
"monthlyEstimate": 77.76,
"monthToDate": 17.93,
"currentHour": 0.108
},
"wa1acctserv7202": {
"templateCost": 0.0,
"archiveCost": 0.0,
"monthlyEstimate": 156.96,
"monthToDate": 36.19,
"currentHour": 0.218
}
}
},
"4bca7bf6ead14cd59053e1eb1cd2d01f": {
"name": "Training Environment",
"servers": {}
}
}
}
Get Group Horizontal Autoscale Policy
Retrieves the details of a horizontal autoscale policy associated with a group. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to get a horizontal autoscale policy associated to a Group.
URL
Structure
GET https://api.ctl.io/v2/groups/{accountAlias}/{groupId}/horizontalAutoscalePolicy/
Example
GET https://api.ctl.io/v2/groups/ALIAS/2a5c0b9662cf4fc8bf6180f139facdc0/horizontalAutoscalePolicy
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
GroupID | string | ID of the group being queried. Retrieved from query to parent group, or by looking at the URL of the Group in the Control Portal UI. | Yes |
Response
Name | Type | Description |
---|---|---|
groupId | string | ID of the group |
policyId | string | The unique identifier of the autoscale policy |
locationId | string | Data center location identifier |
name | string | Name of the Policy |
availableServers | int | The number of servers available for scaling |
targetSize | int | Number of servers to scale to |
scaleDirection | string | Direction to Scale (In or Out ) |
scaleResourceReason | string | Reason for scaling, either: CPU, Memory, MinimumResourceCount, or None |
loadBalancer | complex | Information about the load balancer associated with the policy |
links | array | Collection of entity links that point to resources related to this data center |
Load Balancer Definition
Name | Type | Description |
---|---|---|
id | string | ID of the load balancer |
name | string | Friendly name of the load balancer |
publicPort | int | Port configured on the public-facing side of the load balancer pool. |
privatePort | int | The internal (private) port of the node server |
publicIP | string | The external (public) IP address of the load balancer |
links | array | Collection of entity links that point to resources related to this data center |
Examples
JSON
{
"groupId": "fc06fd421e2ee41190460050568600e8",
"policyId": "6cf7f7d139ee4d4f98a09bd0400b1a56",
"locationId": "WA1",
"availableServers": 2,
"targetSize": 1,
"scaleDirection": "Up",
"scaleResourceReason": "MinimumResourceCount",
"loadBalancer": {
"id": "bf82320cc96d42048fc7d5e41b0cdada",
"name": "hotfix111314",
"publicPort": 443,
"privatePort": 300,
"publicIP": "1.1.1.1",
"links": [
{
"rel": "self",
"href": "/v2/sharedLoadBalancers/ALIAS/WA1/bf82320cc96d42048fc7d5e41b0cdada"
}
]
},
"timestamp": "2015-10-20T21:20:02Z",
"links": [
{
"rel": "self",
"href": "/v2/groups/WHIM/fc06fd421e2ee41190460050568600e8/horizontalAutoscalePolicy"
},
{
"rel": "group",
"href": "/v2/groups/ALIAS/fc06fd421e2ee41190460050568600e8"
},
{
"rel": "horizontalAutoscalePolicy",
"href": "/v2/horizontalAutoscalePolicies/ALIAS/6cf7f7d139ee4d4f98a09bd0400b1a56"
}
]
}
Get Group Monitoring Statistics
Gets the resource consumption details for whatever window specified in the request. Data can be retrieve for a variety of time windows and intervals. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to track the resource usage of servers within a group hierarchy. It can be used to populate a local data mart or chart the results on a dashboard.
URL
Structure
GET https://api.ctl.io/v2/groups/{accountAlias}/{groupId}/statistics?type=hourly&start={datetime}&end={datetime}&sampleInterval={dd:hh:mm:ss}
Example
GET https://api.ctl.io/v2/groups/ALIAS/2a5c0b9662cf4fc8bf6180f139facdc0/statistics?type=hourly&start=2014-04-05T07:52:47.302Z&end=2014-04-07T07:52:47.302Z&sampleInterval=01:00:00
Request
URI and Querystring Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
GroupID | string | ID of the group being queried. Retrieved from query to parent group, or by looking at the URL on the new UI pages in the Control Portal. | Yes |
type | string | Valid values are latest , hourly , or realtime . latest will return a single data point that reflects the last monitoring data collected. No start , end , or sampleInterval values are required for this type.hourly returns data points for each sampleInterval value between the start and end times provided. The start and sampleInterval parameters are both required for this type. realtime will return data from the last 4 hours, available in smaller increments. To use realtime type, start parameter must be within the last 4 hours. The start and sampleInterval parameters are both required for this type. |
Yes |
start | datetime | DateTime (UTC) of the query window. Note that statistics are only held for 14 days. Start date (and optional end date) must be within the past 14 days. Value is not required if choosing the latest query type. |
Yes, except for latest type |
end | datetime | DateTime (UTC) of the query window. Default is the current time in UTC. End date (and start date) must be within the past 14 days. Not a required value if results should be up to the current time. | No |
sampleInterval | timespan | Result interval. For the default hourly type, the minimum value is 1 hour (01:00:00) and maximum is the full window size of 14 days. Note that interval must fit within start/end window, or you will get an exception that states: "The 'end' parameter must represent a time that occurs at least one 'sampleInterval' before 'start.'" If realtime type is specified, interval can be as small as 5 minutes (05:00). |
Yes, except for latest type |
Response
Entity Definition
Name | Type | Description |
---|---|---|
name | string | Name of the server |
stats | array | Collection of stats for the server for the interval chosen |
Stats Definition
Name | Type | Description |
---|---|---|
timestamp | datetime | Timestamp of the monitoring results |
cpu | float | CPU allocation during the interval |
cpuPercent | float | CPU consumption (out of 100%) during the interval |
memoryMB | float | Memory allocation during the interval |
memoryPercent | float | Memory consumption (out of 100%) during the interval |
networkReceivedKbps | float | Public network consumption in during the interval |
networkTransmittedKbps | float | Public network consumption out during the interval |
diskUsageTotalCapacityMB | float | Total disk allocation during the interval |
diskUsage | array | List of physical disks attached to the virtual machine |
guestDiskUsage | array | List of partitions used inside the guest OS |
Disk Usage Definition
Name | Type | Description |
---|---|---|
id | string | Disk identifier |
capacityMB | integer | Capacity (in MB) allocated for this disk |
Guest Usage Definition
Name | Type | Description |
---|---|---|
path | string | Path of this partition |
capacityMB | integer | Total capacity available to this partition |
consumedMB | integer | Amount of capacity in use by this partition |
Examples
JSON
(/v2/groups/ALIAS/GROUP/statistics?start=2014-04-09T20:00:00&sampleInterval=01:00:00)
[
{
"name": "wa1acctser7101",
"stats": [
{
"timestamp": "2014-04-09T20:00:00Z",
"cpu": 2.0,
"cpuPercent": 5.0,
"memoryMB": 3072.0,
"memoryPercent": 0.0,
"networkReceivedKBps": 0.0,
"networkTransmittedKBps": 0.0,
"diskUsageTotalCapacityMB": 40960.0,
"diskUsage": [
{
"id": "0:0",
"capacityMB": 40960
}
],
"guestDiskUsage": []
},
{
"timestamp": "2014-04-09T21:00:00Z",
"cpu": 2.0,
"cpuPercent": 2.0,
"memoryMB": 3072.0,
"memoryPercent": 0.0,
"networkReceivedKBps": 0.0,
"networkTransmittedKBps": 0.0,
"diskUsageTotalCapacityMB": 40960.0,
"diskUsage": [
{
"id": "0:0",
"capacityMB": 40960
}
],
"guestDiskUsage": []
}
]
},
{
"name": "wa1acctser7202",
"stats": [
{
"timestamp": "2014-04-09T20:00:00Z",
"cpu": 1.0,
"cpuPercent": 1.14,
"memoryMB": 2048.0,
"memoryPercent": 9.24,
"networkReceivedKBps": 0.0,
"networkTransmittedKBps": 0.0,
"diskUsageTotalCapacityMB": 40960.0,
"diskUsage": [
{
"id": "0:0",
"capacityMB": 40960
}
],
"guestDiskUsage": [
{
"path": "C:\\",
"capacityMB": 40607,
"consumedMB": 16619
}
]
},
{
"timestamp": "2014-04-09T21:00:00Z",
"cpu": 1.0,
"cpuPercent": 1.02,
"memoryMB": 2048.0,
"memoryPercent": 2.32,
"networkReceivedKBps": 0.0,
"networkTransmittedKBps": 0.0,
"diskUsageTotalCapacityMB": 40960.0,
"diskUsage": [
{
"id": "0:0",
"capacityMB": 40960
}
],
"guestDiskUsage": [
{
"path": "C:\\",
"capacityMB": 40607,
"consumedMB": 16619
}
]
}
]
}
]
Get Group Scheduled Activities
Gets the scheduled activities associated with a group. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to get the scheduled activities for a group.
URL
Structure
GET https://api.ctl.io/v2/groups/{accountAlias}/{groupId}/ScheduledActivities/
Example
GET https://api.ctl.io/v2/groups/ALIAS/2a5c0b9662cf4fc8bf6180f139facdc0/ScheduledActivities
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
GroupID | string | ID of the group being queried. Retrieved from query to parent group, or by looking at the URL of the Group in the Control Portal UI. | Yes |
Response
Name | Type | Description |
---|---|---|
id | string | ID of the group |
locationId | string | Data center location identifier |
changeInfo | complex | Change history |
links | array | Collection of entity links that point to resources related to this data center |
status | string | State of scheduled activity: on or off |
type | string | Type of activity: archive, createsnapshot, delete, deletesnapshot, pause, poweron, reboot, shutdown |
beginDateUtc | datetime | Time when scheduled activity should start |
repeat | string | How often to repeat: never, daily, weekly, monthly, customWeekly |
customWeeklyDays | array | An array of strings for the days of the week: sun, mon, tue, wed, thu, fri, sat |
expire | string | When the scheduled activities are set to expire: never, afterDate, afterCount |
expireCount | int | Number of times scheduled activity should run before expiring |
expireDateUtc | datetime | When the scheduled activity should expire |
timeZoneOffset | string | To display in local time |
isExpired | bool | True: scheduled activity has expired. False: scheduled activity is active |
lastOccurrenceDateUtc | datetime | Last time scheduled activity was run |
occurrenceCount | int | How many times scheduled activity has been run |
nextOccurrenceDateUtc | datetime | When the next scheduled activty will be run |
Examples
JSON
[
{
"id": "95715f96f8a145d68ace797fe542c9ae",
"locationId": "WA1",
"changeInfo": {
"createdBy": "john.doe",
"createdDate": "2015-03-16T18:12:02Z",
"modifiedBy": "john.doe",
"modifiedDate": "2015-10-20T22:20:25Z"
},
"links": [
{
"rel": "group",
"href": "/v2/groups/ALIAS/fc06fd421e2ee41190460050568600e8",
"id": "fc06fd421e2ee41190460050568600e8",
"name": "Default Group"
},
{
"rel": "self",
"href": "/v2/groups/ALIAS/fc06fd421e2ee41190460050568600e8/scheduledActivities/95715f96f8a145d68ace797fe542c9ae",
"verbs": [
"GET",
"PUT",
"DELETE"
]
}
],
"status": "on",
"type": "shutdown",
"beginDateUTC": "2015-03-16T18:11:00Z",
"repeat": "customWeekly",
"customWeeklyDays": [
"tue",
"thu"
],
"expire": "never",
"timeZoneOffset": "-07:00:00",
"isExpired": false,
"occurrenceCount": 0,
"nextOccurrenceDateUTC": "2015-10-22T18:11:00Z"
}
]
Get Group
Gets the details for a individual server group and any sub-groups and servers that it contains. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to identify the servers in a particular group, retrieve a group hierarchy, or get links to information (e.g. billing, monitoring, scheduled activities) about a group.
URL
Structure
GET https://api.ctl.io/v2/groups/{accountAlias}/{groupId}
Example
GET https://api.ctl.io/v2/groups/ALIAS/2a5c0b9662cf4fc8bf6180f139facdc0
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account. | Yes |
GroupID | string | ID of the group being queried. Retrieved from query to parent group, or by looking at the URL on the new UI pages in the Control Portal. | Yes |
Response
Group Entity Definition
Name | Type | Description |
---|---|---|
id | string | ID of the group being queried |
name | string | User-defined name of the group |
description | string | User-defined description of this group |
locationId | string | Data center location identifier |
type | string | Group type which could include system types like "archive" |
status | string | Describes if group is online or not |
serversCount | integer | Number of servers this group contains |
groups | array | Refers to this same entity type for each sub-group |
links | array | Collection of entity links that point to resources related to this group |
changeInfo | complex | Describes "created" and "modified" details |
customFields | complex | Details about any custom fields and their values |
ChangeInfo Definition
Name | Type | Description |
---|---|---|
createdDate | dateTime | Date/time that the group was created |
createdBy | string | Who created the group |
modifiedDate | dateTime | Date/time that the group was last updated |
modifiedBy | string | Who modified the group last |
CustomFields Definition
Name | Type | Description |
---|---|---|
id | string | Unique ID of the custom field |
name | string | Friendly name of the custom field |
value | string | Underlying value of the field |
displayValue | string | Shown value of the field |
Examples
JSON
{
"id": "2a5c0b9662cf4fc8bf6180f139facdc0",
"name": "Web Applications",
"description": "public facing web apps",
"locationId": "WA1",
"type": "default",
"status": "active",
"serversCount": 2,
"groups": [
{
"id": "31d13f501459411ba59304f3d47486eb",
"name": "Training Environment",
"description": "Temporary servers",
"locationId": "WA1",
"type": "default",
"status": "active",
"serversCount": 0,
"groups": [],
"links": [
{
"rel":"createGroup",
"href":"/v2/groups/acct",
"verbs":[
"POST"
]
},
{
"rel":"createServer",
"href":"/v2/servers/acct",
"verbs":[
"POST"
]
},
{
"rel": "self",
"href": "/v2/groups/acct/31d13f501459411ba59304f3d47486eb",
"verbs":[
"GET",
"PATCH",
"DELETE"
]
},
{
"rel": "parentGroup",
"href": "/v2/groups/acct/231c3f3fec0e46499290b351199d555f",
"id": "231c3f3fec0e46499290b351199d555f"
},
{
"rel": "defaults",
"href": "/v2/groups/acct/31d13f501459411ba59304f3d47486eb/defaults",
"verbs":[
"GET",
"POST"
]
},
{
"rel": "billing",
"href": "/v2/groups/acct/31d13f501459411ba59304f3d47486eb/billing"
},
{
"rel": "archiveGroupAction",
"href": "/v2/groups/acct/31d13f501459411ba59304f3d47486eb/archive"
},
{
"rel": "statistics",
"href": "/v2/groups/acct/31d13f501459411ba59304f3d47486eb/statistics"
},
{
"rel":"upcomingScheduledActivities",
"href":"/v2/groups/acct/8a03fcae8dd65411b05f00505682315a/upcomingScheduledActivities"
},
{
"rel":"horizontalAutoscalePolicyMapping",
"href":"/v2/groups/acct/31d13f501459411ba59304f3d47486eb/horizontalAutoscalePolicy",
"verbs":[
"GET",
"PUT",
"DELETE"
]
},
{
"rel": "scheduledActivities",
"href": "/v2/groups/acct/31d13f501459411ba59304f3d47486eb/scheduledActivities"
"verbs":[
"GET",
"POST"
]
}
]
}
],
"links":[
{
"rel": "self",
"href": "/v2/groups/acct/2a5c0b9662cf4fc8bf6180f139facdc0"
},
{
"rel": "parentGroup",
"href": "/v2/groups/acct/540494152d0c4a9ab61869562b4c1471",
"id": "540494152d0c4a9ab61869562b4c1471"
},
{
"rel": "billing",
"href": "/v2/groups/acct/2a5c0b9662cf4fc8bf6180f139facdc0/billing"
},
{
"rel": "archiveGroupAction",
"href": "/v2/groups/acct/2a5c0b9662cf4fc8bf6180f139facdc0/archive"
},
{
"rel": "statistics",
"href": "/v2/groups/acct/2a5c0b9662cf4fc8bf6180f139facdc0/statistics"
},
{
"rel": "scheduledActivities",
"href": "/v2/groups/acct/2a5c0b9662cf4fc8bf6180f139facdc0/scheduledActivities"
},
{
"rel": "server",
"href": "/v2/servers/acct/wa1acctpre7101",
"id": "WA1ACCTPRE7101"
},
{
"rel": "server",
"href": "/v2/servers/btdi/wa1acctpre7202",
"id": "WA1ACCTPRE7202"
}
],
"changeInfo": {
"createdDate": "2012-12-17T01:17:17Z",
"createdBy": "user@domain.com",
"modifiedDate": "2014-05-16T23:49:25Z",
"modifiedBy": "user@domain.com"
},
"customFields": [
{
"id": "22f002123e3b46d9a8b38ecd4c6df7f9",
"name": "Cost Center",
"value": "IT-DEV",
"displayValue": "IT-DEV"
},
{
"id": "58f83af6123846769ee6cb091ce3561e",
"name": "CMDB ID",
"value": "1100003",
"displayValue": "1100003"
}
]
}
Set Group Custom Fields
Changes the custom field values for an existing group. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to change the custom field values for a given group.
URL
Structure
PATCH https://api.ctl.io/v2/groups/{accountAlias}/{groupId}
Example
PATCH https://api.ctl.io/v2/groups/ACCT/2a5c0b9662cf4fc8bf6180f139facdc0
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
GroupId | string | ID of the group to update. Retrieved from query to containing group, or by looking at the URL when viewing a group in the Control Portal. | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
patchOperation | array | A list of properties, values, and the operations to perform with them for the group. | Yes |
PatchOperation Definition
Name | Type | Description |
---|---|---|
op | string | The operation to perform on a given property of the group. In this case, the value must be "set" for setting the custom field values. |
member | string | The property of the group to perform the operation on. In this case, the value will be "customFields". |
value | array | A list of id-value pairs for all custom fields including all required values and other custom field values that you wish to set. Note: You must specify the complete list of custom field values to set on the group. If you want to change only one value, specify all existing field values along with the new value for the field you wish to change. To unset the value for an unrequired field, you may leave the field id-value pairing out, however all required fields must be included. (You can get existing custom field value info by using the Get Group call to see all the details of the group or the Get Custom Fields call to see available custom fields for a given account.) |
Examples
JSON
[
{
"op":"set",
"member":"customFields",
"value":[
{
"id":"dba67b154f774a1fb413ddfa3dc4ac1d",
"value":"Required Value 1"
},
{
"id":"58f83bf6675846769ee6cb091ce3561e",
"value":"Optional Value 1"
},
{
"id":"22f002e08f3b46d9a8b38ecd4c6df7f9",
"value":"Required Value 2"
}
]
}
]
Response
The response will not contain JSON content, but should return the HTTP 204 No Content
response upon making the changes successfully.
Set Group Defaults
Sets the defaults for a group. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to set defaults for a group.
URL
Structure
POST https://api.ctl.io/v2/groups/{accountAlias}/{groupId}/defaults
Example
POST https://api.ctl.io/v2/groups/ALIAS/2a5c0b9662cf4fc8bf6180f139facdc0/defaults
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
GroupID | string | ID of the group being queried. Retrieved from query to parent group, or by looking at the URL of the Group in the Control Portal UI. | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
cpu | integer | Number of processors to configure the server with (1-16) (ignored for bare metal servers) | No |
memoryGB | integer | Number of GB of memory to configure the server with (1-128) (ignored for bare metal servers) | No |
networkId | string | ID of the Network. This can be retrieved from the Get Network List API operation. | No |
primaryDns | string | Primary DNS to set on the server. If not supplied the default value set on the account will be used. | No |
secondaryDns | string | Secondary DNS to set on the server. If not supplied the default value set on the account will be used. | No |
templateName | string | Name of the template to use as the source. The list of available templates for a given account in a data center can be retrieved from the Get Data Center Deployment Capabilities API operation. (Ignored for bare metal servers.) | No |
Examples
JSON
{
"cpu": "1",
"memoryGB": "2",
"networkId": "fb46f06f8278421d8e94d78cf6409ba5",
"primaryDns": "8.8.8.8",
"secondaryDns": "8.8.4.4",
"templateName": "UBUNTU-10-64-TEMPLATE"
}
Response
Cpu Definition
Name | Type | Description |
---|---|---|
value | int | How many vCPUs are allocated to the server |
inherited | bool | Whether the value is set explicitly (false) or by its parent (true) |
Memory Definition
Name | Type | Description |
---|---|---|
value | int | How many GB of memory are allocated to the server |
inherited | bool | Whether the value is set explicitly (false) or by its parent (true) |
Network Definition
Name | Type | Description |
---|---|---|
value | string | ID of the Network |
inherited | bool | Whether the value is set explicitly (false) or by its parent (true) |
PrimaryDNS Definition
Name | Type | Description |
---|---|---|
value | string | Primary DNS set on the server |
inherited | bool | Whether the value is set explicitly (false) or by its parent (true) |
SecondaryDNS Definition
Name | Type | Description |
---|---|---|
value | string | Secondary DNS set on the server |
inherited | bool | Whether the value is set explicitly (false) or by its parent (true) |
TemplateName Definition
Name | Type | Description |
---|---|---|
value | string | ID |
inherited | bool | Whether the value is set explicitly (false) or by its parent (true) |
Examples
JSON
{
"cpu": {
"value": 1,
"inherited": false
},
"memoryGB": {
"value": 2,
"inherited": false
},
"networkId": {
"value": "ee600a2b4b734aac8ab0de2642597433",
"inherited": true
},
"primaryDns": {
"value": "8.8.8.8",
"inherited": false
},
"secondaryDns": {
"value": "8.8.4.4",
"inherited": false
},
"templateName": {
"value": "UBUNTU-10-64-TEMPLATE",
"inherited": false
}
}
Set Group Horizontal Autoscale Policy
Applies a horizontal autoscale policy to a group. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to apply a horizontal autoscale policy to a group.
URL
Structure
PUT https://api.ctl.io/v2/groups/{accountAlias}/{groupId}/horizontalAutoscalePolicy/
Example
PUT https://api.ctl.io/v2/groups/ALIAS/2a5c0b9662cf4fc8bf6180f139facdc0/horizontalAutoscalePolicy
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
GroupID | string | ID of the group being queried. Retrieved from query to parent group, or by looking at the URL of the Group in the Control Portal UI. | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
policyId | string | The unique identifier of the autoscale policy | Yes |
loadBalancerPool | complex | Information about the load balancer | Yes |
Load Balancer Pool
Name | Type | Description | Req. |
---|---|---|---|
id | string | ID of the load balancer | Yes |
publicPort | int | Port configured on the public-facing side of the load balancer pool. | Yes |
privatePort | int | The internal (private) port of the node server | Yes |
Example
{
"policyId" : "6cf7f7d139ee4d4f98a09bd0400b1a56",
"loadBalancerPool" :
{
"id" : "bf82320cc96d42048fc7d5e41b0cdada",
"privatePort" : 80,
"publicPort" : 80
}
}
Response
Name | Type | Description |
---|---|---|
groupId | string | ID of the group |
policyId | string | The unique identifier of the autoscale policy |
locationId | string | Data center location identifier |
availableServers | int | The number of servers available for scaling |
targetSize | int | Number of servers to scale to |
scaleDirection | string | Direction to Scale (In or Out ) |
scaleResourceReason | string | Reason for scaling, either: CPU, Memory, MinimumResourceCount, or None |
loadBalancer | complex | |
links | array | Collection of entity links that point to resources related to this data center |
Load Balancer Definition
Name | Type | Description |
---|---|---|
id | string | ID of the load balancer |
name | string | Friendly name of the load balancer |
publicPort | int | Port configured on the public-facing side of the load balancer pool. |
privatePort | int | The internal (private) port of the node server |
publicIP | string | The external (public) IP address of the load balancer |
links | array | Collection of entity links that point to resources related to this data center |
Example
{
"groupId": "fc06fd421e2ee41190460050568600e8",
"policyId": "6cf7f7d139ee4d4f98a09bd0400b1a56",
"locationId": "WA1",
"availableServers": 2,
"targetSize": 1,
"scaleDirection": "None",
"scaleResourceReason": "Cpu",
"loadBalancer": {
"id": "bf82320cc96d42048fc7d5e41b0cdada",
"name": "hotfix111314",
"publicPort": 80,
"privatePort": 80,
"publicIP": "63.251.170.219",
"links": [
{
"rel": "self",
"href": "/v2/sharedLoadBalancers/ALIAS/WA1/bf82320cc96d42048fc7d5e41b0cdada"
}
]
},
"links": [
{
"rel": "self",
"href": "/v2/groups/ALIAS/fc06fd421e2ee41190460050568600e8/horizontalAutoscalePolicy"
},
{
"rel": "group",
"href": "/v2/groups/ALIAS/fc06fd421e2ee41190460050568600e8"
},
{
"rel": "horizontalAutoscalePolicy",
"href": "/v2/horizontalAutoscalePolicies/ALIAS/6cf7f7d139ee4d4f98a09bd0400b1a56"
}
]
}
Set Group Name/Description
Changes the name and description of an existing group. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to change the name or description of a given group.
URL
Structure
PATCH https://api.ctl.io/v2/groups/{accountAlias}/{groupId}
Example
PATCH https://api.ctl.io/v2/groups/ACCT/2a5c0b9662cf4fc8bf6180f139facdc0
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
GroupId | string | ID of the group to update. Retrieved from query to containing group, or by looking at the URL when viewing a group in the Control Portal. | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
patchOperation | array | A list of properties, values, and the operations to perform with them for the group. | Yes |
PatchOperation Definition
Name | Type | Description |
---|---|---|
op | string | The operation to perform on a given property of the group. In this case, the value must be "set" for setting the name and description. |
member | string | The property of the group to perform the operation on. In this case, the value will be either "name" or "description". |
value | string | The value to set for the given member. This is the name or description to set for the group. |
Examples
JSON
[
{
"op":"set",
"member":"name",
"value":"New Name"
},
{
"op":"set",
"member":"description",
"value":"New Description"
}
]
Response
The response will not contain JSON content, but should return the HTTP 204 No Content
response upon making the changes successfully.
Set Group Parent
Changes the parent group of an existing group. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to change the parent of a given group.
URL
Structure
PATCH https://api.ctl.io/v2/groups/{accountAlias}/{groupId}
Example
PATCH https://api.ctl.io/v2/groups/ACCT/2a5c0b9662cf4fc8bf6180f139facdc0
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
GroupId | string | ID of the group to update. Retrieved from query to containing group, or by looking at the URL when viewing a group in the Control Portal. | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
patchOperation | array | A list of properties, values, and the operations to perform with them for the group. | Yes |
PatchOperation Definition
Name | Type | Description |
---|---|---|
op | string | The operation to perform on a given property of the group. In this case, the value must be "set" for setting the parent group. |
member | string | The property of the group to perform the operation on. In this case, the value will be "parentGroupId". |
value | string | The value to set for the given member. This is the group identifier for the new parent group. |
Examples
JSON
[
{
"op":"set",
"member":"parentGroupId",
"value":"af7552c50e1b40b28d8023ed5eeaa74c"
}
]
Response
The response will not contain JSON content, but should return the HTTP 204 No Content
response upon making the changes successfully.
Set Group Scheduled Activities
Sets scheduled activities for a group. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to set scheduled activities for a group.
URL
Structure
POST https://api.ctl.io/v2/groups/{accountAlias}/{groupId}/ScheduledActivities/
Example
POST https://api.ctl.io/v2/groups/ALIAS/2a5c0b9662cf4fc8bf6180f139facdc0/ScheduledActivities
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for a particular account | Yes |
GroupID | string | ID of the group being queried. Retrieved from query to parent group, or by looking at the URL of the Group in the Control Portal UI. | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
status | string | State of scheduled activity: on or off | Yes |
type | string | Type of activity: archive, createsnapshot, delete, deletesnapshot, pause, poweron, reboot, shutdown | Yes |
beginDateUTC | datetime | Time when scheduled activity should start | Yes |
repeat | string | How often to repeat: never, daily, weekly, monthly, customWeekly | Yes |
customWeeklyDays | array | An array of strings for the days of the week: sun, mon, tue, wed, thu, fri, sat | No |
expire | string | When the scheduled activities are set to expire: never, afterDate, afterCount | Yes |
expireCount | int | Number of times scheduled activity should run before expiring | No |
expireDateUTC | datetime | When the scheduled activity should expire | No |
timeZoneOffset | string | To display in local time | Yes |
Examples
JSON
{
"status": "on",
"type": "reboot",
"beginDateUTC": "2015-11-23T19:41:00.000Z",
"timeZoneOffset": "-08:00",
"repeat": "weekly",
"expire": "never"
}
{
"status": "on",
"type": "reboot",
"beginDateUTC": "2015-11-23T19:40:00.000Z",
"timeZoneOffset": "-08:00",
"repeat": "customWeekly",
"expire": "never",
"customWeeklyDays": [
"mon",
"wed",
"fri"
]
}
{
"status": "on",
"type": "reboot",
"beginDateUTC": "2015-11-23T21:27:00.000Z",
"timeZoneOffset": "-08:00",
"repeat": "daily",
"expire": "afterCount",
"expireCount": "10"
}
Response
Name | Type | Description |
---|---|---|
id | string | ID of the group |
locationId | string | Data center location identifier |
changeInfo | complex | Change history |
links | array | Collection of entity links that point to resources related to this data center |
status | string | State of scheduled activity: on or off |
type | string | Type of activity: archive, createsnapshot, delete, deletesnapshot, pause, poweron, reboot, shutdown |
beginDateUTC | datetime | Time when scheduled activity should start |
repeat | string | How often to repeat: never, daily, weekly, monthly, customWeekly |
customWeeklyDays | array | An array of strings for the days of the week: sun, mon, tue, wed, thu, fri, sat |
expire | string | When the scheduled activities are set to expire: never, afterDate, afterCount |
expireCount | int | Number of times scheduled activity should run before expiring |
expireDateUTC | datetime | When the scheduled activity should expire |
timeZoneOffset | string | To display in local time |
isExpired | bool | True: scheduled activity has expired. False: scheduled activity is active |
lastOccurrenceDateUtc | datetime | Last time scheduled activity was run |
occurrenceCount | int | How many times scheduled activity has been run |
nextOccurrenceDateUtc | datetime | When the next scheduled activty will be run |
{
"id": "2a5c0b9662cf4fc8bf6180f139facdc0",
"locationId": "WA1",
"changeInfo": {
"createdBy": "user@user.com",
"createdDate": "2015-11-23T21:17:16Z",
"modifiedBy": "user@user.com",
"modifiedDate": "2015-11-23T21:17:16Z"
},
"links": [
{
"rel": "group",
"href": "/v2/groups/ALIAS/2a5c0b9662cf4fc8bf6180f139facdc0",
"id": "2a5c0b9662cf4fc8bf6180f139facdc0",
"name": "Default Group Name"
},
{
"rel": "self",
"href": "/v2/groups/ALIAS/5b824632e319e411929e00505682315a/scheduledActivities/2a5c0b9662cf4fc8bf6180f139facdc0",
"verbs": [
"GET",
"PUT",
"DELETE"
]
}
],
"status": "on",
"type": "pause",
"beginDateUTC": "2015-11-23T19:41:00Z",
"repeat": "daily",
"customWeeklyDays": [],
"expire": "never",
"timeZoneOffset": "-08:00:00",
"isExpired": false,
"occurrenceCount": 0,
"nextOccurrenceDateUTC": "2015-11-24T19:41:00Z"
}
Archive Group
Sends the archive operation to a group. (See Understanding VM Deployment Options and Power States for details on the archive operation.) Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to archive an entire group and its groups and servers.
URL
Structure
POST https://api.ctl.io/v2/groups/{accountAlias}/{groupId}/archive
Example
POST https://api.ctl.io/v2/groups/ALIAS/2a5c0b9662cf4fc8bf6180f139facdc0/archive
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account. | Yes |
GroupID | string | ID of the group to archive. Retrieved from query to parent group, or by looking at the URL on the new UI pages in the Control Portal. | Yes |
Response
The response is a link to the Get Status operation so the asynchronous job can be tracked. Once successfully completed, the group will be archived as specified.
Entity Definition
Name | Type | Value | Description |
---|---|---|---|
rel | string | status | The link type |
href | string | /v2/operations/[ALIAS]/status/[ID] | Address of the job in the queue |
id | string | [ID] | The identifier of the job in queue. Can be passed to Get Status call to retrieve status of job. |
Examples
JSON
{
"rel":"status",
"href":"/v2/operations/alias/status/wa1-12345",
"id":"wa1-12345"
}
Restore Group
Sends the restore operation to an archived group. (See Understanding VM Deployment Options and Power States for details on the archive operation.) Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to restore an archived group and its groups and servers.
URL
Structure
POST https://api.ctl.io/v2/groups/{accountAlias}/{groupId}/restore
Example
POST https://api.ctl.io/v2/groups/ALIAS/2a5c0b9662cf4fc8bf6180f139facdc0/restore
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account. | Yes |
GroupID | string | ID of the group to restore. Retrieved from query to parent group, or by looking at the URL on the new UI pages in the Control Portal. | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
targetGroupId | string | The unique identifier of the target group to restore the group to. | Yes |
Response
Entity Definition
Name | Type | Description |
---|---|---|
isQueued | boolean | Boolean indicating whether the operation was successfully added to the queue. |
links | array | Collection of entity links that point to resources related to this group operation. |
errorMessage | string | If something goes wrong or the request is not queued, this is the message that contains the details about what happened. |
Examples
JSON
{
"isQueued":true,
"links":[
{
"rel":"self",
"href":"/v2/groups/bryf/2a5c0b9662cf4fc8bf6180f139facdc0?AccountAlias=ALIAS&identifier=2a5c0b9662cf4fc8bf6180f139facdc0"
},
{
"rel":"status",
"href":"/v2/operations/bryf/status/wa1-12345",
"id":"wa1-12345"
}
]
}
Delegate Management of an existing Instance
This service allows the user to delegate the management of an existing Instance to CenturyLink.
When to Use It
Use this API operation if you don't want CL to be able to manage your instance on your behalf.
NOTE: The following requirements need to be met in order to be able to make an instance managed:
- Only "compute" instances (Linux and Windows) can be managed.
- Terms and conditions need to be accepted. In order to do this, the following url param needs to be set to true:
accept_terms=true
- The Instance needs to be in "Done" status.
- The user making the request needs to have admin permissions on the instance.
- The company owning the instance needs to support "Delegate Management".
Supported Operating Systems
- Linux
- Windows
URL
Structure
[PUT] /services/instances/{instance_id}/make_managed_os
Example
POST https://api.ctl.io/v2/instances/my_instance_id/make_managed_os?accept_terms=true
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
InscanceId | string | Id of the Instance | Yes |
accept_terms | boolean | Indicates that the client accepts the terms and conditions | Yes |
Configure Intrusion Protection Service Notifications
Configures notifications associated with an IPS agent running on a designated host. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation to configure the notifications of an installed IPS agent on CenturyLink Cloud servers.
The calls below will perform all of the operations for configuring, retrieving, updating, and deleting a notification destination.
Supported Managed Operating Systems
Current supported operating systems can be found here Operating System Support
URL
Structure
Create and Update
PUT https://api.client-security.ctl.io/ips/api/notifications/{accountAlias}/{serverName}
Retrieve
GET https://api.client-security.ctl.io/ips/api/notifications/{accountAlias}/{serverName}
Delete
DELETE https://api.client-security.ctl.io/ips/api/notifications/{accountAlias}/{serverName}
Example
PUT https://api.client-security.ctl.io/ips/api/notifications/ALIAS/VA1ALIASTEST04
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for a particular account | Yes |
serverName | string | The name of the server that has the agent already installed | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
notificationDestinations | array | List of Notification Destinations | Yes |
Notification Destination Definition
Name | Type | Description | Req. |
---|---|---|---|
url | string | The URL endpoint for WEBHOOK or SLACK notification | No |
typeCode | string | This is the type of destination (either SYSLOG , EMAIL , or WEBHOOK ) |
Yes |
sysLogSettings | array | This contains all of the options for SYSLOG | No |
emailAddress | string | This object will contain options for an EMAIL notification | No |
SysLogSettings Definition
Name | Type | Description | Req. |
---|---|---|---|
ipAddress | string | The IP address of customers syslog server | Yes |
udpPort | integer | The port the syslog is listening on | Yes |
facility | integer | This is an Integer, 16-23, to set the type of program logging messages. | Yes |
Example
PUT http://api.client-security.ctl.io/ips/api/notification/ALIAS/VA1ALIASMYSVR01
{
"url": "http://my.slack.webhook",
"typeCode": "SLACK"
},
{
"url": "http://my.generic.webhook",
"typeCode": "WEBHOOK"
},
{
"typeCode": "SYSLOG",
"sysLogSettings":
{
"ipAddress": "12345",
"udpPort": "8081",
"facility": "16"
}
},
{
"typeCode": "EMAIL",
"emailAddress": "youremail@site.com"
}
Response
The response will not contain JSON content, but should return the HTTP 204 No Content
response. For details on what's included in each alert, please refer to this knowledge base article.
Install Intrusion Protection Service Agent
Installs an IPS agent on the designated host. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation to install an IPS agent on CenturyLink Cloud servers.
Supported Managed Operating Systems
Current supported operating systems can be found here Operating System Support
URL
Structure
POST https://api.client-security.ctl.io/ips/api/app/
Example
POST https://api.client-security.ctl.io/ips/api/app/
Request
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
hostName | string | The name of the server that will ha Data center location of the anti-affinity policy. | Yes |
accountAlias | string | Short code for a particular account | Yes |
Example
JSON
{
"hostName":"VA1ALIASTEST04",
"accountAlias":"ALIAS"
}
Response
The response will not contain JSON content, but should return the HTTP 204 No Content
response upon the install of the agent.
Uninstall Intrusion Protection Service Agent
Uninstalls an IPS agent on the designated host. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation to uninstall an IPS agent on CenturyLink Cloud servers.
Supported Managed Operating Systems
Current supported operating systems can be found here Operating System Support
URL
Structure
DELETE https://api.client-security.ctl.io/ips/api/app/
Example
DELETE https://api.client-security.ctl.io/ips/api/app/
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
hostName | string | The name of the server that is the target destination for the agent uninstall | Yes |
accountAlias | string | Short code for a particular account | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
hostName | string | The name of the server that will ha Data center location of the anti-affinity policy. | Yes |
accountAlias | string | Short code for a particular account | Yes |
Example
JSON
{
"hostName":"VA1ALIASTEST04",
"accountAlias":"ALIAS"
}
Response
The response will not contain JSON content, but should return the HTTP 204 No Content
response upon the uninstall of the agent.
Create LBaaS
Creates an LBaaS instance for a given account in a given data center. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need to create a new load balancer and get a VIP assigned in a given data center and for a given account.
URL
Structure
POST https://api.loadbalancer.ctl.io/{accountAlias}/{dataCenter}/loadbalancers
Example
POST https://api.loadbalancer.ctl.io/DV01/NY1/loadbalancers
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for a particular account | Yes |
dataCenter | string | Short string representing the target data center for the new load balancer. Valid codes can be retrieved from the Get Data Center List API operation. | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
name | string | The intended name of the new instance | Yes |
description | string | A short description of the load balancer | No |
Examples
JSON
{
"name": "ExampleGroup",
"description": "Example Group for demo purposes"
}
Response
The response will be an entity representing the request to create the new load balancer. Request status can be tracked from the Get LBaaS Request.
Entity Definition
Name | Type | Description |
---|---|---|
id | string | ID of the LBaaS create request |
status | string | Initially the response will show a status for the request of "ACTIVE". A status of "COMPLETE" will show in the Response of a function when the Group has been created with the new configuration. |
description | string | Describes the activity running within the LBaaS Group create process |
requestDate | string | Date-time stamp of the request |
completionDate | string | Date-time stamp of LBaaS Group creation. Null value returned until process has completed |
links | array | Collection of entity links that point to resources related to this LBaaS Group |
Examples
JSON
{
"id": "d685c028-5852-4b6f-8511-a407147db0e4",
"status": "ACTIVE",
"description": "Create Load Balancer a4ad7c71-1575-400e-8eb2-cef74ed557ad",
"requestDate": 1450383770701,
"completionDate": null,
"links": [
{
"rel": "loadbalancer",
"href": "",
"resourceId": "a4ad7c71-1575-400e-8eb2-cef74ed557ad"
}
]
}
Create Pool
Creates a pool on an LBaaS instance for a given account in a given data center. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need to create a new pool on an existing load balancer.
URL
Structure
POST https://api.loadbalancer.ctl.io/{accountAlias}/{dataCenter}/loadbalancers/{loadBalancerId}/pools
Example
POST https://api.loadbalancer.ctl.io/DV01/NY1/loadbalancers/329a98e6-977a-4c25-a7c8-174209fe1d31/pools
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for the particular account which owns the load balancer | Yes |
dataCenter | string | Short string representing the data center in which the load balancer resides | Yes |
loadBalancerId | string | Id of the load balancer | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
port | integer | The port on which incoming traffic will send requests. Valid port ranges are between 23 and 65534 |
Yes |
loadBalancingMethod | string | Method for load balancing - valid values are leastconn , roundrobin , source , or uri . If null will default to roundrobin |
No |
persistence | string | Persistence method for client connections to backend nodes - none or source_ip . If null will default to none |
No |
idleTimeout | integer | Timeout value for idle client connections to backend nodes in milliseconds - defaults to 180000 | No |
loadBalancingMode | string | Indicates the type of load balancing – tcp or http (layer4-TCP or layer7-HTTP(s)) |
Yes |
nodes | array | Collection of entity values that describe the customer backend nodes being load balanced | No |
forceHttps | boolean | Will redirect incoming traffic on port 80 to port 443. loadBalancingMode must be set to tcp and port must be set to 443 |
No |
healthCheck | object | Configures a health check that is applied to all nodes in the pool, provided they do not already have a healthCheck configured | No |
Node Properties
Name | Type | Description | Req. |
---|---|---|---|
ipAddress | string | IP of the server that will be load balanced | Yes |
privatePort | integer | Port on which the server that will be load balanced is listening | Yes |
status | string | enabled or disabled . Nodes set to disabled will not have any traffic directed to them. Defaults to enabled |
No |
healthCheck | object | Configures a health check on this specific node. Will override any healthCheck configured on the pool | No |
serverWeight | integer | Adjust the server's weight relative to other servers. All servers will receive a load proportional to their weight relative to the sum of all weights. Range is 1 to 256 . Default is 1 |
No |
HealthCheck Properties
Name | Type | Description | Req. |
---|---|---|---|
unhealthyThreshold | integer | Number of times server healthcheck can fail befre being removed from rotation. Valid range between 2 and 10 |
Yes |
healthyThreshold | integer | Number of times unhealthy servers must pass healthcheck before being readded to rotation. Valid range is between 2 and 10 |
Yes |
intervalSeconds | integer | Seconds to wait between healthchecks. Valid range is between 5 and 300 |
Yes |
targetPort | integer | Port of the healthcheck on the server | Yes |
mode | string | Mode over which to send healthcheck. Options are TCP , SSL , HTTP . Defaults to TCP |
No |
httpHealthCheckMethod | string | HttpMethod to use when querying healthcheck. Only valid when mode is set to HTTP |
No |
httpHealthCheckUrl | string | Url location of healthcheck. Only valid when mode is set to HTTP |
No |
Examples
JSON
{
"port": 443,
"loadBalancingMethod": "roundrobin",
"persistence": "none",
"idleTimeout": 180000,
"loadBalancingMode": "tcp",
"nodes": [
{
"ipAddress": "10.140.218.25",
"privatePort": 8443,
"status": "enabled",
"healthCheck": null,
"serverWeight": null
},
{
"ipAddress": "10.140.218.26",
"privatePort": 8443,
"status": "enabled",
"healthCheck": null,
"serverWeight": null
}
],
"forceHttps": true,
"healthCheck": {
"unhealthyThreshold": 5,
"healthyThreshold": 2,
"intervalSeconds": 60,
"targetPort": 122,
"mode": "TCP",
"httpHealthCheckMethod": null,
"httpHealthCheckUrl": null
}
}
Response
The response will be an entity representing the request to create the new pool. Request status can be tracked from the Get LBaaS Request.
Entity Definition
Name | Type | Description |
---|---|---|
id | string | ID of the Pool create request |
status | string | Initially the response will show a status for the request of "ACTIVE". A status of "COMPLETE" will show in the Response of a function when the load balancer has been updated with the new configuration. |
description | string | Describes the activity running within the Pool create process |
requestDate | string | Date-time stamp of the request |
completionDate | string | Date-time stamp of pool creation. Null value returned until process has completed |
links | array | Collection of entity links that point to resources related to this LBaaS Group |
Examples
JSON
{
"id": "d685c028-5852-4b6f-8511-a407147db0e4",
"status": "ACTIVE",
"description": "Add Pool to Load Balancer 329a98e6-977a-4c25-a7c8-174209fe1d31",
"requestDate": 1450383770701,
"completionDate": null,
"links": [
{
"rel": "loadbalancer",
"href": "",
"resourceId": "329a98e6-977a-4c25-a7c8-174209fe1d31"
},
{
"red": "pool",
"href": "",
"resourceId": "a4ad7c71-1575-400e-8eb2-cef74ed557ad"
}
]
}
Delete Load Balancer
Deletes an LBaaS instance for a given account in a given data center. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need to delete an existing load balancer.
URL
Structure
DELETE https://api.loadbalancer.ctl.io/{accountAlias}/{dataCenter}/loadbalancers/{loadBalancerId}
Example
DELETE https://api.loadbalancer.ctl.io/DV01/NY1/loadbalancers/329a98e6-977a-4c25-a7c8-174209fe1d31
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for the particular account which owns the load balancer | Yes |
dataCenter | string | Short string representing the data center in which the load balancer resides | Yes |
loadBalancerId | string | Id of the load balancer you want to delete | Yes |
Response
The response will be an entity representing the request to delete the load balancer. Request status can be tracked from the Get LBaaS Request.
Entity Definition
Name | Type | Description |
---|---|---|
id | string | ID of the load balancer delete request |
status | string | Initially the response will show a status for the request of "ACTIVE". A status of "COMPLETE" will show in the Response of a function when the load balancer has been deleted. |
description | string | Describes the activity running within the Load Balancer delete process |
requestDate | string | Date-time stamp of the request |
completionDate | string | Date-time stamp of load balancer delete. Null value returned until process has completed |
links | array | Collection of entity links that point to resources related to this LBaaS Group |
Examples
JSON
{
"id": "d685c028-5852-4b6f-8511-a407147db0e4",
"status": "ACTIVE",
"description": "Delete Load Balancer 329a98e6-977a-4c25-a7c8-174209fe1d31",
"requestDate": 1450383770701,
"completionDate": null,
"links": [
{
"rel": "loadbalancer",
"href": "",
"resourceId": "329a98e6-977a-4c25-a7c8-174209fe1d31"
}
]
}
Delete Pool
Deletes an existing pool from an LBaaS instance for a given account in a given data center. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need to remove a pool from a load balancer configuration.
URL
Structure
DELETE https://api.loadbalancer.ctl.io/{accountAlias}/{dataCenter}/loadbalancers/{loadBalancerId}/pools/{poolId}
Example
DELETE https://api.loadbalancer.ctl.io/DV01/NY1/loadbalancers/329a98e6-977a-4c25-a7c8-174209fe1d31/pools/a4ad7c71-1575-400e-8eb2-cef74ed557ad
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for the particular account which owns the load balancer | Yes |
dataCenter | string | Short string representing the data center in which the load balancer resides | Yes |
loadBalancerId | string | Id of the load balancer | Yes |
poolId | string | Id of the pool you want to delete | Yes |
Response
The response will be an entity representing the request to delete the pool. Request status can be tracked from the Get LBaaS Request.
Entity Definition
Name | Type | Description |
---|---|---|
id | string | ID of the Pool delete request |
status | string | Initially the response will show a status for the request of "ACTIVE". A status of "COMPLETE" will show in the Response of a function when the load balancer has been updated with the new configuration. |
description | string | Describes the activity running within the Pool delete process |
requestDate | string | Date-time stamp of the request |
completionDate | string | Date-time stamp of pool delete. Null value returned until process has completed |
links | array | Collection of entity links that point to resources related to this LBaaS Group |
Examples
JSON
{
"id": "d685c028-5852-4b6f-8511-a407147db0e4",
"status": "ACTIVE",
"description": "Remove Pool to Load Balancer 329a98e6-977a-4c25-a7c8-174209fe1d31",
"requestDate": 1450383770701,
"completionDate": null,
"links": [
{
"rel": "loadbalancer",
"href": "",
"resourceId": "329a98e6-977a-4c25-a7c8-174209fe1d31"
},
{
"red": "pool",
"href": "",
"resourceId": "a4ad7c71-1575-400e-8eb2-cef74ed557ad"
}
]
}
Get All LBaaS Instances
Allows the user to retrieve all LBaaS instances in a given data center. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token
When to Use It
Use this API operation when you need to retrieve every LBaaS instance for one data center
URL
Structure
GET https://api.loadbalancer.ctl.io/{accountAlias}/{dataCenter}/loadbalancers
Example
GET https://api.loadbalancer.ctl.io/DV01/NY1/loadbalancers
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for a particular account | Yes |
dataCenter | string | Short string representing the data center | Yes |
Response
Entity Definition
Name | Type | Description |
---|---|---|
values | array | Collection containing all load balancers in a data center |
Load Balancer Definition
Name | Type | Description |
---|---|---|
id | string | ID of the request |
name | string | Name of this load balancer instance |
description | string | A short description of this load balancer |
publicIPAddress | string | The external (public) IP address of the load balancer |
pools | array | Collection of pools configured for this load balancer |
status | string | Status of the load balancer: active , deleted , creating , or failed |
accountAlias | string | The account which owns the load balancer |
dataCenter | string | The data center in which the load balancer resides |
creationTime | string | Date-time stamp of the load balancer creation |
deletionTime | string | Date-time stamp of the load balancer deletion. Will be null if load balancer not in deleted status |
Examples
JSON
{
"values": [
{
"id": "329a98e6-977a-4c25-a7c8-174209fe1d31",
"name": "ExampleGroup",
"description": "Sample load balancer",
"publicIPAddress": "64.211.224.123",
"pools": [
{
"id": "efdfc028-a694-481d-b406-cb68e5bf2f04",
"port": 443,
"loadBalancingMethod": "roundrobin",
"persistence": "none",
"idleTimeout": 180000,
"loadBalancingMode": "tcp",
"nodes": [
{
"ipAddress": "10.140.218.125",
"privatePort": 443,
"status": "enabled",
"healthCheck": null,
"serverWeight": null
},
{
"ipAddress": "10.140.218.126",
"privatePort": 443,
"status": "enabled",
"healthCheck": null,
"serverWeight": null
}
],
"forceHttps": true,
"healthCheck": null,
"sslOffloading": null
}
],
"status": "active",
"accountAlias": "DV01",
"dataCenter": "NY1",
"creationTime": 1471902898537,
"deletionTime": null
}
]
}
Get All Pool
Gets all of the pools that are currently configured on an LBaaS instance for a given account in a given data center. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need to retrieve the configuration of all existing pools on a load balancer.
URL
Structure
GET https://api.loadbalancer.ctl.io/{accountAlias}/{dataCenter}/loadbalancers/{loadBalancerId}/pools
Example
GET https://api.loadbalancer.ctl.io/DV01/NY1/loadbalancers/329a98e6-977a-4c25-a7c8-174209fe1d31/pools
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for the particular account which owns the load balancer | Yes |
dataCenter | string | Short string representing the data center in which the load balancer resides | Yes |
loadBalancerId | string | Id of the load balancer | Yes |
Response
Entity Definition
Name | Type | Description |
---|---|---|
values | array | Collection containing all pools on a load balancer |
Pool Definition
Name | Type | Description |
---|---|---|
id | string | The id of the pool |
port | integer | The port on which incoming traffic will send requests. Valid port ranges are between 23 and 65534 |
loadBalancingMethod | string | Method for load balancing - valid values are leastconn , roundrobin , source , or uri . If null will default to roundrobin |
persistence | string | Persistence method for client connections to backend nodes - none or source_ip . If null will default to none |
idleTimeout | integer | Timeout value for idle client connections to backend nodes in milliseconds - defaults to 180000 |
loadBalancingMode | string | Indicates the type of load balancing – tcp or http (layer4-TCP or layer7-HTTP(s)) |
nodes | array | Collection of entity values that describe the customer backend nodes being load balanced |
forceHttps | boolean | Will redirect incoming traffic on port 80 to port 443. |
healthCheck | object | Configures a health check that is applied to all nodes in the pool, provided they do not already have a healthCheck configured |
Node Definition
Name | Type | Description |
---|---|---|
ipAddress | string | IP of the server that will be load balanced |
privatePort | integer | Port on which the server that will be load balanced is listening |
status | string | enabled or disabled . Nodes set to disabled will not have any traffic directed to them. Defaults to enabled |
healthCheck | object | Configures a health check on this specific node. Will override any healthCheck configured on the pool |
serverWeight | integer | Adjust the server's weight relative to other servers. All servers will receive a load proportional to their weight relative to the sum of all weights. Range is 1 to 256 . Default is 1 |
HealthCheck Definition
Name | Type | Description |
---|---|---|
unhealthyThreshold | integer | Number of times server healthcheck can fail befre being removed from rotation. Valid range between 2 and 10 |
healthyThreshold | integer | Number of times unhealthy servers must pass healthcheck before being readded to rotation. Valid range is between 2 and 10 |
intervalSeconds | integer | Seconds to wait between healthchecks. Valid range is between 5 and 300 |
targetPort | integer | Port of the healthcheck on the server |
mode | string | Mode over which to send healthcheck. Options are TCP , SSL , HTTP . Defaults to TCP |
httpHealthCheckMethod | string | HttpMethod to use when querying healthcheck. Only valid when mode is set to HTTP |
httpHealthCheckUrl | string | Url location of healthcheck. Only valid when mode is set to HTTP |
Examples
JSON
{
"values": [
{
"id": "a4ad7c71-1575-400e-8eb2-cef74ed557ad",
"port": 443,
"loadBalancingMethod": "roundrobin",
"persistence": "none",
"idleTimeout": 180000,
"loadBalancingMode": "tcp",
"nodes": [
{
"ipAddress": "10.140.218.25",
"privatePort": 8443,
"status": "enabled",
"healthCheck": null,
"serverWeight": null
},
{
"ipAddress": "10.140.218.26",
"privatePort": 8443,
"status": "enabled",
"healthCheck": null,
"serverWeight": null
}
],
"forceHttps": true,
"healthCheck": {
"unhealthyThreshold": 5,
"healthyThreshold": 2,
"intervalSeconds": 60,
"targetPort": 122,
"mode": "TCP",
"httpHealthCheckMethod": null,
"httpHealthCheckUrl": null
}
}
]
}
Get LBaaS Instance
Allows the user to retrieve a single LBaaS instance. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token
When to Use It
Use this API operation when you need to retrieve the details of a single LBaaS instance.
URL
Structure
GET https://api.loadbalancer.ctl.io/{accountAlias}/{dataCenter}/loadbalancers/{loadBalancerId}
Example
GET https://api.loadbalancer.ctl.io/DV01/NY1/loadbalancers/329a98e6-977a-4c25-a7c8-174209fe1d31
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for a particular account | Yes |
dataCenter | string | Short string representing the data center in which the load balancer was created | Yes |
loadBalancerId | string | The id of the load balancer. | Yes |
Response
Entity Definition
Name | Type | Description |
---|---|---|
id | string | ID of the request |
name | string | Name of this load balancer instance |
description | string | A short description of this load balancer |
publicIPAddress | string | The external (public) IP address of the load balancer |
pools | array | Collection of pools configured for this load balancer |
status | string | Status of the load balancer: active , deleted , creating , or failed |
accountAlias | string | The account which owns the load balancer |
dataCenter | string | The data center in which the load balancer resides |
creationTime | string | Date-time stamp of the load balancer creation |
deletionTime | string | Date-time stamp of the load balancer deletion. Will be null if load balancer not in deleted status |
Examples
JSON
{
"id": "329a98e6-977a-4c25-a7c8-174209fe1d31",
"name": "ExampleGroup",
"description": "Sample load balancer",
"publicIPAddress": "64.211.224.123",
"pools": [
{
"id": "efdfc028-a694-481d-b406-cb68e5bf2f04",
"port": 443,
"loadBalancingMethod": "roundrobin",
"persistence": "none",
"idleTimeout": 180000,
"loadBalancingMode": "tcp",
"nodes": [
{
"ipAddress": "10.140.218.125",
"privatePort": 443,
"status": "enabled",
"healthCheck": null,
"serverWeight": null
},
{
"ipAddress": "10.140.218.126",
"privatePort": 443,
"status": "enabled",
"healthCheck": null,
"serverWeight": null
}
],
"forceHttps": true,
"healthCheck": null,
"sslOffloading": null
}
],
"status": "active",
"accountAlias": "DV01",
"dataCenter": "NY1",
"creationTime": 1471902898537,
"deletionTime": null
}
Get LBaaS Request
Allows the user to retrieve a request from the LBaaS service.
When to Use It
Use this API operation when you need to check the status of a request to the LBaaS service.
URL
Structure
GET https://api.loadbalancer.ctl.io/{accountAlias}/{dataCenter}/loadbalancers/requests/{id}
Example
GET https://api.loadbalancer.ctl.io/DV01/NY1/loadbalancers/requests/d685c028-5852-4b6f-8511-a407147db0e4
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for a particular account | Yes |
dataCenter | string | Short string representing the data center the request was created in | Yes |
id | string | The id of the request the user is interested in. | Yes |
Response
Entity Definition
Name | Type | Description |
---|---|---|
id | string | ID of the request |
status | string | Current status of the request. Possible values are 'ACTIVE', 'COMPLETE', and 'FAILED' |
description | string | Describes the type of the request |
requestDate | string | Date-time stamp of the request |
completionDate | string | Date-time stamp of when request completed. |
links | array | Collection of entity links that point to resources related to this LBaaS Group |
Examples
JSON
{
"id": "d685c028-5852-4b6f-8511-a407147db0e4",
"status": "COMPLETE",
"description": "Create Load Balancer a4ad7c71-1575-400e-8eb2-cef74ed557ad",
"requestDate": 1450383770701,
"completionDate": 1450383813624,
"links": [
{
"rel": "loadbalancer",
"href": "",
"resourceId": "a4ad7c71-1575-400e-8eb2-cef74ed557ad"
}
]
}
Get Pool
Gets the configuration of a pool on an LBaaS instance for a given account in a given data center. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need to retrieve the configuration of an existing pool on a load balancer.
URL
Structure
GET https://api.loadbalancer.ctl.io/{accountAlias}/{dataCenter}/loadbalancers/{loadBalancerId}/pools/{poolId}
Example
GET https://api.loadbalancer.ctl.io/DV01/NY1/loadbalancers/329a98e6-977a-4c25-a7c8-174209fe1d31/pools/a4ad7c71-1575-400e-8eb2-cef74ed557ad
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for the particular account which owns the load balancer | Yes |
dataCenter | string | Short string representing the data center in which the load balancer resides | Yes |
loadBalancerId | string | Id of the load balancer | Yes |
poolId | string | Id of the pool you want to view | Yes |
Response
Entity Definition
Name | Type | Description |
---|---|---|
id | string | The id of the pool |
port | integer | The port on which incoming traffic will send requests. Valid port ranges are between 23 and 65534 |
loadBalancingMethod | string | Method for load balancing - valid values are leastconn , roundrobin , source , or uri . If null will default to roundrobin |
persistence | string | Persistence method for client connections to backend nodes - none or source_ip . If null will default to none |
idleTimeout | integer | Timeout value for idle client connections to backend nodes in milliseconds - defaults to 180000 |
loadBalancingMode | string | Indicates the type of load balancing – tcp or http (layer4-TCP or layer7-HTTP(s)) |
nodes | array | Collection of entity values that describe the customer backend nodes being load balanced |
forceHttps | boolean | Will redirect incoming traffic on port 80 to port 443. |
healthCheck | object | Configures a health check that is applied to all nodes in the pool, provided they do not already have a healthCheck configured |
Node Definition
Name | Type | Description |
---|---|---|
ipAddress | string | IP of the server that will be load balanced |
privatePort | integer | Port on which the server that will be load balanced is listening |
status | string | enabled or disabled . Nodes set to disabled will not have any traffic directed to them. Defaults to enabled |
healthCheck | object | Configures a health check on this specific node. Will override any healthCheck configured on the pool |
serverWeight | integer | Adjust the server's weight relative to other servers. All servers will receive a load proportional to their weight relative to the sum of all weights. Range is 1 to 256 . Default is 1 |
HealthCheck Definition
Name | Type | Description |
---|---|---|
unhealthyThreshold | integer | Number of times server healthcheck can fail befre being removed from rotation. Valid range between 2 and 10 |
healthyThreshold | integer | Number of times unhealthy servers must pass healthcheck before being readded to rotation. Valid range is between 2 and 10 |
intervalSeconds | integer | Seconds to wait between healthchecks. Valid range is between 5 and 300 |
targetPort | integer | Port of the healthcheck on the server |
mode | string | Mode over which to send healthcheck. Options are TCP , SSL , HTTP . Defaults to TCP |
httpHealthCheckMethod | string | HttpMethod to use when querying healthcheck. Only valid when mode is set to HTTP |
httpHealthCheckUrl | string | Url location of healthcheck. Only valid when mode is set to HTTP |
Examples
JSON
{
"id": "a4ad7c71-1575-400e-8eb2-cef74ed557ad",
"port": 443,
"loadBalancingMethod": "roundrobin",
"persistence": "none",
"idleTimeout": 180000,
"loadBalancingMode": "tcp",
"nodes": [
{
"ipAddress": "10.140.218.25",
"privatePort": 8443,
"status": "enabled",
"healthCheck": null,
"serverWeight": null
},
{
"ipAddress": "10.140.218.26",
"privatePort": 8443,
"status": "enabled",
"healthCheck": null,
"serverWeight": null
}
],
"forceHttps": true,
"healthCheck": {
"unhealthyThreshold": 5,
"healthyThreshold": 2,
"intervalSeconds": 60,
"targetPort": 122,
"mode": "TCP",
"httpHealthCheckMethod": null,
"httpHealthCheckUrl": null
}
}
Update LBaaS
Updates an LBaaS instance for a given account in a given data center. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need to update the name and description of a given load balancer.
URL
Structure
PUT https://api.loadbalancer.ctl.io/{accountAlias}/{dataCenter}/loadbalancers/{loadBalancerId}
Example
PUT https://api.loadbalancer.ctl.io/DV01/NY1/loadbalancers/329a98e6-977a-4c25-a7c8-174209fe1d31
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for a particular account | Yes |
dataCenter | string | Short string representing the data center in which the load balancer was created | Yes |
loadBalancerId | string | The id of the load balancer. | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
name | string | The intended name of the new instance | Yes |
description | string | A short description of the load balancer | No |
Examples
JSON
{
"name": "ExampleGroup-updated",
"description": "Example Group for demo purposes"
}
Response
The response will be the updated load balancer
Entity Definition
Name | Type | Description |
---|---|---|
id | string | ID of the request |
name | string | Name of this load balancer instance |
description | string | A short description of this load balancer |
publicIPAddress | string | The external (public) IP address of the load balancer |
pools | array | Collection of pools configured for this load balancer |
status | string | Status of the load balancer: active , deleted , creating , or failed |
accountAlias | string | The account which owns the load balancer |
dataCenter | string | The data center in which the load balancer resides |
creationTime | string | Date-time stamp of the load balancer creation |
deletionTime | string | Date-time stamp of the load balancer deletion. Will be null if load balancer not in deleted status |
Examples
JSON
{
"id": "329a98e6-977a-4c25-a7c8-174209fe1d31",
"name": "ExampleGroup-updated",
"description": "Example group for demo purposes",
"publicIPAddress": "64.211.224.123",
"pools": [],
"status": "active",
"accountAlias": "DV01",
"dataCenter": "NY1",
"creationTime": 1471902898537,
"deletionTime": null
}
Update Pool
Updates an existing pool on an LBaaS instance for a given account in a given data center. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need to modify the configuration of an existing pool on a load balancer.
URL
Structure
PUT https://api.loadbalancer.ctl.io/{accountAlias}/{dataCenter}/loadbalancers/{loadBalancerId}/pools/{poolId}
Example
PUT https://api.loadbalancer.ctl.io/DV01/NY1/loadbalancers/329a98e6-977a-4c25-a7c8-174209fe1d31/pools/a4ad7c71-1575-400e-8eb2-cef74ed557ad
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for the particular account which owns the load balancer | Yes |
dataCenter | string | Short string representing the data center in which the load balancer resides | Yes |
loadBalancerId | string | Id of the load balancer | Yes |
poolId | string | Id of the pool you want to update | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
id | string | The id of the pool | Yes |
port | integer | The port on which incoming traffic will send requests. Valid port ranges are between 23 and 65534 |
Yes |
loadBalancingMethod | string | Method for load balancing - valid values are leastconn , roundrobin , source , or uri . If null will default to roundrobin |
No |
persistence | string | Persistence method for client connections to backend nodes - none or source_ip . If null will default to none |
No |
idleTimeout | integer | Timeout value for idle client connections to backend nodes in milliseconds - defaults to 180000 | No |
loadBalancingMode | string | Indicates the type of load balancing – tcp or http (layer4-TCP or layer7-HTTP(s)) |
Yes |
nodes | array | Collection of entity values that describe the customer backend nodes being load balanced | No |
forceHttps | boolean | Will redirect incoming traffic on port 80 to port 443. loadBalancingMode must be set to tcp and port must be set to 443 |
No |
healthCheck | object | Configures a health check that is applied to all nodes in the pool, provided they do not already have a healthCheck configured | No |
Node Properties
Name | Type | Description | Req. |
---|---|---|---|
ipAddress | string | IP of the server that will be load balanced | Yes |
privatePort | integer | Port on which the server that will be load balanced is listening | Yes |
status | string | enabled or disabled . Nodes set to disabled will not have any traffic directed to them. Defaults to enabled |
No |
healthCheck | object | Configures a health check on this specific node. Will override any healthCheck configured on the pool | No |
serverWeight | integer | Adjust the server's weight relative to other servers. All servers will receive a load proportional to their weight relative to the sum of all weights. Range is 1 to 256 . Default is 1 |
No |
HealthCheck Properties
Name | Type | Description | Req. |
---|---|---|---|
unhealthyThreshold | integer | Number of times server healthcheck can fail befre being removed from rotation. Valid range between 2 and 10 |
Yes |
healthyThreshold | integer | Number of times unhealthy servers must pass healthcheck before being readded to rotation. Valid range is between 2 and 10 |
Yes |
intervalSeconds | integer | Seconds to wait between healthchecks. Valid range is between 5 and 300 |
Yes |
targetPort | integer | Port of the healthcheck on the server | Yes |
mode | string | Mode over which to send healthcheck. Options are TCP , SSL , HTTP . Defaults to TCP |
No |
httpHealthCheckMethod | string | HttpMethod to use when querying healthcheck. Only valid when mode is set to HTTP |
No |
httpHealthCheckUrl | string | Url location of healthcheck. Only valid when mode is set to HTTP |
No |
Examples
JSON
{
"id": "a4ad7c71-1575-400e-8eb2-cef74ed557ad",
"port": 443,
"loadBalancingMethod": "roundrobin",
"persistence": "none",
"idleTimeout": 180000,
"loadBalancingMode": "tcp",
"nodes": [
{
"ipAddress": "10.140.218.25",
"privatePort": 8443,
"status": "enabled",
"healthCheck": null,
"serverWeight": null
},
{
"ipAddress": "10.140.218.26",
"privatePort": 8443,
"status": "enabled",
"healthCheck": null,
"serverWeight": null
}
],
"forceHttps": true,
"healthCheck": {
"unhealthyThreshold": 5,
"healthyThreshold": 2,
"intervalSeconds": 60,
"targetPort": 122,
"mode": "TCP",
"httpHealthCheckMethod": null,
"httpHealthCheckUrl": null
}
}
Response
The response will be an entity representing the request to update the pool. Request status can be tracked from the Get LBaaS Request.
Entity Definition
Name | Type | Description |
---|---|---|
id | string | ID of the Pool update request |
status | string | Initially the response will show a status for the request of "ACTIVE". A status of "COMPLETE" will show in the Response of a function when the load balancer has been updated with the new configuration. |
description | string | Describes the activity running within the Pool update process |
requestDate | string | Date-time stamp of the request |
completionDate | string | Date-time stamp of pool update. Null value returned until process has completed |
links | array | Collection of entity links that point to resources related to this LBaaS Group |
Examples
JSON
{
"id": "d685c028-5852-4b6f-8511-a407147db0e4",
"status": "ACTIVE",
"description": "Update Pool to Load Balancer 329a98e6-977a-4c25-a7c8-174209fe1d31",
"requestDate": 1450383770701,
"completionDate": null,
"links": [
{
"rel": "loadbalancer",
"href": "",
"resourceId": "329a98e6-977a-4c25-a7c8-174209fe1d31"
},
{
"red": "pool",
"href": "",
"resourceId": "a4ad7c71-1575-400e-8eb2-cef74ed557ad"
}
]
}
Claim Network
Claims a network for a given account in a given data center. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need to claim a network in a given data center you are able to access. Once you have a network, you can then perform various actions like getting IP addresses and updating its name.
NOTE: This API operation is experimental only, and subject to change with no notice. Please plan accordingly.
URL
Structure
POST https://api.ctl.io/v2-experimental/networks/{accountAlias}/{dataCenter}/claim
Example
POST https://api.ctl.io/v2-experimental/networks/ALIAS/WA1/claim
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for a particular account | Yes |
dataCenter | string | Short string representing the data center you are querying. Valid codes can be retrieved from the Get Data Center List API operation. | Yes |
Response [UPDATED JANUARY 19 2016]
Entity Definition
Name | Type | Description |
---|---|---|
operationId | string | Unique identifier for network claim operation |
uri | string | URI to check status of operation |
Examples
The initial response from the Claim Network API provides the unique identifier for the asynchronous operation to claim the network and a URI to check the status of that operation.
{
"operationId": "c387aa9873ab4f7399ea8964dd61510d",
"uri": "/v2-experimental/operations/{accountAlias}/status/{operationId}"
}
While the operation is executing, the response from the operation URI will provide a summary of the operation.
{
"requestType": "blueprintOperation",
"status": "running",
"summary": {
"blueprintId": 92121,
"locationId": "{locationAlias}"
},
"source": {
"userName": "{requestedUser}",
"requestedAt": "2016-01-11T18:39:07Z"
}
}
When the operation completes successfully the response will provide a status property as "succeeded" and a link to the claimed network.
{
"requestType": "blueprintOperation",
"status": "succeeded",
"summary": {
"blueprintId": 92121,
"locationId": "{locationAlias}",
"links": [
{
"rel": "network",
"href": "/v2-experimental/networks/{accountAlias}/{locationAlias}/{networkId}",
"id": "{networkId}"
}
]
},
"source": {
"userName": "{requestedUser}",
"requestedAt": "2016-01-11T18:39:07Z"
}
}
If the operation to claim a network were to fail, the response will come back with status "failed" along with the operation summary information.
{
"requestType": "blueprintOperation",
"status": "failed",
"summary": {
"blueprintId": 92123,
"locationId": "{locationId}"
},
"source": {
"userName": "{requestedUser}",
"requestedAt": "2016-01-11T18:43:42Z"
}
}
Get IP Address List
Gets the list of IP addresses for a network in a given data center for a given account. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need the list of IP Addresses associated with a given network.
NOTE: This API operation is experimental only, and subject to change with no notice. Please plan accordingly.
URL
Structure
GET https://api.ctl.io/v2-experimental/networks/{accountAlias}/{dataCenter}/{Network}/ipAddresses?type=claimed|free|all
Example
GET https://api.ctl.io/v2-experimental/networks/ALIAS/WA1/ec6ff75a0ffd4504840dab343fe41077/ipAddresses?type=claimed
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for a particular account | Yes |
dataCenter | string | Short string representing the data center you are querying. Valid codes can be retrieved from the Get Data Center List API operation. | Yes |
Network | string | ID of the Network. These can be retrieved from the Get Network List API operation | Yes |
type | string | Optional component of the query to request details of IP Addresses in a certain state. Should be one of the following: "claimed" (returns details of the network as well as information about claimed IP addresses), "free" (returns details of the network as well as information about free IP addresses) or "all" (returns details of the network as well as information about all IP addresses) | No |
Response
Entity Definition
Name | Type | Description |
---|---|---|
address | string | An IP Address on the Network |
claimed | boolean | Indicates claimed status of the address, either true or false |
server | string | ID of the server associated with the IP address, if claimed |
type | string | Indicates if the IP address is private , publicMapped , or virtual |
Examples
JSON
[
{
"address": "11.22.33.12",
"claimed": true,
"server": "WA1ALIASAPI01",
"type": "private"
},
{
"address": "11.22.33.13",
"claimed": true,
"server": "WA1ALIASAPI01",
"type": "private"
},
{
"address": "11.22.33.14",
"claimed": false,
"type": "private"
},
{
"address": "65.43.210.123",
"claimed": true,
"server": "WA1ALIASAPI01",
"type": "publicMapped"
}
]
Get Log Forwarding Address
Gets the current configuration for network log forwarding. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need the address and protocol currently configured for network log forwarding.
NOTE: This API operation is experimental only, and subject to change with no notice. Please plan accordingly. Only accounts using virtual firewall can use network log forwarding.
URL
Structure
GET https://api.ctl.io/v2-experimental/networks/{accountAlias}/{dataCenter}/logging
Example
GET https://api.ctl.io/v2-experimental/networks/ALIAS/WA1/logging
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for a particular account | Yes |
dataCenter | string | Short string representing the data center you are querying. Valid codes can be retrieved from the Get Data Center List API operation. | Yes |
Response
Entity Definition
Name | Type | Description |
---|---|---|
remoteAddress | string | Address of the remote logging server |
protocol | string | Protocol used when sending logs |
Examples
JSON
{
"remoteAddress": "1.2.3.4",
"protocol": "tcp"
}
Get Network List
Gets the list of networks available for a given account in a given data center. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need the list of available networks in a given data center you are able to access. Using that list of networks, you can then query for a specific network in a given data center.
NOTE: This API operation is experimental only, and subject to change with no notice. Please plan accordingly.
URL
Structure
GET https://api.ctl.io/v2-experimental/networks/{accountAlias}/{dataCenter}
Example
GET https://api.ctl.io/v2-experimental/networks/ALIAS/WA1
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for a particular account | Yes |
dataCenter | string | Short string representing the data center you are querying. Valid codes can be retrieved from the Get Data Center List API operation. | Yes |
Response
Entity Definition
Name | Type | Description |
---|---|---|
id | string | ID of the network |
cidr | string | The network address, specified using CIDR notation |
description | string | Description of VLAN, a free text field that defaults to the VLAN number combined with the network address |
gateway | string | Gateway IP address of the network |
name | string | User-defined name of the network; the default is the VLAN number combined with the network address |
netmask | string | A screen of numbers used for routing traffic within a subnet |
type | string | Network type, usually private for networks created by the user |
vlan | integer | Unique number assigned to the VLAN |
links | array | Collection of entity links that point to resources related to this list of networks |
Examples
JSON
[
{
"id": "711725920a1f4002ac49e634e1789206",
"cidr": "12.34.0.0/24",
"description": "vlan_9998_12.34.0",
"gateway": "12.34.0.1",
"name": "vlan_9998_12.34.0",
"netmask": "255.255.255.0",
"type": "private",
"vlan": 9998,
"links": [
{
"rel": "self",
"href": "http://api.ctl.io/v2-experimental/networks/ALIAS/WA1/711725920a1f4002ac49e634e1789206",
"verbs": [
"GET",
"PUT"
]
},
{
"rel": "ipAddresses",
"href": "http://api.ctl.io/v2-experimental/networks/ALIAS/WA1/711725920a1f4002ac49e634e1789206/ipAddresses",
"verbs": [
"GET"
]
},
{
"rel": "release",
"href": "http://api.ctl.io/v2-experimental/networks/ALIAS/WA1/711725920a1f4002ac49e634e1789206/release",
"verbs": [
"POST"
]
}
]
},
{
"id": "ec6ff75a0ffd4504840dab343fe41077",
"cidr": "11.22.33.0/24",
"description": "vlan_9999_11.22.33",
"gateway": "11.22.33.1",
"name": "vlan_9999_11.22.33",
"netmask": "255.255.255.0",
"type": "private",
"vlan": 9999,
"links": [
{
"rel": "self",
"href": "http://api.ctl.io/v2-experimental/networks/ALIAS/WA1/ec6ff75a0ffd4504840dab343fe41077",
"verbs": [
"GET",
"PUT"
]
},
{
"rel": "ipAddresses",
"href": "http://api.ctl.io/v2-experimental/networks/ALIAS/WA1/ec6ff75a0ffd4504840dab343fe41077/ipAddresses",
"verbs": [
"GET"
]
},
{
"rel": "release",
"href": "http://api.ctl.io/v2-experimental/networks/ALIAS/WA1/ec6ff75a0ffd4504840dab343fe41077/release",
"verbs": [
"POST"
]
}
]
}
]
Get Network
Gets the details of a specific network in a given data center for a given account. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to discover properties of a network in a data center. You may optionally query details of IP Addresses on this network.
NOTE: This API operation is experimental only, and subject to change with no notice. Please plan accordingly.
URL
Structure
GET https://api.ctl.io/v2-experimental/networks/{accountAlias}/{dataCenter}/{Network}?ipAddresses=none|claimed|free|all
Example
GET https://api.ctl.io/v2-experimental/networks/ALIAS/WA1/ec6ff75a0ffd4504840dab343fe41077?ipAddresses=claimed
Request
URI and Querystring Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for a particular account | Yes |
dataCenter | string | Short string representing the data center you are querying. Valid codes can be retrieved from the Get Data Center List API operation. | Yes |
Network | string | ID of the Network. This can be retrieved from the Get Network List API operation. | Yes |
ipAddresses | string | Optional component of the query to request details of IP Addresses in a certain state. Should be one of the following: "none" (returns details of the network only), "claimed" (returns details of the network as well as information about claimed IP addresses), "free" (returns details of the network as well as information about free IP addresses) or "all" (returns details of the network as well as information about all IP addresses). Refer to Get IP Address List for the data shape of returned IP addresses. | No |
Response
Entity Definition
Name | Type | Description |
---|---|---|
id | string | ID of the network |
cidr | string | The network address, specified using CIDR notation |
description | string | Description of VLAN, a free text field that defaults to the VLAN number combined with the network address |
gateway | string | Gateway IP address of the network |
name | string | User-defined name of the network; the default is the VLAN number combined with the network address |
netmask | string | A screen of numbers used for routing traffic within a subnet |
type | boolean | Network type, usually private for networks created by the user |
vlan | integer | Unique number assigned to the VLAN |
links | array | Collection of entity links that point to resources related to this list of networks |
Examples
JSON
{
"id": "ec6ff75a0ffd4504840dab343fe41077",
"cidr": "11.22.33.0/24",
"description": "vlan_9999_11.22.33",
"gateway": "11.22.33.1",
"name": "vlan_9999_11.22.33",
"netmask": "255.255.255.0",
"type": "private",
"vlan": 9999,
"ipAddresses": [
{
"address": "11.22.33.12",
"claimed": true,
"server": "WA1ALIASAPI01",
"type": "private"
},
{
"address": "11.22.33.13",
"claimed": true,
"server": "WA1ALIASAPI01",
"type": "private"
},
{
"address": "65.43.210.123",
"claimed": true,
"server": "WA1ALIASAPI01",
"type": "publicMapped"
}
],
"links": [
{
"rel": "self",
"href": "http://api.ctl.io/v2-experimental/networks/ALIAS/WA1/ec6ff75a0ffd4504840dab343fe41077",
"verbs": [
"GET",
"PUT"
]
},
{
"rel": "ipAddresses",
"href": "http://api.ctl.io/v2-experimental/networks/ALIAS/WA1/ec6ff75a0ffd4504840dab343fe41077/ipAddresses",
"verbs": [
"GET"
]
},
{
"rel": "release",
"href": "http://api.ctl.io/v2-experimental/networks/ALIAS/WA1/ec6ff75a0ffd4504840dab343fe41077/release",
"verbs": [
"POST"
]
}
]
}
Release Network
Releases a network from a given account in a given data center to a pool for another user to claim. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you no longer need a network, and wish to to release it back a given data center. Before you can release a network, there must be no IP addresses claimed by servers.
NOTE: This API operation is experimental only, and subject to change with no notice. Please plan accordingly.
URL
Structure
POST https://api.ctl.io/v2-experimental/networks/{accountAlias}/{dataCenter}/{Network}/release
Example
POST https://api.ctl.io/v2-experimental/networks/ALIAS/WA1/ec6ff75a0ffd4504840dab343fe41077/release
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for a particular account | Yes |
dataCenter | string | Short string representing the data center you are querying. Valid codes can be retrieved from the Get Data Center List API operation. | Yes |
Network | string | ID of the Network. This can be retrieved from the Get Network List API operation | Yes |
Response
Entity Definition
The response will not contain JSON content, but should return the HTTP 204 No Content
response upon the successful release of the network.
Update Log Forwarding Address
Updates the network log forwarding configuration for a given data center via PUT. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation to update the remote address and protocol used for network log forwarding in a given data center.
NOTE: This API operation is experimental only, and subject to change with no notice. Please plan accordingly. Only accounts using virtual firewall can use network log forwarding.
URL
Structure
PUT https://api.ctl.io/v2-experimental/networks/{accountAlias}/{dataCenter}/logging
Example
PUT https://api.ctl.io/v2-experimental/networks/ALIAS/WA1/logging
Request
URI and Querystring Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for a particular account | Yes |
dataCenter | string | Short string representing the data center you are querying. Valid codes can be retrieved from the Get Data Center List API operation. | Yes |
Content Properties
Name | Type | Description | Option | Req. |
---|---|---|---|---|
remoteAddress | string | Address of the remote logging server. If not provided, log forwarding will be disabled for this account | No | |
protocol | string | Protocol used when sending logs | tcp, udp | Yes |
Examples
JSON
{
"remoteAddress": "1.2.3.4",
"protocol": "tcp"
}
Response
The response is an operation used for tracking the status of the new configuration.
Entity Definition
Name | Type | Description |
---|---|---|
operationID | string | ID used for tracking operation status |
status | string | Current status of operation |
Examples
JSON
{
"operationID": "dc5fe58f311f45b3b50de4c9c48ff2e0",
"status": "pending"
}
Update Network
Updates the attributes of a given Network via PUT. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation to update the name and description of a network.
NOTE: This API operation is experimental only, and subject to change with no notice. Please plan accordingly.
URL
Structure
PUT https://api.ctl.io/v2-experimental/networks/{accountAlias}/{dataCenter}/{Network}
Example
PUT https://api.ctl.io/v2-experimental/networks/ALIAS/WA1/ec6ff75a0ffd4504840dab343fe41077
Request
URI and Querystring Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for a particular account | Yes |
dataCenter | string | Short string representing the data center you are querying. Valid codes can be retrieved from the Get Data Center List API operation. | Yes |
Network | string | ID of the Network. These can be retrieved from the Get Network List API operation | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
name | string | User-defined name of the network; the default is the VLAN number combined with the network address | Yes |
description | string | Description of VLAN, a free text field that defaults to the VLAN number combined with the network address | No |
Examples
JSON
{
"name": "VLAN for Development Servers",
"description": "Development Servers on 11.22.33.0/24"
}
Response
Entity Definition
The response will not contain JSON content, but should return the HTTP 204 No Content
response upon the successful update of network attributes.
Applying Patches to Operating Systems
This service allows the user to patch virtual machines to the latest available patches provided by the OS vendor, using the Execute Package API. It does not discriminate patches based on patch severity or any other vendor categorization. The package will kick off one or multiple attempts to apply patches, including a series of reboots. Reboots will cease and the execution will complete when there are no more patches to apply. Additional information on this capability is in this knowledge base article.
Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation to patch operating systems with updates from OS vendors.
NOTE: Servers require Internet access to be patched. It is also recommended to place servers in Maintenance Mode before patching. Further, an API request can deploy against all VMs a user is authorized to administer under a single alias.
Supported Operating Systems
Currently, the Operating Systems that may be updated with this service are show below:
- CentOS 5
- CentOS 6
- Red Hat Enterprise Linux 6
- Red Hat Enterprise Linux 5
- Red Hat Enterprise Linux 7
- Windows 2012
- Windows 2012R2
Exceptions
- Red Hat Enterprise Linux and CentOS: This service will exclude some updates. It will exclude kernel patches and
nss
packages.
Package Details
Operating Systems | Blueprint Name | Script Package Name | Package ID |
---|---|---|---|
Windows 2012 and 2012R2 | Auto Patching Windows 2012 | Auto Patching Windows 2012 | b229535c-a313-4a31-baf8-6aa71ff4b9ed |
Red Hat Enterprise Linux 5, 6, and 7 OR CentOS 5 and 6 | Yum Update Script | Yum Update | c3c6642e-24e1-4c37-b56a-1cf1476ee360 |
Example
JSON
{
"servers": [
"WA1ALIASSERV0101"
],
"package": {
"packageId": "c3c6642e-24e1-4c37-b56a-1cf1476ee360",
"parameters": {"patch.debug.mode": "false"
}
}
}
Response
The response will be an array containing one entity for each server that the operation was performed on.
In addition, you will receive an email confirming that the patch was requested. A second email will be sent upon the successful application of the auto-patch capability.
Get Details of Patches Applied to a Server During a Single Execution
This services returns details on all attempted patches for a single execution against a server.
Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation to get a list of the patches applied for a given execution to a server using the Patching-as-a-Service feature.
The response will contain information from the vendor about the patch and the status of the attempt.
URL
Structure
GET https://patching.useast.appfog.ctl.io/rest/servers/{alias}/server/{serverID}/patch/{execution_id}
Example
GET https://patching.useast.appfog.ctl.io/rest/servers/OSD/server/VA1OSDPATCH33/patch/VA1-132457
Request
URI
Name | Type | Description |
---|---|---|
accountAlias | string | Short code for a particular account |
serverID | string | ID of the server |
execution_id | string | Correlation ID for all the patches included with a single update execution, obtained from the Patch Summary response or emails regarding a patch request. The execution ID format will be aa#-###### |
Response
Name | Type | Description |
---|---|---|
execution_id | string | The execution ID associated with a particular patch |
status | string | Either pending or completed |
start_time | dateTime | When this value is superior to patches, indicates the start time of the entire execution (which contains all initiations). When this value is inferior to patches, indicates the start time of the patch. |
end_time | dateTime | When this value is superior to patches, indicates the end time of the entire execution (which contains all initiations). When this value is inferior to patches, indicates the end time of the patch. |
duration | string | The minutes and seconds between the start and end time |
begin_message | string | "Update Process BEGIN" |
end_message | string | "Updating Complete" |
patches | Number | Quantity of patches installed |
patch_begin_message | string | Identifies the Software or OS updated and the reference number (if Windows, KB#######) for that particular update |
patch_end_message | string | Result code established by Microsoft, defining the possible results of an install. These same codes will be used for other Operating Systems as well. https://msdn.microsoft.com/en-us/library/windows/desktop/aa387095(v=vs.85).aspx |
status | string | Status of an individual patch, either pending, completed, or failed |
Get a Summary of All Patches Deployed to a Server
This service shows a history of all the patches deployed to a given server.
Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation to get a list of the patches applied to a server using the Patching-as-a-Service feature.
The response will contain a high-level overview of all the patches installed for each execution and when they were applied.
URL
Structure
GET https://patching.useast.appfog.ctl.io/rest/servers/{accountAlias}/server/{serverID}/patch
Example
GET https://patching.useast.appfog.ctl.io/rest/servers/ALIAS/server/WA1ALIASSERV0101/patch
Request
URI
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for a particular account | Yes |
serverId | string | ID of the server | Yes |
Response
Name | Type | Description |
---|---|---|
execution_id | string | The execution ID associated with a particular patch |
status | string | Either pending or completed |
start_time | date/Time | Either the start time of the entire execution (which contains all initiations) or a particular initiation |
end_time | date/Time | Either the end time of the entire execution (which contains all initiations) or a particular initiation |
init_messages | complex | Shows the quantity of initiations |
init_begin_message | string | "Invoking SUS API" or "Invoking yum check-update" |
init_end_mesasge | string | identifies how many updates were installed and the URLS (for Windows) or names of the patches/updates |
Pause Server
Sends the pause operation to a list of servers and adds operation to queue. (See Description of Server Group Power Commands for details on how the power off operation is used.) Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to pause a single server or group of servers. It should be used in conjunction with the Get Status operation to check the result of the pause command.
URL
Structure
POST https://api.ctl.io/v2/operations/{accountAlias}/servers/pause
Example
POST https://api.ctl.io/v2/operations/ALIAS/servers/pause
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
serverIds | array | List of server IDs to perform pause operation on. | Yes |
Examples
JSON
[
"WA1ALIASWB01",
"WA1ALIASWB02"
]
Response
The response will be an array containing one entity for each server that the operation was performed on.
Entity Definition
Name | Type | Description |
---|---|---|
server | string | ID of the server that the operation was performed on. |
isQueued | boolean | Boolean indicating whether the operation was successfully added to the queue. |
links | array | Collection of entity links that point to resources related to this server operation. |
errorMessage | string | If something goes wrong or the request is not queued, this is the message that contains the details about what happened. |
Examples
JSON
[
{
"server":"wa1aliaswb01",
"isQueued":true,
"links":[
{
"rel":"status",
"href":"/v2/operations/alias/status/wa1-12345",
"id":"wa1-12345"
}
]
},
{
"server":"wa1aliaswb02",
"isQueued":false,
"errorMessage":"The operation cannot be queued because the server cannot be found or it is not in a valid state."
}
]
Power Off Server
Sends the power off operation to a list of servers and adds operation to queue. (See Description of Server Group Power Commands for details on how the power off operation is used.) Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to power off a single server or group of servers. It should be used in conjunction with the Get Status operation to check the result of the power off command.
URL
Structure
POST https://api.ctl.io/v2/operations/{accountAlias}/servers/powerOff
Example
POST https://api.ctl.io/v2/operations/ALIAS/servers/powerOff
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
serverIds | array | List of server IDs to perform power off operation on. | Yes |
Examples
JSON
[
"WA1ALIASWB01",
"WA1ALIASWB02"
]
Response
The response will be an array containing one entity for each server that the operation was performed on.
Entity Definition
Name | Type | Description |
---|---|---|
server | string | ID of the server that the operation was performed on. |
isQueued | boolean | Boolean indicating whether the operation was successfully added to the queue. |
links | array | Collection of entity links that point to resources related to this server operation. |
errorMessage | string | If something goes wrong or the request is not queued, this is the message that contains the details about what happened. |
Examples
JSON
[
{
"server":"wa1aliaswb01",
"isQueued":true,
"links":[
{
"rel":"status",
"href":"/v2/operations/alias/status/wa1-12345",
"id":"wa1-12345"
}
]
},
{
"server":"wa1aliaswb02",
"isQueued":false,
"errorMessage":"The operation cannot be queued because the server cannot be found or it is not in a valid state."
}
]
Power On Server
Sends the power on operation to a list of servers and adds operation to queue. (See Description of Server Group Power Commands for details on how the power off operation is used.) Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to power on a single server or group of servers. It should be used in conjunction with the Get Status operation to check the result of the power on command.
URL
Structure
POST https://api.ctl.io/v2/operations/{accountAlias}/servers/powerOn
Example
POST https://api.ctl.io/v2/operations/ALIAS/servers/powerOn
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
serverIds | array | List of server IDs to perform power on operation on. | Yes |
Examples
JSON
[
"WA1ALIASWB01",
"WA1ALIASWB02"
]
Response
The response will be an array containing one entity for each server that the operation was performed on.
Entity Definition
Name | Type | Description |
---|---|---|
server | string | ID of the server that the operation was performed on. |
isQueued | boolean | Boolean indicating whether the operation was successfully added to the queue. |
array | complex | Collection of entity links that point to resources related to this server operation. |
errorMessage | string | If something goes wrong or the request is not queued, this is the message that contains the details about what happened. |
Examples
JSON
[
{
"server":"wa1aliaswb01",
"isQueued":true,
"links":[
{
"rel":"status",
"href":"/v2/operations/alias/status/wa1-12345",
"id":"wa1-12345"
}
]
},
{
"server":"wa1aliaswb02",
"isQueued":false,
"errorMessage":"The operation cannot be queued because the server cannot be found or it is not in a valid state."
}
]
Reboot Server
Sends the reboot operation to a list of servers and adds operation to queue. (See Description of Server Group Power Commands for details on how the power off operation is used.) Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to reboot a single server or group of servers. It should be used in conjunction with the Get Status operation to check the result of the reboot command.
URL
Structure
POST https://api.ctl.io/v2/operations/{accountAlias}/servers/reboot
Example
POST https://api.ctl.io/v2/operations/ALIAS/servers/reboot
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
serverIds | array | List of server IDs to perform reboot operation on. | Yes |
Examples
JSON
[
"WA1ALIASWB01",
"WA1ALIASWB02"
]
Response
The response will be an array containing one entity for each server that the operation was performed on.
Entity Definition
Name | Type | Description |
---|---|---|
server | string | ID of the server that the operation was performed on. |
isQueued | boolean | Boolean indicating whether the operation was successfully added to the queue. |
links | array | Collection of entity links that point to resources related to this server operation. |
errorMessage | string | If something goes wrong or the request is not queued, this is the message that contains the details about what happened. |
Examples
JSON
[
{
"server":"wa1aliaswb01",
"isQueued":true,
"links":[
{
"rel":"status",
"href":"/v2/operations/alias/status/wa1-12345",
"id":"wa1-12345"
}
]
},
{
"server":"wa1aliaswb02",
"isQueued":false,
"errorMessage":"The operation cannot be queued because the server cannot be found or it is not in a valid state."
}
]
Reset Server
Sends the reset operation to a list of servers and adds operation to queue. (See Description of Server Group Power Commands for details on how the power off operation is used.) Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to reset a single server or group of servers. It should be used in conjunction with the Get Status operation to check the result of the reset command.
URL
Structure
POST https://api.ctl.io/v2/operations/{accountAlias}/servers/reset
Example
POST https://api.ctl.io/v2/operations/ALIAS/servers/reset
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
serverIds | array | List of server IDs to perform reset operation on. | Yes |
Examples
JSON
[
"WA1ALIASWB01",
"WA1ALIASWB02"
]
Response
The response will be an array containing one entity for each server that the operation was performed on.
Entity Definition
Name | Type | Description |
---|---|---|
server | string | ID of the server that the operation was performed on. |
isQueued | boolean | Boolean indicating whether the operation was successfully added to the queue. |
links | array | Collection of entity links that point to resources related to this server operation. |
errorMessage | string | If something goes wrong or the request is not queued, this is the message that contains the details about what happened. |
Examples
JSON
[
{
"server":"wa1aliaswb01",
"isQueued":true,
"links":[
{
"rel":"status",
"href":"/v2/operations/alias/status/wa1-12345",
"id":"wa1-12345"
}
]
},
{
"server":"wa1aliaswb02",
"isQueued":false,
"errorMessage":"The operation cannot be queued because the server cannot be found or it is not in a valid state."
}
]
Set Maintenance Mode
Sends a specified setting for maintenance mode per server to a list of servers and adds operation to queue. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to explicitly turn on or off maintenance mode on multiple servers. Specifically, this call can be used if you want set some servers to have maintenance mode on and others to have it off. If you want to set maintenance mode for servers to all on or all off, you can use the respective methods for starting maintenance mode or stopping maintenance mode for multiple servers.
URL
Structure
POST https://api.ctl.io/v2/operations/{accountAlias}/servers/setMaintenance
Example
POST https://api.ctl.io/v2/operations/ALIAS/servers/setMaintenance
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
servers | array | List of server ID and maintenance mode pairs to set. | Yes |
Servers Definition
Name | Type | Description |
---|---|---|
id | string | ID of server to set maintenance mode on or off |
inMaintenanceMode | boolean | Indicator of whether to place server in maintenance mode or not |
Examples
JSON
{
"servers":[
{
"id": "wa1aliaswb01",
"inMaintenanceMode": "true"
},
{
"id": "wa1aliaswb02",
"inMaintenanceMode": "false"
}
]
}
Response
The response will be an array containing one entity for each server that the operation was performed on.
Entity Definition
Name | Type | Description |
---|---|---|
server | string | ID of the server that the operation was performed on. |
isQueued | boolean | Boolean indicating whether the operation was successfully added to the queue. |
links | array | Collection of entity links that point to resources related to this server operation. |
errorMessage | string | If something goes wrong or the request is not queued, this is the message that contains the details about what happened. |
Examples
JSON
[
{
"server":"wa1aliaswb01",
"isQueued":true,
"links":[
{
"rel":"status",
"href":"/v2/operations/alias/status/wa1-12345",
"id":"wa1-12345"
}
]
},
{
"server":"wa1aliaswb02",
"isQueued":false,
"errorMessage":"The operation cannot be queued because the server cannot be found or it is not in a valid state."
}
]
Shut Down Server
Sends the shut down operation to a list of servers and adds operation to queue. (See Description of Server Group Power Commands for details on how the power off operation is used.) Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to shut down a single server or group of servers. It should be used in conjunction with the Get Status operation to check the result of the shut down command.
URL
Structure
POST https://api.ctl.io/v2/operations/{accountAlias}/servers/shutDown
Example
POST https://api.ctl.io/v2/operations/ALIAS/servers/shutDown
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
serverIds | array | List of server IDs to perform shut down operation on. | Yes |
Examples
JSON
[
"WA1ALIASWB01",
"WA1ALIASWB02"
]
Response
The response will be an array containing one entity for each server that the operation was performed on.
Entity Definition
Name | Type | Description |
---|---|---|
server | string | ID of the server that the operation was performed on. |
isQueued | boolean | Boolean indicating whether the operation was successfully added to the queue. |
links | array | Collection of entity links that point to resources related to this server operation. |
errorMessage | string | If something goes wrong or the request is not queued, this is the message that contains the details about what happened. |
Examples
JSON
[
{
"server":"wa1aliaswb01",
"isQueued":true,
"links":[
{
"rel":"status",
"href":"/v2/operations/alias/status/wa1-12345",
"id":"wa1-12345"
}
]
},
{
"server":"wa1aliaswb02",
"isQueued":false,
"errorMessage":"The operation cannot be queued because the server cannot be found or it is not in a valid state."
}
]
Start Maintenance Mode
Sends a the start maintenance mode operation to a list of servers and adds operation to queue. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to explicitly start maintenance mode on multiple servers.
URL
Structure
POST https://api.ctl.io/v2/operations/{accountAlias}/servers/startMaintenance
Example
POST https://api.ctl.io/v2/operations/ALIAS/servers/startMaintenance
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
serverIds | array | List of server IDs to start maintenance mode on. | Yes |
Request Example
JSON
[
"WA1ALIASWB01",
"WA1ALIASWB02"
]
Response
The response will be an array containing one entity for each server that the operation was performed on.
Entity Definition
Name | Type | Description |
---|---|---|
server | string | ID of the server that the operation was performed on. |
isQueued | boolean | Boolean indicating whether the operation was successfully added to the queue. |
links | array | Collection of entity links that point to resources related to this server operation. |
errorMessage | string | If something goes wrong or the request is not queued, this is the message that contains the details about what happened. |
Examples
JSON
[
{
"server":"wa1aliaswb01",
"isQueued":true,
"links":[
{
"rel":"status",
"href":"/v2/operations/alias/status/wa1-12345",
"id":"wa1-12345"
}
]
},
{
"server":"wa1aliaswb02",
"isQueued":false,
"errorMessage":"The operation cannot be queued because the server cannot be found or it is not in a valid state."
}
]
Stop Maintenance Mode
Sends a the stop maintenance mode operation to a list of servers and adds operation to queue. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to explicitly stop maintenance mode on multiple servers.
URL
Structure
POST https://api.ctl.io/v2/operations/{accountAlias}/servers/stopMaintenance
Example
POST https://api.ctl.io/v2/operations/ALIAS/servers/stopMaintenance
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
serverIds | array | List of server IDs to stop maintenance mode on. | Yes |
Examples
JSON
[
"WA1ALIASWB01",
"WA1ALIASWB02"
]
Response
The response will be an array containing one entity for each server that the operation was performed on.
Entity Definition
Name | Type | Description |
---|---|---|
server | string | ID of the server that the operation was performed on. |
isQueued | boolean | Boolean indicating whether the operation was successfully added to the queue. |
links | array | Collection of entity links that point to resources related to this server operation. |
errorMessage | string | If something goes wrong or the request is not queued, this is the message that contains the details about what happened. |
Examples
JSON
[
{
"server":"wa1aliaswb01",
"isQueued":true,
"links":[
{
"rel":"status",
"href":"/v2/operations/alias/status/wa1-12345",
"id":"wa1-12345"
}
]
},
{
"server":"wa1aliaswb02",
"isQueued":false,
"errorMessage":"The operation cannot be queued because the server cannot be found or it is not in a valid state."
}
]
Public IP: See Firewall
Get Status
Gets the status of a particular job in the queue, which keeps track of any long-running asynchronous requests (such as server power operations or provisioning tasks). Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to check the status of a specific job in the queue. It is usually called after running a batch job and receiving the job identifier from the status link (e.g. Power On Server, Create Server, etc.) and will typically continue to get called until a "succeeded" or "failed" response is returned.
URL
Structure
GET https://api.ctl.io/v2/operations/{accountAlias}/status/{statusId}
Example
GET https://api.ctl.io/v2/operations/ALIAS/status/wa1-12345
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account. | Yes |
Status ID | string | ID of the job to query. Retrieved from the status link in the response to a batch job request. | Yes |
Response
Entity Definition
Name | Type | Description |
---|---|---|
Status | string | The status of the operation. Will be one of the following: "notStarted", "executing", "succeeded", "failed", "resumed" or "unknown". |
Examples
JSON
{
"status":"succeeded"
}
Add Secondary Network
Adds a secondary network adapter to a given server in a given account. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need to add a secondary network adapter to a server. You will need a NetworkId to associate with the server. Users have the option to specify an IP address to assign to the server; otherwise the first available IP address in the network will be assigned. Up to four total network adapters can be attached to a server (i.e. a total of 3 secondary adapters). In addition, only one IP address per secondary network can be associated with a server.
URL
Structure
POST https://api.ctl.io/v2/servers/{accountAlias}/{serverId}/networks
Example
POST https://api.ctl.io/v2/servers/ALIAS/WA1ALIASSERV0101/networks
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for a particular account | Yes |
serverId | string | ID of the server | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
networkId | string | ID of the network. These can be retrieved from the Get Network List API operation | Yes |
ipAddress | string | Optional IP address for the networkId | No |
Examples
JSON
{
"networkId": "61a7e67908ce4bedabfdaf694a1360fe",
"ipAddress": "123.456.1.1"
}
Response
The response is a link to the Get Status operation so the asynchronous job can be tracked. Once successfully completed, the secondary network will be available on the server.
Entity Definition
Name | Type | Description |
---|---|---|
operationId | string | GUID for the item in the queue for completion |
uri | string | Link to review status of the operation |
Examples
JSON
{
"operationId": "2b70710dba4142dcaf3ab2de68e4f40c",
"uri": "http://api.ctl.io/v2-experimental/operations/RSDA/status/2b70710dba4142dcaf3ab2de68e4f40c"
}
Clone Server
Creates a new server as a clone of an existing server. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to create a new server from a standard or custom template, or clone an existing server.
URL
Structure
POST https://api.ctl.io/v2/servers/{accountAlias}
Example
POST https://api.ctl.io/v2/servers/ALIAS/
Request
The request parameters are the same as defined for Create Server with the addition of the sourceServerPassword
parameter being required when cloning a server. Also, note that the sourceServerId
parameter should be the name of the server that is being cloned rather than a template name.
Examples
JSON
{
"name": "web",
"groupId": "2a5c0b9662cf4fc8bf6180f139facdc0",
"sourceServerId": "WA1ALIASWEB01",
"sourceServerPassword": "P@ssw0rd1",
"cpu": 2,
"memoryGB": 4,
"type": "standard"
}
Response
The response will be the same as specified in Create Server.
Create Server
Creates a new server. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to create a new server from a standard or custom template, or clone an existing server.
URL
Structure
POST https://api.ctl.io/v2/servers/{accountAlias}
Example
POST https://api.ctl.io/v2/servers/ALIAS/
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
name | string | Name of the server to create. Alphanumeric characters and dashes only. Must be between 1-8 characters depending on the length of the account alias. The combination of account alias and server name here must be no more than 10 characters in length. (This name will be appended with a two digit number and prepended with the datacenter code and account alias to make up the final server name.) | Yes |
description | string | User-defined description of this server | No |
groupId | string | ID of the parent group. Retrieved from query to parent group, or by looking at the URL on the UI pages in the Control Portal. | Yes |
sourceServerId | string | ID of the server to use a source. May be the ID of a template, or when cloning, an existing server ID. The list of available templates for a given account in a data center can be retrieved from the Get Data Center Deployment Capabilities API operation. (Ignored for bare metal servers.) | Yes |
isManagedOS | bool | Whether to create the server as managed or not. Default is false. (Ignored for bare metal servers.) | No |
isManagedBackup | bool | Whether to add managed backup to the server. Must be a managed OS server. (Ignored for bare metal servers.) | No |
primaryDns | string | Primary DNS to set on the server. If not supplied the default value set on the account will be used. | No |
secondaryDns | string | Secondary DNS to set on the server. If not supplied the default value set on the account will be used. | No |
networkId | string | ID of the network to which to deploy the server. If not provided, a network will be chosen automatically. If your account has not yet been assigned a network, leave this blank and one will be assigned automatically. The list of available networks for a given account in a data center can be retrieved from the Get Data Center Deployment Capabilities API operation. | No |
ipAddress | string | IP address to assign to the server. If not provided, one will be assigned automatically. (Ignored for bare metal servers.) | No |
password | string | Password of administrator or root user on server. If not provided, one will be generated automatically. | No |
sourceServerPassword | string | Password of the source server, used only when creating a clone from an existing server. (Ignored for bare metal servers.) | No |
cpu | integer | Number of processors to configure the server with (1-16) (ignored for bare metal servers) | Yes |
cpuAutoscalePolicyId | string | ID of the vertical CPU Autoscale policy to associate the server with. Available IDs can be retrieved from the Get Autoscale Policies API operation. (Ignored for bare metal servers.) | No |
memoryGB | integer | Number of GB of memory to configure the server with (1-128) (ignored for bare metal servers) | Yes |
customFields | complex | Collection of custom field ID-value pairs to set for the server. | No |
additionalDisks | complex | Collection of disk parameters (ignored for bare metal servers) | No |
ttl | dateTime | Date/time that the server should be deleted (ignored for bare metal servers) | No |
packages | complex | Collection of packages to run on the server after it has been built (ignored for bare metal servers) | No |
configurationId | string | Only required for bare metal servers. Specifies the identifier for the specific configuration type of bare metal server to deploy. A list of possible configs can be retrieved from the Get Data Center Bare Metal Capabilities API operation. (Ignored for standard servers.) | Yes |
osType | string | Only required for bare metal servers. Specifies the OS to provision with the bare metal server. Currently, the only supported OS types are redHat6_64Bit , centOS6_64Bit , windows2012R2Standard_64Bit , windows2012R2Datacenter_64Bit , ubuntu14_64Bit . A list of importable OS types for a given data center can be retrieved from the Get Data Center Bare Metal Capabilities API operation. (Ignored for standard servers.) |
Yes |
CustomFields Definition
Name | Type | Description |
---|---|---|
id | string | ID of the custom field to set. Available custom field IDs can be retrieved from the Get Custom Fields API operation. |
value | string | Value to set the custom field to for this server. |
AdditionalDisks Definition
Name | Type | Description |
---|---|---|
path | string | File system path for disk (Windows drive letter or Linux mount point). Must not be one of reserved names. |
sizeGB | integer | Amount in GB to allocate for disk, up to 1024 GB per. |
type | string | Whether the disk should be raw or partitioned |
Packages Definition
Name | Type | Description |
---|---|---|
packageId | string | ID of the package to run on the server after it builds. Available package IDs can be retrieved from the Get Packages API operation. |
parameters | complex | Collection of name-value pairs to specify package-specific parameters. |
Examples
JSON
{
"name": "web",
"description": "My web server",
"groupId": "2a5c0b9662cf4fc8bf6180f139facdc0",
"sourceServerId": "RHEL-6-64-TEMPLATE",
"isManagedOS": false,
"primaryDns": "172.17.1.26",
"secondaryDns": "172.17.1.27",
"networkId": "d51ef9f58f244205922eab9d240b126f",
"ipAddress": "10.123.456.12",
"password": "P@ssw0rd1",
"cpu": 2,
"memoryGB": 4,
"type": "standard",
"storageType": "standard",
"customFields":[
{
"id": "90b3c5e28162456781d36ee42c5771a3",
"value": "custom value"
}
],
"additionalDisks":[
{
"path": "data",
"sizeGB": 10,
"type": "partitioned"
}
],
"ttl": "2014-12-17T01:17:17Z"
}
Response
Entity Definition
Name | Type | Description |
---|---|---|
server | string | ID of the server that the operation was performed on. |
isQueued | boolean | Boolean indicating whether the operation was successfully added to the queue. |
links | array | Collection of entity links that point to resources related to this server operation. |
errorMessage | string | If something goes wrong or the request is not queued, this is the message that contains the details about what happened. |
Examples
JSON
{
"server":"web",
"isQueued":true,
"links":[
{
"rel":"status",
"href":"/v2/operations/alias/status/wa1-12345",
"id":"wa1-12345"
},
{
"rel":"self", "href":"/v2/servers/alias/8134c91a66784c6dada651eba90a5123?uuid=True",
"id":"8134c91a66784c6dada651eba90a5123",
"verbs":[
"GET"
]
}
]
}
Delete Server
Sends the delete operation to a given server and adds operation to queue. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to delete a server that is no longer being used.
URL
Structure
DELETE https://api.ctl.io/v2/servers/{accountAlias}/{serverId}
Example
DELETE https://api.ctl.io/v2/servers/ACCT/WA1ACCTWB01
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
ServerId | string | ID of the server to be deleted. Retrieved from query to containing group, or by looking at the URL when viewing a server in the Control Portal. | Yes |
Response
Entity Definition
Name | Type | Description |
---|---|---|
server | string | ID of the server that is being deleted. |
isQueued | boolean | Boolean indicating whether the delete operation was successfully added to the queue. |
links | array | Collection of entity links that point to resources related to this server operation. |
errorMessage | string | If something goes wrong or the request is not queued, this is the message that contains the details about what happened. |
Examples
JSON
{
"server":"wa1acctwb01",
"isQueued":true,
"links":[
{
"rel":"status",
"href":"/v2/operations/alias/status/wa1-12345",
"id":"wa1-12345"
}
]
}
Get Available Server Imports
Gets the list of available servers that can be imported. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to get the list of available OVFs that can be imported with the Import Server API. These OVFs are ones that have been uploaded to your FTP server as described in Using Self-Service VM Import.
URL
Structure
GET https://api.ctl.io/v2/vmImport/{accountAlias}/{locationId}/available
Example
GET https://api.ctl.io/v2/vmImport/ALIAS/WA1/available
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
LocationId | string | Data center location identifier | Yes |
Response
The response is an array of available servers for import. The list of available servers is dependent upon what OVFs have been uploaded to your FTP server as described in Using Self-Service VM Import.
Entity Definition
Name | Type | Description |
---|---|---|
id | string | ID of the OVF. |
name | string | Name of the OVF. |
storageSizeGB | integer | Number of GB of storage the server is configured with. |
cpuCount | integer | Number of processors the server is configured with. |
memorySizeMB | integer | Number of MB of memory the server is configured with. |
Examples
JSON
[
{
"id":"ALIAS/CUSTOM-OVF-IMPORT",
"name":"CUSTOM-OVF-IMPORT-RHEL-6-64",
"storageSizeGB":16,
"cpuCount":1,
"memorySizeMB":1024
},
{
"id":"ALIAS/CUSTOM-OVF-IMPORT-2",
"name":"CUSTOM-OVF-IMPORT-2",
"storageSizeGB":60,
"cpuCount":2,
"memorySizeMB":4096
}
]
Get Server Credentials
Retrieves the administrator/root password on an existing server. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to get the administrator/root password for an existing server.
URL
Structure
GET https://api.ctl.io/v2/servers/{accountAlias}/{serverId}/credentials
Example
GET https://api.ctl.io/v2/servers/ACCT/WA1ACCTSERV0101/credentials
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
ServerId | string | ID of the server with the credentials to return. Retrieved from query to containing group, or by looking at the URL when viewing a server in the Control Portal. | Yes |
Response
Entity Definition
Name | Type | Description |
---|---|---|
userName | string | The username of root/administrator on the server. Typically "root" for Linux machines and "Administrator" for Windows. |
password | string | The administrator/root password used to login. |
Examples
JSON
{
"userName":"root",
"password":"P@ssw0rd1"
}
Get Server
Gets the details for a individual server. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to find out all the details for a server. It can be used to look for changes, its status, or to retrieve links to associated resources.
URL
Structure
GET https://api.ctl.io/v2/servers/{accountAlias}/{serverId}
Example
GET https://api.ctl.io/v2/servers/ALIAS/WA1ACCTSERV0101
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
ServerId | string | ID of the server being queried. Retrieved from query to containing group, or by looking at the URL when viewing a server in the Control Portal. | Yes |
Response
Server Entity Definition
Name | Type | Description |
---|---|---|
id | string | ID of the server being queried |
name | string | Name of the server |
displayName | string | Friendly display name for the server (can be the same as the name) |
description | string | User-defined description of this server |
groupId | string | ID of the parent group |
isTemplate | boolean | Boolean indicating whether this is a custom template or running server |
locationId | string | Data center that this server resides in |
osType | string | Friendly name of the Operating System the server is running |
isManagedOS | boolean | Describes whether the server is managed or not. Only appears when the server is managed. |
isManagedBackup | boolean | Describes whether the server has Managed Backup or not. Only appears when the server has both Managed OS and Managed Backup. |
status | string | Describes whether the server is active or not |
details | complex | Managed applications, resource allocations, alert policies, snapshots and more. |
type | string | Whether a standard or premium server |
storageType | string | Whether it uses standard or premium storage |
changeInfo | complex | Describes "created" and "modified" details |
links | array | Collection of entity links that point to resources related to this server |
Details Definition
Name | Type | Description |
---|---|---|
ipAddresses | complex | Details about IP addresses associated with the server |
alertPolicies | complex | Describe each alert policy applied to the server |
cpu | integer | How many vCPUs are allocated to the server |
diskCount | integer | How many disks are attached to the server |
hostName | string | Fully qualified name of the server |
inMaintenanceMode | boolean | Indicator of whether server has been placed in maintenance mode |
memoryMB | integer | How many MB of memory are allocated to the server |
powerState | string | Whether the server is running or not |
storageGB | integer | How many total GB of storage are allocated to the server |
disks | complex | The disks attached to the server |
partitions | complex | The partitions defined for the server |
snapshots | complex | Details about any snapshot associated with the server |
customFields | complex | Details about any custom fields and their values |
processorDescription | string | Processor configuration description (for bare metal servers only) |
storageDescription | string | Storage configuration description (for bare metal servers only) |
IPAddresses Definition
Name | Type | Description |
---|---|---|
public | string | If applicable, the public IP |
internal | string | Private IP address. If associated with a public IP address, then the "public" value is populated |
AlertPolicies Definition
Name | Type | Description |
---|---|---|
id | string | Unique identifier of the policy |
name | string | User-defined name of the alert policy |
links | array | Collection of entity links that point to resources related to this policy |
Disks Definition
Name | Type | Description |
---|---|---|
id | string | Unique identifier of the disk |
sizeGB | integer | Size of the disk in GB |
partitionPaths | array | List of partition paths on the disk |
Partitions Definition
Name | Type | Description |
---|---|---|
sizeGB | number | Size of the partition in GB |
path | string | File system location path of the partition |
Snapshots Definition
Name | Type | Description |
---|---|---|
name | string | Timestamp of the snapshot |
links | array | Collection of entity links that point to resources related to this snapshot |
CustomFields Definition
Name | Type | Description |
---|---|---|
id | string | Unique ID of the custom field |
name | string | Friendly name of the custom field |
value | string | Underlying value of the field |
displayValue | string | Shown value of the field |
ChangeInfo Definition
Name | Type | Description |
---|---|---|
createdDate | dateTime | Date/time that the server was created |
createdBy | string | Who created the server |
modifiedDate | dateTime | Date/time that the server was last updated |
modifiedBy | string | Who modified the server last |
Examples
JSON
{
"id": "WA1ALIASWB01",
"name": "WA1ALIASWB01",
"description": "My web server",
"groupId": "2a5c0b9662cf4fc8bf6180f139facdc0",
"isTemplate": false,
"locationId": "WA1",
"osType": "Windows 2008 64-bit",
"status": "active",
"details": {
"ipAddresses": [
{
"internal": "10.82.131.44"
},
{
"public": "91.14.111.101",
"internal": "10.82.131.45"
}
],
"alertPolicies": [
{
"id": "15836e6219e84ac736d01d4e571bb950",
"name": "Production Web Servers - RAM",
"links": [
{
"rel": "self",
"href": "/v2/alertPolicies/alias/15836e6219e84ac736d01d4e571bb950"
},
{
"rel": "alertPolicyMap",
"href": "/v2/servers/alias/WA1ALIASWB01/alertPolicies/15836e6219e84ac736d01d4e571bb950",
"verbs": [
"DELETE"
]
}
]
},
{
"id": "2bec81dd90aa4217887548c3c20d7421",
"name": "Production Web Servers - Disk",
"links": [
{
"rel": "self",
"href": "/v2/alertPolicies/alias/2bec81dd90aa4217887548c3c20d7421"
},
{
"rel": "alertPolicyMap",
"href": "/v2/servers/alias/WA1ALIASWB01/alertPolicies/2bec81dd90aa4217887548c3c20d7421",
"verbs": [
"DELETE"
]
}
]
}
],
"cpu": 2,
"diskCount": 1,
"hostName": "WA1ALIASWB01.customdomain.com",
"inMaintenanceMode": false,
"memoryMB": 4096,
"powerState": "started",
"storageGB": 60,
"disks":[
{
"id":"0:0",
"sizeGB":60,
"partitionPaths":[]
}
],
"partitions":[
{
"sizeGB":59.654,
"path":"C:\\"
}
],
"snapshots": [
{
"name": "2014-05-16.23:45:52",
"links": [
{
"rel": "self",
"href": "/v2/servers/alias/WA1ALIASWB01/snapshots/40"
},
{
"rel": "delete",
"href": "/v2/servers/alias/WA1ALIASWB01/snapshots/40"
},
{
"rel": "restore",
"href": "/v2/servers/alias/WA1ALIASWB01/snapshots/40/restore"
}
]
}
],
"customFields": [
{
"id": "22f002123e3b46d9a8b38ecd4c6df7f9",
"name": "Cost Center",
"value": "IT-DEV",
"displayValue": "IT-DEV"
},
{
"id": "58f83af6123846769ee6cb091ce3561e",
"name": "CMDB ID",
"value": "1100003",
"displayValue": "1100003"
}
]
},
"type": "standard",
"storageType": "standard",
"changeInfo": {
"createdDate": "2012-12-17T01:17:17Z",
"createdBy": "user@domain.com",
"modifiedDate": "2014-05-16T23:49:25Z",
"modifiedBy": "user@domain.com"
},
"links": [
{
"rel": "self",
"href": "/v2/servers/alias/WA1ALIASWB01",
"id": "WA1ALIASWB01",
"verbs": [
"GET",
"PATCH",
"DELETE"
]
},
{
"rel": "group",
"href": "/v2/groups/alias/2a5c0b9662cf4fc8bf6180f139facdc0",
"id": "2a5c0b9662cf4fc8bf6180f139facdc0"
},
{
"rel": "account",
"href": "/v2/accounts/alias",
"id": "alias"
},
{
"rel": "billing",
"href": "/v2/billing/alias/estimate-server/WA1ALIASWB01"
},
{
"rel": "statistics",
"href": "/v2/servers/alias/WA1ALIASWB01/statistics"
},
{
"rel": "scheduledActivities",
"href": "/v2/servers/alias/WA1ALIASWB01/scheduledActivities"
},
{
"rel": "publicIPAddresses",
"href": "/v2/servers/alias/WA1ALIASWB01/publicIPAddresses",
"verbs": [
"POST"
]
},
{
"rel": "alertPolicyMappings",
"href": "/v2/servers/alias/WA1ALIASWB01/alertPolicies",
"verbs": [
"POST"
]
},
{
"rel": "antiAffinityPolicyMapping",
"href": "/v2/servers/alias/WA1ALIASWB01/antiAffinityPolicy",
"verbs": [
"DELETE",
"PUT"
]
},
{
"rel": "cpuAutoscalePolicyMapping",
"href": "/v2/servers/alias/WA1ALIASWB01/cpuAutoscalePolicy",
"verbs": [
"DELETE",
"PUT"
]
},
{
"rel": "capabilities",
"href": "/v2/servers/alias/WA1ALIASWB01/capabilities"
},
{
"rel": "credentials",
"href": "/v2/servers/alias/WA1ALIASWB01/credentials"
},
{
"rel": "publicIPAddress",
"href": "/v2/servers/alias/WA1ALIASWB01/publicIPAddresses/91.14.111.101",
"id": "91.14.111.101",
"verbs": [
"GET",
"PUT",
"DELETE"
]
}
]
}
Import Server
Imports a new server from an uploaded OVF. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to import a new server from an OVF that has been uploaded to your FTP server. For more information about uploading an OVF for import, see Using Self-Service VM Import and make sure the OVF meets these requirements before attempting to import it.
URL
Structure
POST https://api.ctl.io/v2/vmImport/{accountAlias}
Example
POST https://api.ctl.io/v2/vmImport/ALIAS/
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
name | string | Name of the server to create. Alphanumeric characters and dashes only. Must be between 1-7 characters depending on the length of the account alias. (This name will be appended with a two digit number and prepended with the datacenter code and account alias to make up the final server name.) | Yes |
description | string | User-defined description of this server | No |
groupId | string | ID of the parent group. Retrieved from query to parent group, or by looking at the URL on the UI pages in the Control Portal. | Yes |
primaryDns | string | Primary DNS to set on the server. If not supplied the default value set on the account will be used. | No |
secondaryDns | string | Secondary DNS to set on the server. If not supplied the default value set on the account will be used. | No |
networkId | string | ID of the network to which to deploy the server. If not provided, a network will be chosen automatically. If your account has not yet been assigned a network, leave this blank and one will be assigned automatically. The list of available networks for a given account in a data center can be retrieved from the Get Data Center Deployment Capabilities API operation. | No |
password | string | Password of administrator or root user on server. This password must match the one set on the server being imported or the import will fail. | Yes |
cpu | integer | Number of processors to configure the server with (1-16). If this value is different from the one specified in the OVF, the import process will resize the server according to the value specified here. | Yes |
memoryGB | integer | Number of GB of memory to configure the server with (1-128). If this value is different from the one specified in the OVF, the import process will resize the server according to the value specified here. | Yes |
customFields | complex | Collection of custom field ID-value pairs to set for the server. | No |
ovfId | string | The identifier of the OVF that defines the server to import. This can be retrieved from the Get Available Server Imports API operation. | |
ovfOsType | string | The OS type of the server being imported. Currently, the only supported OS types are redHat6_64Bit , windows2008R2DataCenter_64bit , and windows2012R2DataCenter_64Bit . A list of importable OS types for a given data center can be retrieved from the Get Data Center Deployment Capabilities API operation. |
CustomFields Definition
Name | Type | Description |
---|---|---|
id | string | ID of the custom field to set. Available custom field IDs can be retrieved from the Get Custom Fields API operation. |
value | string | Value to set the custom field to for this server. |
Examples
JSON
{
"name": "import",
"description": "Custom Import Server",
"groupId": "3d30a6bc6b5443388b7bc966d073e353",
"primaryDns": "172.17.1.26",
"secondaryDns": "172.17.1.27",
"networkId": "d51ef9f58f244205922eab9d240b126f",
"password": "P@ssw0rd1",
"cpu": 2,
"memoryGB": 4,
"type": "standard",
"storageType": "standard",
"customFields":[
{
"id": "90b3c5e28162456781d36ee42c5771a3",
"value": "custom value"
}
],
"ovfId": "ALIAS/CUSTOM-OVF-IMPORT",
"ovfOsType": "redHat6_64Bit"
}
Response
Entity Definition
Name | Type | Description |
---|---|---|
server | string | ID of the server that the operation was performed on. |
isQueued | boolean | Boolean indicating whether the operation was successfully added to the queue. |
links | array | Collection of entity links that point to resources related to this server operation. |
errorMessage | string | If something goes wrong or the request is not queued, this is the message that contains the details about what happened. |
Examples
JSON
{
"server":"import",
"isQueued":true,
"links":[
{
"rel":"status",
"href":"/v2/operations/alias/status/wa1-12345",
"id":"wa1-12345"
},
{
"rel":"self", "href":"/v2/servers/alias/8134c91a66784c6dada651eba90a5123?uuid=True",
"id":"8134c91a66784c6dada651eba90a5123",
"verbs":[
"GET"
]
}
]
}
Remove Secondary Network
Removes a secondary network adapter from a given server in a given account. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need to remove a secondary network adapter from a server. You will need a NetworkId to de-associate with the server.
URL
Structure
DELETE https://api.ctl.io/v2/servers/{accountAlias}/{serverId}/networks/{networkId}
Example
DELETE https://api.ctl.io/v2/servers/ALIAS/WA1ALIASSERV0101/networks/f49875b17cee4b8c99bf1ab75aa286d6
Request
URI Properties
Name | Type | Description | Req. |
---|---|---|---|
accountAlias | string | Short code for a particular account | Yes |
serverId | string | ID of the server | Yes |
networkId | string | ID of the network. These can be retrieved from the Get Network List API operation | Yes |
Response
The response is a link to the Get Status operation so the asynchronous job can be tracked. Once successfully completed, the secondary network will be removed from the server.
Entity Definition
Name | Type | Description |
---|---|---|
operationId | string | GUID for the item in the queue for completion |
uri | string | Link to review status of the operation |
Examples
JSON
{
"operationId": "6c8d7b5349054fe6a532539ff066b53b",
"uri": "http://api.ctl.io/v2-experimental/operations/ALIAS/status/6c8d7b5349054fe6a532539ff066b53b"
}
Set Server CPU/Memory
Changes the amount of CPU cores and memory (in GB) on an existing server. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to change the number of CPU cores or the amount of memory for a given server.
URL
Structure
PATCH https://api.ctl.io/v2/servers/{accountAlias}/{serverId}
Example
PATCH https://api.ctl.io/v2/servers/ACCT/WA1ACCTSERV0101
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
ServerId | string | ID of the server with the CPU or memory configuration to update. Retrieved from query to containing group, or by looking at the URL when viewing a server in the Control Portal. | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
patchOperation | array | A list of properties, values, and the operations to perform with them for the server. | Yes |
PatchOperation Definition
Name | Type | Description |
---|---|---|
op | string | The operation to perform on a given property of the server. In this case, the value must be "set" for setting the CPU or memory amount. |
member | string | The property of the server to perform the operation on. In this case, the value will be either "cpu" or "memory". |
value | integer | The integer value to set for the given member. For CPU this represents the number of cores; for memory it is in GB. |
Examples
JSON
[
{
"op":"set",
"member":"cpu",
"value":"4"
},
{
"op":"set",
"member":"memory",
"value":"8"
}
]
Response
The response is a link to the Get Status operation so the asynchronous job can be tracked. Once successfully completed, the server configuration will be changed as specified.
Entity Definition
Name | Type | Value | Description |
---|---|---|---|
rel | string | status | The link type |
href | string | /v2/operations/[ALIAS]/status/[ID] | Address of the job in the queue |
id | string | [ID] | The identifier of the job in queue. Can be passed to Get Status call to retrieve status of job. |
Examples
JSON
{
"rel":"status",
"href":"/v2/operations/alias/status/wa1-12345",
"id":"wa1-12345"
}
Set Server Credentials
Changes the administrator/root password on an existing server given the current administrator/root password. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to change the administrator/root password on an existing server.
URL
Structure
PATCH https://api.ctl.io/v2/servers/{accountAlias}/{serverId}
Example
PATCH https://api.ctl.io/v2/servers/ACCT/WA1ACCTSERV0101
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
ServerId | string | ID of the server with the credentials to update. Retrieved from query to containing group, or by looking at the URL when viewing a server in the Control Portal. | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
patchOperation | array | A list of properties, values, and the operations to perform with them for the server. | Yes |
PatchOperation Definition
Name | Type | Description |
---|---|---|
op | string | The operation to perform on a given property of the server. In this case, the value must be "set" for setting the credentials. |
member | string | The property of the server to perform the operation on. In this case, the value must be "password" for setting the credentials. |
value | complex | The current and new administrator/root password values. |
Value Definition
Name | Type | Description |
---|---|---|
current | string | The current administrator/root password used to login. |
password | string | The new administrator/root password to change to. |
Examples
JSON
[
{
"op":"set",
"member":"password",
"value":
{
"current":"OldP@ssw0rd1",
"password":"NewP@ssw0rd2"
}
}
]
Response
The response is a link to the Get Status operation so the asynchronous job can be tracked. Once successfully completed, the password will be changed as specified.
Entity Definition
Name | Type | Value | Description |
---|---|---|---|
rel | string | status | The link type |
href | string | /v2/operations/[ALIAS]/status/[ID] | Address of the job in the queue |
id | string | [ID] | The identifier of the job in queue. Can be passed to Get Status call to retrieve status of job. |
Examples
JSON
{
"rel":"status",
"href":"/v2/operations/alias/status/wa1-12345",
"id":"wa1-12345"
}
Set Server Custom Fields
Changes the custom field values for an existing server. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to change the custom field values for a given server.
URL
Structure
PATCH https://api.ctl.io/v2/servers/{accountAlias}/{serverId}
Example
PATCH https://api.ctl.io/v2/servers/ACCT/WA1ACCTSERV0101
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
ServerId | string | ID of the server to update. Retrieved from query to containing group, or by looking at the URL when viewing a server in the Control Portal. | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
patchOperation | array | A list of properties, values, and the operations to perform with them for the server. | Yes |
PatchOperation Definition
Name | Type | Description |
---|---|---|
op | string | The operation to perform on a given property of the server. In this case, the value must be "set" for setting the custom field values. |
member | string | The property of the server to perform the operation on. In this case, the value will be "customFields". |
value | array | A list of id-value pairs for all custom fields including all required values and other custom field values that you wish to set. Note: You must specify the complete list of custom field values to set on the server. If you want to change only one value, specify all existing field values along with the new value for the field you wish to change. To unset the value for an unrequired field, you may leave the field id-value pairing out, however all required fields must be included. (You can get existing custom field value info by using the Get Server call to see all the details of the server or the Get Custom Fields call to see available custom fields for a given account.) |
Examples
JSON
[
{
"op":"set",
"member":"customFields",
"value":[
{
"id":"dba67b154f774a1fb413ddfa3dc4ac1d",
"value":"Required Value 1"
},
{
"id":"58f83bf6675846769ee6cb091ce3561e",
"value":"Optional Value 1"
},
{
"id":"22f002e08f3b46d9a8b38ecd4c6df7f9",
"value":"Required Value 2"
}
]
}
]
Response
The response will not contain JSON content, but should return the HTTP 204 No Content
response upon making the changes successfully.
Set Server Description/Group
Changes the description and parent group of an existing server. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to change the description or the parent group of a given server.
URL
Structure
PATCH https://api.ctl.io/v2/servers/{accountAlias}/{serverId}
Example
PATCH https://api.ctl.io/v2/servers/ACCT/WA1ACCTSERV0101
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
ServerId | string | ID of the server to update. Retrieved from query to containing group, or by looking at the URL when viewing a server in the Control Portal. | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
patchOperation | array | A list of properties, values, and the operations to perform with them for the server. | Yes |
PatchOperation Definition
Name | Type | Description |
---|---|---|
op | string | The operation to perform on a given property of the server. In this case, the value must be "set" for setting the description and parent group. |
member | string | The property of the server to perform the operation on. In this case, the value will be either "description" or "groupId". |
value | string | The value to set for the given member. This is either the description of the server to set, or the unique identifier of the group to set as the parent. |
Examples
JSON
[
{
"op":"set",
"member":"description",
"value":"New Description"
},
{
"op":"set",
"member":"groupId",
"value":"2a5c0b9662cf4fc8bf6180f139facdc0"
}
]
Response
The response will not contain JSON content, but should return the HTTP 204 No Content
response upon making the changes successfully.
Set Server Disks
Changes (adds or removes) disks on an existing server. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to change the disks on an existing server.
URL
Structure
PATCH https://api.ctl.io/v2/servers/{accountAlias}/{serverId}
Example
PATCH https://api.ctl.io/v2/servers/ACCT/WA1ACCTSERV0101
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
ServerId | string | ID of the server with the disk configuration to update. Retrieved from query to containing group, or by looking at the URL when viewing a server in the Control Portal. | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
patchOperation | array | A list of properties, values, and the operations to perform with them for the server. | Yes |
PatchOperation Definition
Name | Type | Description |
---|---|---|
op | string | The operation to perform on a given property of the server. In this case, the value must be "set" for setting the disk configuration. |
member | string | The property of the server to perform the operation on. In this case, the value must be "disks" for setting the disks. |
value | array | A list of information for all disks to be on the server including type (raw or partition), size, and path. Note: You must specify the complete list of disks to be on the server. If you want to add or resize a disk, specify all existing disks/sizes along with a new entry for the disk to add or the new size of an existing disk. To delete a disk, just specify all the disks that should remain. (You can get existing disk info by using the Get Server call to see all the details of the server.) |
Examples
JSON
[
{
"op":"set",
"member":"disks",
"value":[
{
"diskId":"0:0",
"sizeGB":"1",
"type":"raw"
},
{
"diskId":"0:1",
"sizeGB":"2",
"type":"raw"
},
{
"diskId":"0:2",
"sizeGB":"16",
"type":"raw"
},
{
"path":"/extra",
"sizeGB":"20",
"type":"partitioned"
}
]
}
]
Response
The response is a link to the Get Status operation so the asynchronous job can be tracked. Once successfully completed, the server configuration will be changed as specified.
Entity Definition
Name | Type | Value | Description |
---|---|---|---|
rel | string | status | The link type |
href | string | /v2/operations/[ALIAS]/status/[ID] | Address of the job in the queue |
id | string | [ID] | The identifier of the job in queue. Can be passed to Get Status call to retrieve status of job. |
Examples
JSON
{
"rel":"status",
"href":"/v2/operations/alias/status/wa1-12345",
"id":"wa1-12345"
}
Archive Server
Sends the archive operation to a list of servers and adds operation to queue. (See Understanding VM Deployment Options and Power States for details on the archive operation.) Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to archive a single server or group of servers. It should be used in conjunction with the Get Status operation to check the result of the archive command.
URL
Structure
POST https://api.ctl.io/v2/operations/{accountAlias}/servers/archive
Example
POST https://api.ctl.io/v2/operations/ALIAS/servers/archive
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
serverIds | array | List of server IDs to perform archive operation on. | Yes |
Examples
JSON
[
"WA1ALIASWB01",
"WA1ALIASWB02"
]
Response
The response will be an array containing one entity for each server that the operation was performed on.
Entity Definition
Name | Type | Description |
---|---|---|
server | string | ID of the server that the operation was performed on. |
isQueued | boolean | Boolean indicating whether the operation was successfully added to the queue. |
links | array | Collection of entity links that point to resources related to this server operation. |
errorMessage | string | If something goes wrong or the request is not queued, this is the message that contains the details about what happened. |
Examples
JSON
[
{
"server":"wa1aliaswb01",
"isQueued":true,
"links":[
{
"rel":"status",
"href":"/v2/operations/alias/status/wa1-12345",
"id":"wa1-12345"
}
]
},
{
"server":"wa1aliaswb02",
"isQueued":false,
"errorMessage":"The operation cannot be queued because the server cannot be found or it is not in a valid state."
}
]
Create Snapshot
Sends the create snapshot operation to a list of servers (along with the number of days to keep the snapshot for) and adds operation to queue. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to create a snapshot of a single server or group of servers. It should be used in conjunction with the Get Status operation to check the result of the create snapshot command.
URL
Structure
POST https://api.ctl.io/v2/operations/{accountAlias}/servers/createSnapshot
Example
POST https://api.ctl.io/v2/operations/ALIAS/servers/createSnapshot
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
snapshotExpirationDays | integer | Number of days to keep the snapshot for (must be between 1 and 10). | Yes |
serverIds | array | List of server names to perform create snapshot operation on. | Yes |
Examples
JSON
{
"snapshotExpirationDays":"7",
"serverIds":[
"WA1ALIASWB01",
"WA1ALIASWB02"
]
}
Response
The response will be an array containing one entity for each server that the operation was performed on.
Entity Definition
Name | Type | Description |
---|---|---|
server | string | ID of the server that the operation was performed on. |
isQueued | boolean | Boolean indicating whether the operation was successfully added to the queue. |
links | array | Collection of entity links that point to resources related to this server operation. |
errorMessage | string | If something goes wrong or the request is not queued, this is the message that contains the details about what happened. |
Examples
JSON
[
{
"server":"wa1aliaswb01",
"isQueued":true,
"links":[
{
"rel":"status",
"href":"/v2/operations/alias/status/wa1-12345",
"id":"wa1-12345"
}
]
},
{
"server":"wa1aliaswb02",
"isQueued":false,
"errorMessage":"The operation cannot be queued because the server cannot be found or it is not in a valid state."
}
]
Delete Snapshot
Deletes a given server snapshot. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to delete an existing server snapshot.
URL
Structure
DELETE https://api.ctl.io/v2/servers/{accountAlias}/{serverId}/snapshots/{snapshotId}
Example
DELETE https://api.ctl.io/v2/servers/ALIAS/WA1ALIASSERV0101/snapshots/10
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
ServerId | string | ID of the server with the snapshot to delete. Retrieved from query to containing group, or by looking at the URL when viewing a server in the Control Portal. | Yes |
SnapshotId | string | ID of the snapshot to delete. Retrieved from the links in the snapshots section of the Get Server response. |
Response
The response is a link to the Get Status operation so the asynchronous job can be tracked. Once successfully completed, the server snapshot will be deleted as specified.
Entity Definition
Name | Type | Value | Description |
---|---|---|---|
rel | string | status | The link type |
href | string | /v2/operations/[ALIAS]/status/[ID] | Address of the job in the queue |
id | string | [ID] | The identifier of the job in queue. Can be passed to Get Status call to retrieve status of job. |
Examples
JSON
{
"rel":"status",
"href":"/v2/operations/alias/status/wa1-12345",
"id":"wa1-12345"
}
Execute Package
Executes a single package on one or more servers. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to execute a Blueprint package that is available from within a given account on one or more servers. The list of available packages can be retrieved from the Get Packages API operation.
URL
Structure
POST https://api.ctl.io/v2/operations/{accountAlias}/servers/executePackage
Example
POST https://api.ctl.io/v2/operations/ALIAS/servers/executePackage
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
servers | array | List of server IDs to run the package on. | Yes |
package | complex | The package entity describing which package to run on the specified servers. | Yes |
Package Definition
Name | Type | Description |
---|---|---|
packageId | string | Unique identifier of the package to execute. |
parameters | complex | Set of key-value pairs for setting the package-specific parameters defined. |
Examples
JSON
{
"servers": [
"wa1aliaswb01"
],
"package": {
"packageId": "86567681-c79c-1234-a530-850708435c23",
"parameters": {
"AB.HelloWorld.Variable": "someValue"
}
}
}
Response
The response will be an array containing one entity for each server that the operation was performed on.
Entity Definition
Name | Type | Description |
---|---|---|
server | string | ID of the server that the operation was performed on. |
isQueued | boolean | Boolean indicating whether the operation was successfully added to the queue. |
links | array | Collection of entity links that point to resources related to this server operation. |
errorMessage | string | If something goes wrong or the request is not queued, this is the message that contains the details about what happened. |
Examples
JSON
[
{
"server":"wa1aliaswb01",
"isQueued":true,
"links":[
{
"rel":"status",
"href":"/v2/operations/alias/status/wa1-12345",
"id":"wa1-12345"
}
]
}
]
Restore Server
Restores a given archived server to a specified group. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to restore a server that has been archived.
URL
Structure
POST https://api.ctl.io/v2/servers/{accountAlias}/{serverId}/restore
Example
POST https://api.ctl.io/v2/servers/ACCT/WA1ACCTSERV0101/restore
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
ServerId | string | ID of the archived server to restore. Retrieved from query to containing group, or by looking at the URL when viewing a server in the Control Portal. | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
targetGroupId | string | The unique identifier of the target group to restore the server to. | Yes |
Examples
JSON
{
"targetGroupId": "2a5c0b9662cf4fc8bf6180f139facdc0"
}
Response
The response is a link to the Get Status operation so the asynchronous job can be tracked. Once successfully completed, the server will be restored as specified.
Entity Definition
Name | Type | Value | Description |
---|---|---|---|
rel | string | status | The link type |
href | string | /v2/operations/[ALIAS]/status/[ID] | Address of the job in the queue |
id | string | [ID] | The identifier of the job in queue. Can be passed to Get Status call to retrieve status of job. |
Examples
JSON
{
"rel":"status",
"href":"/v2/operations/alias/status/wa1-12345",
"id":"wa1-12345"
}
Revert to Snapshot
Reverts a server to a snapshot. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to revert a server to the state it was in when the given snapshot was taken.
URL
Structure
POST https://api.ctl.io/v2/servers/{accountAlias}/{serverId}/snapshots/{snapshotId}/restore
Example
POST https://api.ctl.io/v2/servers/ALIAS/WA1ALIASSERV0101/snapshots/10/restore
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
ServerId | string | ID of the server with the snapshot to restore. Retrieved from query to containing group, or by looking at the URL when viewing a server in the Control Portal. | Yes |
SnapshotId | string | ID of the snapshot to restore. Retrieved from the links in the snapshots section of the Get Server response. |
Response
The response is a link to the Get Status operation so the asynchronous job can be tracked. Once successfully completed, the server snapshot will be deleted as specified.
Entity Definition
Name | Type | Value | Description |
---|---|---|---|
rel | string | status | The link type |
href | string | /v2/operations/[ALIAS]/status/[ID] | Address of the job in the queue |
id | string | [ID] | The identifier of the job in queue. Can be passed to Get Status call to retrieve status of job. |
Examples
JSON
{
"rel":"status",
"href":"/v2/operations/alias/status/wa1-12345",
"id":"wa1-12345"
}
Create Policy
Creates a new backup policy associated with the account. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to create a brand new backup policy.
URL
Structure
POST https://api.backup.ctl.io/clc-backup-api/api/accountPolicies
Example
POST https://api.backup.ctl.io/clc-backup-api/api/accountPolicies
Request
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
backupIntervalHours | integer | The backup frequency of the Policy specified in hours -- this field is ignored if backupSchedule is defined | Yes1 |
backupSchedule | string | Quartz-flavored CRON expression describing the execution schedule for backups | Yes1 |
clcAccountAlias | string | The account alias that the Policy belongs to | No |
excludedDirectoryPaths | Array[string] | A list of the directories that the Policy excludes from backup | No |
name | string | The name of the Policy | Yes |
osType | string | 'Linux' or 'Windows' | Yes |
paths | Array[string] | A list of the directories that the Policy includes in each backup | Yes |
retentionDays | integer | The number of days backup data will be retained | Yes |
1One of either the backupIntervalHours field OR the backupSchedule field is required. If backupSchedule is defined, it will be used and backupIntervalHours will be ignored.
Examples
JSON
{
"osType": "Linux",
"name": "Example Backup Policy from API",
"paths": [
"/opt"
],
"retentionDays": 7,
"backupSchedule": "0 0 12 ? * TUE,SUN *"
}
Response
Entity Definition
Name | Type | Description |
---|---|---|
backupIntervalHours | integer | The backup frequency of the Policy-- ignored if backupSchedule is defined |
backupSchedule | string | Quartz-flavored CRON string describing the execution schedule for the Policy |
clcAccountAlias | string | The account alias that the Policy belongs to |
excludedDirectoryPaths | Array[string] | A list of the directories that the Policy excludes from backup |
name | string | The name of the Policy |
osType | string | 'Linux' or 'Windows' |
paths | Array[string] | A list of the directories that the Policy includes in each backup |
policyId | string | The unique Id associated with the Policy |
retentionDays | integer | The number of days backup data will be retained |
status | string | The status of the backup Policy. Either 'ACTIVE' or 'INACTIVE'. |
Examples
JSON
{
"osType": "Linux",
"name": "Example Backup Policy from API",
"clcAccountAlias": "ACME",
"status": "ACTIVE",
"paths": [
"/opt"
],
"excludedDirectoryPaths": [],
"retentionDays": 7,
"backupIntervalHours": 12,
"backupSchedule": "0 0 12 ? * SUN *"
"policyId": "107e6129-46b6-4b01-afcc-ea733db37214"
}
Create Server Policies
Create multiple Server Policies under an Account Policy. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
Note that the endpoint for this operation is the same as the standard Create Server Policy API, but an additonal header (Bulk-Operation: true) is required, and both the request and response bodies will be different than the single policy create.
When to Use It
Use this API operation when you want to create multiple Server Policies.
URL
Structure
POST https://api.backup.ctl.io/clc-backup-api/api/accountPolicies/{accountPolicyId}/serverPolicies
Example
POST https://api.backup.ctl.io/clc-backup-api/api/accountPolicies/193fccfc-c144-4052-98da-145eed825e0a/serverPolicies
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountPolicyId | string | The unique Id of an account policy | Yes |
Headers
Name | Type | Description | Req. |
---|---|---|---|
Bulk-Operation | boolean | Must be set to "true" for the multi-server-policy API | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
serverId | string | Unique server name | Yes |
storageRegion | string | Region where backups are stored, can be "US EAST", "US WEST", "CANADA", "GREAT BRITAIN", "GERMANY", "APAC" | Yes |
Examples
JSON
[{
"serverId": "UC1BAADTEST01",
"storageRegion": "US WEST"
},{
"serverId": "IL1BAADTEST01",
"storageRegion": "US WEST"
}]
Response
Response List Definition
Name | Type | Description |
---|---|---|
status | string | Aggregate status for entire server policy creation request. 'SUCCESS', 'PARTIAL', 'FAILED' |
success | boolean | Indicates if server policy creation was successful |
error | string | Provides details for server policy creation failure related to system or infrastructure |
validationMessages | string | Provides details for server policy creation failure related to parameter restrictions |
Server Policy Definition
Name | Type | Description |
---|---|---|
serverPolicyId | string | Unique Id of the Server Policy |
accountPolicyId | string | Unique Id of the Account Policy |
serverId | string | Unique server name |
storageRegion | string | Region where backups are stored |
clcAccountAlias | string | The account alias that the Policy belongs to |
status | string | The status of the backup Policy. 'ACTIVE', 'INACTIVE', 'PROVISIONING', 'ERROR', 'DELETED' |
expirationDate | integer | Date all data retention will elapse; unsubscribedDate+retentionDays |
unsubscribedDate | integer | Date policy was inactivated |
storageAccountId | null | Not currently used |
Examples
JSON
{
"status": "PARTIAL",
"createServerPolicyResponseList": [
{
"success": false,
"error": "Failed to get server information for serverId=UC1BAADTEST01",
"validationMessages": null,
"serverPolicy": {
"serverPolicyId": null,
"accountPolicyId": null,
"serverId": "UC1BAADTEST01",
"storageRegion": "US WEST",
"clcAccountAlias": "BAAD",
"status": null,
"expirationDate": 0,
"unsubscribedDate": 0,
"storageAccountId": null
}
},
{
"success": true,
"error": null,
"validationMessages": null,
"serverPolicy": {
"serverPolicyId": "80448207-332c-4f95-b82b-ac1fcb87b2c6",
"accountPolicyId": "193fccfc-c144-4052-98da-145eed825e0a",
"serverId": "IL1BAADTEST01",
"storageRegion": "US WEST",
"clcAccountAlias": "BAAD",
"status": "PROVISIONING",
"expirationDate": 0,
"unsubscribedDate": 0,
"storageAccountId": null
}
}
]
}
Create Server Policy
Create a Server Policy under an Account Policy. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to create a new Server Policy.
URL
Structure
POST https://api.backup.ctl.io/clc-backup-api/api/accountPolicies/{accountPolicyId}/serverPolicies
Example
POST https://api.backup.ctl.io/clc-backup-api/api/accountPolicies/5fde14a2-fa9d-4376-9f01-59429d02a959/serverPolicies
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountPolicyId | string | The unique Id of an account policy | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
clcAccountAlias | string | The account alias that the Policy belongs to | Yes |
serverId | string | Unique server name | Yes |
storageRegion | string | Region where backups are stored, can be "US EAST", "US WEST", "CANADA", "GREAT BRITAIN", "GERMANY", "APAC" | Yes |
Examples
JSON
{
"clcAccountAlias": "BAAD",
"serverId": "VA1BAADTEST01",
"storageRegion": "USEAST",
}
Response
Entity Definition
Name | Type | Description |
---|---|---|
serverPolicyId | string | Unique Id of the Server Policy |
accountPolicyId | string | Unique Id of the Account Policy |
serverId | string | Unique server name |
storageRegion | string | Region where backups are stored |
clcAccountAlias | string | The account alias that the Policy belongs to |
status | string | The status of the backup Policy. 'ACTIVE', 'INACTIVE', 'PROVISIONING', 'ERROR', 'DELETED' |
expirationDate | integer | Date all data retention will elapse; unsubscribedDate+retentionDays |
unsubscribedDate | integer | Date policy was inactivated |
storageAccountId | null | Not currently used |
Examples
JSON
{
"serverPolicyId": "085384ce-200e-4205-8a13-ae1d0bdc71cd"
"accountPolicyId": "5fde14a2-fa9d-4376-9f01-59429d02a959"
"serverId": "VA1BAADTEST01"
"storageRegion": "US EAST"
"clcAccountAlias": "BAAD"
"status": "PROVISIONING"
"expirationDate": 0
"unsubscribedDate": 0
"storageAccountId": null
}
Delete Server Policy
Delete a Server Policy under an Account Policy. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to delete an existing Server Policy.
URL
Structure
DELETE https://api.backup.ctl.io/clc-backup-api/api/accountPolicies/{accountPolicyId}/serverPolicies/{serverPolicyId}
Example
DELETE https://api.backup.ctl.io/clc-backup-api/api/accountPolicies/5fde14a2-fa9d-4376-9f01-59429d02a959/serverPolicies/085384ce-200e-4205-8a13-ae1d0bdc71cd
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
serverPolicyId | string | Unique Id of the Server Policy | Yes |
accountPolicyId | string | Unique Id of the Account Policy | Yes |
Response
The response will not contain JSON content, but will return the HTTP 204 No Content
response upon successful deletion of the server policy. If an invalid account policy or server policy are passed in, a HTTP 404 Not Found
response will be returned.
Download Anywhere Server Installer
Downloads a Simple Backup Anywhere Server agent installer. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to download the SBS Anywhere Server installation package
URL
Structure
POST https://api.backup.ctl.io/clc-backup-api/api/createInstallerScript
Example
POST https://api.backup.ctl.io/clc-backup-api/api/createInstallerScript
Request
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
provisioningToken | string | The provisioning token is given when a server is registered as Anywhere Server | Yes |
Examples
JSON
{
"provisioningToken": "PROVISIONbdb54aa4-a4fc-43a3-b452-3b4afda66096"
}
Response
Headers
Name | Type | Description |
---|---|---|
x-filename | string | This is the script name |
Content-Type | string | The script is returned in text/plain;charset=UTF-8 format |
Entity Definition
Name | Type | Description |
---|---|---|
data | text/plain | This is the agent installation script returned for specific provisioning token sent in the request |
Examples
plain/text
# ==========================================================================================================
# sbs-windows-install-BAAD-DELETEMESERVER-67.ps1 Version 2.0 Created Date: 1510169782942
# ==========================================================================================================
#
# If this script is not able to execute, please run Powershell 3.0 or later as ADMINISTRATOR
#
# Check you ExecutionPolicy in Powershell.
# Example: Get-ExecutionPolicy -list
#
# You may need to allow an UnRestricted ExecutionPolicy while installing SBS
# Example: echo . | powershell Set-ExecutionPolicy UnRestricted -FORCE
#
# After installing SBS you can return the ExecutionPolicy to the former value.
# Example: echo . | powershell Set-ExecutionPolicy UnDefined -FORCE
#
# Please use an internet search of "echo . | powershell Set-ExecutionPolicy UnRestricted -FORCE"
# for additional information.
#
#Setting up a log mechanism that displays and logs
Function Log-Message([string]$stringData)
{
Write-Output $stringData
}
function IsNullOrEmpty($str) {if ($str) {$False} else {$True}}
#####################################################
# FakeCurl - used to download a file like *nix curl #
#####################################################
function FakeCurl {
param ( $url, $file )
Write-Output "Downloading $file from $url"
$storageDir = $pwd
$webclient = New-Object System.Net.WebClient
$filepathname = "$storageDir\$file"
$webclient.DownloadFile($url, $filepathname)
Write-Output "Downloaded to $filepathname"
$global:RETURN=$filepathname
}
################
# MAIN PROGRAM #
################
Function Main()
{
Set-PSDebug -Strict
Set-PSDebug -Trace 0
$DATETIME=Get-Date -Format g
Log-Message "sbs-windows-install-BAAD-DELETEMESERVER-67.ps1 Version 2.0"
Log-Message "Script Created by anil.baad on 1510169782942"
Log-Message "Execution Time: $DATETIME"
#
# Set variables
#
$USERNAME="anil.baad"
$ACCOUNTALIAS="BAAD"
$HOSTNAME="DELETEMESERVER-67"
$SBS_PROVISIONING_TOKEN="PROVISIONbdb54aa4-a4fc-43a3-b452-3b4afda66096"
#
# Display powershell version -- 3+ required
#
$PSVersionTable
if ($PSVersionTable.PSVersion.Major -lt 3)
{
Log-Message "This script requires Powershell Version 3.0+"
exit 0
}
#
# Setup TLS1.2 for all HTTPS traffic
#
Log-Message "Setup TLS1.2 for all HTTPS traffic in script..."
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
#
# Setup proxy for windows
#
Log-Message "Use netsh to setup proxy using IE as the source..."
netsh winhttp import proxy source=ie
#
# Download the sbs-windows-install.ps1 file
#
$SBS_INSTALL_SCRIPT = "sbs-windows-install.ps1"
$SBS_INSTALL_URL = "https://s3.amazonaws.com/sbs-agent/$SBS_INSTALL_SCRIPT"
$SBS_INSTALL_FILE = "$SBS_INSTALL_SCRIPT"
FakeCurl -url $SBS_INSTALL_URL -file $SBS_INSTALL_FILE
$file = $RETURN
Log-Message "Check download file $file..."
If ( -not ( Test-Path -path "$file" ) )
{
Log-Message "$SBS_INSTALL_SCRIPT FAILED to download and was not used to install SBS"
exit 0
}
#
# Requires hard-coded script name
#
Log-Message ".\sbs-windows-install.ps1 -accountalias $ACCOUNTALIAS -hostname $HOSTNAME -sbs_provisioning_token $SBS_PROVISIONING_TOKEN -DEVQAPROD DEV"
.\sbs-windows-install.ps1 -accountalias $ACCOUNTALIAS -hostname $HOSTNAME -sbs_provisioning_token $SBS_PROVISIONING_TOKEN -DEVQAPROD DEV
}
Main
Exit 0
Get All Policies Eligible For ServerId
Returns a list of the backup policies that are eligible to be applied to the specified server. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to retrieve a list of policies that may be applied to a given server.
URL
Structure
GET https://api.backup.ctl.io/clc-backup-api/api/accountPolicies/servers/{serverId}
Example
GET https://api.backup.ctl.io/clc-backup-api/api/accountPolicies/servers/VA1ACMEDEMO01
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
serverId | string | Unique server name | Yes |
QueryString Parameters
Name | Type | Description | Req. |
---|---|---|---|
limit | integer | Return up to this many results | No |
offset | string | Return results starting from this position in the list | No |
sortBy | string | Sort the results by the specified field | No |
ascendingSort | boolean | Sort the sortBy field in ascending order | No |
Response
Entity Definition
Name | Type | Description |
---|---|---|
limit | integer | The maximum number of results requested |
nextOffset | integer | The next position in the list of results for a subsequent call |
offset | integer | The starting position in the list of results |
results | Array[Account Policy] | An array of the Policies eligible for the specified server |
totalCount | integer | The total number of Policies eligible for the specified server |
Account Policy Definition
Name | Type | Description |
---|---|---|
backupIntervalHours | integer | The backup frequency of the Policy-- ignored if backupSchedule is defined |
backupSchedule | string | Quartz-flavored CRON string describing the execution schedule for the Policy |
clcAccountAlias | string | The account alias that the Policy belongs to |
excludedDirectoryPaths | Array[string] | A list of the directories that the Policy excludes from backup |
name | string | The name of the Policy |
osType | string | 'Linux' or 'Windows' |
paths | Array[string] | A list of the directories that the Policy includes in each backup |
policyId | string | The unique Id associated with the Policy |
retentionDays | integer | The number of days backup data will be retained |
status | string | The status of the backup Policy. Either 'ACTIVE' or 'INACTIVE'. |
Examples
JSON
{
"limit": 2,
"offset": 0,
"nextOffset": 2,
"results": [
{
"osType": "Linux",
"name": "Example Linux Backup Policy 1",
"clcAccountAlias": "ACME",
"status": "ACTIVE",
"paths": [
"/root"
],
"excludedDirectoryPaths": [],
"retentionDays": 15,
"backupIntervalHours": 24,
"policyId": "284f1801-5f2e-45e0-97d1-a7267ef7a3e8"
},
{
"osType": "Linux",
"name": "Example Linux Backup Policy 2",
"clcAccountAlias": "ACME",
"status": "ACTIVE",
"paths": [
"/opt"
],
"excludedDirectoryPaths": [],
"retentionDays": 7,
"backupSchedule": "0 0 12 ? * SUN *",
"policyId": "18b4bdd3-cbdf-40c5-86bf-3c36b0a060f5"
}
],
"totalCount": 2
}
Get All Regions
Retrieves a list of backup storage regions which are available in Simple Backup Service. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to retrieve the list of backup storage regions which are available in Simple Backup Service.
URL
Structure
GET https://api.backup.ctl.io/clc-backup-api/api/regions
Example
GET https://api.backup.ctl.io/clc-backup-api/api/regions
Response
Entity Definition
Name | Type | Description |
---|---|---|
messages | Array[string] | A list of messages associated with the Storage Region |
name | string | The name of the Storage Region |
regionLabel | string | The label associated with the Storage Region |
Examples
JSON
[
{
"name": "APAC",
"regionLabel": "APAC (Singapore)",
"messages": null
},
{
"name": "GERMANY",
"regionLabel": "EU (Germany)",
"messages": null
},
{
"name": "GREAT BRITAIN",
"regionLabel": "EU (Ireland)",
"messages": null
},
{
"name": "US EAST",
"regionLabel": "US East",
"messages": null
},
{
"name": "US WEST",
"regionLabel": "US West",
"messages": null
},
{
"name": "CANADA",
"regionLabel": "Canada",
"messages": [
"Backups stored in this region are NOT encrypted at rest"
]
}
]
Get Anywhere Server List
Get a list of SBS Anywhere servers. The id field can be used as serverIds to create server policies for an Anywhere server. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to get a list of SBS Anywhere servers.
URL
Structure
GET https://api.backup.ctl.io/clc-backup-api/api/datacenters/anywhereServers
Example
GET https://api.backup.ctl.io/clc-backup-api/api/datacenters/anywhereServers
Response
Entity Definition
Name | Type | Description |
---|---|---|
anywhereServerAliases | Array[Anywhere Server] | Array of AnywhereServers corresponding to the user's CLC alias |
Examples
JSON
{
[2]
0: {
"id":"026b28ae-9b1f-4a3b-a3ab-89da0ebb68af",
"accountAlias":"ACME",
"osType":"Linux",
"serverAlias":"my-linux-server"
}
1: {
"id":"a3dc3866-68b7-4482-b645-66163ffbe4a2",
"accountAlias":"ACME",
"osType":"Windows",
"serverAlias":"My.Windows.Server"
}
}
Get Csv Restore Jobs Report
Gets an up-to-date list of all restore jobs performed, including a summary for each. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want a list of all the restores performed and summary for each.
URL
Structure
GET https://api.backup.ctl.io/clc-backup-api/api/csv/restoreJobsReport
Example
GET https://api.backup.ctl.io/clc-backup-api/api/csv/restoreJobsReport
Response
content-type: text/plain, content-disposition: attachment
Note for "Anywhere Servers" in this report: the "Server Id" column will contain the friendly name given to the server, next a colon delimiter, and finally the reference id for the anywhere server record
Examples
CSV
Server Id,Server Policy Id,Restore Point Id,Storage Region,Restore Status,Restore Start Time,Restore Latest Progress Time,Restore Finished Time,Protected Data Bytes Restored,Protected Data Bytes Failed To Restore,Number Of Critical Errors,Files Transferred From Storage,Bytes Transferred From Storage,Files Failed Transfer From Storage,Files Failed Transfer From Storage Due To S3 Throttling,Files Failed Transfer From Storage Due To S3 Unavailable,Files Failed Applying Attributes,Directories Restored,Directories Failed To Restore,Number Of Messages,Messages
testServerId20180627014200,8903f6d9-40de-47f9-9d2a-9b0dee4f141f,362bef22-e386-4a17-b10c-ae5a4a482a95,CANADA,IN_PROGRESS,2018-06-27T01:42:05.187Z,2018-06-27T01:42:05.641Z,,0,0,0,0,0,0,0,0,0,0,0,0,
testServerId20180627014130,cc573c6e-aafa-4dc1-956b-4707b7cc8d58,1c11515f-9199-42f0-8602-a83a69657a9e,CANADA,SUCCESS,2018-06-27T01:41:34.978Z,2018-06-27T01:41:35.396Z,2018-06-27T01:41:34.979Z,37188,0,0,345,34688,0,0,0,0,0,0,0,
Get Csv Restore Points Report
Gets a list of restore point details within a specified date range for a Server Policy. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to view the backup history for a server that is configured to use Simple Backup Service.
URL
Structure
GET https://api.backup.ctl.io/clc-backup-api/api/csv/{serverPolicyId}/restorePointsReport
Example
GET https://api.backup.ctl.io/clc-backup-api/api/csv/aee021f6-e9d3-4c13-bff1-a9733bef7532/restorePointsReport?inRetentionOnly=false&backupFinishedStartDate=2018-01-01&backupFinishedEndDate=2018-06-26
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
serverPolicyId | string | The server policy id identifies the backup configuration for a specific server | Yes |
QueryString Parameters
Name | Type | Description | Req. |
---|---|---|---|
inRetentionOnly | string | Setting to false will include all restore points found within the date range. Setting to true will omit restore points that have fallen out of retention and can no longer be used to perform restores. | No |
backupFinishedStartDate | string | Describes the beginning of the date range for inclusion in this report. Format is yyyy-MM-dd | No |
backupFinishedEndDate | string | Describes the end of date range for inclusion in this report. Cannot be more than one year after the start date. Format is yyyy-MM-dd | No |
Response
content-type: text/plain, content-disposition: attachment
Note for "Anywhere Servers" in this report: the "Server Id" column will contain the friendly name given to the server, next a colon delimiter, and finally the reference id for the anywhere server record
Examples
CSV
Server Id,Server Policy Id,Server Policy Status,Storage Region,Account Policy Name,Account Policy Id,Account Policy Status,OS Type,Protected Files,Protected Bytes,Latest Backup Status,Latest Backup Start Time,Latest Backup Finished Time,Latest Files Transferred To Storage,Latest Bytes Transferred To Storage,Latest Files Failed To Transfer To Storage,Latest Bytes Failed To Transfer To Storage,Latest Files Removed From Disk,Latest Bytes Removed From Disk,Latest Unchanged Files Not Transferred,Latest Unchanged Bytes Not Transferred
UC1BAADWIND1602-clone-2:19452303-9a91-4ba0-907a-c1d0f7ce915d,d6af6782-1d2f-426b-9bdc-377f09433e0a,ACTIVE,US EAST,dcbjr-test-win-sbstest2,3f81cd2f-2134-470f-b403-f96e7b8d0376,ACTIVE,Windows,89,16216064,SUCCESS,20180625 17:02:05,20180625 17:02:09,0,0,0,0,0,0,89,16216064
UC1BAADWIND1602-clone-2:19452303-9a91-4ba0-907a-c1d0f7ce915d,d6af6782-1d2f-426b-9bdc-377f09433e0a,ACTIVE,US EAST,dcbjr-test-win-sbstest2,3f81cd2f-2134-470f-b403-f96e7b8d0376,ACTIVE,Windows,89,16216064,SUCCESS,20180625 16:02:05,20180625 16:02:10,0,0,0,0,0,0,89,16216064
Get Csv Summary Report
Gets an up-to-date list of details for each Server Policy, its Account Policy, and current backup status. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to get a big-picture status report for all of your servers that are configured to use Simple Backup Service.
URL
Structure
GET https://api.backup.ctl.io/clc-backup-api/api/csv/summaryReport
Example
GET https://api.backup.ctl.io/clc-backup-api/api/csv/summaryReport?withServerPolicyStatus=ACTIVE,INACTIVE
Request
QueryString Parameters
Name | Type | Description | Req. |
---|---|---|---|
withServerPolicyStatus | string | Filter results for status in comma separated list 'ACTIVE', 'INACTIVE', 'PROVISIONING', 'PENDING_INSTALL', 'ERROR', 'DELETED' | No |
Response
content-type: text/plain, content-disposition: attachment
Note for "Anywhere Servers" in this report: the "Server Id" column will contain the friendly name given to the server, next a colon delimiter, and finally the reference id for the anywhere server record
Examples
CSV
Server Id,Server Policy Id,Server Policy Status,Storage Region,Account Policy Name,Account Policy Id,Account Policy Status,OS Type,Protected Files,Protected Bytes,Latest Backup Status,Latest Backup Start Time,Latest Backup Finished Time,Latest Files Transferred To Storage,Latest Bytes Transferred To Storage,Latest Files Failed To Transfer To Storage,Latest Bytes Failed To Transfer To Storage,Latest Files Removed From Disk,Latest Bytes Removed From Disk,Latest Unchanged Files Not Transferred,Latest Unchanged Bytes Not Transferred
UC1BAADWIND1602-clone-2:19452303-9a91-4ba0-907a-c1d0f7ce915d,d6af6782-1d2f-426b-9bdc-377f09433e0a,ACTIVE,US EAST,dcbjr-test-win-sbstest2,3f81cd2f-2134-470f-b403-f96e7b8d0376,ACTIVE,Windows,89,16216064,SUCCESS,20180625 15:02:05,20180625 15:02:09,0,0,0,0,0,0,89,16216064
Get Datacenter List
Get a list of CLC Data Centers. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to get a list of CLC Data Centers.
URL
Structure
GET https://api.backup.ctl.io/clc-backup-api/api/datacenters
Example
GET https://api.backup.ctl.io/clc-backup-api/api/datacenters
Response
Entity Definition
Name | Type | Description |
---|---|---|
datacenters | Array[string] | Array of string values corresponding to each datacenter |
Examples
JSON
{
[13]
0: "CA1 - Canada (Vancouver)"
1: "CA2 - Canada (Toronto)"
2: "CA3 - Canada (Toronto)"
3: "DE1 - Germany (Frankfurt)"
4: "GB1 - Great Britain (Reading)"
5: "GB3 - Great Britain (Slough)"
6: "IL1 - US Central (Chicago)"
7: "NY1 - US East (New York)"
8: "SG1 - APAC (Singapore)"
9: "UC1 - US West (Santa Clara)"
10: "VA1 - US East (Sterling)"
11: "WA1 - US West (Seattle)"
}
Get OS Types
Returns the list of valid OS types supported by Simple Backup Service. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to retrieve the list of supported OS types.
URL
Structure
GET https://api.backup.ctl.io/clc-backup-api/api/osTypes
Example
GET https://api.backup.ctl.io/clc-backup-api/api/osTypes
Response
Entity Definition
Name | Type | Description |
---|---|---|
osTypes | Array[string] | Array of string values corresponding to each supported OS type |
Examples
JSON
[
"Linux",
"Windows]
]
Get Policies
Gets a list of backup policies associated with an account. Calls to this operation must include a bearer token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to retrieve a list of all policies associated with a given account.
URL
Structure
GET https://api.backup.ctl.io/clc-backup-api/api/accountPolicies
Example
GET https://api.backup.ctl.io/clc-backup-api/api/accountPolicies?limit=20&offset=0&withStatus=ACTIVE&sortBy=name&ascendingSort=true
Request
QueryString Parameters
Name | Type | Description | Req. |
---|---|---|---|
limit | integer | Return up to this many results | No |
offset | string | Return results starting from this position in the list | No |
withStatus | string | Filter results for either 'ACTIVE' or 'INACTIVE' Policies | No |
sortBy | string | Sort the results by the specified field | No |
ascendingSort | boolean | Sort the sortBy field in ascending order | No |
Response
Entity Definition
Name | Type | Description |
---|---|---|
limit | integer | The maximum number of results requested |
nextOffset | integer | The next position in the list of results for a subsequent call |
offset | integer | The starting position in the list of results |
results | Array[Account Policy] | An array of the Policies associated with the Account |
totalCount | integer | The total number of Policies associated with the Account |
Account Policy Definition
Name | Type | Description |
---|---|---|
backupIntervalHours | integer | The backup frequency of the Policy-- ignored if backupSchedule is defined |
backupSchedule | string | Quartz-flavored CRON string describing the execution schedule for the Policy |
clcAccountAlias | string | The account alias that the Policy belongs to |
excludedDirectoryPaths | Array[string] | A list of the directories that the Policy excludes from backup |
name | string | The name of the Policy |
osType | string | 'Linux' or 'Windows' |
paths | Array[string] | A list of the directories that the Policy includes in each backup |
policyId | string | The unique Id associated with the Policy |
retentionDays | integer | The number of days backup data will be retained |
status | string | The status of the backup Policy. Either 'ACTIVE' or 'INACTIVE'. |
Examples
JSON
{
"limit": 2,
"offset": 0,
"nextOffset": 2,
"results": [
{
"osType": "Linux",
"name": "Example Linux Backup Policy",
"clcAccountAlias": "ACME",
"status": "ACTIVE",
"paths": [
"/root"
],
"excludedDirectoryPaths": [],
"retentionDays": 15,
"backupIntervalHours": 24,
"policyId": "284f1801-5f2e-45e0-97d1-a7267ef7a3e8"
},
{
"osType": "Windows",
"name": "Example Windows Backup Policy",
"clcAccountAlias": "ACME",
"status": "ACTIVE",
"paths": [
"C:\\backupthisup"
],
"excludedDirectoryPaths": [],
"retentionDays": 1,
"backupSchedule": "0 0 12 ? * SUN *",
"policyId": "18b4bdd3-cbdf-40c5-86bf-3c36b0a060f5"
}
],
"totalCount": 2
}
Get Policy Details By Server
Get policy details by server. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to get a list of policies and policy details for all policies associated with a specified server.
URL
Structure
GET https://api.backup.ctl.io/clc-backup-api/api/serverPolicyDetails
Example
GET https://api.backup.ctl.io/clc-backup-api/api/serverPolicyDetails?serverId=VA1BAAPPRDTST01
Request
QueryString Parameters
Name | Type | Description | Req. |
---|---|---|---|
serverId | string | Unique server name | Yes |
withStatus | Array[string] | Status of the backup policy. 'ACTIVE','INACTIVE','PROVISIONING','ERROR','DELETED' | No |
Response
Entity Definition
Name | Type | Description |
---|---|---|
accountPolicyId | string | Unique ID of an account policy |
osType | string | 'Linux' or 'Windows' |
name | string | The name of the Policy |
clcAccountAlias | string | The account alias that the Policy belongs to |
accountPolicyStatus | string | The status of the backup Policy. Either 'ACTIVE' or 'INACTIVE' |
paths | Array[string] | A list of the directories that the Policy includes in each backup |
backupProvider | string | Not currently used |
retentionDays | integer | The number of days backup data will be retained |
backupIntervalHours | integer | The backup frequency of the Policy specified in hours-- ignored if backupSchedule is defined |
backupSchedule | string | Quartz-flavored CRON string describing the execution schedule for the Policy |
serverPolicyId | string | Unique server policy identifier |
serverId | string | Unique server identifier |
storageRegion | string | Region where backups are stored. "US EAST", "US WEST", "CANADA", "GREAT BRITAIN", "GERMANY", "APAC" |
serverPolicyStatus | Array[string] | Status of the backup policy. 'ACTIVE','INACTIVE','PROVISIONING','ERROR','DELETED' |
eligibleForBackup | boolean | Indicates if the account policy or server policy are active/inactive |
Examples
JSON
{
[2]
0: {
"accountPolicyId": "5323900d-1288-47c8-9cce-e29790c9afbb"
"osType": "Windows"
"name": "TestingPolicy_1/12/16"
"clcAccountAlias": "BAAP"
"accountPolicyStatus": "ACTIVE"
"paths": [2]
0: "C:\BackupFolder1"
1: "C:\BackupFolder12"
-
"backupProvider": null
"retentionDays": 2
"backupSchedule": "0 0 12 ? * SUN *"
"serverPolicyId": "6d05d351-9cb8-4fed-bca6-064e3034caeb"
"serverId": "VA1BAAPPRDTST01"
"storageRegion": "CANADA"
"serverPolicyStatus": "ACTIVE"
"eligibleForBackup": true
}-
1: {
"accountPolicyId": "16965823-5472-49c1-a38a-727dca9cb7a0"
"osType": "Windows"
"name": "C Drive"
"clcAccountAlias": "BAAP"
"accountPolicyStatus": "ACTIVE"
"paths": [1]
0: "C:\"
-
"backupProvider": null
"retentionDays": 21
"backupIntervalHours": 2
"serverPolicyId": "f37088d7-22ba-4704-ba61-25ecd2e8a086"
"serverId": "VA1BAAPPRDTST01"
"storageRegion": "US EAST"
"serverPolicyStatus": "ACTIVE"
"eligibleForBackup": true
}
}
Get Policy
Gets the backup policy associated with the specified accountPolicyId. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to retrieve the details of a specific backup policy.
URL
Structure
GET https://api.backup.ctl.io/clc-backup-api/api/accountPolicies/{accountPolicyId}
Example
GET https://api.backup.ctl.io/clc-backup-api/api/accountPolicies/4ca70660-f08a-407b-830d-e8e9c6c1d59a
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountPolicyId | string | The unique id associated with the backup policy to retrieve | Yes |
Response
Entity Definition
Name | Type | Description |
---|---|---|
backupIntervalHours | integer | The backup frequency of the Policy-- ignored if backupSchedule is defined |
backupSchedule | string | Quartz-flavored CRON string describing the execution schedule for the Policy |
clcAccountAlias | string | The account alias that the Policy belongs to |
excludedDirectoryPaths | Array[string] | A list of the directories that the Policy excludes from backup |
name | string | The name of the Policy |
osType | string | 'Linux' or 'Windows' |
paths | Array[string] | A list of the directories that the Policy includes in each backup |
policyId | string | The unique Id associated with the Policy |
retentionDays | integer | The number of days backup data will be retained |
status | string | The status of the backup Policy. Either 'ACTIVE' or 'INACTIVE'. |
Examples
JSON
{
"osType": "Linux",
"name": "Example Backup Policy",
"clcAccountAlias": "ACME",
"status": "ACTIVE",
"paths": [
"/var"
],
"excludedDirectoryPaths": [
"/var/run"
],
"retentionDays": 5,
"backupSchedule": "0 0 12 ? * SUN *",
"policyId": "4ca70660-f08a-407b-830d-e8e9c6c1d59a"
}
Get Restore Point Details
Gets a list of restore point details. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to obtain restore point details for a specific serverPolicyId.
URL
Structure
GET https://api.backup.ctl.io/clc-backup-api/api/accountPolicies/{accountPolicyId}/serverPolicies/{serverPolicyId}/restorePointDetails
Example
GET https://api.backup.ctl.io/clc-backup-api/api/accountPolicies/{accountPolicyId}/serverPolicies/ce0eefe2-25b8-4320-ba68-eeda76aef2dc/restorePointDetails?backupFinishedStartDate=2016-01-01&backupFinishedEndDate=2016-04-01
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
serverPolicyId | string | Unique Id of the Server Policy | Yes |
accountPolicyId | string | Unique Id of the Account Policy | Yes |
QueryString Parameters
Name | Type | Description | Req. |
---|---|---|---|
limit | integer | Limit the number of records returned | No |
offset | integer | No | |
inRetentionOnly | boolean | No | |
backupFinishedStartDate | string | Valid date format is 'YYYY-MM-DD' | Yes |
backupFinishedEndDate | string | Valid date format is 'YYYY-MM-DD' | Yes |
sortBy | string | Sort results by: [policyId, retentionDay, backupStartedDate, backupFinishedDate, retentionExpiredDate, backupStatus, filesTransferredToStorage, bytesTransferredToStorage, filesFailedTransferToStorage, bytesFailedToTransfer, unchangedFilesNotTransferred, unchangedBytesNotTransferred, filesRemovedFromDisk, bytesRemovedFromDisk] | No |
ascendingSort | boolean | No |
Response
Entity Definition
Name | Type | Description |
---|---|---|
restorePointId | string | Unique restore point identifier |
policyId | string | Unique policy identifier |
retentionDays | integer | Days of retention applied to the restore point |
backupFinishedDate | string | Timestamp of backup completion |
retentionExpiredDate | string | Timestamp or retention expiration |
restorePointCreationStatus | string | 'SUCCESS', 'PARTIAL_SUCCESS', 'FAILED', or 'CANCELLED' |
filesTransferredToStorage | integer | Number of backup files transferred to storage |
bytesTransferredToStorage | integer | Total bytes of backup data sent to storage |
filesFailedTransferToStorage | integer | Number of backup files that failed transfer to storage |
bytesFailedToTransfer | integer | Total bytes of backup data that failed transfer to storage |
unchangedFilesNotTransferred | integer | Number of unchanged files not requiring retransfer to storage |
unchangedBytesInStorage | integer | Total bytes of unchanged data not requiring retransfer to storage |
filesRemovedFromDisk | integer | Number of files removed from local disk |
bytesInStorageForItemsRemoved | integer | Total bytes of data removed from local disk |
numberOfProtectedFiles | integer | Number of files currently in storage for the restore point |
backupStartedDate | string | Timestamp of backup start |
Examples
JSON
{
"limit": 100
"offset": 0
"nextOffset": 0
"results": [2]
0: {
"restorePointId": "ce0eefe2-25b8-4320-ba68-eeda76aef2dc20160401225505"
"policyId": "ce0eefe2-25b8-4320-ba68-eeda76aef2dc"
"retentionDays": 5
"backupFinishedDate": "2016-04-01T22:55:10.849Z"
"retentionExpiredDate": "2016-04-07T22:55:05.277Z"
"restorePointCreationStatus": "SUCCESS"
"filesTransferredToStorage": 0
"bytesTransferredToStorage": 0
"filesFailedTransferToStorage": 0
"bytesFailedToTransfer": 0
"unchangedFilesNotTransferred": 3
"unchangedBytesInStorage": 388403200
"filesRemovedFromDisk": 0
"bytesInStorageForItemsRemoved": 0
"numberOfProtectedFiles": 3
"backupStartedDate": "2016-04-01T22:55:05.277Z"
}
-1: {
"restorePointId": "ce0eefe2-25b8-4320-ba68-eeda76aef2dc20160401214505"
"policyId": "ce0eefe2-25b8-4320-ba68-eeda76aef2dc"
"retentionDays": 5
"backupFinishedDate": "2016-04-01T21:45:10.802Z"
"retentionExpiredDate": "2016-04-07T21:45:05.261Z"
"restorePointCreationStatus": "SUCCESS"
"filesTransferredToStorage": 0
"bytesTransferredToStorage": 0
"filesFailedTransferToStorage": 0
"bytesFailedToTransfer": 0
"unchangedFilesNotTransferred": 3
"unchangedBytesInStorage": 388403200
"filesRemovedFromDisk": 0
"bytesInStorageForItemsRemoved": 0
"numberOfProtectedFiles": 3
"backupStartedDate": "2016-04-01T21:45:05.261Z"
}
"totalCount": 2
}
Get Server Policies
Gets a list of Server Policies associated to an Account Policy. A server policy is unique record that ties a backup (account) policy to a specific server and storage region. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to get a list of all Server Policies attached to an Account Policy.
URL
Structure
GET https://api.backup.ctl.io/clc-backup-api/api/accountPolicies/{accountPolicyId}/serverPolicies
Example
GET https://api.backup.ctl.io/clc-backup-api/api/accountPolicies/5fde14a2-fa9d-4376-9f01-59429d02a959/serverPolicies
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountPolicyId | string | Unique Id of the Account Policy | Yes |
QueryString Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountPolicyId | string | Unique ID of an account policy | No |
limit | integer | Return up to this many results | No |
offset | string | Return results starting from this position in the list | No |
withStatus | string | Filter results for either 'ACTIVE' or 'INACTIVE' Policies | No |
sortBy | string | Sort the results by the specified field | No |
ascendingSort | boolean | Sort the sortBy field in ascending order | No |
Response
Entity Definition
Name | Type | Description |
---|---|---|
limit | integer | The maximum number of results requested |
offset | integer | The starting position in the list of results |
nextOffset | integer | The next position in the list of results for a subsequent call |
results | Array[Server Policy] | An array of the Server Policies associated with the Account Policy |
totalCount | integer | The total number of Server Policies associated with the Account Policy |
Server Policy Definition
Name | Type | Description |
---|---|---|
serverPolicyId | string | The next position in the list of results for a subsequent call |
accountPolicyId | string | Unique Id of the Account Policy |
serverId | string | Unique server name |
storageRegion | string | Region where backups are stored |
clcAccountAlias | string | The account alias that the Policy belongs to |
status | string | The status of the backup Policy. 'ACTIVE', 'INACTIVE', 'PROVISIONING', 'ERROR', 'DELETED' |
expirationDate | integer | Date all data retention will elapse; unsubscribedDate+retentionDays |
unsubscribedDate | integer | Date policy was inactivated |
storageAccountId | string | Not currently used |
Examples
JSON
{
"limit": 1000
"offset": 0
"nextOffset": 0
"results": [1]
0: {
"serverPolicyId": "7796a750-db6a-4d6d-a9c0-93f729e9977e"
"accountPolicyId": "5fde14a2-fa9d-4376-9f01-59429d02a959"
"serverId": "VA1BAADTEST01"
"storageRegion": "US EAST"
"clcAccountAlias": "BAAD"
"status": "ACTIVE"
"expirationDate": 0
"unsubscribedDate": 0
"storageAccountId": "f5c2c756-94b6-4b74-92e9-60f648caed15"
}
"totalCount": 1
}
Get Server Policy
Get details of a specific server policy associated to an account policy. A server policy is unique record that ties a backup (account) policy to a specific server and storage region. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to get details for a specific server policy. Use the getServerPolicies API to obtain details for all server policies associated with an account policy.
URL
Structure
GET https://api.backup.ctl.io/clc-backup-api/api/accountPolicies/{accountPolicyId}/serverPolicies/{serverPolicyId}
Example
GET https://api.backup.ctl.io/clc-backup-api/api/accountPolicies/c8cbf556-9ea1-4759-8d4e-c788198af26c/serverPolicies/ce0eefe2-25b8-4320-ba68-eeda76aef2dc
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountPolicyId | string | Unique ID of an account policy | Yes |
serverPolicyId | string | Unique Id of the Server Policy | Yes |
Response
Entity Definition
Name | Type | Description |
---|---|---|
serverPolicyId | string | Unique Id of the Server Policy |
accountPolicyId | string | Unique Id of the Account Policy |
serverId | string | Unique server name |
storageRegion | string | Region where backups are stored |
clcAccountAlias | string | The account alias that the Policy belongs to |
status | string | The status of the backup Policy. 'ACTIVE', 'INACTIVE', 'PROVISIONING', 'ERROR', 'DELETED', 'PENDING_INSTALL' |
expirationDate | integer | Date all data retention will elapse; unsubscribedDate+retentionDays |
unsubscribedDate | integer | Date policy was inactivated |
storageAccountId | string | Not currently used |
Examples
JSON
{
"serverPolicyId": "ce0eefe2-25b8-4320-ba68-eeda76aef2dc"
"accountPolicyId": "c8cbf556-9ea1-4759-8d4e-c788198af26c"
"serverId": "IL1BAAPDEMO101"
"storageRegion": "US WEST"
"clcAccountAlias": "BAAP"
"status": "ACTIVE"
"expirationDate": 0
"unsubscribedDate": 0
"storageAccountId": null
}
Get Servers By Datacenter
Get a list of servers based on CLC Data Center. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to get a list of servers associated with a CLC Data Center.
URL
Structure
GET https://api.backup.ctl.io/clc-backup-api//api/datacenters/{datacenter}/servers
Example
GET https://api.backup.ctl.io/clc-backup-api/api/datacenters/VA1%20-%20US%20East%20(Sterling)/servers
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
datacenter | string | CLC Data Center | Yes |
Response
Entity Definition
Name | Type | Description |
---|---|---|
list | Array[string] | Array of string values corresponding to each server |
Examples
JSON
{
[3]
0: "VA1BAAPXAMPLE01"
1: "VA1BAAPXAMPLE02"
2: "VA1BAAPXAMPLE03"
}
Get Stored Data By Server Policy
Gets the amount of stored data for a server policy on a specified date. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to determine the amount of backed up data in storage for a server on a specific day.
URL
Structure
GET https://api.backup.ctl.io/clc-backup-api/api/accountPolicies/{accountPolicyId}/serverPolicies/{serverPolicyId}/storedData
Example
GET https://api.backup.ctl.io/clc-backup-api/api/accountPolicies/c8cbf556-9ea1-4759-8d4e-c788198af26c/serverPolicies/ce0eefe2-25b8-4320-ba68-eeda76aef2dc/storedData?searchDate=2016-03-29
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountPolicyId | string | Unique account policy identifier | Yes |
serverPolicyId | string | Unique server policy identifier | Yes |
QueryString Parameters
Name | Type | Description | Req. |
---|---|---|---|
searchDate | string | Valid date format is 'YYYY-MM-DD' | Yes |
Response
Entity Definition
Name | Type | Description |
---|---|---|
gigabytesStored | string | Amount of stored backup data in gigabytes |
bytesStored | string | Amount of stored backup data in bytes |
Examples
JSON
{
"gigabytesStored": "0.541"
"bytesStored": "581560320"
}
Patch Policy
Updates specific values of a server policy. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Because of the business rules that apply to this product, there are limited scenarios when this operation is allowed. Specifically, you may use this API operation when you want to change the status of a server policy from 'ERROR', 'PENDING_INSTALL', or 'PROVISIONING' to 'INACTIVE'. Other attempts to modify the server policy will result in errors.
URL
Structure
PATCH https://api.backup.ctl.io/clc-backup-api/api/accountPolicies/{accountPolicyId}/serverPolicies/{serverPolicyId}
Example
PATCH https://api.backup.ctl.io/clc-backup-api/api/accountPolicies/c8cbf556-9ea1-4759-8d4e-c788198af26c/serverPolicies/ce0eefe2-25b8-4320-ba68-eeda76aef2dc
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountPolicyId | string | Unique ID of an account policy | Yes |
serverPolicyId | string | Unique Id of the Server Policy | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
op | string | The patch operation to perform: 'add', 'remove', 'replace' | Yes |
path | string | The only change allowed currently is to the status. Valid transitions are: ERROR to INACTIVE, PENDING_INSTALL to INACTIVE, and PROVISIONING to INACTIVE | Yes |
value | string | The new value to set path to. | Yes |
Examples
JSON
{
"op": "replace",
"path": "/status",
"value": "INACTIVE"
}
Response
Entity Definition
Name | Type | Description |
---|---|---|
serverPolicyId | string | Unique Id of the Server Policy |
accountPolicyId | string | Unique Id of the Account Policy |
serverId | string | Unique server name |
storageRegion | string | Region where backups are stored |
clcAccountAlias | string | The account alias that the Policy belongs to |
status | string | The status of the backup Policy. 'ACTIVE', 'INACTIVE', 'PROVISIONING', 'ERROR', 'DELETED' |
expirationDate | integer | Date all data retention will elapse; unsubscribedDate+retentionDays |
unsubscribedDate | integer | Date policy was inactivated |
storageAccountId | string | Not currently used |
Examples
JSON
{
"serverPolicyId": "ce0eefe2-25b8-4320-ba68-eeda76aef2dc"
"accountPolicyId": "c8cbf556-9ea1-4759-8d4e-c788198af26c"
"serverId": "IL1BAAPDEMO101"
"storageRegion": "US WEST"
"clcAccountAlias": "BAAP"
"status": "ACTIVE"
"expirationDate": 0
"unsubscribedDate": 0
"storageAccountId": null
}
Register Anywhere Server
Registers a server as 'Anywhere Server' for Backup Anywhere service. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to register a server for Backup Anywhere Service.
URL
Structure
POST https://api.backup.ctl.io/clc-backup-api/api/provisioning
Example
POST https://api.backup.ctl.io/clc-backup-api/api/provisioning
Request
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
serverId | string | The name of the server being registered | Yes |
osType | string | 'Linux' or 'Windows' -- OS of the server | Yes |
Examples
JSON
{
"serverId": "My-AWS-Server-1",
"osType": "Linux"
}
Response
Entity Definition
Name | Type | Description |
---|---|---|
provisioningToken | string | This is a provisioning token massaged into the installer package for one time use only |
clcAccountAlias | string | The account alias to which the Anywhere Server is registered to |
osType | string | 'Linux' or 'Windows' -- OS of the server |
issuedTimestamp | long | This is the timestamp when Backup Anywhere installer package is used for a Anywhere server |
redeemedTimestamp | long | This is the timestamp when SBS agent is installed on the Anywhere server and has communicated back to SBS Backup Anywhere infrastructure |
revokedTimestamp | long | This is a timestamp which is set when SBS Backup Anywhere service is removed for a Anywhere Server |
Examples
JSON
{
"provisioningToken": "PROVISIONbdb54aa4-a4fc-43a3-b452-3b4afda66096",
"clcAccountAlias": "BAAS",
"osType": "Linux",
"issuedTimestamp": 1510090581000,
"redeemedTimestamp": null,
"revokedTimestamp": null
}
Update Policy
Updates a backup policy. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to change the settings of a backup policy. It can be used to modify the name, frequency, paths to include, and paths to exclude. Operating System and Retention may not be modified.
URL
Structure
PUT https://api.backup.ctl.io/clc-backup-api/api/accountPolicies/{accountPolicyId}
Example
PUT https://api.backup.ctl.io/clc-backup-api/api/accountPolicies/107e6129-46b6-4b01-afcc-ea733db37214
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountPolicyId | string | The unique id associated with the backup policy to update | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
backupIntervalHours | integer | The backup frequency of the Policy specified in hours -- ignored if backupSchedule is defined | Yes1 |
backupSchedule | string | Quartz-flavored CRON expression describing the execution schedule for backups | Yes1 |
excludedDirectoryPaths | Array[string] | A list of the directories that the Policy excludes from backup | Yes |
name | string | The name of the Policy | Yes |
osType | string | 'Linux' or 'Windows' | Yes |
paths | Array[string] | A list of the directories that the Policy includes in each backup | Yes |
policyId | string | The unique Id associated with the Policy | Yes |
retentionDays | integer | The number of days backup data will be retained | Yes |
status | string | 'ACTIVE' or 'INACTIVE' | Yes |
1One of either the backupIntervalHours field OR the backupSchedule field is required. If backupSchedule is defined, it will be used and backupIntervalHours will be ignored.
Examples
JSON
{
"osType": "Linux",
"name": "Example Backup Policy from API",
"clcAccountAlias": "ACME",
"status": "ACTIVE",
"paths": [
"/var",
"/srv",
"/etc",
"/home",
"/usr"
],
"excludedDirectoryPaths": [
"/var/run",
"/var/cache",
"/var/tmp"
],
"retentionDays": 7,
"backupIntervalHours": 12,
"backupSchedule": "0 0 12 ? * TUE *",
"policyId": "107e6129-46b6-4b01-afcc-ea733db37214"
}
Response
Entity Definition
Name | Type | Description |
---|---|---|
backupIntervalHours | integer | The backup frequency of the Policy-- ignored if backupSchedule is defined |
backupSchedule | string | Quartz-flavored CRON string describing the execution schedule for the Policy |
clcAccountAlias | string | The account alias that the Policy belongs to |
excludedDirectoryPaths | Array[string] | A list of the directories that the Policy excludes from backup |
name | string | The name of the Policy |
osType | string | 'Linux' or 'Windows' |
paths | Array[string] | A list of the directories that the Policy includes in each backup |
policyId | string | The unique Id associated with the Policy |
retentionDays | integer | The number of days backup data will be retained |
status | string | The status of the backup Policy. Either 'ACTIVE' or 'INACTIVE'. |
Examples
JSON
{
"osType": "Linux",
"name": "Example Backup Policy from API",
"clcAccountAlias": "ACME",
"status": "ACTIVE",
"paths": [
"/var",
"/srv",
"/etc",
"/home",
"/usr"
],
"excludedDirectoryPaths": [
"/var/run",
"/var/cache",
"/var/tmp"
],
"retentionDays": 7,
"backupIntervalHours": 12,
"backupSchedule": "0 0 12 ? * TUE *",
"policyId": "107e6129-46b6-4b01-afcc-ea733db37214"
}
Create a Site to Site VPN
Creates a Site to Site VPN for a given account. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need to create a Site to Site VPN for a given account.
URL
Structure
POST https://api.ctl.io/v2/siteToSiteVpn?account={accountId}
Example
POST https://api.ctl.io/v2/siteToSiteVpn?account=ACCT
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountId | string | Short code for a particular account | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
local | string | Local site properties | Yes |
remote | string | Remote site properties | Yes |
ike | string | IKE properties | Yes |
ipsec | string | IPSec properties | Yes |
Local Entity
Name | Type | Description | Req. |
---|---|---|---|
locationAlias | string | Short code for a particular location | Yes |
subnets | string | Local address for Site to Site VPN, specified using CIDR notation | Yes |
Remote Entity
Name | Type | Description | Req. |
---|---|---|---|
siteName | string | Friendly name of the site | Yes |
deviceType | string | Friendly name of the device type | Yes |
address | string | Remote address for Site to Site VPN, specified using CIDR notation | Yes |
subnets | string | Remote network address for Site to Site VPN, specified using CIDR notation | Yes |
IKE Entity
Name | Type | Description | Option | Req. |
---|---|---|---|---|
encryption | string | Encryption algorithm | aes128, aes192, aes256, tripleDES | Yes |
hashing | string | Hashing algorithm | sha1_96, sha1_256, md5 | Yes |
diffieHellmanGroup | string | Group 1 (legacy), Group 2 or Group 5. If using AES with a cipher strength greater than 128-bit, or SHA2 for hashing, we recommend Group 5, otherwise Group 2 is sufficient | group1, group2, group5 | Yes |
preSharedKey | string | The pre-shared key is a shared secret that secures the VPN tunnel. This value must be identical on both ends of the connection | Yes | |
lifetime | string | Lifetime is set to 8 hours for IKE. This is not required to match, as the negotiation will choose the shortest value supplied by either peer | 3600, 28800, 86400 | Yes |
mode | string | Protocol mode | main, aggressive | Yes |
deadPeerDetection | boolean | Specify if you wish this enabled or disabled. Check your device defaults; for example, Cisco ASA defaults to 'on', while Netscreen/Juniper SSG or Juniper SRX default to 'off'. Our default is 'off'. | true/false | No |
natTraversal | boolean | NAT-Traversal: Allows connections to VPN end-points behind a NAT device. Defaults to 'off'. If you require NAT-T, you also need to provide the private IP address that your VPN endpoint will use to identify itself. | true/false | No |
remoteIdentity | string | The private IP address that your VPN endpoint will use to identify itself. Required only when NAT-T state is on | a valid IPv4 address | Yes |
IPSec Entity
Name | Type | Description | Option | Req. |
---|---|---|---|---|
encryption | string | Encryption algorithm | aes128, aes192, aes256, tripleDES | Yes |
hashing | string | Hashing algorithm | sha1_96, sha1_256, md5 | Yes |
protocol | string | IPSec protocol | esp, ah | Yes |
pfs | string | PFS enabled or disabled (we suggest enabled, using Group 2, though Group 5 is recommended with SHA2 hashing or AES-192 or AES-256) | disabled, group1, group2, group5 | Yes |
lifetime | string | Lifetime is set to 1 hour (and unlimited KB). This setting is not required to match, as the negotiation process will choose the shortest value supplied by either peer. | 3600, 28800, 86400 | Yes |
Example
JSON
{
"local": {
"locationAlias": "WA1",
"subnets": [
"10.10.10.0/24"
]
},
"remote": {
"siteName": "API test",
"deviceType": "SRX and stuff",
"address": "1.2.3.4",
"subnets": [
"10.1.1.0/24"
]
},
"ike": {
"encryption": "aes128",
"hashing": "sha1_96",
"diffieHelmanGroup": "group2",
"preSharedKey": "Password123",
"lifetime": 28800,
"mode": "main",
"deadPeerDetection": false,
"natTraversal": false,
"remoteIdentity": null
},
"ipsec": {
"encryption": "aes128",
"hashing": "sha1_96",
"protocol": "esp",
"pfs": "group2",
"lifetime": 3600
}
}
Response
The response will be an entity representing the new Site to Site VPN that was created.
Example
JSON
{
"id": "4FA8D6C83271CA53F9ABA815D7F4A0DD",
"pendingTaskId": "",
"accountAlias": "ACCT",
"changeInfo": {
"createdBy": "username",
"createdDate": "2016-06-14T16:22:51Z",
"modifiedBy": "username",
"modifiedDate": "2016-06-14T17:53:12Z"
},
"local": {
"locationAlias": "WA1",
"subnets": [
"10.10.10.0/24"
]
},
"remote": {
"siteName": "Montreal Office",
"deviceType": "Cisco ASA5520 v8.3",
"address": "1.2.3.4",
"subnets": [
"10.1.1.0/24"
]
},
"ike": {
"encryption": "aes128",
"hashing": "sha1_96",
"diffieHelmanGroup": "group2",
"preSharedKey": "Password123",
"lifetime": 28800,
"mode": "main",
"deadPeerDetection": false,
"natTraversal": false,
"remoteIdentity": null
},
"ipsec": {
"encryption": "aes128",
"hashing": "sha1_96",
"protocol": "esp",
"pfs": "group2",
"lifetime": 3600
}
}
Delete a Site to Site VPN
Deletes a Site to Site VPN for a given account. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need to delete a Site to Site VPN for a given account.
URL
Structure
DELETE https://api.ctl.io/v2/siteToSiteVpn/{vpnId}?account={accountId}
Example
DELETE https://api.ctl.io/v2/siteToSiteVpn/4FA8D6C83271CA53F9ABA815D7F4A0DD?account=ACCT
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountId | string | Short code for a particular account | Yes |
vpnId | string | ID of the VPN | Yes |
Response
The response will be the job ID in the Queue, for the Site to Site VPN that is to be deleted.
Example
JSON
"54851"
Get Details for a Site to Site VPN
Gets Details for a Site to Site VPN for a given account. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need to get details for a Site to Site VPN for a given account.
URL
Structure
GET https://api.ctl.io/v2/siteToSiteVpn/{vpnId}?account={accountId}
Example
GET https://api.ctl.io/v2/siteToSiteVpn/4FA8D6C83271CA53F9ABA815D7F4A0DD?account=ACCT
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountId | string | Short code for a particular account | Yes |
vpnId | string | ID of the VPN | Yes |
Response
The response will be an entity representing the details for a Site to Site VPN for a given account.
Example
JSON
{
"id": "4FA8D6C83271CA53F9ABA815D7F4A0DD",
"changeInfo": {
"createdBy": "username",
"createdDate": "2016-06-14T16:22:51Z",
"modifiedBy": "username",
"modifiedDate": "2016-06-14T17:53:12Z"
},
"accountAlias": "ACCT",
"local": {
"address": "4.3.2.1",
"locationAlias": "WA1",
"locationDescription": "WA1 - US West (Seattle)",
"subnets": [
"10.10.10.0/24"
]
},
"remote": {
"siteName": "Montreal Office",
"deviceType": "Cisco ASA5520 v8.3",
"address": "1.2.3.4",
"subnets": [
"10.1.1.0/24"
]
},
"ike": {
"encryption": "aes128",
"hashing": "sha1_96",
"diffieHellmanGroup": "group2",
"lifetime": 28800,
"mode": "main",
"deadPeerDetection": false,
"natTraversal": false,
"remoteIdentity": null
},
"ipsec": {
"encryption": "aes128",
"hashing": "sha1_96",
"protocol": "esp",
"pfs": "group2",
"lifetime": 3600
},
"links": [
{
"rel": "self",
"href": "/v2/siteToSiteVpn/4FA8D6C83271CA53F9ABA815D7F4A0DD?account=ACCT"
}
]
}
Get Site to Site VPNs
Gets all Site to Site VPNs for a given account. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need to get a list Site to Site VPNs for a given account.
URL
Structure
GET https://api.ctl.io/v2/siteToSiteVpn?account={accountId}
Example
GET https://api.ctl.io/v2/siteToSiteVpn?account=ACCT
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountId | string | Short code for a particular account | Yes |
Response
The response will be an entity representing the Site to Site VPNs for a given account.
Example
JSON
[
{
"id": "4FA8D6C83271CA53F9ABA815D7F4A0DD",
"changeInfo": {
"createdBy": "username",
"createdDate": "2016-06-14T16:22:51Z",
"modifiedBy": "username",
"modifiedDate": "2016-06-14T17:53:12Z"
},
"accountAlias": "ACCT",
"local": {
"address": "4.3.2.1",
"locationAlias": "WA1",
"locationDescription": "WA1 - US West (Seattle)",
"subnets": [
"10.10.10.0/24"
]
},
"remote": {
"siteName": "Montreal Office",
"deviceType": "Cisco ASA5520 v8.3",
"address": "1.2.3.4",
"subnets": [
"10.1.1.0/24"
]
},
"ike": {
"encryption": "aes128",
"hashing": "sha1_96",
"diffieHellmanGroup": "group2",
"lifetime": 28800,
"mode": "main",
"deadPeerDetection": false,
"natTraversal": false,
"remoteIdentity": null
},
"ipsec": {
"encryption": "aes128",
"hashing": "sha1_96",
"protocol": "esp",
"pfs": "group2",
"lifetime": 3600
},
"links": [
{
"rel": "self",
"href": "/v2/siteToSiteVpn/4FA8D6C83271CA53F9ABA815D7F4A0DD?account=ACCT"
}
]
}
]
Update a Site to Site VPN
Updates a Site to Site VPN for a given account. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you need to update a Site to Site VPN for a given account.
URL
Structure
PUT https://api.ctl.io/v2/siteToSiteVpn/{vpnId}?account={accountId}
Example
PUT https://api.ctl.io/v2/siteToSiteVpn/4FA8D6C83271CA53F9ABA815D7F4A0DD?account=ACCT
Request
URI Parameters
Name | Type | Description | Req. |
---|---|---|---|
accountId | string | Short code for a particular account | Yes |
vpnId | string | ID of the VPN | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
local | string | Local site properties | No |
remote | string | Remote site properties | No |
ike | string | IKE properties | No |
ipsec | string | IPSec properties | No |
Local Entity
Name | Type | Description | Req. |
---|---|---|---|
subnets | string | Local address for Site to Site VPN, specified using CIDR notation | No |
Remote Entity
Name | Type | Description | Req. |
---|---|---|---|
siteName | string | Friendly name of the site | No |
deviceType | string | Friendly name of the device type | No |
address | string | Remote address for Site to Site VPN, specified using CIDR notation | No |
subnets | string | Remote network address for Site to Site VPN, specified using CIDR notation | No |
IKE Entity
Name | Type | Description | Option | Req. |
---|---|---|---|---|
encryption | string | Encryption algorithm | aes128, aes192, aes256, tripleDES | No |
hashing | string | Hashing algorithm | sha1_96, sha1_256, md5 | No |
diffieHelmanGroup | string | Group 1 (legacy), Group 2 or Group 5. If using AES with a cipher strength greater than 128-bit, or SHA2 for hashing, we recommend Group 5, otherwise Group 2 is sufficient | group1, group2, group5 | No |
preSharedKey | string | The pre-shared key is a shared secret that secures the VPN tunnel. This value must be identical on both ends of the connection | No | |
lifetime | string | Lifetime is set to 8 hours for IKE. This is not required to match, as the negotiation will choose the shortest value supplied by either peer | 3600, 28800, 86400 | No |
mode | string | Protocol mode | main, aggressive | No |
deadPeerDetection | boolean | Specify if you wish this enabled or disabled. Check your device defaults; for example, Cisco ASA defaults to 'on', while Netscreen/Juniper SSG or Juniper SRX default to 'off'. Our default is 'off'. | true/false | No |
natTraversal | boolean | NAT-Traversal: Allows connections to VPN end-points behind a NAT device. Defaults to 'off'. If you require NAT-T, you also need to provide the private IP address that your VPN endpoint will use to identify itself. | true/false | No |
remoteIdentity | string | The private IP address that your VPN endpoint will use to identify itself. Required only when NAT-T state is on | a valid IPv4 address | No |
IPSec Entity
Name | Type | Description | Option | Req. |
---|---|---|---|---|
encryption | string | Encryption algorithm | aes128, aes192, aes256, tripleDES | No |
hashing | string | Hashing algorithm | sha1_96, sha1_256, md5 | No |
protocol | string | IPSec protocol | esp, ah | No |
pfs | string | PFS enabled or disabled (we suggest enabled, using Group 2, though Group 5 is recommended with SHA2 hashing or AES-192 or AES-256) | disabled, group1, group2, group5 | No |
lifetime | string | Lifetime is set to 1 hour (and unlimited KB). This setting is not required to match, as the negotiation process will choose the shortest value supplied by either peer. | 3600, 28800, 86400 | No |
Example
JSON
{
"ike": {
"preSharedKey": "321drowssaP"
}
}
Response
The response will be an entity representing the Site to Site VPN that was updated.
Example
JSON
{
"id": "4FA8D6C83271CA53F9ABA815D7F4A0DD",
"changeInfo": {
"createdBy": "username",
"createdDate": "2016-06-14T16:22:51Z",
"modifiedBy": "username",
"modifiedDate": "2016-06-14T17:53:12Z"
},
"pendingTaskId": "54847",
"accountAlias": "ACCT",
"local": {
"address": "4.3.2.1",
"locationAlias": "WA1",
"locationDescription": "WA1 - US West (Seattle)"
"subnets": [
"10.10.10.0/24"
]
},
"remote": {
"siteName": "Montreal Office",
"deviceType": "Cisco ASA5520 v8.3",
"address": "1.2.3.4",
"subnets": [
"10.1.1.0/24"
]
},
"ike": {
"encryption": "aes128",
"hashing": "sha1_96",
"diffieHelmanGroup": "group2",
"preSharedKey": "321drowssaP",
"lifetime": 28800,
"mode": "main",
"deadPeerDetection": false,
"natTraversal": false,
"remoteIdentity": null
},
"ipsec": {
"encryption": "aes128",
"hashing": "sha1_96",
"protocol": "esp",
"pfs": "group2",
"lifetime": 3600
},
"links": [
{
"rel": "self",
"href": "/v2/siteToSiteVpn/4FA8D6C83271CA53F9ABA815D7F4A0DD?account=ACCT"
}
}
Add Webhook Target Uri
Add a target uri to the webhook for a specified event. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to add a uri to the collection of targetUris in a webhook.
URL
Structure
POST https://api.ctl.io/v2/webhooks/{accountAlias}/{event}/configuration/targetUris
Example
POST https://api.ctl.io/v2/webhooks/ALIAS/Account.Created/configuration/targetUris
Request
Uri Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
Event | string | The name of the webhook event being configured | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
targetUri | string | A uri that will be called when the event occurs | Yes |
Examples
JSON
{ targetUri: "https://test.api/account/created" }
Response
The response will not contain JSON content, but should return the HTTP 204 No Content
response upon making the changes successfully.
Configuring Webhooks and Consuming Notifications
Description
Webhooks make it possible to subscribe to key events that occur in the CenturyLink Cloud. In this article, we will walk through how to create a Webhook listener, configure a Webhook, and receive a notification. For general details on Webhooks, read the Webhook FAQ.
Prerequisites
- Must have a CenturyLink Cloud account
- Must be able to deploy applications to an internet-facing location that has legitimate SSL certificates
Detailed Steps
Build the Webhook Listener
A Webhook listener is simply a web application that can receive a JSON message via HTTP POST
. A working example application written in Node.js can be downloaded from GitHub. When designing a Webhook listener, consider the following activities:
-
Decide what events to subscribe to. Webhooks support Account, Alert, User, and Server events.
-
Process HTTP POST requests. In the example Node.js application, this is done in the app.js file.
app.post('/webhook/account', function(req, res){
//extract the signature header
var signatureHeader = req.get('Tier3-RsaSha1');//call function to send webhook data to client browser
BroadcastAccountWebhook(req.body, signatureHeader);//send OK response to CenturyLink Cloud
res.send("ok");})
-
Handle the payload for each message type. In the example project, this is done in a client-side JavaScript file and the entire payload is shown to the user. A listener application that uses typed object definitions must be able to deserialize the JSON structures. Examples of each payload type can be found in the Webhooks FAQ.
Deploy the Webhook Listener
-
Webhooks must be deployed to an internet-facing location that is reachable by the CenturyLink Cloud platform.
-
Identify a host (public cloud IaaS, public cloud PaaS, or on-premises data center) with a valid (not self-signed) SSL certificate.
-
Deploy the application and ensure that it's reachable. For this demonstration, the listener was deployed to a non-CenturyLink Cloud public Cloud Foundry environment hosted by Pivotal.
Configure a Webhook in the CenturyLink Cloud
-
Go to the CenturyLink Control Portal, log in, and select the API option from the navigation menu.
-
Switch to the Webhooks sub-tab and review the list of available Webhooks. You can configure unique endpoints for each individual Webhook. In the image below, notice that the Account.Updated Webhook was set with the URL to the listener web application. A Webhook will respond to events that occur in sub-accounts if the "include sub-accounts" checkbox is selected.
-
Click Save when the configuration is complete.
-
Add Webhook URLs for any other Webhooks of interest.
Test the Webhook
-
Trigger an event in the platform that the Webhook will respond to. View the Webhook FAQ for a list of what platform events will trigger a Webhook notification. To get the Account.Updated Webhook configured above to fire, change an account setting such as the mailing address.
-
Save the account change. Within seconds, the Webhook listener service should receive the notification message. In the sample application, this information is pushed to the browser. Clicking on the updated account's name reveals both the full payload and the hashed signature value.
Verifying the Webhook Signature
Each Webhook notification includes a signature attached in the Tier3-RsaSha1
header. This signature is generated by creating a SHA-1 hash from the JSON payload and encrypting it with an RSA private key. It can be verified by following these steps:
- Generate a SHA-1 hash from the message body
- Decrypt the signature using CenturyLink Cloud's public key (which can be found in the Webhook FAQ)
- Compare these two values and confirm they are equal. If they're not, the message did not come from CenturyLink Cloud.
Though someone trying to be malicious may change the JSON message, they will not be able to get the correct signature to match up without the use of the private key. This confirms that the message indeed came from CenturyLink Cloud and not someone spoofing or tampering with the message in-flight.
Notice in the screenshot above that under the hashed signature value, there is a VERIFIED message in green. This is because the example application performs this verification and outputs the results. In the code above for the account Webhook handler, we retrieve the signature from the Tier3-RsaSha1
header. Later in the code, we verify the signature
function VerifySignature(data, signatureHeader) {
var publicKey = fs.readFileSync(path.resolve(__dirname, 'public.pem')).toString();
var key = new rsa(publicKey, 'pkcs8-public-pem', {"signingScheme":"sha1"});
return key.verify(data, signatureHeader, 'utf8', 'base64');
}
If this verification failed because the message was tampered with or came from someone else, the following message would appear. Notice the message matches the one above, but signature does not.
Delete Webhook Target Uri
Delete a target uri from a webhook. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to delete a single target uri from a particular webhook.
URL
Structure
DELETE https://api.ctl.io/v2/webhooks/{accountAlias}/{event}/configuration/targetUris?targetUri={uri}
Example
DELETE https://api.ctl.io/v2/webhooks/ALIAS/Account.Created/configuration/targetUris?targetUri=https%3A%2F%2Ftest.api%2Faccount%2Fcreated
Request
Uri Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
Event | string | The name of the event from which the target uri will be deleted | Yes |
targetUri | string | The uri that will be removed | Yes |
Response
The response will not contain JSON content, but should return the HTTP 204 No Content
response upon making the changes successfully.
Delete Webhook
Delete a webhook for an event. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to delete the webhook for an event. This will delete all the targetUris for the specified event.
URL
Structure
DELETE https://api.ctl.io/v2/webhooks/{accountAlias}/{event}/configuration
Example
DELETE https://api.ctl.io/v2/webhooks/ALIAS/Account.Created/configuration
Request
Uri Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
Event | string | The name of the event for which the webhook will be deleted | Yes |
Response
The response will not contain JSON content, but should return the HTTP 204 No Content
response upon making the changes successfully.
Get Webhooks
Gets the details on the configured webhooks. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to discover all the webhooks that have been configured for every available event and get links to operations for modifying those webhooks.
URL
Structure
GET https://api.ctl.io/v2/webhooks/{accountAlias}
Example
GET https://api.ctl.io/v2/webhooks/ALIAS
Request
Uri Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
Response
Webhook Collection Entity Definition
Name | Type | Description |
---|---|---|
items | Webhook[] | A list of webhooks, one per available event |
Webhook Entity Definition
Name | Type | Description |
---|---|---|
name | string | The name of the event that triggers the webhook |
configuration | Configuration | Details about the webhook handling the event |
Configuration Entity Definition
Name | Type | Description |
---|---|---|
recursive | boolean | If true, the webhook will be called when the event occurs in a sub-accounts |
targetUris | TargetUri[] | The list of targets to be called when the event occurs |
TargetUri Entity Definition
Name | Type | Description |
---|---|---|
targetUri | string | A uri that will be called when the event occurs |
Examples
JSON
{
"items": [
{
"name": "Account.Created",
"configuration": {
"recursive": false,
"targetUris": [
{
"targetUri": "https://uri.test/account/created"
},
{
"targetUri": "https://api.test/account/created"
}
]
},
"links": [
{
"rel": "configuration",
"href": "/v2/webhooks/RJP/Account.Created/configuration",
"verbs": [
"DELETE",
"PUT"
]
}
]
},
{
"name": "Account.Deleted",
"configuration": {
"recursive": false,
"targetUris": [
{
"targetUri": "https://api.test/account/deleted"
}
]
},
"links": [
{
"rel": "configuration",
"href": "/v2/webhooks/RJP/Account.Deleted/configuration",
"verbs": [
"DELETE",
"PUT"
]
}
]
},
{
"name": "Account.Updated",
"links": [
{
"rel": "configuration",
"href": "/v2/webhooks/RJP/Account.Updated/configuration",
"verbs": [
"DELETE",
"PUT"
]
}
]
},
{
"name": "Alert.Notification",
"links": [
{
"rel": "configuration",
"href": "/v2/webhooks/RJP/Alert.Notification/configuration",
"verbs": [
"DELETE",
"PUT"
]
}
]
},
{
"name": "Server.Created",
"links": [
{
"rel": "configuration",
"href": "/v2/webhooks/RJP/Server.Created/configuration",
"verbs": [
"DELETE",
"PUT"
]
}
]
},
{
"name": "Server.Deleted",
"links": [
{
"rel": "configuration",
"href": "/v2/webhooks/RJP/Server.Deleted/configuration",
"verbs": [
"DELETE",
"PUT"
]
}
]
},
{
"name": "Server.Updated",
"links": [
{
"rel": "configuration",
"href": "/v2/webhooks/RJP/Server.Updated/configuration",
"verbs": [
"DELETE",
"PUT"
]
}
]
},
{
"name": "User.Created",
"links": [
{
"rel": "configuration",
"href": "/v2/webhooks/RJP/User.Created/configuration",
"verbs": [
"DELETE",
"PUT"
]
}
]
},
{
"name": "User.Deleted",
"links": [
{
"rel": "configuration",
"href": "/v2/webhooks/RJP/User.Deleted/configuration",
"verbs": [
"DELETE",
"PUT"
]
}
]
},
{
"name": "User.Updated",
"links": [
{
"rel": "configuration",
"href": "/v2/webhooks/RJP/User.Updated/configuration",
"verbs": [
"DELETE",
"PUT"
]
}
]
}
],
"links": [
{
"rel": "self",
"href": "/v2/webhooks/RJP"
}
]
}
Set Webhook
Change the configuration of a webhook for a specific event. Calls to this operation must include a token acquired from the authentication endpoint. See the Login API for information on acquiring this token.
When to Use It
Use this API operation when you want to change the configuration of a webhook including the uris that get called when the event occurs and whether the uris are called when the event occurs in a sub-account.
URL
Structure
PUT https://api.ctl.io/v2/webhooks/{accountAlias}/{event}/configuration
Example
PUT https://api.ctl.io/v2/webhooks/ALIAS/Account.Created/configuration
Request
Uri Parameters
Name | Type | Description | Req. |
---|---|---|---|
AccountAlias | string | Short code for a particular account | Yes |
Event | string | The name of the webhook event being configured | Yes |
Content Properties
Name | Type | Description | Req. |
---|---|---|---|
recursive | boolean | If true, the webhook will be called when the event occurs in a sub-accounts | Yes |
targetUris | TargetUri[] | The targets called when the event occurs | No |
TargetUri Entity Definition
Name | Type | Description | Req. |
---|---|---|---|
targetUri | string | A uri that will be called when the event occurs | Yes |
Examples
JSON
{
recursive: true,
targetUris: [
{ targetUri: "https://test.uri/account/created" },
{ targetUri: "https://test.api" }
]
}
Response
The response will not contain JSON content, but should return the HTTP 204 No Content
response upon making the changes successfully.
Webhooks FAQ
Description
The CenturyLink Cloud supports Webhooks which send push notifications to an HTTP endpoint specified by the customer. This FAQ addresses commonly asked questions about the service. For a walkthrough of how to use Webhooks, see Configuring Webhooks and Consuming Notifications.
Q: What exactly is a Webhook?
A: Webhooks make it possible to create push notification solutions. Platform events (e.g. "server created") are sent in real-time to a web endpoint configured for the Webhook. Whenever an event occurs, a JSON message is sent as an HTTP POST request.
Q: Did CenturyLink Cloud invent the idea of Webhooks?
A: No, but we're among the first to use it in an IaaS cloud. Webhooks are in use today for a variety of web properties including Wordpress, Trello, and Zoho. CenturyLink Cloud sees value in embracing this model for public cloud customers who want to be more responsive to changes in their cloud account.
Q: In what scenario would I use a Webhook?
A: We've identified numerous use cases where Webhooks can replace or augment the components of existing processes:
- Replace polling-based synchronization solutions. Customers often use request-response API operations to retrieve data about their assets in the CenturyLink Cloud. However, polling is fairly inefficient as the caller is simply asking "Do you have anything for me?" over and over again. With Webhooks, there's no longer a need to poll for changes. Instead, the CenturyLink Cloud immediately tells customers whenever key events occur in the platform.
- Perform real-time data analytics. Customers can use this data to assess their cloud usage. For resellers, Webhooks provide an opportunity to observe server provisioning and detect trends. They could use it to watch for fraudulent signup scenarios my detecting abnormal combinations of account creation and server provisioning.
- Monitor activities with security, compliance implications. For customers who closely govern their cloud usage, Webhooks provide the opportunity to immediately see what users are doing. Whether adding public IP addresses, or creating new user accounts, customers can quickly monitor and respond to activities that are counter to company policies.
Q: What triggers a Webhook?
A: There are currently Webhooks for four major categories: Accounts, Users, Alerts, and Servers.
- Accounts. Triggered on account creation and deletion. Triggered on account changes including account status, business name, address, telephone, fax, and time zone.
- Users. Triggered on user creation and deletion. Triggered on user changes including user status, password, security PIN, email address, alternative email address, first name, last name, title, office number, mobile number, fax number, time zone.
- Alerts. Triggered when a user-defined alert policy threshold is exceeded, and when the server returns to a utilization level below the alert policy threshold.
- Servers. Triggered on server creation and deletion. Triggered on server changes including server archive, server restore, convert to template, convert from template, add/delete/edit disks, edit CPU, edit memory, assigned Group, description, add/remove IP addresses, power on/off, and shutdown.
Q: What data is sent in the Webhook event notification?
A: Some push notification systems only send a bare minimum of information and ask the user to call-back for the full data payload. CenturyLink Cloud Webhooks send a full JSON-encoded payload AND include a URL to the referenced resource.
The Account event payload:
{
"addressLine1": "112 112th Ave NE",
"addressLine2": "Ste 300",
"city": "Bellevue",
"stateProvince": "WA",
"country": "USA",
"postalCode": "98004",
"telephone": "800-buy-cloud",
"status": "Active",
"isManaged": true,
"links": [
{
"rel": "self",
"href": "/v2/accounts/DEMO"
},
{
"rel": "parentAccount",
"href": "/v2/accounts/T3N"
}
],
"accountAlias": "DEMO",
"businessName": "Seroter Industries",
"parentAlias": "T3N",
"primaryDataCenter": "WA1"
}
The User event payload:
{
"uri": "/v2/users/demo@user.com",
"accountUri": "/v2/accounts/DEMO",
"accountAlias": "DEMO",
"userName": "demo@user.com",
"emailAddress": "demo@user.com",
"firstName": "Richard",
"lastName": "Seroter",
"status": "Active"
}
The Server event payload:
{
"id": "WA1DEMOSERVER01",
"name": "WA1DEMOSERVER01",
"description": "My web server",
"groupId": "2a5c0b9662cf4fc8bf6180f139facdc0",
"isTemplate": false,
"locationId": "WA1",
"osType": "Windows 2008 64-bit",
"status": "active",
"details": {
"ipAddresses": [
{
"internal": "10.81.123.11"
},
{
"public": "74.41.155.112",
"internal": "10.81.123.14"
}
],
"alertPolicies": [
{
"id": "45866e6219e84ab786d07d4f570ba960",
"name": "Production Web Servers - RAM",
"links": [
{
"rel": "self",
"href": "/v2/alertPolicies/DEMO/45866e6219e84ab786d07d4f570ba960"
},
{
"rel": "alertPolicyMap",
"href": "/v2/servers/DEMO/WA1DEMOSERVER01/alertPolicies/45866e6219e84ab786d07d4f570ba960",
"verbs": [
"DELETE"
]
}
]
}
],
"cpu": 1,
"diskCount": 1,
"inMaintenanceMode": false,
"memoryMB": 4096,
"powerState": "started",
"storageGB": 50,
"disks": [
{
"id": "0:0",
"sizeGB": 50,
"partitionPaths": []
}
],
"partitions": [],
"snapshots": [],
"customFields": [
{
"id": 22,
"name": "Cost Center",
"value": "IT-DEV",
"displayValue": "IT-DEV"
},
{
"id": 237,
"name": "CMDB ID",
"value": "1100003",
"displayValue": "1100003"
}
]
},
"type": "standard",
"storageType": "standard",
"changeInfo": {
"createdBy": "demo@user.com",
"createdDate": "2012-12-17T01:17:17Z",
"modifiedBy": "demo@user.com",
"modifiedDate": "2014-06-18T18:28:54Z"
},
"links": [
{
"rel": "self",
"href": "/v2/servers/DEMO/WA1DEMOSERVER01",
"id": "WA1DEMOSERVER01",
"verbs": [
"GET",
"PATCH",
"DELETE"
]
},
{
"rel": "group",
"href": "/v2/groups/DEMO/2a5c0b9662cf4fc8bf6180f139facdc0",
"id": "2a5c0b9662cf4fc8bf6180f139facdc0"
},
{
"rel": "account",
"href": "/v2/accounts/DEMO",
"id": "demo"
},
{
"rel": "billing",
"href": "/v2/billing/DEMO/serverPricing/WA1DEMOSERVER01"
},
{
"rel": "statistics",
"href": "/v2/servers/DEMO/WA1DEMOSERVER01/statistics"
},
{
"rel": "scheduledActivities",
"href": "/v2/servers/DEMO/WA1DEMOSERVER01/scheduledActivities"
},
{
"rel": "publicIPAddresses",
"href": "/v2/servers/DEMO/WA1DEMOSERVER01/publicIPAddresses",
"verbs": [
"POST"
]
},
{
"rel": "alertPolicyMappings",
"href": "/v2/servers/DEMO/WA1DEMOSERVER01/alertPolicies",
"verbs": [
"POST"
]
},
{
"rel": "antiAffinityPolicyMapping",
"href": "/v2/servers/DEMO/WA1DEMOSERVER01/antiAffinityPolicy",
"verbs": [
"DELETE",
"PUT"
]
},
{
"rel": "cpuAutoscalePolicyMapping",
"href": "/v2/servers/DEMO/WA1DEMOSERVER01/cpuAutoscalePolicy",
"verbs": [
"DELETE",
"PUT"
]
},
{
"rel": "capabilities",
"href": "/v2/servers/DEMO/WA1DEMOSERVER01/capabilities"
},
{
"rel": "credentials",
"href": "/v2/servers/DEMO/WA1DEMOSERVER01/credentials"
},
{
"rel": "publicIPAddress",
"href": "/v2/servers/DEMO/WA1DEMOSERVER01/publicIPAddresses/74.41.155.112",
"id": "74.41.155.112",
"verbs": [
"GET",
"PUT",
"DELETE"
]
}
]
}
*Note that server delete events will only contain the accountAlias
and name
fields as the server has been deleted and any other information is no longer available.
The Alert event payload:
{
"accountAlias": "DEMO",
"serverName": "WA1DEMOSERVER01",
"triggers": [
{
"data": {
"cpu": 2,
"cpuPercent": 39.34
},
"duration": "00:05:00",
"metric": "cpu",
"stateEndTime": "2014-06-18T18:23:46Z",
"stateStartTime": "2014-06-18T18:20:00Z",
"state": "notTriggered"
}
]
}
Q: Where do I go to set a Webhook?
A: Webhooks are available at the Account-level under the API menu. There is now a sub-menu called "Webhooks." Customers can set a target URL for each Webhook event listed.
Q: Can notifications be sent for events that occur within sub-accounts?
A: Yes. For each individual Webhook event, customers can specify whether they want sub-account events to ALSO be sent to the designated endpoint. If a parent account has the "include sub-accounts" checkbox selected, and a sub-account has specified their own Webhook endpoint for the same event, then a copy of the event notification is sent to both endpoints
Q: Are there any requirements for the service that receives the Webhook notification?
A: All Webhook listener services must support secure HTTP transport via HTTPS. The data transmitted in the event may be sensitive and shouldn't travel over unprotected channels. Secondly, listener services must be on the public internet in a location reachable by the CenturyLink CLoud platform. If a customer plans on consuming this data within an internal system, consider using a reverse proxy or another mechanism to forward traffic from a public-facing web service to an internal system.
Q: How can listener services be sure that it was CenturyLink Cloud that sent the message and not someone spoofing you?
A: While SSL ensures that the message cannot be read in transit, it doesn't protect you from rogue callers who target your public endpoint. Each Webhook notification includes a signature hash of the message payload. The Tier3-RsaSha1
header is signed with our private key, leveraging the JSON payload as input. This signature can be verified with the following public key and the received JSON body. Customers can use this process to ensure that the message wasn't tampered with. For more details and sample code on how to verify the signature, see Configuring Webhooks and Consuming Notifications.
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnmwsVLJ22Y8lmnk+1fI/
JKkm4bM1GvggI7DN10KIoPDgBbNcePZqcFayDdmVuq/jL9MFBrqFSfVszgdq8OWF
G9lEB5vP29K/N+0kRg5V2NDXddI5AOzx6jDjkNM/jjb45UXeDcPzMMdMOl/ds6uT
p6mbfG3U8dWqM/if7mzjEbbhYkBM3OuacEFk38Tkm49IJ4jHnC0p9qWO2iaxJqRc
08M2cJ+yKcFudCVKX8ANE6g6YKK+5aSabxfHX83Vjr4I0kpqo0cfP4aSW/CPDUZ7
yR4bFiy5Wv2de2V+FOGVBQF+/viSzrtrwQjUOJViuxEnifc06xuDF0QFta9anz4d
LQIDAQAB
-----END PUBLIC KEY-----
Q: How soon after an event occurs does a Webhook notification get sent?
A: As soon as the event occurs in the CenturyLink Cloud platform, it is routed through our messaging infrastructure and sent to each Webhook endpoint. In reality, this means that messages are often received within 5 seconds of the event occurring.
Q: What happens if the destination is unreachable?
A: There is no guaranteed delivery with CenturyLink Cloud Webhooks. We make a single attempt to send a message to the designated endpoint and if it fails, it is not retried. This means two things: (1) design your endpoints to be highly available and withstand failures of any single component in the solution, and (2) rely on a combination of Webhooks and daily web service API calls to ensure that your local repositories stay in sync.