NAV Navbar

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.

In order to use the interface you need to create a webservice user in Robot under "Settings; Webservice and app settings".

URL

https://robot-ws.your-server.de

Errors

Error format

{
  "error":
  {
    "status": 404,
    "code": "BOOT_NOT_AVAILABLE",
    "message": "No boot configuration available for this server"
  }
}
error (Object)
status (Integer) HTTP Status Code
code (String) Specific error code
message (String) Specific error message

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

curl -u user: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":"NBG1-DC1",
      "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":"FSN1-DC10",
      "traffic":"2 TB",
      "flatrate":true,
      "status":"ready",
      "throttled":false,
      "cancelled":false,
      "paid_until":"2010-06-11"
    }
  }
]

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 center
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 SERVER_NOT_FOUND No server found

GET /server/{server-ip}

curl -u user: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":"NBG1-DC1",
    "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
  }
}

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 center
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

POST /server/{server-ip}

curl -u user: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":"NBG1-DC1",
    "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
  }
}

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 center
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

GET /server/{server-ip}/cancellation

curl -u user: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"
    ]
  }
}

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

POST /server/{server-ip}/cancellation

curl -u user: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
  }
}

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) Status of server cancellation
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

DELETE /server/{server-ip}/cancellation

curl -u user:password https://robot-ws.your-server.de/server/123.123.123.123/cancellation -X DELETE

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 revocation failed due to an internal error

POST /server/{server-ip}/reversal

curl -u login:password https://robot-ws.your-server.de/server/123.123.123.123/reversal
{
  "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
  }
}

Description

Withdraw a server order

Request limit

200 requests per 1 hour

Input

Name Description
reversal_reason Reason for withdrawal, 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) Status of server cancellation
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 SERVER_REVERSAL_NOT_POSSIBLE It is no longer possible to withdraw a server order
409 SERVER_REVERSAL_NOT_POSSIBLE For colocation racks it is not possible to withdraw an order
409 SERVER_REVERSAL_NOT_POSSIBLE You are currently transferring this server. It is not possible to withdraw an order for this server
500 INTERNAL_ERROR An error occurred with the order withdrawal

IP

GET /ip

curl -u user: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
    }
  }
]

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

GET /ip/{ip}

curl -u user: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
  }
}

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

POST /ip/{ip}

curl -u user: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
  }
}

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

GET /ip/{ip}/mac

curl -u user: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"
  }
}

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

PUT /ip/{ip}/mac

curl -u user: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"
  }
}

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

DELETE /ip/{ip}/mac

curl -u user:password https://robot-ws.your-server.de/ip/123.123.123.123/mac -X DELETE
{
  "mac":{
    "ip":"123.123.123.123",
    "mac":null
  }
}

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

Subnet

GET /subnet

curl -u user: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
    }
  }
]

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

GET /subnet/{net-ip}

curl -u user: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
  }
}

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

POST /subnet/{net-ip}

curl -u user: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
  }
}

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

GET /subnet/{net-ip}/mac

curl -u user: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"
    }
  }
}

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

PUT /subnet/{net-ip}/mac

curl -u user: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"
    }
  }
}

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

DELETE /subnet/{net-ip}/mac

curl -u user: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"
    }
  }
}

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

Reset

GET /reset

curl -u user: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"
      ]
    }
  }
]

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

GET /reset/{server-ip}

Query a server on which software reboots can be performed via the web service

curl -u user: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 user: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"
  }
}

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

POST /reset/{server-ip}

curl -u user:password https://robot-ws.your-server.de/reset/123.123.123.123 -d type=hw
{
  "reset":{
    "server_ip":"123.123.123.123",
    "type":"hw"
  }
}

Description

Execute reset on specific server

Request limit

50 requests per 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

Failover

GET /failover

curl -u user: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"
    }
  }
]

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

GET /failover/{failover-ip}

curl -u user: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"
  }
}

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

POST /failover/{failover-ip}

curl -u user: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"
  }
}

Description

Switch routing of failover IP address to another server

Request limit

50 requests per hour

Input

Name Description
active_server_ip Main IP address of the 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

DELETE /failover/{failover-ip}

curl -u user:password -X "DELETE "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":null
  }
}

Description

Delete the routing of a failover IP

Request limit

50 requests per 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
409 FAILOVER_LOCKED Deleting the failover IP routing is blocked due to another active request
500 FAILOVER_FAILED Due to an internal error deleting the failover IP routing failed
500 FAILOVER_NOT_COMPLETE Due to an internal error deleting the failover IP routing failed

Wake on LAN

GET /wol/{server-ip}

curl -u user:password https://robot-ws.your-server.de/wol/123.123.123.123
{
  "wol":{
    "server_ip":"123.123.123.123",
    "server_number":321
  }
}

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

POST /wol/{server-ip}

curl -u user:password https://robot-ws.your-server.de/wol/123.123.123.123 -d ''
{
  "wol":{
    "server_ip":"123.123.123.123",
    "server_number":321
  }
}

Description

Send Wake On LAN packet to server

Request limit

10 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
500 WOL_FAILED Sending Wake On LAN packet failed due to an internal error

Boot configuration

GET /boot/{server-ip}

curl -u user: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
    }
  }
}

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

boot (Object)
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
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
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
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
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
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

GET /boot/{server-ip}/rescue

curl -u user: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":[

    ]
  }
}

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

POST /boot/{server-ip}/rescue

curl -u user: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":[

    ]
  }
}

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

DELETE /boot/{server-ip}/rescue

curl -u user: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":[

    ]
  }
}

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

GET /boot/{server-ip}/rescue/last

curl -u user: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":[

    ]
  }
}

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

GET /boot/{server-ip}/linux

curl -u user: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":[

    ]
  }
}

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

POST /boot/{server-ip}/linux

curl -u user: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":[

    ]
  }
}

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

DELETE /boot/{server-ip}/linux

curl -u user: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":[

    ]
  }
}

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

GET /boot/{server-ip}/linux/last

curl -u user: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":[

    ]
  }
}

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

GET /boot/{server-ip}/vnc

curl -u user: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
  }
}

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

POST /boot/{server-ip}/vnc

 curl -u user: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"
  }
}

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

DELETE /boot/{server-ip}/vnc

curl -u user: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
  }
}

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

GET /boot/{server-ip}/windows

curl -u user: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
  }
}

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
404 WINDOWS_OUTDATED_VERSION The windows version is not supported anymore

POST /boot/{server-ip}/windows

curl -u user: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"
  }
}

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
404 WINDOWS_OUTDATED_VERSION The windows version is not supported anymore
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

DELETE /boot/{server-ip}/windows

curl -u user: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
  }
}

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
404 WINDOWS_OUTDATED_VERSION The windows version is not supported anymore
500 BOOT_DEACTIVATION_FAILED Deactivation of the windows installation failed due to an internal error

GET /boot/{server-ip}/plesk

curl -u user: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
  }
}

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
404 WINDOWS_OUTDATED_VERSION The windows version is not supported anymore

POST /boot/{server-ip}/plesk

curl -u user: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"
  }
}

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
404 WINDOWS_OUTDATED_VERSION The windows version is not supported anymore
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

DELETE /boot/{server-ip}/plesk

curl -u user: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
  }
}

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
404 WINDOWS_OUTDATED_VERSION The windows version is not supported anymore
500 BOOT_DEACTIVATION_FAILED Deactivation of the Plesk installation failed due to an internal error

GET /boot/{server-ip}/cpanel

curl -u user: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
  }
}

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

POST /boot/{server-ip}/cpanel

curl -u user: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"
  }
}

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

DELETE /boot/{server-ip}/cpanel

curl -u user: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
  }
}

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

Reverse DNS

GET /rdns

curl -u user: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"
    }
  }
]

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

GET /rdns/{ip}

curl -u user:password https://robot-ws.your-server.de/rdns/123.123.123.123
{
  "rdns":{
    "ip":"123.123.123.123",
    "ptr":"testen.de"
  }
}

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

PUT /rdns/{ip}

curl -u user: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"
  }
}

Description

Create new reverse DNS entry for one IP address. Once the reverse DNS entry is 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

POST /rdns/{ip}

curl -u user: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"
  }
}

Description

Update/create a reverse DNS entry for one IP. Once the reverse DNS entry is successfully created, the status code is set to 201 created. On succesfull updates, 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

DELETE /rdns/{ip}

curl -u user:password https://robot-ws.your-server.de/rdns/123.123.123.123 -X DELETE

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

Traffic

POST /traffic

Query traffic data for one IP

curl -u user:password https://robot-ws.your-server.de/traffic \
  --data-urlencode 'type=month' \
  --data-urlencode 'from=2010-09-01' \
  --data-urlencode 'to=2010-09-31' \
  --data-urlencode '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 user:password https://robot-ws.your-server.de/traffic \ 
  --data-urlencode 'type=month' \
  --data-urlencode 'from=2010-09-01' \
  --data-urlencode 'to=2010-09-31' \
  --data-urlencode 'ip[]=123.123.123.123' \
  --data-urlencode '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 user:password https://robot-ws.your-server.de/traffic \
  --data-urlencode 'type=month' \
  --data-urlencode 'from=2010-09-01' \
  --data-urlencode 'to=2010-09-31' \
  --data-urlencode '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
      }
    }
  }
}

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 once the specified hour, day or month has already passed.

The interval is given with the parameters "from" and "to" with the following syntax:

When using the 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". When using the 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

200 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

SSH keys

GET /key

curl -u user: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 ..."
    }
  }
]

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

POST /key

curl -u user: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 ..."
  }
}

Description

Add a new SSH key. Once the key is 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

GET /key/{fingerprint}

curl -u user: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 ..."
  }
}

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

POST /key/{fingerprint}

curl -u user: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 ..."
  }
}

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

DELETE /key/{fingerprint}

curl -u user: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

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

Server ordering

Activation

GET /order/server/product

curl -u user: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"
      ],
      "location":[
        "FSN1",
        "NBG1"
      ],
      "prices":[
        {
          "location":"FSN1",
          "price":{
            "net":"49.58",
            "gross":"49.58"
          },
          "price_setup":{
            "net":"0.00",
            "gross":"0.00"
          }
        },
        {
          "location":"NBG1",
          "price":{
            "net":"49.58",
            "gross":"49.58"
          },
          "price_setup":{
            "net":"0.00",
            "gross":"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"
      ],
      "location":[
        "FSN1",
        "NBG1"
      ],
      "prices":[
        {
          "location":"FSN1",
          "price":{
            "net":"84.03",
            "gross":"84.03"
          },
          "price_setup":{
            "net":"41.18",
            "gross":"41.18"
          }
        },
        {
          "location":"NBG1",
          "price":{
            "net":"84.03",
            "gross":"84.03"
          },
          "price_setup":{
            "net":"41.18",
            "gross":"41.18"
          }
        }
      ]
    }
  }
]

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
location The desired location

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
location (Array) Available locations
prices (Array)
(Object)
location (String) Location
price (Object)
net (String) Monthly price in euros
gross (String) Monthly price in euros with VAT
price_setup (Object)
net (String) One time fee in euros
gross (String) One time fee in euros with VAT

Errors

Status Code Description
404 NOT_FOUND No products found

GET /order/server/product/{product-id}

curl -u user: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"
    ],
    "location":[
      "FSN1",
      "NBG1"
    ],
    "prices":[
      {
        "location":"FSN1",
        "price":{
          "net":"84.03",
          "gross":"84.03"
        },
        "price_setup":{
          "net":"41.18",
          "gross":"41.18"
        }
      },
      {
        "location":"NBG1",
        "price":{
          "net":"84.03",
          "gross":"84.03"
        },
        "price_setup":{
          "net":"41.18",
          "gross":"41.18"
        }
      }
    ]
  }
}

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
location (Array) Available locations
prices (Array)
(Object)
location (String) Location
price (Object)
net (String) Monthly price in euros
gross (String) Monthly price in euros with VAT
price_setup (Object)
net (String) One time fee in euros
gross (String) One time fee in euros with VAT

Errors

Status Code Description
404 NOT_FOUND Product not found

GET /order/server/transaction

curl -u user: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",
        "location":null
      }
    }
  },
  {
    "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",
        "location":"FSN1"
      }
    }
  }
]

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
location (String) Ordered location

Errors

Status Code Description
404 NOT_FOUND No transactions found

POST /order/server/transaction

curl -u user: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",
      "location":"FSN1"
    }
  }
}

Description

Order a new server. If the order is 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")
location The desired location
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 is 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
location (String) Ordered location

Errors

Status Code Description
400 INVALID_INPUT Invalid input parameters
500 INTERNAL_ERROR The transaction failed due to an internal error

GET /order/server/transaction/{id}

curl -u user: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",
      "location":"FSN1"
    }
  }
}

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
location (String) Ordered location

Errors

Status Code Description
404 NOT_FOUND Transaction not found

GET /order/server_market/product

curl -u user: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_text":"ENT.HDD ECC INIC",
      "hdd_count":2,
      "datacenter":"NBG1-DC1",
      "network_speed":"100 Mbit\/s",
      "price":"28.57",
      "price_setup":"0.00",
      "price_vat":"28.57",
      "price_setup_vat":"0.00",
      "fixed_price":false,
      "next_reduce":-87634,
      "next_reduce_date":"2018-05-01 12:22:00"
    }
  },
  {
    "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_text":"ESAS HWR",
      "hdd_count":2,
      "datacenter":"FSN1-DC4",
      "network_speed":"200 Mbit\/s",
      "price":"91.60",
      "price_setup":"0.00",
      "price_vat":"91.60",
      "price_setup_vat":"0.00",
      "fixed_price":false,
      "next_reduce":-10800,
      "next_reduce_date":"2018-05-01 12:22:00"
    }
  }
]

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 drive size in GB
max_hdd_size Maximum drive size in GB
min_hdd_count Minimum drive count
max_hdd_count Maximum drive 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) Drive size in GB
hdd_text (String) Drive special tags
hdd_count (Integer) Drive count
datacenter (String) Data center
network_speed (String) Server network speed
price (String) Monthly price in euros
price_setup (String) One time fee in euros
price_vat (String) Monthly price in euros with VAT
price_setup_vat (String) One time fee in euros with VAT
fixed_price (Boolean) Set to "true" if product has a fixed price
next_reduce (Integer) Countdown until next price reduction in seconds
next_reduce_date (String) Next price reduction date

Errors

Status Code Description
404 NOT_FOUND No products found

GET /order/server_market/product/{product-id}

curl -u user: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_text":"ENT.HDD ECC INIC",
    "hdd_count":2,
    "datacenter":"FSN1-DC4",
    "network_speed":"100 Mbit\/s",
    "price":"91.60",
    "price_setup":"0.00",
    "price_vat":"91.60",
    "price_setup_vat":"0.00",
    "fixed_price":false,
    "next_reduce":-10800,
    "next_reduce_date":"2018-05-01 12:22:00"
  }
}

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) Drive size in GB
hdd_text (String) Drive special tags
hdd_count (Integer) Drive count
datacenter (String) Data center
network_speed (String) Server network speed
price (String) Monthly price in euros
price_setup (String) One time fee in euros
price_vat (String) Monthly price in euros with VAT
price_setup_vat (String) One time fee in euros with VAT
fixed_price (Boolean) Set to "true" if product has a fixed price
next_reduce (Integer) Countdown until next price reduction in seconds
next_reduce_date (String) Next price reduction date

Errors

Status Code Description
404 NOT_FOUND Product not found

GET /order/server_market/transaction

curl -u user: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_text":"ENT.HDD ECC INIC",
        "hdd_count":2,
        "datacenter":"FSN1-DC5",
        "network_speed":"100 Mbit\/s",
        "fixed_price":true,
        "next_reduce":0,
        "next_reduce_date":"2018-05-01 12:22:00"
      }
    }
  },
  {
    "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_text":"ENT.HDD ECC INIC",
        "hdd_count":7,
        "datacenter":"FSN1-DC5",
        "network_speed":"100 Mbit\/s",
        "fixed_price":true,
        "next_reduce":0,
        "next_reduce_date":"2018-05-01 12:22:00"
      }
    }
  }
]

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) Drive size in GB
hdd_text (String) Drive special tags
hdd_count (Integer) Drive count
datacenter (String) Data center
network_speed (String) Server network speed
fixed_price (Boolean) true
next_reduce (Integer) 0
next_reduce_date (String) 2018-05-01 12:22:00

Errors

Status Code Description
404 NOT_FOUND No transactions found

POST /order/server_market/transaction

curl -u user: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_text":"ENT.HDD ECC INIC",
      "hdd_count":2,
      "datacenter":"FSN1-DC5",
      "network_speed":"100 Mbit\/s",
      "fixed_price":false,
      "next_reduce":0,
      "next_reduce_date":"2018-05-01 12:22:00"
    }
  }
}

Description

Order a new server from the server market. If the order is 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 is 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) Drive size in GB
hdd_text (String) Drive special tags
hdd_count (Integer) Drive count
datacenter (String) Data center
network_speed (String) Server network speed
fixed_price (Boolean) true
next_reduce (Integer) 0
next_reduce_date (String) 2018-05-01 12:22:00

Errors

Status Code Description
400 INVALID_INPUT Invalid input parameters
500 INTERNAL_ERROR The transaction failed due to an internal error

GET /order/server_market/transaction/{id}

curl -u user: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_text":"ENT.HDD ECC INIC",
      "hdd_count":2,
      "datacenter":"FSN1-DC5",
      "network_speed":"100 Mbit\/s",
      "fixed_price":true,
      "next_reduce":0,
      "next_reduce_date":"2018-05-01 12:22:00"
    }
  }
}

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) Drive size in GB
hdd_text (String) Drive special tags
hdd_count (Integer) Drive count
datacenter (String) Data center
network_speed (String) Server network speed
fixed_price (Boolean) true
next_reduce (Integer) 0
next_reduce_date (String) 2018-05-01 12:22:00

Errors

Status Code Description
404 NOT_FOUND Transaction not found

Snapshot

GET /snapshot/{server-ip}

curl -u user: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
    }
  }
]

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

POST /snapshot/{server-ip}

curl -u user: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"
  }
}

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

DELETE /snapshot/{server-ip}/{id}

curl -u user:password https://robot-ws.your-server.de/snapshot/123.123.123.123/321 -X DELETE

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

POST /snapshot/{server-ip}/{id}

curl -u user:password https://robot-ws.your-server.de/snapshot/123.123.123.123/321 -d revert=true

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

Storage Box

GET /storagebox

curl -u user:password https://robot-ws.your-server.de/storagebox
[
  {
    "storagebox":{
      "id":123456,
      "login":"u12345",
      "name":"Backup Server 1",
      "product":"BX60",
      "cancelled":false,
      "locked":false,
      "paid_until":"2015-10-23"
    }
  }
]

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
locked (Boolean) Status of locking
paid_until (String) Paid until date

Errors

Status Code Description
404 STORAGEBOX_NOT_FOUND No Storage Boxes found

GET /storagebox/{storagebox-id}

curl -u user:password https://robot-ws.your-server.de/storagebox/123456
[
  {
    "storagebox":{
      "id":123456,
      "login":"u12345",
      "name":"Backup Server 1",
      "product":"BX60",
      "cancelled":false,
      "locked":false,
      "paid_until":"2015-10-23",
      "disk_quota":10240000,
      "disk_usage":900,
      "disk_usage_data":500,
      "disk_usage_snapshots":400,
      "webdav":true,
      "samba":true,
      "ssh":true,
      "backup_service":true,
      "zfs":false,
      "server":"u12345.your-storagebox.de"
    }
  }
]

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
locked (Boolean) Status of locking
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
ssh (Boolean) Status of SSH-Support
backup_service (Boolean) Status of Backup Service
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

POST /storagebox/{storagebox-id}

curl -u user:password https://robot-ws.your-server.de/storagebox/123456 -d storagebox_name=backup1
[
  {
    "storagebox":{
      "id":123456,
      "login":"u12345",
      "name":"backup1",
      "product":"BX60",
      "cancelled":false,
      "locked":false,
      "paid_until":"2015-10-23"
    }
  }
]

Description

Update a specific Storage Box

Request limit

200 requests per 1 hour

Input

Name Description
storagebox_name Name of the Storage Box
samba Status of Samba
webdav Status of WebDAV
ssh Status of SSH-Support
backup_service Status of Backup Service

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
locked (Boolean) Status of locking
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

GET /storagebox/{storagebox-id}/snapshot

curl -u user: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,
      "automatic":false,
      "comment":"Test-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
automatic (Boolean) True if snapshot has been automatically created
comment (String) Comment for the snapshot

Errors

Status Code Description
404 STORAGEBOX_NOT_FOUND Storage Box with ID {storagebox-id} not found

POST /storagebox/{storagebox-id}/snapshot

curl -u user: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
  }
}

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

DELETE /storagebox/{storagebox-id}/snapshot/{snapshot-name}

curl -u user:password https://robot-ws.your-server.de/storagebox/123456/snapshot/2015-12-21T13-13-03 \
-X DELETE

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

POST /storagebox/{storagebox-id}/snapshot/{snapshot-name}

curl -u user:password https://robot-ws.your-server.de/storagebox/123456/snapshot/2015-12-21T13-13-03 \
-d revert=true

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

POST /storagebox/{storagebox-id}/snapshot/{snapshot-name}/comment

curl -u user:password https://robot-ws.your-server.de/storagebox/123456/snapshot/2015-12-21T13-13-03/comment -X POST

Description

Set comment of a specific snapshot

Request limit

1 request per 5 seconds

Input

Name Description
comment Comment for the snapshot

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

GET /storagebox/{storagebox-id}/snapshotplan

curl -u user:password https://robot-ws.your-server.de/storagebox/123456/snapshotplan
[
  {
    "snapshotplan":{
      "status":"enabled",
      "minute":5,
      "hour":12,
      "day_of_week":2,
      "day_of_month":null,
      "month":null
    }
  }
]

Description

Query data of the snapshot plan of a specific Storage Box

Request limit

200 requests per 1 hour

Output

(Array)
storagebox (Object)
status (String) Status of the snapshot plan
minute (Integer / null) Minute of the execution or null if plan is deactivated
hour (Integer / null) Hour of the execution or null if plan is deactivated
day_of_week (Integer / null) Weekday of the execution or null if plan is deactivated or value is not set (1 = Monday, ... , 7 = Sunday)
day_of_month (Integer / null) Monthday of the execution or null if plan is deactivated or value is not set (1 = First day of month)
month (Integer / null) Month of the execution or null if plan is deactivated or value is not set (1 = January)

Errors

Status Code Description
404 STORAGEBOX_NOT_FOUND Storage Box with ID {storagebox-id} not found

POST /storagebox/{storagebox-id}/snapshotplan

curl -u user:password https://robot-ws.your-server.de/storagebox/123456/snapshot/2015-12-21T13-13-03/comment -d status=enabled -d hour=7 -d minute=19
[
  {
    "snapshotplan":{
      "status":"enabled",
      "minute":5,
      "hour":12,
      "day_of_week":2,
      "day_of_month":null,
      "month":null
    }
  }
]

Description

Edit data of the snapshot plan of a specific Storage Box

Request limit

1 request per 5 seconds

Input

status New status of the snapshot plan
minute Minute of execution. Only required if the plan is enabled
hour Hour of execution. Only required if the plan is enabled
day_of_week Weekday of execution (1 = Monday, ... , 7 = Sunday)
day_of_month Monthday of execution (1 = First day of month)
month Month of execution (1 = January)

Output

(Array)
storagebox (Object)
status (String) Status of the snapshot plan
minute (Integer / null) Minute of the execution or null if plan is deactivated
hour (Integer / null) Hour of the execution or null if plan is deactivated
day_of_week (Integer / null) Weekday of the execution or null if plan is deactivated or value is not set (1 = Monday, ... , 7 = Sunday)
day_of_month (Integer / null) Monthday of the execution or null if plan is deactivated or value is not set (1 = First day of month)
month (Integer / null) Month of the execution or null if plan is deactivated or value is not set (1 = January)

Errors

Status Code Description
404 STORAGEBOX_NOT_FOUND Storage Box with ID {storagebox-id} not found

GET /storagebox/{storagebox-id}/subaccount

curl -u user:password https://robot-ws.your-server.de/storagebox/123456/subaccount
[
  {
    "subaccount":{
      "username":"u2342-sub1",
      "accountid":"u2342",
      "server":"u12345-sub1.your-storagebox.de",
      "homedirectory":"test",
      "samba":true,
      "ssh":true,
      "backup_service":true,
      "webdav":false,
      "readonly":false,
      "createtime":"2017-05-24 13:16:45",
      "comment":"Test-comment"
    }
  }
]

Description

Query data of all sub-accounts of a specific Storage Box

Request limit

200 requests per 1 hour

Output

(Array)
subaccount (Object)
username (String) Username of the sub-account
accountid (String) Username of the main user
server (String) Server
homedirectory (String) Homedirectory of the sub-account
samba (Boolean) Status of Samba
ssh (Boolean) Status of SSH-Support
backup_service (Boolean) Status of Backup Service
webdav (Boolean) Status of WebDAV
readonly (Boolean) Status of the readonly mode
createtime (String) Time when the sub-account was created
comment (String) Custom comment fot the sub-account

Errors

Status Code Description
404 STORAGEBOX_NOT_FOUND Storage Box with ID {storagebox-id} not found

POST /storagebox/{storagebox-id}/subaccount

curl -u user:password https://robot-ws.your-server.de/storagebox/123456/subaccount -d homedirectory=test
{
  "subaccount":{
    "username":"u2342-sub1",
    "password":"as7udhaisudbasd",
    "accountid":"u2342",
    "server":"u12345-sub1.your-storagebox.de",
    "homedirectory":"test"
  }
}

Description

Creates a sub-account

Request limit

200 requests per 1 hour

Input

Name Description
homedirectory Homedirectory of the sub-account
samba Status of Samba
ssh Status of SSH-Support
backup_service Status of Backup Service
webdav Status of WebDAV
readonly Status of the readonly mode
comment Custom comment

Output

subaccount (Object)
username (String) Username of the sub-account
password (String) Password of the sub-account
accountid (String) Username of the main user
server (String) Server
homedirectory (String) Homedirectory of the sub-account

Errors

Status Code Description
404 STORAGEBOX_NOT_FOUND Storage Box with ID {storagebox-id} not found
409 STORAGEBOX_SUBACCOUNT_LIMIT_EXCEEDED Sub-account limit exceeded

PUT /storagebox/{storagebox-id}/subaccount/{sub-account-username}

curl -u user:password https://robot-ws.your-server.de/storagebox/123456/subaccount -d homedirectory=test

Description

Update sub-account

Request limit

200 requests per 1 hour

Input

Name Description
homedirectory Homedirectory of the sub-account
samba Status of Samba
ssh Status of SSH-Support
backup_service Status of Backup Service
webdav Status of WebDAV
readonly Status of the readonly mode
comment Custom comment

Errors

Status Code Description
404 STORAGEBOX_NOT_FOUND Storage Box with ID {storagebox-id} not found

DELETE /storagebox/{storagebox-id}/subaccount/{sub-account-username}

curl -u user:password https://robot-ws.your-server.de/storagebox/123456/subaccount/u2342-sub2 \
-X DELETE

Description

Delete sub-account

Request limit

1 request per 5 seconds

Errors

Status Code Description
404 STORAGEBOX_NOT_FOUND Storage Box with ID {storagebox-id} not found
404 STORAGEBOX_SUBACCOUNT_NOT_FOUND Sub-account not found

POST /storagebox/{storagebox-id}/subaccount/{sub-account-username}/password

curl -u user:password https://robot-ws.your-server.de/storagebox/123456/subaccount/u2342-sub2/password \
-X POST
{
  "password":"h1cgLgZYJsyGl0JK"
}

Description

Reset password of sub-account

Request limit

1 request per 5 seconds

Errors

Status Code Description
404 STORAGEBOX_NOT_FOUND Storage Box with ID {storagebox-id} not found
404 STORAGEBOX_SUBACCOUNT_NOT_FOUND Sub-account not found

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
curl -u user:password https://robot-ws.your-server.de/vserver/123.123.123.123/command -d 'type=start'

Firewall

GET /firewall/{server-ip}

curl -u user: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"
        }
      ]
    }
  }
}

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

POST /firewall/{server-ip}

Before encoding:

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
curl -u user: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"
        }
      ]
    }
  }
}

Description

Apply a new firewall configuration

Request limit

500 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 (if no rules are submitted)
rules Firewall rules (if no template ID is sumitted)

Parameter 'rules' must be an array with the following structure:

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.

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

DELETE /firewall/{server-ip}

curl -u user: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":{

    }
  }
}

Description

Clear firewall configuration of a server

Request limit

500 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

GET /firewall/template

curl -u user: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
    }
  }
]

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

POST /firewall/template

curl -u user: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"
        }
      ]
    }
  }
}

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 .

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')

GET /firewall/template/{template-id}

curl -u user: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"
        }
      ]
    }
  }
}

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

POST /firewall/template/{template-id}

curl -u user: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"
        }
      ]
    }
  }
}

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

DELETE /firewall/template/{template-id}

curl -u user:password https://robot-ws.your-server.de/firewall/template/123 -X DELETE

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

vSwitch

GET /vswitch

curl -u user:password https://robot-ws.your-server.de/vswitch
[
  {
    "id":1234,
    "name":"vswitch 1234",
    "vlan":4000,
    "cancelled":false
  },
  {
    "id":4321,
    "name":"vswitch test",
    "vlan":4001,
    "cancelled":false
  }
]

Description

Query data of all vSwitches

Request limit

500 requests per 1 hour

Output

(Array)
(Object)
id (Integer) vSwitch ID
name (String) vSwitch name
vlan (Integer) VLAN ID
cancelled (Boolean) Cancellation status

POST /vswitch

curl -u user:password https://robot-ws.your-server.de/vswitch \
--data-urlencode 'vlan=4000' \
--data-urlencode 'name=my vSwitch'
{
  "id":4321,
  "name":"my vSwitch",
  "vlan":4000,
  "cancelled":false,
  "server":[

  ],
  "subnet":[

  ]
}

Description

Create a new vSwitch

Request limit

100 requests per 1 hour

Input

Name Description
name vSwitch name
vlan VLAN ID

Output

id (Integer) vSwitch ID
name (String) vSwitch name
vlan (Integer) VLAN ID
cancelled (Boolean) Cancellation status
server (Array)
(Object)
server_ip Server main IP address
server_number Server ID
status Status of vSwitch for this server ("ready", "in process", "failed")
subnet (Array)
(Object)
ip (String) IP address
mask (Integer) Subnet mask in CIDR notation

Errors

Status Code Description
400 INVALID_INPUT Invalid input parameters
409 VSWITCH_LIMIT_REACHED The maximum count of vSwitches is reached

GET /vswitch/{vswitch-id}

curl -u user:password https://robot-ws.your-server.de/vswitch/4321
{
  "id":4321,
  "name":"my vSwitch",
  "vlan":4000,
  "cancelled":false,
  "server":[
    {
      "server_ip":"123.123.123.123",
      "server_number":321,
      "status":"ready"
    },
    {
      "server_ip":"123.123.123.124",
      "server_number":421,
      "status":"ready"
    }
  ],
  "subnet":[
    {
      "ip":"213.239.252.48",
      "mask":29
    }
  ]
}

Description

Query data of a specific vSwitch

Request limit

500 requests per 1 hour

Output

id (Integer) vSwitch ID
name (String) vSwitch name
vlan (Integer) VLAN ID
cancelled (Boolean) Cancellation status
server (Array)
(Object)
server_ip Server main IP address
server_number Server ID
status Status of vSwitch for this server ("ready", "in process", "failed")
subnet (Array)
(Object)
ip (String) IP address
mask (Integer) Subnet mask in CIDR notation

Errors

Status Code Description
404 NOT_FOUND vSwitch not found

POST /vswitch/{vswitch-id}

curl -u user:password https://robot-ws.your-server.de/vswitch/4321 \
--data-urlencode 'name=my new name'
--data-urlencode 'vlan=4001'

Description

Change the name or the VLAN ID of a vSwitch

Request limit

100 requests per 1 hour

Input

Name Description
name vSwitch name
vlan VLAN ID

Output

No output

Errors

Status Code Description
400 INVALID_INPUT Invalid input parameters
404 NOT_FOUND vSwitch not found
409 VSWITCH_IN_PROCESS The vSwitch cannot be updated because a update is currently running
409 VSWITCH_VLAN_NOT_UNIQUE The vSwitch cannot be updated because of a conflicting VLAN ID

DELETE /vswitch/{vswitch-id}

curl -u user:password https://robot-ws.your-server.de/vswitch/4321 -X DELETE \
--data-urlencode 'cancellation_date=2018-06-30'

Description

Cancel a vSwitch

Request limit

100 requests per 1 hour

Input

Name Description
cancellation_date Date to which the vSwitch should be cancelled (format yyyy-MM-dd)

Output

No output

Errors

Status Code Description
400 INVALID_INPUT Invalid input parameters
404 NOT_FOUND vSwitch not found
409 CONFLICT The vSwitch is already cancelled

POST /vswitch/{vswitch-id}/server

curl -u user:password https://robot-ws.your-server.de/vswitch/4321/server \
--data-urlencode 'server[]=123.123.123.123'
--data-urlencode 'server[]=123.123.123.124'

Description

Add one more servers to a vSwitch

Request limit

100 requests per 1 hour

Input

Name Description
server One server identifier or array of server identifiers (server_number or server_ip)

Output

No output

Errors

Status Code Description
400 INVALID_INPUT Invalid input parameters
404 NOT_FOUND vSwitch not found
404 SERVER_NOT_FOUND A submitted server is not found
404 VSWITCH_NOT_AVAILABLE The vSwitch feature is not available for a submitted server
409 VSWITCH_IN_PROCESS The vSwitch cannot be updated because a update is currently running
409 VSWITCH_VLAN_NOT_UNIQUE The vSwitch cannot be updated because of a conflicting VLAN ID
409 VSWITCH_SERVER_LIMIT_REACHED The maximum number of servers is reached for this vSwitch
409 VSWITCH_PER_SERVER_LIMIT_REACHED The maximum number of vSwitches is reached for a submitted server

DELETE /vswitch/{vswitch-id}/server

curl -u user:password https://robot-ws.your-server.de/vswitch/4321/server \
--data-urlencode 'server[]=123.123.123.123'
--data-urlencode 'server[]=123.123.123.124'

Description

Delete one more servers from a vSwitch

Request limit

100 requests per 1 hour

Input

Name Description
server One server identifier or array of server identifiers (server_number or server_ip)

Output

No output

Errors

Status Code Description
400 INVALID_INPUT Invalid input parameters
404 NOT_FOUND vSwitch not found
404 SERVER_NOT_FOUND A submitted server is not found
409 VSWITCH_IN_PROCESS The vSwitch cannot be updated because a update is currently running

PHP Client

There is a PHP client library available for download at https://robot.your-server.de/downloads/robot-client.zip. You need PHP with libcurl support to use it.

<?php
require 'RobotRestClient.class.php';
require 'RobotClientException.class.php';
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";
}