Preface
General
The interface is based on the HTTP protocol; therefore, you can use any HTTP library with it. You can use a simple command-line client like curl.
- POST parameters are transferred in the format "application/x-www-form-urlencoded"
- The response format is JSON; by appending ".yaml", the response format is set to YAML.
- If the query was successful, the HTTP status code 200 OK is returned. IF a new resource was created, the HTTP status code is set to 201 CREATED.
- If there is an error, the appropriate HTTP error code is set.
- Authentication is done via HTTP Basic Auth.
- The webservice is accessible only via HTTPS.
- For the webservice, a separate user can be created; you can find this option in your Robot web panel under "Settings".
URL
https://robot-ws.your-server.de
Example JSON
curl -u login:password https://robot-ws.your-server.de/reset
Return value
[
{
"reset":
{
"server_ip": "123.123.123.123",
"server_number": 321,
"type": ["man","hw","sw"]
}
}
]
Example YAML
curl -u login:password https://robot-ws.your-server.de/reset.yaml
Return value
-
reset: { server_ip: 123.123.123.123, server_number: 321, type: [man, hw, sw] }
Errors
Error format
error (Object)
|
status (Integer)
|
HTTP Status Code
|
code (String)
|
Specific error code
|
message (String)
|
Specific error message
|
|
Example
{
"error":
{
"status": 404,
"code": "BOOT_NOT_AVAILABLE",
"message": "No boot configuration available for this server"
}
}
Error format invalid input
error (Object)
|
status (Integer)
|
400
|
code (String)
|
INVALID_INPUT
|
message (String)
|
invalid input
|
missing (Array)
|
Array of missing input parameters or null
|
invalid (Array)
|
Array of invalid input paramaters or null
|
|
Authentication error
If authentication fails, the HTTP status "401 - Unauthorized" is returned.
Please note that the IP from which you attempt to access will be blocked for 10 minutes after 3 failed login attempts.
Request limit
If the request limit is reached, the HTTP status "403 - Forbidden" is returned.
Error format request limit
error (Object)
|
status (Integer)
|
403
|
code (String)
|
RATE_LIMIT_EXCEEDED
|
max_request (Integer)
|
Maximum allowed requests
|
interval (Integer)
|
Time interval in seconds
|
message (String)
|
rate limit exceeded
|
|
Unavailability due to maintenance
If the webservice is unavailable due to maintenance, the HTTP Status "503 - Service Unavailable" is returned.
Server
GET /server
Description
Query data of all servers
Request limit
200 requests per 1 hour
Output
(Array)
|
server (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server ID
|
server_name (String)
|
Server name
|
product (String)
|
Server product name
|
dc (String)
|
Data centre number
|
traffic (String)
|
Free traffic quota
|
flatrate (Boolean)
|
Indicates if the server has a traffic flatrate (traffic overusage will not be charged but the bandwith will be reduced) or not (traffic overusage will be charged)
|
status (String)
|
Server status ("ready" or "in process")
|
throttled (Boolean)
|
Bandwidth limit status
|
cancelled (Boolean)
|
Status of server cancellation
|
paid_until (String)
|
Paid until date
|
|
|
Errors
Status
|
Code
|
Description
|
404
|
NOT_FOUND
|
No server found
|
Example
curl -u login:password https://robot-ws.your-server.de/server
[
{
"server":{
"server_ip":"123.123.123.123",
"server_number":321,
"server_name":"server1",
"product":"DS 3000",
"dc":"6",
"traffic":"5 TB",
"flatrate":true,
"status":"ready",
"throttled":true,
"cancelled":false,
"paid_until":"2010-09-02"
}
},
{
"server":{
"server_ip":"123.123.123.124",
"server_number":421,
"server_name":"server2",
"product":"X5",
"dc":"5",
"traffic":"2 TB",
"flatrate":true,
"status":"ready",
"throttled":false,
"cancelled":false,
"paid_until":"2010-06-11"
}
}
]
GET /server/<server-ip>
Description
Query server data for a specific server
Request limit
200 requests per 1 hour
Output
server (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server ID
|
server_name (String)
|
Server name
|
product (String)
|
Server product name
|
dc (String)
|
Data centre number
|
traffic (String)
|
Free traffic quota
|
flatrate (Boolean)
|
Indicates if the server has a traffic flatrate (traffic overusage will not be charged but the bandwith will be reduced) or not (traffic overusage will be charged)
|
status (String)
|
Server status ("ready" or "in process")
|
throttled (Boolean)
|
Bandwidth limit status
|
cancelled (Boolean)
|
Status of server cancellation
|
paid_until (String)
|
Paid until date
|
ip (Array)
|
Array of assigned single IP addresses
|
subnet (Array)
|
Array of assigned subnets
|
reset (Boolean)
|
Flag of reset system availability
|
rescue (Boolean)
|
Flag of Rescue System availability
|
vnc (Boolean)
|
Flag of VNC installation availability
|
windows (Boolean)
|
Flag of Windows installation availability
|
plesk (Boolean)
|
Flag of Plesk installation availability
|
cpanel (Boolean)
|
Flag of cPanel installation availability
|
wol (Boolean)
|
Flag of Wake On Lan availability
|
|
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
Example
curl -u login:password https://robot-ws.your-server.de/server/123.123.123.123
{
"server":{
"server_ip":" 123.132.123.123",
"server_number":321,
"server_name":"server1",
"product":"EQ 8",
"dc":"11",
"traffic":"5 TB",
"flatrate":true,
"status":"ready",
"throttled":false,
"cancelled":false,
"paid_until":"2010-08-04",
"ip":[
"124.124.124.124"
],
"subnet":[
{
"ip":"2a01:4f8:111:4221::",
"mask":"64"
}
],
"reset":true,
"rescue":true,
"vnc":true,
"windows":true,
"plesk":true,
"cpanel":true,
"wol":true
}
}
POST /server/<server-ip>
Description
Update server name for a specific server
Request limit
200 requests per 1 hour
Input
Name
|
Description
|
server_name
|
Server name
|
Output
server (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server ID
|
server_name (String)
|
Server name
|
product (String)
|
Server product name
|
dc (String)
|
Data centre number
|
traffic (String)
|
Free traffic quota
|
flatrate (Boolean)
|
Indicates if the server has a traffic flatrate (traffic overusage will not be charged but the bandwith will be reduced) or not (traffic overusage will be charged)
|
status (String)
|
Server status ("ready" or "in process")
|
throttled (Boolean)
|
Bandwidth limit status
|
cancelled (Boolean)
|
Status of server cancellation
|
paid_until (String)
|
Paid until date
|
ip (Array)
|
Array of assigned single IP addresses
|
subnet (Array)
|
Array of assigned subnets
|
reset (Boolean)
|
Flag of reset system availability
|
rescue (Boolean)
|
Flag of Rescue System availability
|
vnc (Boolean)
|
Flag of VNC installation availability
|
windows (Boolean)
|
Flag of Windows installation availability
|
plesk (Boolean)
|
Flag of Plesk installation availability
|
cpanel (Boolean)
|
Flag of cPanel installation availability
|
wol (Boolean)
|
Flag of Wake On Lan availability
|
|
Errors
Status
|
Code
|
Description
|
400
|
INVALID_INPUT
|
Invalid input parameters
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
Example
curl -u login:password https://robot-ws.your-server.de/server/123.123.123.123 -d server_name=server1
{
"server":{
"server_ip":" 123.132.123.123",
"server_number":321,
"server_name":"server1",
"product":"EQ 8",
"dc":"11",
"traffic":"5 TB",
"flatrate":true,
"status":"ready",
"throttled":false,
"cancelled":false,
"paid_until":"2010-08-04",
"ip":[
"124.124.124.124"
],
"subnet":[
{
"ip":"2a01:4f8:111:4221::",
"mask":"64"
}
],
"reset":true,
"rescue":true,
"vnc":true,
"windows":true,
"plesk":true,
"cpanel":true,
"wol":true
}
}
GET /server/<server-ip>/cancellation
Description
Query cancellation data for a server
Request limit
200 requests per 1 hour
Output
cancellation (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server ID
|
server_name (String)
|
Server name
|
earliest_cancellation_date (String)
|
Earliest possible cancellation date, format yyyy-MM-dd
|
cancelled (Boolean)
|
Status of server cancellation
|
cancellation_date (String)
|
Cancellation date if cancellation is active, format yyyy-MM-dd, otherwise null
|
cancellation_reason (Array|String)
|
Array of possible cancellation reasons or cancellation reason if cancellation is active
|
|
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
Example
curl -u login:password https://robot-ws.your-server.de/server/123.123.123.123/cancellation
{
"cancellation":{
"server_ip":" 123.132.123.123",
"server_number":321,
"server_name":"server1",
"earliest_cancellation_date":"2014-04-15",
"cancelled":false,
"cancellation_date":null,
"cancellation_reason":[
"Upgrade to a new server",
"Dissatisfied with the hardware",
"Dissatisfied with the support",
"Dissatisfied with the network",
"Dissatisfied with the IP\/subnet allocation",
"Dissatisfied with the Robot webinterface",
"Dissatisfied with the official Terms and Conditions",
"Server no longer necessary due to project ending",
"Server too expensive"
]
}
}
POST /server/<server-ip>/cancellation
Description
Cancel a server
Request limit
200 requests per 1 hour
Input
Name
|
Description
|
cancellation_date
|
Date to which the server should be cancelled
|
cancellation_reason
|
Cancellation reason, optional
|
Output
cancellation (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server ID
|
server_name (String)
|
Server name
|
earliest_cancellation_date (String)
|
Earliest possible cancellation date, format yyyy-MM-dd
|
cancelled (Boolean)
|
1
|
cancellation_date (String)
|
Cancellation date, format yyyy-MM-dd
|
cancellation_reason (String)
|
Cancellation reason or null
|
|
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
409
|
CONFLICT
|
The server is already cancelled
|
409
|
CONFLICT
|
Cancellation of server is not possible because of active transfer
|
500
|
INTERNAL_ERROR
|
Cancellation failed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/server/123.123.123.123/cancellation -d 'cancellation_date=2014-04-15'
{
"cancellation":{
"server_ip":" 123.132.123.123",
"server_number":321,
"server_name":"server1",
"earliest_cancellation_date":"2014-04-15",
"cancelled":true,
"cancellation_date":"2014-04-15",
"cancellation_reason":null
}
}
DELETE /server/<server-ip>/cancellation
Description
Withdraw a server cancellation
Request limit
200 requests per 1 hour
Output
No output
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
409
|
CONFLICT
|
The cancellation cannot be revoked
|
500
|
INTERNAL_ERROR
|
Cancellation revokation failed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/server/123.123.123.123/cancellation -X DELETE
IP
GET /ip
Description
Query list of all single IP addresses
Request limit
5000 requests per 1 hour
Input (optional)
Name
|
Description
|
server_ip
|
Server main IP address, show only ip addresses assigned to this server
|
Output
(Array)
|
ip (Object)
|
ip (String)
|
IP address
|
server_ip (String)
|
Servers main IP address
|
server_number (Integer)
|
Server ID
|
locked (Boolean)
|
Status of locking
|
separate_mac (String)
|
Separate MAC address, if not set null
|
traffic_warnings (Boolean)
|
True if traffic warnings are enabled
|
traffic_hourly (Integer)
|
Hourly traffic limit in MB
|
traffic_daily (Integer)
|
Daily traffic limit in MB
|
traffic_monthly (Integer)
|
Monthly traffic limit in GB
|
|
|
Errors
Status
|
Code
|
Description
|
404
|
NOT_FOUND
|
No IP addresses found
|
Example
curl -u login:password https://robot-ws.your-server.de/ip
[
{
"ip":{
"ip":"123.123.123.123",
"server_ip":"123.123.123.123",
"server_number":321,
"locked":false,
"separate_mac":null,
"traffic_warnings":false,
"traffic_hourly":50,
"traffic_daily":50,
"traffic_monthly":8
}
},
{
"ip":{
"ip":"124.124.124.124",
"server_ip":"123.123.123.123",
"server_number":321,
"locked":false,
"separate_mac":null,
"traffic_warnings":false,
"traffic_hourly":200,
"traffic_daily":2000,
"traffic_monthly":20
}
}
]
GET /ip/<ip>
Description
Query data for a specific IP address
Request limit
5000 requests per 1 hour
Output
ip (Object)
|
ip (String)
|
IP address
|
gateway (String)
|
Gateway
|
server_ip (String)
|
Servers main IP address
|
server_number (Integer)
|
Server ID
|
locked (Boolean)
|
Status of locking
|
separate_mac (String)
|
Separate MAC address, if not set null
|
traffic_warnings (Boolean)
|
True if traffic warnings are enabled
|
traffic_hourly (Integer)
|
Hourly traffic limit in MB
|
traffic_daily (Integer)
|
Daily traffic limit in MB
|
traffic_monthly (Integer)
|
Monthly traffic limit in GB
|
|
Errors
Status
|
Code
|
Description
|
404
|
IP_NOT_FOUND
|
No IP addresses found
|
Example
curl -u login:password https://robot-ws.your-server.de/ip/123.123.123.123
{
"ip":{
"ip":"123.123.123.123",
"gateway":"123.123.123.121",
"server_ip":"123.123.123.123",
"server_number":321,
"locked":false,
"separate_mac":null,
"traffic_warnings":false,
"traffic_hourly":50,
"traffic_daily":50,
"traffic_monthly":8
}
}
POST /ip/<ip>
Description
Update traffic warning options for an IP address
Request limit
5000 requests per 1 hour
Input
Name
|
Description
|
traffic_warnings
|
Enable/disable traffic warnings (true,false)
|
traffic_hourly
|
Hourly traffic limit in MB
|
traffic_daily
|
Daily traffic limit in MB
|
traffic_monthly
|
Monthly traffic limit in GB
|
Output
ip (Object)
|
ip (String)
|
IP address
|
gateway (String)
|
Gateway
|
server_ip (String)
|
Servers main IP address
|
server_number (Integer)
|
Server ID
|
locked (Boolean)
|
Status of locking
|
separate_mac (String)
|
Separate MAC address, if not set null
|
traffic_warnings (Boolean)
|
True if traffic warnings are enabled
|
traffic_hourly (Integer)
|
Hourly traffic limit in MB
|
traffic_daily (Integer)
|
Daily traffic limit in MB
|
traffic_monthly (Integer)
|
Monthly traffic limit in GB
|
|
Errors
Status
|
Code
|
Description
|
400
|
INVALID_INPUT
|
Invalid input parameters
|
404
|
IP_NOT_FOUND
|
No IP addresses found
|
500
|
TRAFFIC_WARNING_UPDATE_FAILED
|
Updating traffic warning options failed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/ip/123.123.123.123 -d traffic_warnings=true
{
"ip":{
"ip":"123.123.123.123",
"gateway":"123.123.123.121",
"server_ip":"123.123.123.123",
"server_number":321,
"locked":false,
"separate_mac":null,
"traffic_warnings":true,
"traffic_hourly":50,
"traffic_daily":50,
"traffic_monthly":8
}
}
GET /ip/<ip>/mac
Description
Query if it is possible to set a separate mac address.
Returns the MAC address if it is set.
Request limit
5000 requests per 1 hour
Output
mac (Object)
|
ip (String)
|
IP address
|
mac (String)
|
MAC address
|
|
Errors
Status
|
Code
|
Description
|
404
|
IP_NOT_FOUND
|
IP address not found
|
404
|
MAC_NOT_FOUND
|
There is no separate MAC address set
|
404
|
MAC_NOT_AVAILABLE
|
For this IP address, it is not possible to set a separate mac address
|
Example
curl -u login:password https://robot-ws.your-server.de/ip/123.123.123.123/mac
{
"mac":{
"ip":"123.123.123.123",
"mac":"00:21:85:62:3e:9c"
}
}
PUT /ip/<ip>/mac
Description
Generate a separate mac address
Request limit
10 requests per 1 hour
Input
No input
Output
mac (Object)
|
ip (String)
|
IP address
|
mac (String)
|
MAC address
|
|
Errors
Status
|
Code
|
Description
|
404
|
IP_NOT_FOUND
|
IP address not found
|
404
|
MAC_NOT_AVAILABLE
|
For this IP address, it is not possible to set a separate mac address
|
409
|
MAC_ALREADY_SET
|
There is already a separate MAC address set
|
500
|
MAC_FAILED
|
The separate mac address could not be generated due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/ip/123.123.123.123/mac -X PUT
{
"mac":{
"ip":"123.123.123.123",
"mac":"00:21:85:62:3e:9c"
}
}
DELETE /ip/<ip>/mac
Description
Remove a separate MAC address
Request limit
10 requests per 1 hour
Input
No input
Output
mac (Object)
|
ip (String)
|
IP address
|
mac (String)
|
null
|
|
Errors
Status
|
Code
|
Description
|
404
|
IP_NOT_FOUND
|
IP address not found
|
404
|
MAC_NOT_AVAILABLE
|
For this IP address, it is not possible to set a separate mac address
|
409
|
MAC_NOT_FOUND
|
There is no separate MAC address set
|
500
|
MAC_FAILED
|
The separate MAC address could not be removed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/ip/123.123.123.123/mac -X DELETE
{
"mac":{
"ip":"123.123.123.123",
"mac":null
}
}
Subnet
GET /subnet
Description
Query list of all subnets
Request limit
5000 requests per 1 hour
Input (optional)
Name
|
Description
|
server_ip
|
Server main IP address, show only subnets assigned to this server
|
Output
(Array)
|
subnet (Object)
|
ip (String)
|
IP address
|
mask (Integer)
|
Subnet mask in CIDR notation
|
gateway (String)
|
Subnet gateway
|
server_ip (String)
|
Servers main IP address
|
server_number (Integer)
|
Server ID
|
failover (Boolean)
|
True if subnet is a failover subnet
|
locked (Boolean)
|
Status of locking
|
traffic_warnings (Boolean)
|
True if traffic warnings are enabled
|
traffic_hourly (Integer)
|
Hourly traffic limit in MB
|
traffic_daily (Integer)
|
Daily traffic limit in MB
|
traffic_monthly (Integer)
|
Monthly traffic limit in GB
|
|
|
Errors
Status
|
Code
|
Description
|
404
|
NOT_FOUND
|
No subnets found
|
Example
curl -u login:password https://robot-ws.your-server.de/subnet
[
{
"subnet":{
"ip":"123.123.123.123",
"mask":29,
"gateway":"123.123.123.123",
"server_ip":"88.198.123.123",
"server_number":321,
"failover":false,
"locked":false,
"traffic_warnings":false,
"traffic_hourly":100,
"traffic_daily":500,
"traffic_monthly":2
}
},
{
"subnet":{
"ip":"178.63.123.123",
"mask":25,
"gateway":"178.63.123.124",
"server_ip":null,
"server_number":421,
"failover":false,
"locked":false,
"traffic_warnings":false,
"traffic_hourly":100,
"traffic_daily":500,
"traffic_monthly":2
}
}
]
GET /subnet/<net-ip>
Description
Query data of a specific subnet
Request limit
5000 requests per 1 hour
Output
subnet (Object)
|
ip (String)
|
IP address
|
mask (Integer)
|
Subnet mask in CIDR notation
|
gateway (String)
|
Subnet gateway
|
server_ip (String)
|
Servers main IP address
|
server_number (Integer)
|
Server ID
|
failover (Boolean)
|
True if subnet is a failover subnet
|
locked (Boolean)
|
Status of locking
|
traffic_warnings (Boolean)
|
True if traffic warnings are enabled
|
traffic_hourly (Integer)
|
Hourly traffic limit in MB
|
traffic_daily (Integer)
|
Daily traffic limit in MB
|
traffic_monthly (Integer)
|
Monthly traffic limit in GB
|
|
Errors
Status
|
Code
|
Description
|
404
|
SUBNET_NOT_FOUND
|
Subnet not found
|
Example
curl -u login:password https://robot-ws.your-server.de/subnet/123.123.123.123
{
"subnet":{
"ip":"123.123.123.123",
"mask":29,
"gateway":"123.123.123.123",
"server_ip":"88.198.123.123",
"server_number":321,
"failover":false,
"locked":false,
"traffic_warnings":false,
"traffic_hourly":100,
"traffic_daily":500,
"traffic_monthly":2
}
}
POST /subnet/<net-ip>
Description
Update traffic warning options for an subnet
Request limit
5000 requests per 1 hour
Input
Name
|
Description
|
traffic_warnings
|
Enable/disable traffic warnings (true,false)
|
traffic_hourly
|
Hourly traffic limit in MB
|
traffic_daily
|
Daily traffic limit in MB
|
traffic_monthly
|
Monthly traffic limit in GB
|
Output
subnet (Object)
|
ip (String)
|
IP address
|
mask (Integer)
|
Subnet mask in CIDR notation
|
gateway (String)
|
Subnet gateway
|
server_ip (String)
|
Servers main IP address
|
server_number (Integer)
|
Server ID
|
failover (Boolean)
|
True if subnet is a failover subnet
|
locked (Boolean)
|
Status of locking
|
traffic_warnings (Boolean)
|
True if traffic warnings are enabled
|
traffic_hourly (Integer)
|
Hourly traffic limit in MB
|
traffic_daily (Integer)
|
Daily traffic limit in MB
|
traffic_monthly (Integer)
|
Monthly traffic limit in GB
|
|
Errors
Status
|
Code
|
Description
|
400
|
INVALID_INPUT
|
Invalid input parameters
|
404
|
SUBNET_NOT_FOUND
|
Subnet not found
|
500
|
TRAFFIC_WARNING_UPDATE_FAILED
|
Updating traffic warning options failed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/subnet/123.123.123.123 -d traffic_warnings=true
{
"subnet":{
"ip":"123.123.123.123",
"mask":29,
"gateway":"123.123.123.123",
"server_ip":"88.198.123.123",
"server_number":321,
"failover":false,
"locked":false,
"traffic_warnings":true,
"traffic_hourly":100,
"traffic_daily":500,
"traffic_monthly":2
}
}
GET /subnet/<net-ip>/mac
Description
Query if it is possible to set a separate mac address.
Request limit
5000 requests per 1 hour
Output
mac (Object)
|
ip (String)
|
IP address
|
mask (Integer)
|
Subnet mask in CIDR notation
|
mac (String)
|
MAC address
|
possible_mac (Object)
|
Possible MAC addresses
|
|
Errors
Status
|
Code
|
Description
|
404
|
SUBNET_NOT_FOUND
|
Subnet not found
|
404
|
MAC_NOT_AVAILABLE
|
For this IP address, it is not possible to set a separate mac address
|
Example
curl -u login:password https://robot-ws.your-server.de/subnet/2a01:4f8:111:4221::/mac
{
"mac":{
"ip":"2a01:4f8:111:4221::",
"mask":64,
"mac":"00:21:85:62:3e:9c",
"possible_mac":{
"123.123.123.123":"00:21:85:62:3e:9c",
"123.123.123.124":"00:21:85:62:3e:9d"
}
}
}
PUT /subnet/<net-ip>/mac
Description
Generate a separate mac address
Request limit
10 requests per 1 hour
Input
Name
|
Description
|
mac
|
Target MAC address
|
Output
mac (Object)
|
ip (String)
|
IP address
|
mask (Integer)
|
Subnet mask in CIDR notation
|
mac (String)
|
MAC address
|
possible_mac (Object)
|
Possible MAC addresses
|
|
Errors
Status
|
Code
|
Description
|
404
|
SUBNET_NOT_FOUND
|
Subnet not found
|
404
|
MAC_NOT_AVAILABLE
|
For this IP address, it is not possible to set a separate mac address
|
500
|
MAC_FAILED
|
The separate MAC address could not be generated due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/subnet/2a01:4f8:111:4221::/mac -X PUT -d 'mac=00:21:85:62:3e:9d'
{
"mac":{
"ip":"2a01:4f8:111:4221::",
"mask":64,
"mac":"00:21:85:62:3e:9d",
"possible_mac":{
"123.123.123.123":"00:21:85:62:3e:9c",
"123.123.123.124":"00:21:85:62:3e:9d"
}
}
}
DELETE /subnet/<net-ip>/mac
Description
Remove a separate MAC address and set it to the default value (The MAC address of the servers main IP address).
Request limit
10 requests per 1 hour
Input
No input
Output
mac (Object)
|
ip (String)
|
IP address
|
mask (Integer)
|
Subnet mask in CIDR notation
|
mac (String)
|
MAC address
|
possible_mac (Object)
|
Possible MAC addresses
|
|
Errors
Status
|
Code
|
Description
|
404
|
SUBNET_NOT_FOUND
|
Subnet not found
|
404
|
MAC_NOT_AVAILABLE
|
For this IP address, it is not possible to set a separate mac address
|
500
|
MAC_FAILED
|
The separate MAC address could not be removed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/subnet/2a01:4f8:111:4221::/mac -X DELETE
{
"mac":{
"ip":"2a01:4f8:111:4221::",
"mask":64,
"mac":"00:21:85:62:3e:9c",
"possible_mac":{
"123.123.123.123":"00:21:85:62:3e:9c",
"123.123.123.124":"00:21:85:62:3e:9d"
}
}
}
Reset
GET /reset
Description
Query reset options for all servers
Request limit
500 requests per 1 hour
Output
(Array)
|
reset (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server ID
|
type (Array)
|
Available reset options
|
|
|
Errors
Status
|
Code
|
Description
|
404
|
NOT_FOUND
|
No servers with reset option found
|
Example
curl -u login:password https://robot-ws.your-server.de/reset
[
{
"reset":{
"server_ip":"123.123.123.123",
"server_number":321,
"type":[
"sw",
"hw",
"man"
]
}
},
{
"reset":{
"server_ip":"111.111.111.111",
"server_number":111,
"type":[
"power",
"hw",
"man"
]
}
}
]
GET /reset/<server-ip>
Description
Query reset options for a specific server
Request limit
500 requests per 1 hour
Output
reset (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server ID
|
type (Array)
|
Available reset options
|
operating_status (String)
|
Current operating status of the server
|
|
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
RESET_NOT_AVAILABLE
|
The server has no reset option
|
Example
Query a server on which software reboots can be performed via the web service
curl -u login:password https://robot-ws.your-server.de/reset/123.123.123.123
{
"reset":{
"server_ip":"123.123.123.123",
"server_number":321,
"type":[
"sw",
"hw",
"man"
],
"operating_status":"not supported"
}
}
Query a server on which the operating status of the server can be queried via the web service or on which the power button can be operated via the web service
curl -u login:password https://robot-ws.your-server.de/reset/111.111.111.111
{
"reset":{
"server_ip":"111.111.111.111",
"server_number":111,
"type":[
"power",
"hw",
"man"
],
"operating_status":"running"
}
}
POST /reset/<server-ip>
Description
Execute reset on specific server
Request limit
50 requests per 1 hour
Input
Name
|
Description
|
type
|
Reset type to execute
|
Output
reset (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server ID
|
type (String)
|
Executed reset option
|
|
Errors
Status
|
Code
|
Description
|
400
|
INVALID_INPUT
|
Invalid input parameters
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
RESET_NOT_AVAILABLE
|
The server has no reset option
|
409
|
RESET_MANUAL_ACTIVE
|
There is already a running manual reset
|
500
|
RESET_FAILED
|
Resetting failed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/reset/123.123.123.123 -d type=hw
{
"reset":{
"server_ip":"123.123.123.123",
"type":"hw"
}
}
Failover
IMPORTANT: For the proper use of the failover IP, it must be configured (not ordered) on all servers it can be switched to, regardless of where it is currently routed to.
GET /failover
Description
Query failover data for all servers
Request limit
100 requests per 1 hour
Output
(Array)
|
failover (Object)
|
ip (String)
|
Failover net address
|
netmask (String)
|
Failover netmask
|
server_ip (String)
|
Main IP of related server
|
server_number (Integer)
|
Server ID
|
active_server_ip (String)
|
Main IP of current destination server
|
|
|
Errors
Status
|
Code
|
Description
|
404
|
NOT_FOUND
|
No failover IP addresses found
|
Example
curl -u login:password https://robot-ws.your-server.de/failover
[
{
"failover":{
"ip":"123.123.123.123",
"netmask":"255.255.255.255",
"server_ip":"78.46.1.93",
"server_number":321,
"active_server_ip":"78.46.1.93"
}
}
]
GET /failover/<failover-ip>
Description
Query specific failover IP address data
Request limit
100 requests per 1 hour
Output
failover (Object)
|
ip (String)
|
Failover net address
|
netmask (String)
|
Failover netmask
|
server_ip (String)
|
Main IP of related server
|
server_number (Integer)
|
Server ID
|
active_server_ip (String)
|
Main IP of current destination server
|
|
Errors
Status
|
Code
|
Description
|
404
|
NOT_FOUND
|
Failover IP address not found
|
Example
curl -u login:password https://robot-ws.your-server.de/failover/123.123.123.123
{
"failover":{
"ip":"123.123.123.123",
"netmask":"255.255.255.255",
"server_ip":"78.46.1.93",
"server_number":321,
"active_server_ip":"78.46.1.93"
}
}
POST /failover/<failover-ip>
Description
Switch routing of failover IP address to another server
Request limit
50 requests per 1 hour
Input
Name
|
Description
|
active_server_ip
|
Main IP address of server where the failover ip should be routed to
|
Output
failover (Object)
|
ip (String)
|
Failover net address
|
netmask (String)
|
Failover netmask
|
server_ip (String)
|
Main IP of related server
|
server_number (Integer)
|
Server ID
|
active_server_ip (String)
|
Main IP of current destination server
|
|
Errors
Status
|
Code
|
Description
|
400
|
INVALID_INPUT
|
Invalid input parameters
|
404
|
NOT_FOUND
|
Failover IP address not found
|
404
|
FAILOVER_NEW_SERVER_NOT_FOUND
|
Destination server not found
|
409
|
FAILOVER_ALREADY_ROUTED
|
The failover IP address is already routed to the selected server
|
409
|
FAILOVER_LOCKED
|
Switching the failover IP address is blocked due to another active request
|
500
|
FAILOVER_FAILED
|
Due to an internal error switching of the failover IP address failed
|
500
|
FAILOVER_NOT_COMPLETE
|
Due to an internal error switching of the failover IP address failed
|
Example
curl -u login:password https://robot-ws.your-server.de/failover/123.123.123.123 -d active_server_ip=124.124.124.124
{
"failover":{
"ip":"123.123.123.123",
"netmask":"255.255.255.255",
"server_ip":"78.46.1.93",
"server_number":321,
"active_server_ip":"124.124.124.124"
}
}
Wake on LAN
GET /wol/<server-ip>
Description
Query Wake On LAN data
Request limit
500 requests per 1 hour
Output
wol (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server ID
|
|
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server not found
|
404
|
WOL_NOT_AVAILABLE
|
Wake On LAN is not available on this server
|
Example
curl -u login:password https://robot-ws.your-server.de/wol/123.123.123.123
{
"wol":{
"server_ip":"123.123.123.123",
"server_number":321
}
}
POST /wol/<server-ip>
Description
Send Wake On LAN packet to server
Request limit
10 requests per 1 hour
Input
server_ip
|
Server main IP address
|
Output
wol (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server ID
|
|
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server not found
|
404
|
WOL_NOT_AVAILABLE
|
Wake On LAN is not available on this server
|
500
|
WOL_FAILED
|
Sending Wake On LAN packet failed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/wol/123.123.123.123 -d foo
{
"wol":{
"server_ip":"123.123.123.123",
"server_number":321
}
}
Boot configuration
GET /boot/<server-ip>
Description
Query the current boot configuration status for a server. There can be only one configuration active at any time for one server.
Request limit
500 requests per 1 hour
Output
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
BOOT_NOT_AVAILABLE
|
No boot configuration available for this server
|
Example
curl -u login:password https://robot-ws.your-server.de/boot/123.123.123.123
{
"boot":{
"rescue":{
"server_ip":"123.123.123.123",
"server_number":321,
"os":[
"linux",
"freebsd",
"vkvm"
],
"arch":[
64,
32
],
"active":false,
"password":null,
"authorized_key":[
],
"host_key":[
]
},
"linux":{
"server_ip":"123.123.123.123",
"server_number":321,
"dist":[
"CentOS 5.5 minimal",
"Debian 7.8 minimal"
],
"arch":[
64,
32
],
"lang":[
"en"
],
"active":false,
"password":null,
"authorized_key":[
],
"host_key":[
]
},
"vnc":{
"server_ip":"123.123.123.123",
"server_number":321,
"dist":[
"centOS-5.0",
"Fedora-6",
"openSUSE-10.2"
],
"arch":[
64,
32
],
"lang":[
"de_DE",
"en_US"
],
"active":false,
"password":null
},
"windows":{
"server_ip":"123.123.123.123",
"server_number":321,
"dist":null,
"lang":null,
"active":false,
"password":null
},
"plesk":{
"server_ip":"123.123.123.123",
"server_number":321,
"dist":[
"CentOS 5.4 minimal",
"Debian 7.8 minimal"
],
"arch":[
64,
32
],
"lang":[
"en",
"de"
],
"active":false,
"password":null,
"hostname":null
},
"cpanel":{
"server_ip":"123.123.123.123",
"server_number":321,
"dist":[
"CentOS 5.6 + cPanel"
],
"arch":[
64
],
"lang":[
"en"
],
"active":false,
"password":null,
"hostname":null
}
}
}
GET /boot/<server-ip>/rescue
Description
Query boot options for the Rescue System
Request limit
500 requests per 1 hour
Output
rescue (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server ID
|
os (Array|String)
|
Array of available operating systems or the active operating system
|
arch (Array|Integer)
|
Array of available architectures or the active architecture
|
active (Boolean)
|
Current Rescue System status
|
password (String)
|
Current Rescue System root password or null
|
authorized_key (Array)
|
Authorized public SSH keys
|
host_key (Array)
|
Host keys
|
|
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
BOOT_NOT_AVAILABLE
|
No boot configuration available for this server
|
Example
curl -u login:password https://robot-ws.your-server.de/boot/123.123.123.123/rescue
{
"rescue":{
"server_ip":"123.123.123.123",
"server_number":321,
"os":[
"linux",
"freebsd",
"vkvm"
],
"arch":[
64,
32
],
"active":false,
"password":null,
"authorized_key":[
],
"host_key":[
]
}
}
POST /boot/<server-ip>/rescue
Description
Activate Rescue System
Request limit
500 requests per 1 hour
Input
Name
|
Description
|
os
|
Operating System
|
arch
|
Architecture (optional, default: 64)
|
authorized_key
|
One or more SSH key fingerprints (optional)
|
Output
rescue (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server ID
|
os (String)
|
Operating system
|
arch (Integer)
|
Architecture
|
active (Boolean)
|
true
|
password (String)
|
Rescue System root password
|
authorized_key (Array)
|
Authorized public SSH keys
|
host_key (Array)
|
Host keys
|
|
Errors
Status
|
Code
|
Description
|
400
|
INVALID_INPUT
|
Invalid input parameters
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
BOOT_NOT_AVAILABLE
|
No boot configuration available for this server
|
409
|
BOOT_ALREADY_ENABLED
|
The Rescue System is already enabled for this server
|
409
|
BOOT_BLOCKED
|
There is already another boot configuration enabled (linux, VNC, windows, cPanel or Plesk)
|
500
|
BOOT_ACTIVATION_FAILED
|
Activation of the Rescue System failed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/boot/123.123.123.123/rescue -d 'os=linux&arch=32'
{
"rescue":{
"server_ip":"123.123.123.123",
"server_number":321,
"os":"linux",
"arch":32,
"active":true,
"password":"jEt0dtUvomlyOwRr",
"authorized_key":[
],
"host_key":[
]
}
}
DELETE /boot/<server-ip>/rescue
Description
Deactivate Rescue System
Request limit
500 requests per 1 hour
Output
rescue (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server ID
|
os (Array)
|
Array of available operating systems
|
arch (Array)
|
Array of available architectures
|
active (Boolean)
|
false
|
password (String)
|
null
|
authorized_key (Array)
|
Authorized public SSH keys
|
host_key (Array)
|
Host keys
|
|
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
BOOT_NOT_AVAILABLE
|
No boot configuration available for this server
|
500
|
BOOT_DEACTIVATION_FAILED
|
Deactivation of the Rescue System failed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/boot/123.123.123.123/rescue -X DELETE
{
"rescue":{
"server_ip":"123.123.123.123",
"server_number":321,
"os":[
"linux",
"freebsd",
"vkvm"
],
"arch":[
64,
32
],
"active":false,
"password":null,
"authorized_key":[
],
"host_key":[
]
}
}
GET /boot/<server-ip>/rescue/last
Description
Show data of last rescue activation
Request limit
500 requests per 1 hour
Output
rescue (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server ID
|
os (String)
|
Operating system
|
arch (Integer)
|
Architecture
|
active (Boolean)
|
Current Rescue System status
|
password (String)
|
Current Rescue System root password or null
|
authorized_key (Array)
|
Authorized public SSH keys
|
host_key (Array)
|
Host keys
|
|
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
BOOT_NOT_AVAILABLE
|
No boot configuration available for this server
|
Example
curl -u login:password https://robot-ws.your-server.de/boot/123.123.123.123/rescue/last
{
"rescue":{
"server_ip":"123.123.123.123",
"server_number":321,
"os":"linux",
"arch":64,
"active":false,
"password":null,
"authorized_key":[
],
"host_key":[
]
}
}
GET /boot/<server-ip>/linux
Description
Query boot options for the linux installation
Request limit
500 requests per 1 hour
Output
linux (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server ID
|
dist (Array|String)
|
Array of available distributions or the active distributon
|
arch (Array|Integer)
|
Array of available architectures or the active architecture
|
lang (Array|String)
|
Array of available languages or the active language
|
active (Boolean)
|
Current linux installation status
|
password (String)
|
Current linux installation password or null
|
authorized_key (Array)
|
Authorized public SSH keys
|
host_key (Array)
|
Host keys
|
|
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
BOOT_NOT_AVAILABLE
|
No boot configuration available for this server
|
Example
curl -u login:password https://robot-ws.your-server.de/boot/123.123.123.123/linux
{
"linux":{
"server_ip":"123.123.123.123",
"server_number":321,
"dist":[
"CentOS 5.5 minimal",
"Debian 7.8 minimal"
],
"arch":[
64,
32
],
"lang":[
"en"
],
"active":false,
"password":null,
"authorized_key":[
],
"host_key":[
]
}
}
POST /boot/<server-ip>/linux
Description
Activate linux installation
Request limit
500 requests per 1 hour
Input
Name
|
Description
|
dist
|
Distribution
|
arch
|
Architecture (optional, default: 64)
|
lang
|
Language
|
authorized_key
|
One or more SSH key fingerprints (optional)
|
Output
linux (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server ID
|
dist (String)
|
Distribution
|
arch (Integer)
|
Architecture
|
lang (String)
|
Language
|
active (Boolean)
|
true
|
password (String)
|
Linux installation password
|
authorized_key (Array)
|
Authorized public SSH keys
|
host_key (Array)
|
Host keys
|
|
Errors
Status
|
Code
|
Description
|
400
|
INVALID_INPUT
|
Invalid input parameters
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
BOOT_NOT_AVAILABLE
|
No boot configuration available for this server
|
409
|
BOOT_ALREADY_ENABLED
|
The linux installation is already enabled for this server
|
409
|
BOOT_BLOCKED
|
There is already another boot configuration enabled (rescue, VNC, windows, cPanel or Plesk)
|
500
|
BOOT_ACTIVATION_FAILED
|
Activation of the linux installation failed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/boot/123.123.123.123/linux -d 'dist=CentOS 5.5 minimal&arch=32&lang=en'
{
"linux":{
"server_ip":"123.123.123.123",
"server_number":321,
"dist":"CentOS 5.5 minimal",
"arch":32,
"lang":"en",
"active":true,
"password":"jEt0dtUvomlyOwRr",
"authorized_key":[
],
"host_key":[
]
}
}
DELETE /boot/<server-ip>/linux
Description
Deactivate linux installation
Request limit
500 requests per 1 hour
Output
linux (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server ID
|
dist (Array)
|
Array of available distributions
|
arch (Array)
|
Array of available architectures
|
lang (Array)
|
Array of available languages
|
active (Boolean)
|
false
|
password (String)
|
null
|
authorized_key (Array)
|
Authorized public SSH keys
|
host_key (Array)
|
Host keys
|
|
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
BOOT_NOT_AVAILABLE
|
No boot configuration available for this server
|
500
|
BOOT_DEACTIVATION_FAILED
|
Deactivation of the linux installation failed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/boot/123.123.123.123/linux -X DELETE
{
"linux":{
"server_ip":"123.123.123.123",
"server_number":321,
"dist":[
"CentOS 5.5 minimal",
"Debian 7.8 minimal"
],
"arch":[
64,
32
],
"lang":[
"en"
],
"active":false,
"password":null,
"authorized_key":[
],
"host_key":[
]
}
}
GET /boot/<server-ip>/linux/last
Description
Show data of last linux installation
Request limit
500 requests per 1 hour
Output
linux (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server ID
|
dist (String)
|
Distribution
|
arch (Integer)
|
Architecture
|
lang (String)
|
Language
|
active (Boolean)
|
Linux installation status
|
password (String)
|
Linux installation password or null
|
authorized_key (Array)
|
Authorized public SSH keys
|
host_key (Array)
|
Host keys
|
|
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
BOOT_NOT_AVAILABLE
|
No boot configuration available for this server
|
Example
curl -u login:password https://robot-ws.your-server.de/boot/123.123.123.123/linux/last
{
"linux":{
"server_ip":"123.123.123.123",
"server_number":321,
"dist":"CentOS 5.5 minimal",
"arch":32,
"lang":"en",
"active":true,
"password":"jEt0dtUvomlyOwRr",
"authorized_key":[
],
"host_key":[
]
}
}
GET /boot/<server-ip>/vnc
Description
Query boot options for the VNC installation
Request limit
500 requests per 1 hour
Output
vnc (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server ID
|
dist (Array|String)
|
Array of available distributions or the active distributon
|
arch (Array|Integer)
|
Array of available architectures or the active architecture
|
lang (Array|String)
|
Array of available languages or the active language
|
active (Boolean)
|
Current VNC installation status
|
password (String)
|
Current VNC installation password or null
|
|
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
BOOT_NOT_AVAILABLE
|
No boot configuration available for this server
|
Example
curl -u login:password https://robot-ws.your-server.de/boot/123.123.123.123/vnc
{
"vnc":{
"server_ip":"123.123.123.123",
"server_number":321,
"dist":[
"centOS-5.0",
"Fedora-6",
"openSUSE-10.2"
],
"arch":[
64,
32
],
"lang":[
"de_DE",
"en_US"
],
"active":false,
"password":null
}
}
POST /boot/<server-ip>/vnc
Description
Activate VNC installation
Request limit
500 requests per 1 hour
Input
Name
|
Description
|
dist
|
Distribution
|
arch
|
Architecture (optional, default: 64)
|
lang
|
Language
|
Output
vnc (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server ID
|
dist (String)
|
Distribution
|
arch (Integer)
|
Architecture
|
lang (String)
|
Language
|
active (Boolean)
|
true
|
password (String)
|
VNC installation password
|
|
Errors
Status
|
Code
|
Description
|
400
|
INVALID_INPUT
|
Invalid input parameters
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
BOOT_NOT_AVAILABLE
|
No boot configuration available for this server
|
409
|
BOOT_ALREADY_ENABLED
|
The VNC installation is already enabled for this server
|
409
|
BOOT_BLOCKED
|
There is already another boot configuration enabled (Rescue System, linux, windows, cPanel or Plesk)
|
500
|
BOOT_ACTIVATION_FAILED
|
Activation of the VNC installation failed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/boot/123.123.123.123/vnc -d 'dist=centOS-5.0&arch=32&lang=en_US'
{
"vnc":{
"server_ip":"123.123.123.123",
"server_number":321,
"dist":"centOS-5.0",
"arch":32,
"lang":"en_US",
"active":true,
"password":"jEt0dtUvomlyOwRr"
}
}
DELETE /boot/<server-ip>/vnc
Description
Deactivate VNC installation
Request limit
500 requests per 1 hour
Output
vnc (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server ID
|
dist (Array)
|
Array of available distributions
|
arch (Array)
|
Array of available architectures
|
lang (Array)
|
Array of available languages
|
active (Boolean)
|
false
|
password (String)
|
null
|
|
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
BOOT_NOT_AVAILABLE
|
No boot configuration available for this server
|
500
|
BOOT_DEACTIVATION_FAILED
|
Deactivation of the VNC installation failed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/boot/123.123.123.123/vnc -X DELETE
{
"vnc":{
"server_ip":"123.123.123.123",
"server_number":321,
"dist":[
"centOS-5.0",
"Fedora-6",
"openSUSE-10.2"
],
"arch":[
64,
32
],
"lang":[
"de_DE",
"en_US"
],
"active":false,
"password":null
}
}
GET /boot/<server-ip>/windows
Description
Query boot options for the windows installation
Request limit
500 requests per 1 hour
Output
windows (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server ID
|
dist (Array|String)
|
Array of available distributions or the active distributon
|
arch (Array|Integer)
|
Array of available architectures or the active architecture
|
lang (Array|String)
|
Array of available languages or the active language
|
active (Boolean)
|
Current windows installation status
|
password (String)
|
Current windows installation password or null
|
|
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
BOOT_NOT_AVAILABLE
|
No boot configuration available for this server
|
Example
curl -u login:password https://robot-ws.your-server.de/boot/123.123.123.123/windows
{
"windows":{
"server_ip":"123.123.123.123",
"server_number":321,
"dist":[
"standard"
],
"lang":[
"en",
"de"
],
"active":false,
"password":null
}
}
POST /boot/<server-ip>/windows
Description
Activate Windows installation. You need to order the Windows addon for the server via the Robot webpanel first. After a reboot, the installation will start, and all data on the server will be deleted.
Request limit
500 requests per 1 hour
Input
Name
|
Description
|
lang
|
Language
|
Output
windows (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server ID
|
dist (String)
|
Distribution
|
arch (Integer)
|
Architecture
|
lang (String)
|
Language
|
active (Boolean)
|
true
|
password (String)
|
Windows installation password
|
|
Errors
Status
|
Code
|
Description
|
400
|
INVALID_INPUT
|
Invalid input parameters
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
BOOT_NOT_AVAILABLE
|
No boot configuration available for this server
|
404
|
WINDOWS_MISSING_ADDON
|
No windows addon found
|
409
|
BOOT_ALREADY_ENABLED
|
The windows installation is already enabled for this server
|
409
|
BOOT_BLOCKED
|
There is already an other boot configuration enabled (Rescue System, linux, VNC, cPanel or Plesk
|
500
|
BOOT_ACTIVATION_FAILED
|
Activation of the windows installation failed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/boot/123.123.123.123/windows -d 'lang=en'
{
"windows":{
"server_ip":"123.123.123.123",
"server_number":321,
"dist":"standard",
"lang":"en",
"active":true,
"password":"jEt0dtUvomlyOwRr"
}
}
DELETE /boot/<server-ip>/windows
Description
Deactivate Windows installation
Request limit
500 requests per 1 hour
Output
windows (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server id
|
dist (Array)
|
Array of available distributions
|
arch (Array)
|
Array of available architectures
|
lang (Array)
|
Array of available languages
|
active (Boolean)
|
false
|
password (String)
|
null
|
|
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
BOOT_NOT_AVAILABLE
|
No boot configuration available for this server
|
500
|
BOOT_DEACTIVATION_FAILED
|
Deactivation of the windows installation failed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/boot/123.123.123.123/windows -X DELETE
{
"windows":{
"server_ip":"123.123.123.123",
"server_number":321,
"dist":[
"standard"
],
"lang":[
"en",
"de"
],
"active":false,
"password":null
}
}
GET /boot/<server-ip>/plesk
Description
Query boot options for the Plesk installation
Request limit
500 requests per 1 hour
Output
plesk (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server id
|
dist (Array|String)
|
Array of available distributions or the active distributon
|
arch (Array|Integer)
|
Array of available architectures or the active architecture
|
lang (Array|String)
|
Array of available languages or the active language
|
active (Boolean)
|
Current Plesk installation status
|
password (String)
|
Current Plesk installation password or null
|
hostname (String)
|
Current Plesk installation hostname or null
|
|
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
BOOT_NOT_AVAILABLE
|
No boot configuration available for this server
|
Example
curl -u login:password https://robot-ws.your-server.de/boot/123.123.123.123/plesk
{
"plesk":{
"server_ip":"123.123.123.123",
"server_number":321,
"dist":[
"CentOS 5.4 minimal",
"Debian 7.8 minimal"
],
"arch":[
64,
32
],
"lang":[
"en",
"de"
],
"active":false,
"password":null,
"hostname":null
}
}
POST /boot/<server-ip>/plesk
Description
Activate Plesk installation
Request limit
500 requests per 1 hour
Input
Name
|
Description
|
dist
|
Distribution
|
arch
|
Architecture (optional, default: 64)
|
lang
|
Language
|
hostname
|
Hostname
|
Output
plesk (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server id
|
dist (String)
|
Distribution
|
arch (Integer)
|
Architecture
|
lang (String)
|
Language
|
active (Boolean)
|
true
|
password (String)
|
Plesk installation password
|
hostname (String)
|
Plesk installation hostname
|
|
Errors
Status
|
Code
|
Description
|
400
|
INVALID_INPUT
|
Invalid input parameters
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
BOOT_NOT_AVAILABLE
|
No boot configuration available for this server
|
404
|
PLESK_MISSING_ADDON
|
No plesk addon found
|
409
|
BOOT_ALREADY_ENABLED
|
The linux installation is already enabled for this server
|
409
|
BOOT_BLOCKED
|
There is already an other boot configuration enabled (Rescue System, linux, VNC, cPanel or windows)
|
500
|
BOOT_ACTIVATION_FAILED
|
Activation of the Plesk installation failed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/boot.yaml/123.123.123.123/plesk -d 'dist=CentOS 5.4 minimal&arch=32&lang=de&hostname=plesk.testen.de'
{
"plesk":{
"server_ip":"213.239.217.200",
"server_number":321,
"dist":"CentOS 5.4 minimal",
"arch":32,
"lang":"de",
"active":true,
"password":"jEt0dtUvomlyOwRr",
"hostname":"plesk.testen.de"
}
}
DELETE /boot/<server-ip>/plesk
Description
Deactivate Plesk installation
Request limit
500 requests per 1 hour
Output
plesk (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server id
|
dist (Array)
|
Array of available distributions
|
arch (Array)
|
Array of available architectures
|
lang (Array)
|
Array of available languages
|
active (Boolean)
|
false
|
password (String)
|
null
|
hostname (String)
|
null
|
|
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
BOOT_NOT_AVAILABLE
|
No boot configuration available for this server
|
500
|
BOOT_DEACTIVATION_FAILED
|
Deactivation of the Plesk installation failed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/boot/123.123.123.123/plesk -X DELETE
{
"plesk":{
"server_ip":"123.123.123.123",
"server_number":321,
"dist":[
"CentOS 5.4 minimal",
"Debian 7.8 minimal"
],
"arch":[
64,
32
],
"lang":[
"en",
"de"
],
"active":false,
"password":null,
"hostname":null
}
}
GET /boot/<server-ip>/cpanel
Description
Query boot options for the cPanel installation
Request limit
500 requests per 1 hour
Output
cpanel (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server id
|
dist (Array|String)
|
Array of available distributions or the active distributon
|
arch (Array|Integer)
|
Array of available architectures or the active architecture
|
lang (Array|String)
|
Array of available languages or the active language
|
active (Boolean)
|
Current cPanel installation status
|
password (String)
|
Current cPanel installation password or null
|
hostname (String)
|
Current cPanel installation hostname or null
|
|
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
BOOT_NOT_AVAILABLE
|
No boot configuration available for this server
|
Example
curl -u login:password https://robot-ws.your-server.de/boot/123.123.123.123/cpanel
{
"cpanel":{
"server_ip":"123.123.123.123",
"server_number":321,
"dist":[
"CentOS 5.6 + cPanel"
],
"arch":[
64
],
"lang":[
"en"
],
"active":false,
"password":null,
"hostname":null
}
}
POST /boot/<server-ip>/cpanel
Description
Activate cPanel installation
Request limit
500 requests per 1 hour
Input
Name
|
Description
|
dist
|
Distribution
|
arch
|
Architecture (optional, default: 64)
|
lang
|
Language
|
hostname
|
Hostname
|
Output
cpanel (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server id
|
dist (String)
|
Distribution
|
arch (Integer)
|
Architecture
|
lang (String)
|
Language
|
active (Boolean)
|
true
|
password (String)
|
cPanel installation password
|
hostname (String)
|
cPanel installation hostname
|
|
Errors
Status
|
Code
|
Description
|
400
|
INVALID_INPUT
|
Invalid input parameters
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
BOOT_NOT_AVAILABLE
|
No boot configuration available for this server
|
404
|
CPANEL_MISSING_ADDON
|
No cPanel addon found
|
409
|
BOOT_ALREADY_ENABLED
|
The cPanel installation is already enabled for this server
|
409
|
BOOT_BLOCKED
|
There is already an other boot configuration enabled (Rescue System, linux, VNC, Plesk or windows)
|
500
|
BOOT_ACTIVATION_FAILED
|
Activation of the cPanel installation failed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/boot/123.123.123.123/cpanel -d 'dist=CentOS 5.6 + cPanel&arch=64&lang=en&hostname=cpanel.testen.de'
{
"cpanel":{
"server_ip":"123.123.123.123",
"server_number":321,
"dist":"CentOS 5.6 + cPanel",
"arch":64,
"lang":"en",
"active":true,
"password":"ie8Nhz6R",
"hostname":"cpanel.testen.de"
}
}
DELETE /boot/<server-ip>/cpanel
Description
Deactivate cPanel installation
Request limit
500 requests per 1 hour
Output
plesk (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server id
|
dist (Array)
|
Array of available distributions
|
arch (Array)
|
Array of available architectures
|
lang (Array)
|
Array of available languages
|
active (Boolean)
|
false
|
password (String)
|
null
|
hostname (String)
|
null
|
|
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
BOOT_NOT_AVAILABLE
|
No boot configuration available for this server
|
500
|
BOOT_DEACTIVATION_FAILED
|
Deactivation of the cPanel installation failed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/boot/123.123.123.123/cpanel -X DELETE
{
"cpanel":{
"server_ip":"123.123.123.123",
"server_number":321,
"dist":[
"CentOS 5.6 + cPanel"
],
"arch":[
64
],
"lang":[
"en"
],
"active":false,
"password":null,
"hostname":null
}
}
Reverse DNS
GET /rdns
Description
Query all rDNS entries
Request limit
500 requests per 1 hour
Input (optional)
Name
|
Description
|
server_ip
|
Server main IP address, show only reverse DNS entries assigned to this server
|
Output
(Array)
|
rdns (Object)
|
ip (String)
|
IP address
|
ptr (String)
|
PTR record
|
|
|
Errors
Status
|
Code
|
Description
|
404
|
NOT_FOUND
|
No reverse DNS entries found
|
Example
curl -u login:password https://robot-ws.your-server.de/rdns
[
{
"rdns":{
"ip":"123.123.123.123",
"ptr":"testen.de"
}
},
{
"rdns":{
"ip":"124.124.124.124",
"ptr":"your-server.de"
}
}
]
GET /rdns/<ip>
Description
Query the current reverse DNS entry for one IP address
Request limit
500 requests per 1 hour
Output
rdns (Object)
|
ip (String)
|
IP address
|
ptr (String)
|
PTR record
|
|
Errors
Status
|
Code
|
Description
|
404
|
IP_NOT_FOUND
|
The IP address <ip> was not found
|
404
|
RDNS_NOT_FOUND
|
The IP address <ip> has no reverse DNS entry yet
|
Example
curl -u login:password https://robot-ws.your-server.de/rdns/123.123.123.123
{
"rdns":{
"ip":"123.123.123.123",
"ptr":"testen.de"
}
}
PUT /rdns/<ip>
Description
Create new reverse DNS entry for one IP address. When the reverse DNS entry was successfully created the status code 201 CREATED is returned.
Request limit
500 requests per 1 hour
Input
Name
|
Description
|
ptr
|
PTR record
|
Output
rdns (Object)
|
ip (String)
|
IP address
|
ptr (String)
|
PTR record
|
|
Errors
Status
|
Code
|
Description
|
400
|
INVALID_INPUT
|
Invalid input parameters
|
404
|
IP_NOT_FOUND
|
The IP address <ip> was not found
|
409
|
RDNS_ALREADY_EXISTS
|
There is already an existing reverse DNS entry
|
500
|
RDNS_CREATE_FAILED
|
Creating the reverse DNS entry failed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/rdns/123.123.123.123 -d ptr=testen.de -X PUT
{
"rdns":{
"ip":"123.123.123.123",
"ptr":"testen.de"
}
}
POST /rdns/<ip>
Description
Update/create reverse DNS entry for one IP. When the reverse DNS entry was successfully created the status code is set to 201 created, on succesfull update the status code is 200 OK.
Request limit
500 requests per 1 hour
Input
Name
|
Description
|
ptr
|
PTR record
|
Output
rdns (Object)
|
ip (String)
|
IP address
|
ptr (String)
|
PTR record
|
|
Errors
Status
|
Code
|
Description
|
400
|
INVALID_INPUT
|
Invalid input parameters
|
404
|
IP_NOT_FOUND
|
The IP address <ip> was not found
|
500
|
RDNS_CREATE_FAILED
|
Creating the reverse DNS entry failed due to an internal error
|
500
|
RDNS_UPDATE_FAILED
|
Updating the reverse DNS entry failed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/rdns/123.123.123.123 -d ptr=testen.de
{
"rdns":{
"ip":"123.123.123.123",
"ptr":"testen.de"
}
}
DELETE /rdns/<ip>
Description
Delete reverse DNS entry for one IP
Request limit
500 requests per 1 hour
Output
No output
Errors
Status
|
Code
|
Description
|
404
|
IP_NOT_FOUND
|
The IP address <ip> was not found
|
500
|
RDNS_DELETE_FAILED
|
Deleting the reverse DNS entry failed due to an internal error
|
500
|
RDNS_UPDATE_FAILED
|
Updating the reverse DNS entry failed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/rdns/123.123.123.123 -X DELETE
Traffic
POST /traffic
Description
Query traffic data of IPs and subnets. There are three query types: "day", "month" and "year".
With "day" you can query hourly aggregated traffic data within a day, with "month" you can query daily aggregated data within a month, and with "year" it is possible to get monthly aggregated data within a year.
Please note that the traffic data is only available when the specified hour, day or month has already passed.
The interval is given with the parameters "from" and "to" with the following syntax:
* Query type "day": [YYYY]-[MM]-[DD]T[H], e.g. 2010-09-01T00
* Query type "month": [YYYY]-[MM]-[DD], e.g. 2010-09-01
* Query type "year": [YYYY]-[MM], e.g. 2010-09
Using query type "day" you must specify a date combined with a time value (hour). The hour value is separated from the date with the letter "T". Using query type "month" you must specify a date without the time value. With query type "year" you must additionally leave out the day value.
IP addresses or subnets without traffic data are omitted in the response.
Request limit
50 requests per 1 hour
Input
Name
|
Description
|
ip[]
|
One or more IP addresses
|
subnet[]
|
One or more subnet addresses
|
from
|
Date/Time from
|
to
|
Date/Time to
|
type
|
Type of traffic query
|
Output
traffic (Object)
|
type (String)
|
Traffic query type
|
from (String)
|
Date/Time from
|
to (String)
|
Date/Time to
|
data (Object)
|
<IP address> (Object)
|
in (Number)
|
traffic in (GB)
|
out (Number)
|
traffic out (GB)
|
sum (Number)
|
traffic sum (GB)
|
|
|
|
Errors
Status
|
Code
|
Description
|
400
|
INVALID_INPUT
|
Invalid input parameters
|
404
|
NOT_FOUND
|
No IP addresses or subnets found
|
500
|
INTERNAL_ERROR
|
Traffic query failed due to an internal error
|
Example
Query traffic data for one IP
curl -u login:password https://robot-ws.your-server.de/traffic -d 'type=month&from=2010-09-01&to=2010-09-31&ip=123.123.123.123'
{
"traffic":{
"type":"month",
"from":"2010-09-01",
"to":"2010-09-31",
"data":{
"123.123.123.123":{
"in":0.2874,
"out":0.0481,
"sum":0.3355
}
}
}
}
Query traffic data for multiple IPs
curl -u login:password https://robot-ws.your-server.de/traffic -d 'type=month&from=2010-09-01&to=2010-09-31&ip[]=123.123.123.123&ip[]=124.124.124.124'
{
"traffic":{
"type":"month",
"from":"2010-09-01",
"to":"2010-09-31",
"data":{
"123.123.123.123":{
"in":0.2874,
"out":0.0481,
"sum":0.3355
},
"124.124.124.124":{
"in":0.2874,
"out":0.0481,
"sum":0.3355
}
}
}
}
Query traffic data for subnet
curl -u login:password https://robot-ws.your-server.de/traffic -d 'type=month&from=2010-09-01&to=2010-09-31&subnet=2a01:4f8:61:41a2::'
{
"traffic":{
"type":"month",
"from":"2010-09-01",
"to":"2010-09-31",
"data":{
"2a01:4f8:61:41a2::\/64":{
"in":0.2874,
"out":0.0481,
"sum":0.3355
}
}
}
}
SSH keys
GET /key
Description
Query all SSH keys
Request limit
500 requests per 1 hour
Output
(Array)
|
key (Object)
|
name (String)
|
Key name
|
fingerprint (String)
|
Key fingerprint
|
type (String)
|
Key algorithm type
|
size (Integer)
|
Key size in bits
|
data (String)
|
Key data in OpenSSH format
|
|
|
Errors
Status
|
Code
|
Description
|
404
|
NOT_FOUND
|
No keys found
|
Example
curl -u login:password https://robot-ws.your-server.de/key
[
{
"key":{
"name":"key1",
"fingerprint":"56:29:99:a4:5d:ed:ac:95:c1:f5:88:82:90:5d:dd:10",
"type":"ECDSA",
"size":521,
"data":"ecdsa-sha2-nistp521 AAAAE2VjZHNh ..."
}
},
{
"key":{
"name":"key2",
"fingerprint":"15:28:b0:03:95:f0:77:b3:10:56:15:6b:77:22:a5:bb",
"type":"ED25519",
"size":256,
"data":"ssh-ed25519 AAAAC3NzaC1 ..."
}
}
]
POST /key
Description
Add a new SSH key. When the key was successfully added the status code 201 CREATED is returned.
Request limit
200 requests per 1 hour
Input
Name
|
Description
|
name
|
SSH key name
|
data
|
SSH key data in OpenSSH or SSH2 format
|
Output
key (Object)
|
name (String)
|
Key name
|
fingerprint (String)
|
Key fingerprint
|
type (String)
|
Key algorithm type
|
size (Integer)
|
Key size in bits
|
data (String)
|
Key data in OpenSSH format
|
|
Errors
Status
|
Code
|
Description
|
400
|
INVALID_INPUT
|
Invalid input parameters
|
409
|
KEY_ALREADY_EXISTS
|
The supplied key already exists
|
500
|
KEY_CREATE_FAILED
|
Adding the key failed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/key -d 'name=NewKey&data=ssh-rsa+AAAAB3NzaC1yc+...'
{
"key":{
"name":"NewKey",
"fingerprint":"cb:8b:ef:a7:fe:04:87:3f:e5:55:cd:12:e3:e8:9f:99",
"type":"RSA",
"size":8192,
"data":"ssh-rsa AAAAB3NzaC1yc ..."
}
}
GET /key/<fingerprint>
Description
Query a specific SSH key
Request limit
500 requests per 1 hour
Output
key (Object)
|
name (String)
|
Key name
|
fingerprint (String)
|
Key fingerprint
|
type (String)
|
Key algorithm type
|
size (Integer)
|
Key size in bits
|
data (String)
|
Key data in OpenSSH format
|
|
Errors
Status
|
Code
|
Description
|
404
|
NOT_FOUND
|
Key not found
|
Example
curl -u login:password https://robot-ws.your-server.de/key/15:28:b0:03:95:f0:77:b3:10:56:15:6b:77:22:a5:bb
{
"key":{
"name":"key2",
"fingerprint":"15:28:b0:03:95:f0:77:b3:10:56:15:6b:77:22:a5:bb",
"type":"ED25519",
"size":256,
"data":"ssh-ed25519 AAAAC3NzaC1 ..."
}
}
POST /key/<fingerprint>
Description
Update the key name
Request limit
200 requests per 1 hour
Input
Name
|
Description
|
name
|
SSH key name
|
Output
key (Object)
|
name (String)
|
Key name
|
fingerprint (String)
|
Key fingerprint
|
type (String)
|
Key algorithm type
|
size (Integer)
|
Key size in bits
|
data (String)
|
Key data in OpenSSH format
|
|
Errors
Status
|
Code
|
Description
|
400
|
INVALID_INPUT
|
Invalid input parameters
|
404
|
NOT_FOUND
|
Key not found
|
500
|
KEY_UPDATE_FAILED
|
Updating the key name failed due do an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/key/15:28:b0:03:95:f0:77:b3:10:56:15:6b:77:22:a5:bb -d name=MyTestKey
{
"key":{
"name":"MyTestKey",
"fingerprint":"15:28:b0:03:95:f0:77:b3:10:56:15:6b:77:22:a5:bb",
"type":"ED25519",
"size":256,
"data":"ssh-ed25519 AAAAC3NzaC1 ..."
}
}
DELETE /key/<fingerprint>
Description
Remove public key
Request limit
200 requests per 1 hour
Output
No output
Errors
Status
|
Code
|
Description
|
404
|
NOT_FOUND
|
Key not found
|
500
|
KEY_DELETE_FAILED
|
Deleting the key failed due do an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/key/15:28:b0:03:95:f0:77:b3:10:56:15:6b:77:22:a5:bb -X DELETE
Server ordering
Activation
To use the Robot webservice for ordering servers, please activate this function in your Robot administrative interface first via "Administration; Settings; Web Service Settings; Ordering".
GET /order/server/product
Description
Product overview of currently offered standard server products
Request limit
500 requests per 1 hour
Input (optional)
Name
|
Description
|
type
|
Server type, "virtual" or "dedicated"
|
min_price
|
Minimum monthly price
|
max_price
|
Maximum monthly price
|
min_price_setup
|
Minimum one time fee
|
max_price_setup
|
Maximum one time fee
|
Output
(Array)
|
product (Object)
|
id (String)
|
Product id
|
name (String)
|
Product name
|
description (Array)
|
Textual description
|
traffic (String)
|
Free traffic quota
|
dist (Array)
|
Available distributions
|
arch (Array)
|
Available distribution architectures
|
lang (Array)
|
Available distribution languages
|
price (String)
|
Monthly price in Euro
|
price_setup (String)
|
One time fee in Euro
|
price_vat (String)
|
Monthly price in Euro with VAT
|
price_setup_vat (String)
|
One time fee in Euro with VAT
|
|
|
Errors
Status
|
Code
|
Description
|
404
|
NOT_FOUND
|
No products found
|
Example
curl -u login:password https://robot-ws.your-server.de/order/server/product
[
{
"product":{
"id":"EX60",
"name":"Dedicated Root Server EX60",
"description":[
"Intel\u00ae Core\u2122 i7-920 Quad-Core",
"48 GB DDR3 RAM",
"2 x 2 TB SATA 3 Gb\/s Enterprise HDD; 7200 rpm(Software-RAID 1)",
"1 Gbit\/s bandwidth"
],
"traffic":"30 TB",
"dist":[
"Rescue system",
"CentOS 6.6 minimal",
"CentOS 7.0 minimal",
"Debian 7.7 LAMP",
"Debian 7.7 minimal",
"openSUSE 13.2 minimal",
"Ubuntu 14.04.1 LTS minimal",
"Ubuntu 14.10 minimal"
],
"arch":[
64,
32
],
"lang":[
"en"
],
"price":"49.58",
"price_setup":"0.00",
"price_vat":"49.58",
"price_setup_vat":"0.00"
}
},
{
"product":{
"id":"EX40",
"name":"Dedicated Root Server EX40",
"description":[
"Intel\u00ae Core\u2122 i7-4770 Quad-Core Haswell",
"32 GB DDR3 RAM",
"2 x 2 TB SATA 6 Gb\/s Enterprise HDD; 7200 rpm(Software-RAID 1)",
"1 Gbit\/s bandwidth"
],
"traffic":"30 TB",
"dist":[
"Rescue system",
"CentOS 6.6 minimal",
"CentOS 7.0 minimal",
"Debian 7.7 LAMP",
"Debian 7.7 minimal",
"openSUSE 13.2 minimal",
"Ubuntu 14.04.1 LTS minimal",
"Ubuntu 14.10 minimal"
],
"arch":[
64,
32
],
"lang":[
"en"
],
"price":"84.03",
"price_setup":"41.18",
"price_vat":"84.03",
"price_setup_vat":"41.18"
}
}
]
GET /order/server/product/<product-id>
Description
Query a specific server product
Request limit
500 requests per 1 hour
Output
product (Object)
|
id (String)
|
Product id
|
name (String)
|
Product name
|
description (Array)
|
Textual description
|
traffic (String)
|
Free traffic quota
|
dist (Array)
|
Available distributions
|
arch (Array)
|
Available distribution architectures
|
lang (Array)
|
Available distribution languages
|
price (String)
|
Monthly price in Euro
|
price_setup (String)
|
One time fee in Euro
|
price_vat (String)
|
Monthly price in Euro with VAT
|
price_setup_vat (String)
|
One time fee in Euro with VAT
|
|
Errors
Status
|
Code
|
Description
|
404
|
NOT_FOUND
|
Product not found
|
Example
curl -u login:password https://robot-ws.your-server.de/order/server/product/EX40
{
"product":{
"id":"EX40",
"name":"Dedicated Root Server EX40",
"description":[
"Intel\u00ae Core\u2122 i7-4770 Quad-Core Haswell",
"32 GB DDR3 RAM",
"2 x 2 TB SATA 6 Gb\/s Enterprise HDD; 7200 rpm(Software-RAID 1)",
"1 Gbit\/s bandwidth"
],
"traffic":"30 TB",
"dist":[
"Rescue system",
"CentOS 6.6 minimal",
"CentOS 7.0 minimal",
"Debian 7.7 LAMP",
"Debian 7.7 minimal",
"openSUSE 13.2 minimal",
"Ubuntu 14.04.1 LTS minimal",
"Ubuntu 14.10 minimal"
],
"arch":[
64,
32
],
"lang":[
"en"
],
"price":"84.03",
"price_setup":"41.18",
"price_vat":"84.03",
"price_setup_vat":"41.18"
}
}
GET /order/server/transaction
Description
Overview of all server orders within the last 30 days
Request limit
500 requests per 1 hour
Output
(Array)
|
transaction (Object)
|
id (String)
|
Transaction id
|
date (String)
|
Transaction date
|
status (String)
|
Transaction status, "ready", "in process" or "cancelled"
|
server_number (Integer)
|
Server id if transaction status is "ready", null otherwise
|
server_ip (String)
|
Server main IP address if transaction status is "ready", null otherwise
|
authorized_key (Array)
|
Array with supplied public SSH keys
|
host_key (Array)
|
Array with servers public host keys
|
comment (String)
|
Supplied order comment
|
product (Object)
|
id (String)
|
Product id
|
name (String)
|
Product name
|
description (Array)
|
Textual description
|
traffic (String)
|
Free traffic quota
|
dist (String)
|
Ordered distribution
|
arch (Integer)
|
Ordered distribution architecture
|
lang (String)
|
Ordered distribution language
|
|
|
|
Errors
Status
|
Code
|
Description
|
404
|
NOT_FOUND
|
No transactions found
|
Example
curl -u login:password https://robot-ws.your-server.de/order/server/transaction
[
{
"transaction":{
"id":"B20150121-344957-251478",
"date":"2015-01-21T12:30:43+01:00",
"status":"in process",
"server_number":null,
"server_ip":null,
"authorized_key":[
],
"host_key":[
],
"comment":null,
"product":{
"id":"VX6",
"name":"vServer VX6",
"description":[
"Single-Core CPU",
"1 GB RAM",
"25 GB HDD",
"No telephone support"
],
"traffic":"2 TB",
"dist":"Rescue system",
"arch":"64",
"lang":"en"
}
}
},
{
"transaction":{
"id":"B20150121-344958-251479",
"date":"2015-01-21T12:54:01+01:00",
"status":"ready",
"server_number":107239,
"server_ip":"188.40.1.1",
"authorized_key":[
{
"key":{
"name":"key1",
"fingerprint":"15:28:b0:03:95:f0:77:b3:10:56:15:6b:77:22:a5:bb",
"type":"ED25519",
"size":256
}
}
],
"host_key":[
{
"key":{
"fingerprint":"c1:e4:08:73:dd:f7:e9:d1:94:ab:e9:0f:28:b2:d2:ed",
"type":"DSA",
"size":1024
}
}
],
"comment":null,
"product":{
"id":"EX40",
"name":"Dedicated Root Server EX40",
"description":[
"Intel\u00ae Core\u2122 i7-4770 Quad-Core Haswell",
"32 GB DDR3 RAM",
"2 x 2 TB SATA 6 Gb\/s Enterprise HDD; 7200 rpm(Software-RAID 1)",
"1 Gbit\/s bandwidth"
],
"traffic":"30 TB",
"dist":"Debian 7.7 minimal",
"arch":"64",
"lang":"en"
}
}
}
]
POST /order/server/transaction
Description
Order a new server. When the order was successful the status code 201 CREATED is returned.
Request limit
20 requests per day
Input
Name
|
Description
|
product_id
|
Product id
|
authorized_key[]
|
One or more SSH key fingerprints (optional, you can use either parameter "authorized_key" or parameter "password")
|
password
|
Root password (optional, you can use either parameter "authorized_key" or parameter "password")
|
dist
|
Distribution name which should be preinstalled (optional)
|
arch
|
Architecture of preinstalled distribution (optional)
|
lang
|
Language of preinstalled distribution (optional)
|
comment
|
Order comment (optional); Please note that if a comment was supplied the order will be processed manually.
|
test
|
The order will not be processed if set to "true" (optional)
|
Output
transaction (Object)
|
id (String)
|
Transaction id
|
date (String)
|
Transaction date
|
status (String)
|
Transaction status, "ready", "in process" or "cancelled"
|
server_number (Integer)
|
Server id if transaction status is "ready", null otherwise
|
server_ip (String)
|
Server main IP address if transaction status is "ready", null otherwise
|
authorized_key (Array)
|
Array with supplied public SSH keys
|
host_key (Array)
|
Array with servers public host keys
|
comment (String)
|
Supplied order comment
|
product (Object)
|
id (String)
|
Product id
|
name (String)
|
Product name
|
description (Array)
|
Textual description
|
traffic (String)
|
Free traffic quota
|
dist (String)
|
Ordered distribution
|
arch (Integer)
|
Ordered distribution architecture
|
lang (String)
|
Ordered distribution language
|
|
|
Errors
Status
|
Code
|
Description
|
400
|
INVALID_INPUT
|
Invalid input parameters
|
500
|
INTERNAL_ERROR
|
The transaction failed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/order/server/transaction -d 'product_id=EX40&dist=Debian+7.7+minimal&authorized_key[]=15:28:b0:03:95:f0:77:b3:10:56:15:6b:77:22:a5:bb'
{
"transaction":{
"id":"B20150121-344958-251479",
"date":"2015-01-21T12:54:01+01:00",
"status":"in process",
"server_number":null,
"server_ip":null,
"authorized_key":[
{
"key":{
"name":"key1",
"fingerprint":"15:28:b0:03:95:f0:77:b3:10:56:15:6b:77:22:a5:bb",
"type":"ED25519",
"size":256
}
}
],
"host_key":[
],
"comment":null,
"product":{
"id":"EX40",
"name":"Dedicated Root Server EX40",
"description":[
"Intel\u00ae Core\u2122 i7-4770 Quad-Core Haswell",
"32 GB DDR3 RAM",
"2 x 2 TB SATA 6 Gb\/s Enterprise HDD; 7200 rpm(Software-RAID 1)",
"1 Gbit\/s bandwidth"
],
"traffic":"30 TB",
"dist":"Debian 7.7 minimal",
"arch":"64",
"lang":"en"
}
}
}
GET /order/server/transaction/<id>
Description
Query a specific order transaction
Request limit
500 requests per 1 hour
Output
transaction (Object)
|
id (String)
|
Transaction id
|
date (String)
|
Transaction date
|
status (String)
|
Transaction status, "ready", "in process" or "cancelled"
|
server_number (Integer)
|
Server id if transaction status is "ready", null otherwise
|
server_ip (String)
|
Server main IP address if transaction status is "ready", null otherwise
|
authorized_key (Array)
|
Array with supplied public SSH keys
|
host_key (Array)
|
Array with servers public host keys
|
comment (String)
|
Supplied order comment
|
product (Object)
|
id (String)
|
Product id
|
name (String)
|
Product name
|
description (Array)
|
Textual description
|
traffic (String)
|
Free traffic quota
|
dist (String)
|
Ordered distribution
|
arch (Integer)
|
Ordered distribution architecture
|
lang (String)
|
Ordered distribution language
|
|
|
Errors
Status
|
Code
|
Description
|
404
|
NOT_FOUND
|
Transaction not found
|
Example
curl -u login:password https://robot-ws.your-server.de/order/server/transaction/B20150121-344958-251479
{
"transaction":{
"id":"B20150121-344958-251479",
"date":"2015-01-21T12:54:01+01:00",
"status":"ready",
"server_number":107239,
"server_ip":"188.40.1.1",
"authorized_key":[
{
"key":{
"name":"key1",
"fingerprint":"15:28:b0:03:95:f0:77:b3:10:56:15:6b:77:22:a5:bb",
"type":"ED25519",
"size":256
}
}
],
"host_key":[
{
"key":{
"fingerprint":"c1:e4:08:73:dd:f7:e9:d1:94:ab:e9:0f:28:b2:d2:ed",
"type":"DSA",
"size":1024
}
}
],
"comment":null,
"product":{
"id":"EX40",
"name":"Dedicated Root Server EX40",
"description":[
"Intel\u00ae Core\u2122 i7-4770 Quad-Core Haswell",
"32 GB DDR3 RAM",
"2 x 2 TB SATA 6 Gb\/s Enterprise HDD; 7200 rpm(Software-RAID 1)",
"1 Gbit\/s bandwidth"
],
"traffic":"30 TB",
"dist":"Debian 7.7 minimal",
"arch":"64",
"lang":"en"
}
}
}
GET /order/server_market/product
Description
Product overview of currently offered server market products
Request limit
500 requests per 1 hour
Input (optional)
Name
|
Description
|
cpu
|
CPU model name
|
min_cpu_benchmark
|
Minimum CPU benchmark value
|
max_cpu_benchmark
|
Maximum CPU benchmark value
|
min_memory_size
|
Minimum memory size in GB
|
max_memory_size
|
Maximum memory size in GB
|
min_hdd_size
|
Minimum hard disk size in GB
|
max_hdd_size
|
Maximum hard disk size in GB
|
min_hdd_count
|
Minimum hard disk count
|
max_hdd_count
|
Maximum hard disk count
|
search
|
Full text search
|
min_price
|
Minimum monthly price
|
max_price
|
Maximum monthly price
|
Output
(Array)
|
product (Object)
|
id (Integer)
|
Product id
|
name (String)
|
Product name
|
description (Array)
|
Textual description
|
traffic (String)
|
Free traffic quota
|
dist (Array)
|
Available distributions
|
arch (Array)
|
Available distribution architectures
|
lang (Array)
|
Available distribution languages
|
cpu (String)
|
CPU model name
|
cpu_benchmark (Integer)
|
CPU benchmark value
|
memory_size (Integer)
|
Main memory size in GB
|
hdd_size (Integer)
|
Hard disk size in GB
|
hdd_count (Integer)
|
Hard disk count
|
datacenter (Integer)
|
Datacentre
|
price (String)
|
Monthly price in Euro
|
price_setup (String)
|
One time fee in Euro
|
price_vat (String)
|
Monthly price in Euro with VAT
|
price_setup_vat (String)
|
One time fee in Euro with VAT
|
fixed_price (Boolean)
|
Set to "true" if product has a fixed price
|
next_reduce (Integer)
|
Countdown until next price reduce in seconds
|
|
|
Errors
Status
|
Code
|
Description
|
404
|
NOT_FOUND
|
No products found
|
Example
curl -u login:password https://robot-ws.your-server.de/order/server_market/product
[
{
"product":{
"id":276112,
"name":"SB34",
"description":[
"AMD Athlon 64 6000+ X2",
"4x RAM 2048 MB DDR2",
"2x HDD 750 GB SATA",
"RAID Controller 2-Port SATA PCI - 3ware 8006-2LP"
],
"traffic":"20 TB",
"dist":[
"Rescue system"
],
"arch":[
64
],
"lang":[
"en"
],
"cpu":"AMD Athlon 64 6000+ X2",
"cpu_benchmark":1580,
"memory_size":8,
"hdd_size":750,
"hdd_count":2,
"datacenter":12,
"price":"28.57",
"price_setup":"0.00",
"price_vat":"28.57",
"price_setup_vat":"0.00",
"fixed_price":false,
"next_reduce":-87634
}
},
{
"product":{
"id":282323,
"name":"SB109",
"description":[
"Intel Core i7 980x",
"6x RAM 4096 MB DDR3",
"2x SSD 120 GB SATA",
"NIC 1000Mbit PCI - Intel Pro1000GT PWLA8391GT",
"RAID Controller 4-Port SATA PCI-E - Adaptec 5405"
],
"traffic":"20 TB",
"dist":[
"Rescue system"
],
"arch":[
64
],
"lang":[
"en"
],
"cpu":"Intel Core i7 980x",
"cpu_benchmark":8944,
"memory_size":24,
"hdd_size":120,
"hdd_count":2,
"datacenter":14,
"price":"91.60",
"price_setup":"0.00",
"price_vat":"91.60",
"price_setup_vat":"0.00",
"fixed_price":false,
"next_reduce":-10800
}
}
]
GET /order/server_market/product/<product-id>
Description
Query a specific server market product
Request limit
500 requests per 1 hour
Output
product (Object)
|
id (Integer)
|
Product id
|
name (String)
|
Product name
|
description (Array)
|
Textual description
|
traffic (String)
|
Free traffic quota
|
dist (Array)
|
Available distributions
|
arch (Array)
|
Available distribution architectures
|
lang (Array)
|
Available distribution languages
|
cpu (String)
|
CPU model name
|
cpu_benchmark (Integer)
|
CPU benchmark value
|
memory_size (Integer)
|
Main memory size in GB
|
hdd_size (Integer)
|
Hard disk size in GB
|
hdd_count (Integer)
|
Hard disk count
|
datacenter (Integer)
|
Datacentre
|
price (String)
|
Monthly price in Euro
|
price_setup (String)
|
One time fee in Euro
|
price_vat (String)
|
Monthly price in Euro with VAT
|
price_setup_vat (String)
|
One time fee in Euro with VAT
|
fixed_price (Boolean)
|
Set to "true" if product has a fixed price
|
next_reduce (Integer)
|
Countdown until next price reduce in seconds
|
|
Errors
Status
|
Code
|
Description
|
404
|
NOT_FOUND
|
Product not found
|
Example
curl -u login:password https://robot-ws.your-server.de/order/server_market/product/282323
{
"product":{
"id":282323,
"name":"SB109",
"description":[
"Intel Core i7 980x",
"6x RAM 4096 MB DDR3",
"2x SSD 120 GB SATA",
"NIC 1000Mbit PCI - Intel Pro1000GT PWLA8391GT",
"RAID Controller 4-Port SATA PCI-E - Adaptec 5405"
],
"traffic":"20 TB",
"dist":[
"Rescue system"
],
"arch":[
64
],
"lang":[
"en"
],
"cpu":"Intel Core i7 980x",
"cpu_benchmark":8944,
"memory_size":24,
"hdd_size":120,
"hdd_count":2,
"datacenter":14,
"price":"91.60",
"price_setup":"0.00",
"price_vat":"91.60",
"price_setup_vat":"0.00",
"fixed_price":false,
"next_reduce":-10800
}
}
GET /order/server_market/transaction
Description
Overview of all server orders within the last 30 days
Request limit
500 requests per 1 hour
Output
(Array)
|
transaction (Object)
|
id (String)
|
Transaction id
|
date (String)
|
Transaction date
|
status (String)
|
Transaction status, "ready", "in process" or "cancelled"
|
server_number (Integer)
|
Server id if transaction status is "ready", null otherwise
|
server_ip (String)
|
Server main IP address if transaction status is "ready", null otherwise
|
authorized_key (Array)
|
Array with supplied public SSH keys
|
host_key (Array)
|
Array with servers public host keys
|
comment (String)
|
Supplied order comment
|
product (Object)
|
id (Integer)
|
Product id
|
name (String)
|
Product name
|
description (Array)
|
Textual description
|
traffic (String)
|
Free traffic quota
|
dist (String)
|
Ordered distribution
|
arch (String)
|
Ordered distribution architecture
|
lang (String)
|
Ordered distribution language
|
cpu (String)
|
CPU model name
|
cpu_benchmark (Integer)
|
CPU benchmark value
|
memory_size (Integer)
|
Main memory size in GB
|
hdd_size (Integer)
|
Hard disk size in GB
|
hdd_count (Integer)
|
Hard disk count
|
datacenter (Integer)
|
Datacentre
|
fixed_price (Boolean)
|
true
|
next_reduce (Integer)
|
0
|
|
|
|
Errors
Status
|
Code
|
Description
|
404
|
NOT_FOUND
|
No transactions found
|
Example
curl -u login:password https://robot-ws.your-server.de/order/server_market/transaction
[
{
"transaction":{
"id":"B20150121-344957-251478",
"date":"2015-01-21T12:30:43+01:00",
"status":"in process",
"server_number":null,
"server_ip":null,
"authorized_key":[
],
"host_key":[
],
"comment":null,
"product":{
"id":283693,
"name":"SB110",
"description":[
"Intel Core i7 980x",
"6x RAM 4096 MB DDR3",
"2x HDD 1,5 TB SATA",
"2x SSD 120 GB SATA"
],
"traffic":"20 TB",
"dist":"Rescue system",
"arch":"64",
"lang":"en",
"cpu":"Intel Core i7 980x",
"cpu_benchmark":8944,
"memory_size":24,
"hdd_size":1536,
"hdd_count":2,
"datacenter":14,
"fixed_price":true,
"next_reduce":0
}
}
},
{
"transaction":{
"id":"B20150121-344958-251479",
"date":"2015-01-21T12:54:01+01:00",
"status":"ready",
"server_number":107239,
"server_ip":"188.40.1.1",
"authorized_key":[
{
"key":{
"name":"key1",
"fingerprint":"15:28:b0:03:95:f0:77:b3:10:56:15:6b:77:22:a5:bb",
"type":"ED25519",
"size":256
}
}
],
"host_key":[
{
"key":{
"fingerprint":"c1:e4:08:73:dd:f7:e9:d1:94:ab:e9:0f:28:b2:d2:ed",
"type":"DSA",
"size":1024
}
}
],
"comment":null,
"product":{
"id":277254,
"name":"SB114",
"description":[
"Intel Core i7 950",
"6x RAM 2048 MB DDR3",
"7x HDD 1,5 TB SATA"
],
"traffic":"20 TB",
"dist":"Rescue system",
"arch":"64",
"lang":"en",
"cpu":"Intel Core i7 950",
"cpu_benchmark":5682,
"memory_size":12,
"hdd_size":1536,
"hdd_count":7,
"datacenter":14,
"fixed_price":true,
"next_reduce":0
}
}
}
]
POST /order/server_market/transaction
Description
Order a new server from the server market. When the order was successful the status code 201 CREATED is returned.
Request limit
20 requests per day
Input
Name
|
Description
|
product_id
|
Product id
|
authorized_key[]
|
One or more SSH key fingerprints (optional, you can use either parameter "authorized_key" or parameter "password")
|
password
|
Root password (optional, you can use either parameter "authorized_key" or parameter "password")
|
dist
|
Distribution name which should be preinstalled (optional)
|
arch
|
Architecture of preinstalled distribution (optional)
|
lang
|
Language of preinstalled distribution (optional)
|
comment
|
Order comment (optional); Please note that if a comment was supplied the order will be processed manually.
|
test
|
The order will not be processed if set to "true" (optional)
|
Output
transaction (Object)
|
id (String)
|
Transaction id
|
date (String)
|
Transaction date
|
status (String)
|
Transaction status, "ready", "in process" or "cancelled"
|
server_number (Integer)
|
Server id if transaction status is "ready", null otherwise
|
server_ip (String)
|
Server main IP address if transaction status is "ready", null otherwise
|
authorized_key (Array)
|
Array with supplied public SSH keys
|
host_key (Array)
|
Array with servers public host keys
|
comment (String)
|
Supplied order comment
|
product (Object)
|
id (Integer)
|
Product id
|
name (String)
|
Product name
|
description (Array)
|
Textual description
|
traffic (String)
|
Free traffic quota
|
dist (String)
|
Ordered distribution
|
arch (String)
|
Ordered distribution architecture
|
lang (String)
|
Ordered distribution language
|
cpu (String)
|
CPU model name
|
cpu_benchmark (Integer)
|
CPU benchmark value
|
memory_size (Integer)
|
Main memory size in GB
|
hdd_size (Integer)
|
Hard disk size in GB
|
hdd_count (Integer)
|
Hard disk count
|
datacenter (Integer)
|
Datacentre
|
fixed_price (Boolean)
|
true
|
next_reduce (Integer)
|
0
|
|
|
Errors
Status
|
Code
|
Description
|
400
|
INVALID_INPUT
|
Invalid input parameters
|
500
|
INTERNAL_ERROR
|
The transaction failed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/order/server_market/transaction -d 'product_id=283693&authorized_key[]=15:28:b0:03:95:f0:77:b3:10:56:15:6b:77:22:a5:bb'
{
"transaction":{
"id":"B20150121-344958-251479",
"date":"2015-01-21T12:54:01+01:00",
"status":"in process",
"server_number":null,
"server_ip":null,
"authorized_key":[
{
"key":{
"name":"key1",
"fingerprint":"15:28:b0:03:95:f0:77:b3:10:56:15:6b:77:22:a5:bb",
"type":"ED25519",
"size":256
}
}
],
"host_key":[
],
"comment":null,
"product":{
"id":283693,
"name":"SB110",
"description":[
"Intel Core i7 980x",
"6x RAM 4096 MB DDR3",
"2x HDD 1,5 TB SATA",
"2x SSD 120 GB SATA"
],
"traffic":"20 TB",
"dist":"Rescue system",
"arch":"64",
"lang":"en",
"cpu":"Intel Core i7 980x",
"cpu_benchmark":8944,
"memory_size":24,
"hdd_size":1536,
"hdd_count":2,
"datacenter":14,
"fixed_price":false,
"next_reduce":0
}
}
}
GET /order/server_market/transaction/<id>
Description
Query a specific order transaction
Request limit
500 requests per 1 hour
Output
transaction (Object)
|
id (String)
|
Transaction id
|
date (String)
|
Transaction date
|
status (String)
|
Transaction status, "ready", "in process" or "cancelled"
|
server_number (Integer)
|
Server id if transaction status is "ready", null otherwise
|
server_ip (String)
|
Server main IP address if transaction status is "ready", null otherwise
|
authorized_key (Array)
|
Array with supplied public SSH keys
|
host_key (Array)
|
Array with servers public host keys
|
comment (String)
|
Supplied order comment
|
product (Object)
|
id (Integer)
|
Product id
|
name (String)
|
Product name
|
description (Array)
|
Textual description
|
traffic (String)
|
Free traffic quota
|
dist (String)
|
Ordered distribution
|
arch (String)
|
Ordered distribution architecture
|
lang (String)
|
Ordered distribution language
|
cpu (String)
|
CPU model name
|
cpu_benchmark (Integer)
|
CPU benchmark value
|
memory_size (Integer)
|
Main memory size in GB
|
hdd_size (Integer)
|
Hard disk size in GB
|
hdd_count (Integer)
|
Hard disk count
|
datacenter (Integer)
|
Datacentre
|
fixed_price (Boolean)
|
true
|
next_reduce (Integer)
|
0
|
|
|
Errors
Status
|
Code
|
Description
|
404
|
NOT_FOUND
|
Transaction not found
|
Example
curl -u login:password https://robot-ws.your-server.de/order/server_market/transaction/B20150121-344958-251479
{
"transaction":{
"id":"B20150121-344958-251479",
"date":"2015-01-21T12:54:01+01:00",
"status":"in process",
"server_number":null,
"server_ip":null,
"authorized_key":[
{
"key":{
"name":"key1",
"fingerprint":"15:28:b0:03:95:f0:77:b3:10:56:15:6b:77:22:a5:bb",
"type":"ED25519",
"size":256
}
}
],
"host_key":[
],
"comment":null,
"product":{
"id":283693,
"name":"SB110",
"description":[
"Intel Core i7 980x",
"6x RAM 4096 MB DDR3",
"2x HDD 1,5 TB SATA",
"2x SSD 120 GB SATA"
],
"traffic":"20 TB",
"dist":"Rescue system",
"arch":"64",
"lang":"en",
"cpu":"Intel Core i7 980x",
"cpu_benchmark":8944,
"memory_size":24,
"hdd_size":1536,
"hdd_count":2,
"datacenter":14,
"fixed_price":true,
"next_reduce":0
}
}
}
Snapshot
Only CX servers support snapshots
GET /snapshot/<server-ip>
Description
Query snapshots for a specific server
Request limit
1 request per 5 seconds
Output
(Array)
|
snapshot (Object)
|
id (Integer)
|
Snapshot ID
|
timestamp (String)
|
Timestamp of snapshot
|
name (String)
|
Name of the snapshot
|
type (String)
|
Snapshot type, "snapshot" or "template"
|
size (Integer)
|
Snapshot size in GB
|
|
|
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
SNAPSHOT_NOT_AVAILABLE
|
The server has no snapshot option
|
Example
curl -u login:password https://robot-ws.your-server.de/snapshot/123.123.123.123
[
{
"snapshot":{
"id":321,
"timestamp":"2015-08-21T13:13:03.446+02:00",
"name":"Test",
"type":"snapshot",
"size":50
}
}
]
POST /snapshot/<server-ip>
Description
Create new snapshot of specific server
Request limit
1 request per 5 seconds
Output
snapshot (Object)
|
snapshot id (Integer)
|
Snapshot ID
|
timestamp (String)
|
Timestamp of snapshot
|
|
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
SNAPSHOT_NOT_AVAILABLE
|
The server has no snapshot option
|
500
|
SNAPSHOT_LIMIT_EXCEEDED
|
Snapshot limit exceeded
|
500
|
SNAPSHOT_FAILED
|
Snapshot failed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/snapshot/123.123.123.123 -X POST
{
"snapshot":{
"id":321,
"timestamp":"2015-08-21T13:13:03.446+02:00"
}
}
DELETE /snapshot/<server-ip>/<id>
Description
Delete snapshot
Request limit
1 request per 5 seconds
Errors
Status
|
Code
|
Description
|
400
|
INVALID_INPUT
|
Invalid input parameters
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
SNAPSHOT_NOT_AVAILABLE
|
The server has no snapshot option
|
Example
curl -u login:password https://robot-ws.your-server.de/snapshot/123.123.123.123/321 -X DELETE
POST /snapshot/<server-ip>/<id>
Description
Revert to snapshot or rename a snapshot
Request limit
1 request per 5 seconds
Input
You are required to use one of the following parameters.
Name
|
Description
|
revert
|
Must be set to "true" to revert the snapshot
|
name
|
Name of the snapshot
|
Errors
Status
|
Code
|
Description
|
400
|
INVALID_INPUT
|
Invalid input parameters
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
SNAPSHOT_NOT_AVAILABLE
|
The server has no snapshot option
|
500
|
VSERVER_RUNNING
|
Snapshot failed because vServer is running
|
Example
curl -u login:password https://robot-ws.your-server.de/snapshot/123.123.123.123/321 -d revert=true
Storage Box
GET /storagebox
Description
Query data of all Storage Boxes
Request limit
200 requests per 1 hour
Output
(Array)
|
storagebox (Object)
|
id (Integer)
|
Storage Box ID
|
login (String)
|
User name
|
name (String)
|
Name of the Storage Box
|
product (String)
|
Product name
|
cancelled (Boolean)
|
Status of Storage Box cancellation
|
paid_until (String)
|
Paid until date
|
|
|
Errors
Status
|
Code
|
Description
|
404
|
STORAGEBOX_NOT_FOUND
|
No Storage Boxes found
|
Example
curl -u login:password https://robot-ws.your-server.de/storagebox
[
{
"storagebox":{
"id":123456,
"login":"u12345",
"name":"Backup Server 1",
"product":"BX60",
"cancelled":false,
"paid_until":"2015-10-23"
}
}
]
GET /storagebox/<storagebox-id>
Description
Query data of a specific Storage Box
Request limit
200 requests per 1 hour
Output
(Array)
|
storagebox (Object)
|
id (Integer)
|
Storage Box ID
|
login (String)
|
User name
|
name (String)
|
Name of the Storage Box
|
product (String)
|
Product name
|
cancelled (Boolean)
|
Status of Storage Box cancellation
|
paid_until (String)
|
Paid until date
|
disk_quota (Integer)
|
Total space in MB
|
disk_usage (Integer)
|
Used space in MB
|
disk_usage_data (Integer)
|
Used space by data in MB
|
disk_usage_snapshots (Integer)
|
Used space by snapshots in MB
|
webdav (Boolean)
|
Status of WebDAV
|
samba (Boolean)
|
Status of samba
|
zfs (Boolean)
|
Status of zfs directory
|
server (String)
|
Server
|
|
|
Errors
Status
|
Code
|
Description
|
404
|
STORAGEBOX_NOT_FOUND
|
Storage Box with ID <storagebox-id> not found
|
Example
curl -u login:password https://robot-ws.your-server.de/storagebox/123456
[
{
"storagebox":{
"id":123456,
"login":"u12345",
"name":"Backup Server 1",
"product":"BX60",
"cancelled":false,
"paid_until":"2015-10-23",
"disk_quota":10240000,
"disk_usage":900,
"disk_usage_data":500,
"disk_usage_snapshots":400,
"webdav":true,
"samba":true,
"zfs":false,
"server":"u12345.your-storagebox.de"
}
}
]
POST /storagebox/<storagebox-id>
Description
Update name for a specific Storage Box
Request limit
200 requests per 1 hour
Input
Name
|
Description
|
storagebox_name
|
Name of the Storage Box
|
Output
(Array)
|
storagebox (Object)
|
id (Integer)
|
Storage Box ID
|
login (String)
|
User name
|
name (String)
|
Name of the Storage Box
|
product (String)
|
Product name
|
cancelled (Boolean)
|
Status of Storage Box cancellation
|
paid_until (String)
|
Paid until date
|
|
|
Errors
Status
|
Code
|
Description
|
400
|
INVALID_INPUT
|
Invalid input parameters
|
404
|
STORAGEBOX_NOT_FOUND
|
Storage Box with ID <storagebox-id> not found
|
Example
curl -u login:password https://robot-ws.your-server.de/storagebox/123456 -d storagebox_name=backup1
[
{
"storagebox":{
"id":123456,
"login":"u12345",
"name":"backup1",
"product":"BX60",
"cancelled":false,
"paid_until":"2015-10-23"
}
}
]
GET /storagebox/<storagebox-id>/snapshot
Description
Query snapshots of a specific Storage Box
Request limit
1 request per 5 seconds
Output
(Array)
|
snapshot (Object)
|
name (String)
|
Snapshot name
|
timestamp (String)
|
Timestamp of snapshot
|
size (Integer)
|
Snapshot size in MB
|
|
|
Errors
Status
|
Code
|
Description
|
404
|
STORAGEBOX_NOT_FOUND
|
Storage Box with ID <storagebox-id> not found
|
Example
curl -u login:password https://robot-ws.your-server.de/storagebox/123456/snapshot
[
{
"snapshot":{
"name":"2015-12-21T12-40-38",
"timestamp":"2015-12-21T13:40:38+01:00",
"size":400
}
}
]
POST /storagebox/<storagebox-id>/snapshot
Description
Create new snapshot of a specific Storage Box
Request limit
1 request per 5 seconds
Output
snapshot (Object)
|
name (String)
|
Snapshot name
|
timestamp (String)
|
Timestamp of snapshot
|
size (Integer)
|
Snapshot size in MB
|
|
Errors
Status
|
Code
|
Description
|
404
|
STORAGEBOX_NOT_FOUND
|
Storage Box with ID <storagebox-id> not found
|
409
|
SNAPSHOT_LIMIT_EXCEEDED
|
Snapshot limit exceeded
|
Example
curl -u login:password https://robot-ws.your-server.de/storagebox/123456/snapshot -X POST
{
"snapshot":{
"name":"2015-12-21T13-13-03",
"timestamp":"2015-12-21T13:13:03.446+02:00",
"size":400
}
}
DELETE /storagebox/<storagebox-id>/snapshot/<snapshot-name>
Description
Delete snapshot
Request limit
1 request per 5 seconds
Errors
Status
|
Code
|
Description
|
404
|
STORAGEBOX_NOT_FOUND
|
Storage Box with ID <storagebox-id> not found
|
404
|
SNAPSHOT_NOT_FOUND
|
Snapshot with name <snapshot-name> not found
|
Example
curl -u login:password https://robot-ws.your-server.de/storagebox/123456/snapshot/2015-12-21T13-13-03 -X DELETE
POST /storagebox/<storagebox-id>/snapshot/<snapshot-name>
Description
Revert to snapshot
Request limit
1 request per 5 seconds
Input
Name
|
Description
|
revert
|
Must be set to "true" to revert the snapshot
|
Errors
Status
|
Code
|
Description
|
400
|
INVALID_INPUT
|
Invalid input parameters
|
404
|
STORAGEBOX_NOT_FOUND
|
Storage Box with ID <storagebox-id> not found
|
404
|
SNAPSHOT_NOT_FOUND
|
Snapshot with name <snapshot-name> not found
|
Example
curl -u login:password https://robot-ws.your-server.de/storagebox/123456/snapshot/2015-12-21T13-13-03 -d revert=true
vServer
POST /vserver/<server-ip>/command
Description
Start, stop or shutdown a vServer
Request limit
100 requests per 1 hour
Input
Name
|
Description
|
type
|
Command to be executed ("start","stop","shutdown")
|
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
500
|
INTERNAL_ERROR
|
Command failed due to an internal error
|
Example
curl -u login:password https://robot-ws.your-server.de/vserver/123.123.123.123/command -d 'type=start'
Firewall
GET /firewall/<server-ip>
Description
Get the firewall configuration for a server
Request limit
500 requests per 1 hour
Output
firewall (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server id
|
status (String)
|
Status of firewall
|
whitelist_hos (Boolean)
|
Flag of Hetzner services whitelisting
|
port (String)
|
Switch port of firewall ('main' or 'kvm')
|
rules (Object)
|
input (Array)
|
(Object)
|
ip_version (String)
|
Internet protocol version
|
name (String)
|
Rule name
|
dst_ip (String)
|
Destination IP address or subnet address (CIDR notation)
|
src_ip (String)
|
Source IP address or subnet address (CIDR notation)
|
dst_port (String)
|
Destination port or port range
|
src_port (String)
|
Source port or port range
|
protocol (String)
|
Protocol above IP layer
|
tcp_flags (String)
|
TCP flag or logical combination of flags
|
action (String)
|
Action if rule matches ('accept' or 'discard')
|
|
|
|
|
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
FIREWALL_PORT_NOT_FOUND
|
Switch port not found
|
404
|
FIREWALL_NOT_AVAILABLE
|
Firewall configuration is not available for this server
|
Example
curl -u login:password https://robot-ws.your-server.de/firewall/123.123.123.123
{
"firewall":{
"server_ip":"123.123.123.123",
"server_number":321,
"status":"active",
"whitelist_hos":true,
"port":"main",
"rules":{
"input":[
{
"ip_version":"ipv4",
"name":"rule 1",
"dst_ip":null,
"src_ip":"1.1.1.1",
"dst_port":"80",
"src_port":null,
"protocol":null,
"tcp_flags":null,
"action":"accept"
}
]
}
}
}
POST /firewall/<server-ip>
Description
Apply a new firewall configuration
Request limit
200 requests per 1 hour
Input
Name
|
Description
|
status
|
Change the status of the firewall ('active' or 'disabled')
|
whitelist_hos
|
Change the flag of Hetzner services whitelisting ('true' or 'false')
|
template_id
|
Template id (when no rules are submitted)
|
rules
|
Firewall rules (when no template_id is sumitted)
|
Parameter 'rules' must be an array with the following structure:
rules[<direction>][<rule index>][<rule field>]=<rule field data>
Currently only direction 'input' can be used.
Currently only IP version 'ipv4' can be used.
Omitted rule fields will have the value 'null' and will act like a wildcard.
Please note that all data needs to be encoded as 'application/x-www-form-urlencoded'.
Example
rules[input][0][name]=rule 1 (v4)&
rules[input][0][ip_version]=ipv4&
rules[input][0][src_ip]=1.1.1.1&
rules[input][0][dst_port]=80&
rules[input][0][action]=accept&
rules[input][1][name]=Allow MySQL&
rules[input][1][ip_version]=ipv4&
rules[input][1][dst_port]=3306&
rules[input][1][action]=accept&
After encoding:
rules%5Binput%5D%5B0%5D%5Bip_version%5D=ipv4&
rules%5Binput%5D%5B0%5D%5Bname%5D=rule+1+%28v4%29&
rules%5Binput%5D%5B0%5D%5Bsrc_ip%5D=1.1.1.1&
rules%5Binput%5D%5B0%5D%5Bdst_port%5D=80&
rules%5Binput%5D%5B0%5D%5Baction%5D=accept&
rules%5Binput%5D%5B1%5D%5Bip_version%5D=ipv4&
rules%5Binput%5D%5B1%5D%5Bname%5D=Allow+MySQL&
rules%5Binput%5D%5B1%5D%5Bdst_port%5D=3306&
rules%5Binput%5D%5B1%5D%5Baction%5D=accept
Output
firewall (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server id
|
status (String)
|
Status of firewall
|
whitelist_hos (Boolean)
|
Flag of Hetzner services whitelisting
|
port (String)
|
Switch port of firewall ('main' or 'kvm')
|
rules (Object)
|
input (Array)
|
(Object)
|
ip_version (String)
|
Internet protocol version, ('ipv4', required)
|
name (String)
|
Rule name
|
dst_ip (String)
|
Destination IP address or subnet address (CIDR notation)
|
src_ip (String)
|
Source IP address or subnet address (CIDR notation)
|
dst_port (String)
|
Destination port or port range
|
src_port (String)
|
Source port or port range
|
protocol (String)
|
Protocol above IP layer
|
tcp_flags (String)
|
TCP flag or logical combination of flags
|
action (String)
|
Action if rule matches ('accept' or 'discard', required)
|
|
|
|
|
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
FIREWALL_PORT_NOT_FOUND
|
Switch port not found
|
404
|
FIREWALL_NOT_AVAILABLE
|
Firewall configuration is not available for this server
|
404
|
FIREWALL_TEMPLATE_NOT_FOUND
|
Template with ID <template_id> not found
|
409
|
FIREWALL_IN_PROCESS
|
The firewall cannot be updated because a update is currently running
|
Example
curl -u login:password https://robot-ws.your-server.de/firewall/123.123.123.123 \
--data-urlencode 'status=active' \
--data-urlencode 'whitelist_hos=true' \
--data-urlencode 'rules[input][0][name]=rule 1' \
--data-urlencode 'rules[input][0][ip_version]=ipv4' \
--data-urlencode 'rules[input][0][src_ip]=1.1.1.1' \
--data-urlencode 'rules[input][0][dst_port]=80' \
--data-urlencode 'rules[input][0][action]=accept' \
--data-urlencode 'rules[input][1][name]=Allow MySQL' \
--data-urlencode 'rules[input][1][ip_version]=ipv4' \
--data-urlencode 'rules[input][1][dst_port]=3306' \
--data-urlencode 'rules[input][1][action]=accept'
{
"firewall":{
"server_ip":"123.123.123.123",
"server_number":321,
"status":"in process",
"whitelist_hos":true,
"port":"main",
"rules":{
"input":[
{
"ip_version":"ipv4",
"name":"rule 1",
"dst_ip":null,
"src_ip":"1.1.1.1",
"dst_port":"80",
"src_port":null,
"protocol":null,
"tcp_flags":null,
"action":"accept"
},
{
"ip_version":"ipv4",
"name":"Allow MySQL",
"dst_ip":null,
"src_ip":null,
"dst_port":"3306",
"src_port":null,
"protocol":null,
"tcp_flags":null,
"action":"accept"
}
]
}
}
}
DELETE /firewall/123.123.123.123
Description
Clear firewall configuration of a server
Request limit
200 requests per 1 hour
Input
No input
Output
firewall (Object)
|
server_ip (String)
|
Server main IP address
|
server_number (Integer)
|
Server id
|
status (String)
|
Status of firewall
|
whitelist_hos (Boolean)
|
Flag of Hetzner services whitelisting
|
port (String)
|
Switch port of firewall ('main' or 'kvm')
|
rules (Object)
|
input (Array)
|
(Object)
|
ip_version (String)
|
Internet protocol version
|
name (String)
|
Rule name
|
dst_ip (String)
|
Destination IP address or subnet address (CIDR notation)
|
src_ip (String)
|
Source IP address or subnet address (CIDR notation)
|
dst_port (String)
|
Destination port or port range
|
src_port (String)
|
Source port or port range
|
protocol (String)
|
Protocol above IP layer
|
tcp_flags (String)
|
TCP flag or logical combination of flags
|
action (String)
|
Action if rule matches ('accept' or 'discard')
|
|
|
|
|
Errors
Status
|
Code
|
Description
|
404
|
SERVER_NOT_FOUND
|
Server with IP <server-ip> not found
|
404
|
FIREWALL_PORT_NOT_FOUND
|
Switch port not found
|
404
|
FIREWALL_NOT_AVAILABLE
|
Firewall configuration is not available for this server
|
409
|
FIREWALL_IN_PROCESS
|
The firewall cannot be updated because a update is currently running
|
Example
curl -u login:password https://robot-ws.your-server.de/firewall/123.123.123.123 -X DELETE
{
"firewall":{
"server_ip":"123.123.123.123",
"server_number":321,
"status":"in process",
"whitelist_hos":true,
"port":"main",
"rules":{
}
}
}
GET /firewall/template
Description
Get list of available firewall templates
Request limit
500 requests per 1 hour
Output
(Array)
|
firewall_template (Object)
|
id (Integer)
|
ID of firewall template
|
name (String)
|
Name of firewall template
|
whitelist_hos (Boolean)
|
Flag of Hetzner services whitelisting
|
is_default (Boolean)
|
If true the template is selected by default in the Robot webpanel
|
|
|
Errors
Status
|
Code
|
Description
|
404
|
NOT_FOUND
|
No firewall templates found
|
Example
curl -u login:password https://robot-ws.your-server.de/firewall/template
[
{
"firewall_template":{
"id":1,
"name":"My template",
"whitelist_hos":true,
"is_default":true
}
},
{
"firewall_template":{
"id":2,
"name":"My second template",
"whitelist_hos":true,
"is_default":false
}
}
]
POST /firewall/template
Description
Create a new firewall template
Request limit
500 requests per 1 hour
Input
Name
|
Description
|
name
|
Template name
|
whitelist_hos
|
Flag of Hetzner services whitelisting
|
is_default
|
If true the template is selected by default in the Robot webpanel
|
rules
|
Firewall rules
|
For details about the 'rules' parameter please see <link>.
Output
firewall_template (Object)
|
id (Integer)
|
ID of firewall template
|
name (String)
|
Name of firewall template
|
whitelist_hos (Boolean)
|
Flag of Hetzner services whitelisting
|
is_default (Boolean)
|
If true the template is selected by default in the Robot webpanel
|
rules (Object)
|
input (Array)
|
(Object)
|
ip_version (String)
|
Internet protocol version
|
name (String)
|
Rule name
|
dst_ip (String)
|
Destination IP address or subnet address (CIDR notation)
|
src_ip (String)
|
Source IP address or subnet address (CIDR notation)
|
dst_port (String)
|
Destination port or port range
|
src_port (String)
|
Source port or port range
|
protocol (String)
|
Protocol above IP layer
|
tcp_flags (String)
|
TCP flag or logical combination of flags
|
action (String)
|
Action if rule matches ('accept' or 'discard')
|
|
|
|
|
Example
curl -u login:password https://robot-ws.your-server.de/firewall/template \
--data-urlencode 'name=My new template' \
--data-urlencode 'whitelist_hos=true' \
--data-urlencode 'is_default=false' \
--data-urlencode 'rules[input][0][name]=rule 1' \
--data-urlencode 'rules[input][0][ip_version]=ipv4' \
--data-urlencode 'rules[input][0][src_ip]=1.1.1.1' \
--data-urlencode 'rules[input][0][dst_port]=80' \
--data-urlencode 'rules[input][0][action]=accept' \
--data-urlencode 'rules[input][1][name]=Allow MySQL' \
--data-urlencode 'rules[input][1][ip_version]=ipv4' \
--data-urlencode 'rules[input][1][dst_port]=3306' \
--data-urlencode 'rules[input][1][action]=accept'
{
"firewall_template":{
"id":123,
"whitelist_hos":true,
"is_default":false,
"rules":{
"input":[
{
"ip_version":"ipv4",
"name":"rule 1",
"dst_ip":null,
"src_ip":"1.1.1.1",
"dst_port":"80",
"src_port":null,
"protocol":null,
"tcp_flags":null,
"action":"accept"
},
{
"ip_version":"ipv4",
"name":"Allow MySQL",
"dst_ip":null,
"src_ip":null,
"dst_port":"3306",
"src_port":null,
"protocol":null,
"tcp_flags":null,
"action":"accept"
}
]
}
}
}
GET /firewall/template/<template-id>
Description
Get a specific firewall template
Request limit
500 requests per 1 hour
Output
firewall_template (Object)
|
id (Integer)
|
ID of firewall template
|
name (String)
|
Name of firewall template
|
whitelist_hos (Boolean)
|
Flag of Hetzner services whitelisting
|
is_default (Boolean)
|
If true the template is selected by default in the Robot webpanel
|
rules (Object)
|
input (Array)
|
(Object)
|
ip_version (String)
|
Internet protocol version
|
name (String)
|
Rule name
|
dst_ip (String)
|
Destination IP address or subnet address (CIDR notation)
|
src_ip (String)
|
Source IP address or subnet address (CIDR notation)
|
dst_port (String)
|
Destination port or port range
|
src_port (String)
|
Source port or port range
|
protocol (String)
|
Protocol above IP layer
|
tcp_flags (String)
|
TCP flag or logical combination of flags
|
action (String)
|
Action if rule matches ('accept' or 'discard')
|
|
|
|
|
Errors
Status
|
Code
|
Description
|
404
|
NOT_FOUND
|
Firewall template not found
|
Example
curl -u login:password https://robot-ws.your-server.de/firewall/template/123
{
"firewall_template":{
"id":123,
"whitelist_hos":true,
"is_default":false,
"rules":{
"input":[
{
"ip_version":"ipv4",
"name":"rule 1",
"dst_ip":null,
"src_ip":"1.1.1.1",
"dst_port":"80",
"src_port":null,
"protocol":null,
"tcp_flags":null,
"action":"accept"
},
{
"ip_version":"ipv4",
"name":"Allow MySQL",
"dst_ip":null,
"src_ip":null,
"dst_port":"3306",
"src_port":null,
"protocol":null,
"tcp_flags":null,
"action":"accept"
}
]
}
}
}
POST /firewall/template/<template-id>
Description
Update a firewall template
Request limit
500 requests per 1 hour
Output
firewall_template (Object)
|
id (Integer)
|
ID of firewall template
|
name (String)
|
Name of firewall template
|
whitelist_hos (Boolean)
|
Flag of Hetzner services whitelisting
|
is_default (Boolean)
|
If true the template is selected by default in the Robot webpanel
|
rules (Object)
|
input (Array)
|
(Object)
|
ip_version (String)
|
Internet protocol version
|
name (String)
|
Rule name
|
dst_ip (String)
|
Destination IP address or subnet address (CIDR notation)
|
src_ip (String)
|
Source IP address or subnet address (CIDR notation)
|
dst_port (String)
|
Destination port or port range
|
src_port (String)
|
Source port or port range
|
protocol (String)
|
Protocol above IP layer
|
tcp_flags (String)
|
TCP flag or logical combination of flags
|
action (String)
|
Action if rule matches ('accept' or 'discard')
|
|
|
|
|
Errors
Status
|
Code
|
Description
|
404
|
NOT_FOUND
|
Firewall template not found
|
Example
curl -u login:password https://robot-ws.your-server.de/firewall/template/123 \
--data-urlencode 'name=My new template' \
--data-urlencode 'whitelist_hos=true' \
--data-urlencode 'is_default=false' \
--data-urlencode 'rules[input][0][name]=rule 1' \
--data-urlencode 'rules[input][0][ip_version]=ipv4' \
--data-urlencode 'rules[input][0][src_ip]=1.1.1.1' \
--data-urlencode 'rules[input][0][dst_port]=80' \
--data-urlencode 'rules[input][0][action]=accept' \
--data-urlencode 'rules[input][1][name]=Allow MySQL' \
--data-urlencode 'rules[input][1][ip_version]=ipv4' \
--data-urlencode 'rules[input][1][dst_port]=3306' \
--data-urlencode 'rules[input][1][action]=accept' \
--data-urlencode 'rules[input][2][name]=Allow HTTPS' \
--data-urlencode 'rules[input][2][ip_version]=ipv4' \
--data-urlencode 'rules[input][2][dst_port]=443' \
--data-urlencode 'rules[input][2][protocol]=tcp' \
--data-urlencode 'rules[input][2][action]=accept'
{
"firewall_template":{
"id":123,
"whitelist_hos":true,
"is_default":false,
"rules":{
"input":[
{
"ip_version":"ipv4",
"name":"rule 1",
"dst_ip":null,
"src_ip":"1.1.1.1",
"dst_port":"80",
"src_port":null,
"protocol":null,
"tcp_flags":null,
"action":"accept"
},
{
"ip_version":"ipv4",
"name":"Allow MySQL",
"dst_ip":null,
"src_ip":null,
"dst_port":"3306",
"src_port":null,
"protocol":null,
"tcp_flags":null,
"action":"accept"
},
{
"ip_version":"ipv4",
"name":"Allow HTTPS",
"dst_ip":null,
"src_ip":null,
"dst_port":"443",
"src_port":null,
"protocol":"tcp",
"tcp_flags":null,
"action":"accept"
}
]
}
}
}
DELETE /firewall/template/123
Description
Delete a firewall template
Request limit
500 requests per 1 hour
Input
No input
Output
No output
Errors
Status
|
Code
|
Description
|
404
|
NOT_FOUND
|
Firewall template not found
|
Example
curl -u login:password https://robot-ws.your-server.de/firewall/template/123 -X DELETE
PHP Client
There is a PHP5 client library available for download at https://robot.your-server.de/downloads/robot-client.zip. You need PHP5 with libcurl support to use it
Example
require 'RobotClient.class.php';
$robot = new RobotClient('https://robot-ws.your-server.de', 'login', 'password');
// retrieve all failover ips
$results = $robot->failoverGet();
foreach ($results as $result)
{
echo $result->failover->ip . "\n";
echo $result->failover->server_ip . "\n";
echo $result->failover->active_server_ip . "\n";
}
// retrieve a specific failover ip
$result = $robot->failoverGet('123.123.123.123');
echo $result->failover->ip . "\n";
echo $result->failover->server_ip . "\n";
echo $result->failover->active_server_ip . "\n";
// switch routing
try
{
$robot->failoverRoute('123.123.123.123', '213.133.104.190');
}
catch (RobotClientException $e)
{
echo $e->getMessage() . "\n";
}