Forked from xavierleune/hetzner_openapi_robot.yaml
Created
December 27, 2025 02:32
-
-
Save RokkuCode/cc6d1552aa0cdda60a05e1aa78340086 to your computer and use it in GitHub Desktop.
OpenAPI Spec for Hetzner Robot API
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| openapi: 3.0.3 | |
| info: | |
| title: Hetzner Robot API | |
| description: | | |
| Complete API documentation for Hetzner Robot Web Service. | |
| The Hetzner Robot API provides programmatic access to manage dedicated servers, | |
| IP addresses, subnets, firewall configurations, vSwitches, storage boxes, and more. | |
| **Authentication:** HTTP Basic Auth | |
| **Base URL:** https://robot-ws.your-server.de | |
| **Response Format:** JSON (YAML available by appending .yaml to URLs) | |
| **Request Format:** application/x-www-form-urlencoded for POST parameters | |
| version: 1.0.0 | |
| contact: | |
| name: Hetzner Online GmbH | |
| url: https://www.hetzner.com | |
| license: | |
| name: Hetzner Terms of Service | |
| url: https://www.hetzner.com/rechtliches/agb | |
| servers: | |
| - url: https://robot-ws.your-server.de | |
| description: Production server | |
| security: | |
| - basicAuth: [] | |
| tags: | |
| - name: Server | |
| description: Server management operations | |
| - name: IP | |
| description: IP address management | |
| - name: Subnet | |
| description: Subnet management | |
| - name: Reset | |
| description: Server reset operations | |
| - name: Failover | |
| description: Failover IP management | |
| - name: Wake on LAN | |
| description: Wake on LAN operations | |
| - name: Boot Configuration | |
| description: Boot configuration management | |
| - name: Reverse DNS | |
| description: Reverse DNS management | |
| - name: Traffic | |
| description: Traffic monitoring | |
| - name: SSH Keys | |
| description: SSH key management | |
| - name: Server Ordering | |
| description: Server ordering operations | |
| - name: Storage Box | |
| description: Storage Box management | |
| - name: Firewall | |
| description: Firewall configuration | |
| - name: vSwitch | |
| description: vSwitch management | |
| paths: | |
| # Server endpoints | |
| /server: | |
| get: | |
| summary: Get all servers | |
| description: Query data of all servers | |
| operationId: getServers | |
| tags: | |
| - Server | |
| responses: | |
| '200': | |
| description: List of servers retrieved successfully | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/ServerBasic' | |
| '404': | |
| $ref: '#/components/responses/ServerNotFound' | |
| '401': | |
| $ref: '#/components/responses/Unauthorized' | |
| '403': | |
| $ref: '#/components/responses/RateLimited' | |
| x-rate-limit: "200 requests per 1 hour" | |
| /server/{server-number}: | |
| get: | |
| summary: Get specific server | |
| description: Query server data for a specific server | |
| operationId: getServer | |
| tags: | |
| - Server | |
| parameters: | |
| - $ref: '#/components/parameters/ServerNumber' | |
| responses: | |
| '200': | |
| description: Server data retrieved successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/ServerDetailed' | |
| '404': | |
| $ref: '#/components/responses/ServerNotFound' | |
| x-rate-limit: "200 requests per 1 hour" | |
| post: | |
| summary: Update server name | |
| description: Update server name for a specific server | |
| operationId: updateServerName | |
| tags: | |
| - Server | |
| parameters: | |
| - $ref: '#/components/parameters/ServerNumber' | |
| requestBody: | |
| required: true | |
| content: | |
| application/x-www-form-urlencoded: | |
| schema: | |
| type: object | |
| required: | |
| - server_name | |
| properties: | |
| server_name: | |
| type: string | |
| description: Server name | |
| example: "server1" | |
| responses: | |
| '200': | |
| description: Server name updated successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/ServerDetailed' | |
| '400': | |
| $ref: '#/components/responses/InvalidInput' | |
| '404': | |
| $ref: '#/components/responses/ServerNotFound' | |
| x-rate-limit: "200 requests per 1 hour" | |
| /server/{server-number}/cancellation: | |
| get: | |
| summary: Get server cancellation status | |
| description: Query cancellation data for a server | |
| operationId: getServerCancellation | |
| tags: | |
| - Server | |
| parameters: | |
| - $ref: '#/components/parameters/ServerNumber' | |
| responses: | |
| '200': | |
| description: Cancellation data retrieved successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/ServerCancellation' | |
| '404': | |
| $ref: '#/components/responses/ServerNotFound' | |
| x-rate-limit: "200 requests per 1 hour" | |
| post: | |
| summary: Cancel server | |
| description: Cancel a server | |
| operationId: cancelServer | |
| tags: | |
| - Server | |
| parameters: | |
| - $ref: '#/components/parameters/ServerNumber' | |
| requestBody: | |
| required: true | |
| content: | |
| application/x-www-form-urlencoded: | |
| schema: | |
| type: object | |
| required: | |
| - cancellation_date | |
| properties: | |
| cancellation_date: | |
| type: string | |
| description: Date to which the server should be cancelled or "now" to cancel immediately | |
| example: "2014-04-15" | |
| cancellation_reason: | |
| type: string | |
| description: Cancellation reason (optional) | |
| reserve_location: | |
| type: string | |
| enum: ['true', 'false'] | |
| description: Whether server location shall be reserved | |
| responses: | |
| '200': | |
| description: Server cancelled successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/ServerCancellation' | |
| '404': | |
| $ref: '#/components/responses/ServerNotFound' | |
| '409': | |
| description: Conflict | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "200 requests per 1 hour" | |
| delete: | |
| summary: Withdraw server cancellation | |
| description: Withdraw a server cancellation | |
| operationId: withdrawServerCancellation | |
| tags: | |
| - Server | |
| parameters: | |
| - $ref: '#/components/parameters/ServerNumber' | |
| responses: | |
| '200': | |
| description: Cancellation withdrawn successfully | |
| '404': | |
| $ref: '#/components/responses/ServerNotFound' | |
| '409': | |
| description: The cancellation cannot be revoked | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "200 requests per 1 hour" | |
| # IP endpoints | |
| /ip: | |
| get: | |
| summary: Get all IP addresses | |
| description: Query list of all single IP addresses | |
| operationId: getIPs | |
| tags: | |
| - IP | |
| parameters: | |
| - name: server_ip | |
| in: query | |
| description: Server main IP address, show only IP addresses assigned to this server | |
| schema: | |
| type: string | |
| format: ipv4 | |
| responses: | |
| '200': | |
| description: List of IP addresses retrieved successfully | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/IPAddress' | |
| '404': | |
| $ref: '#/components/responses/NotFound' | |
| x-rate-limit: "5000 requests per 1 hour" | |
| /ip/{ip}: | |
| get: | |
| summary: Get specific IP address | |
| description: Query data for a specific IP address | |
| operationId: getIP | |
| tags: | |
| - IP | |
| parameters: | |
| - $ref: '#/components/parameters/IPAddress' | |
| responses: | |
| '200': | |
| description: IP address data retrieved successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/IPAddressDetailed' | |
| '404': | |
| description: IP address not found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "5000 requests per 1 hour" | |
| post: | |
| summary: Update IP traffic warnings | |
| description: Update traffic warning options for an IP address | |
| operationId: updateIPTrafficWarnings | |
| tags: | |
| - IP | |
| parameters: | |
| - $ref: '#/components/parameters/IPAddress' | |
| requestBody: | |
| required: true | |
| content: | |
| application/x-www-form-urlencoded: | |
| schema: | |
| type: object | |
| properties: | |
| traffic_warnings: | |
| type: boolean | |
| description: Enable/disable traffic warnings | |
| traffic_hourly: | |
| type: integer | |
| description: Hourly traffic limit in MB | |
| traffic_daily: | |
| type: integer | |
| description: Daily traffic limit in MB | |
| traffic_monthly: | |
| type: integer | |
| description: Monthly traffic limit in GB | |
| responses: | |
| '200': | |
| description: Traffic warnings updated successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/IPAddressDetailed' | |
| '400': | |
| $ref: '#/components/responses/InvalidInput' | |
| '404': | |
| description: IP address not found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "5000 requests per 1 hour" | |
| /ip/{ip}/mac: | |
| get: | |
| summary: Get separate MAC address | |
| description: Query if it is possible to set a separate MAC address. Returns the MAC address if it is set. | |
| operationId: getIPMAC | |
| tags: | |
| - IP | |
| parameters: | |
| - $ref: '#/components/parameters/IPAddress' | |
| responses: | |
| '200': | |
| description: MAC address information retrieved successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/MACAddress' | |
| '404': | |
| description: MAC address not found or not available | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "5000 requests per 1 hour" | |
| put: | |
| summary: Generate separate MAC address | |
| description: Generate a separate MAC address | |
| operationId: generateIPMAC | |
| tags: | |
| - IP | |
| parameters: | |
| - $ref: '#/components/parameters/IPAddress' | |
| responses: | |
| '200': | |
| description: MAC address generated successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/MACAddress' | |
| '404': | |
| description: IP address not found or MAC not available | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| '409': | |
| description: MAC address already set | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "10 requests per 1 hour" | |
| delete: | |
| summary: Remove separate MAC address | |
| description: Remove a separate MAC address | |
| operationId: removeIPMAC | |
| tags: | |
| - IP | |
| parameters: | |
| - $ref: '#/components/parameters/IPAddress' | |
| responses: | |
| '200': | |
| description: MAC address removed successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/MACAddress' | |
| '404': | |
| description: IP address not found or MAC not available | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| '409': | |
| description: No separate MAC address set | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "10 requests per 1 hour" | |
| /ip/{ip}/cancellation: | |
| get: | |
| summary: Get IP cancellation status | |
| description: Query cancellation data for an IP | |
| operationId: getIPCancellation | |
| tags: | |
| - IP | |
| parameters: | |
| - $ref: '#/components/parameters/IPAddress' | |
| responses: | |
| '200': | |
| description: Cancellation data retrieved successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/IPCancellation' | |
| '404': | |
| description: IP address not found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| '409': | |
| description: It's not possible to cancel this IP | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "200 requests per 1 hour" | |
| post: | |
| summary: Cancel IP address | |
| description: Cancel an IP address | |
| operationId: cancelIP | |
| tags: | |
| - IP | |
| parameters: | |
| - $ref: '#/components/parameters/IPAddress' | |
| requestBody: | |
| required: true | |
| content: | |
| application/x-www-form-urlencoded: | |
| schema: | |
| type: object | |
| required: | |
| - cancellation_date | |
| properties: | |
| cancellation_date: | |
| type: string | |
| description: Date which you want the IP cancellation to go into effect or "now" to cancel immediately | |
| example: "2022-02-11" | |
| responses: | |
| '200': | |
| description: IP cancelled successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/IPCancellation' | |
| '400': | |
| $ref: '#/components/responses/InvalidInput' | |
| '404': | |
| description: IP address not found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| '409': | |
| description: The IP address cannot be cancelled | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "200 requests per 1 hour" | |
| delete: | |
| summary: Revoke IP cancellation | |
| description: Revoke an IP cancellation | |
| operationId: revokeIPCancellation | |
| tags: | |
| - IP | |
| parameters: | |
| - $ref: '#/components/parameters/IPAddress' | |
| responses: | |
| '200': | |
| description: IP cancellation revoked successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/IPCancellation' | |
| '404': | |
| description: IP address not found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| '409': | |
| description: The IP address cancellation cannot be revoked | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "200 requests per 1 hour" | |
| # Subnet endpoints | |
| /subnet: | |
| get: | |
| summary: Get all subnets | |
| description: Query list of all subnets | |
| operationId: getSubnets | |
| tags: | |
| - Subnet | |
| parameters: | |
| - name: server_ip | |
| in: query | |
| description: Server main IP address, show only subnets assigned to this server | |
| schema: | |
| type: string | |
| format: ipv4 | |
| responses: | |
| '200': | |
| description: List of subnets retrieved successfully | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/Subnet' | |
| '404': | |
| $ref: '#/components/responses/NotFound' | |
| x-rate-limit: "5000 requests per 1 hour" | |
| /subnet/{net-ip}: | |
| get: | |
| summary: Get specific subnet | |
| description: Query data of a specific subnet | |
| operationId: getSubnet | |
| tags: | |
| - Subnet | |
| parameters: | |
| - $ref: '#/components/parameters/NetIP' | |
| responses: | |
| '200': | |
| description: Subnet data retrieved successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Subnet' | |
| '404': | |
| description: Subnet not found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "5000 requests per 1 hour" | |
| post: | |
| summary: Update subnet traffic warnings | |
| description: Update traffic warning options for a subnet | |
| operationId: updateSubnetTrafficWarnings | |
| tags: | |
| - Subnet | |
| parameters: | |
| - $ref: '#/components/parameters/NetIP' | |
| requestBody: | |
| required: true | |
| content: | |
| application/x-www-form-urlencoded: | |
| schema: | |
| type: object | |
| properties: | |
| traffic_warnings: | |
| type: boolean | |
| description: Enable/disable traffic warnings | |
| traffic_hourly: | |
| type: integer | |
| description: Hourly traffic limit in MB | |
| traffic_daily: | |
| type: integer | |
| description: Daily traffic limit in MB | |
| traffic_monthly: | |
| type: integer | |
| description: Monthly traffic limit in GB | |
| responses: | |
| '200': | |
| description: Traffic warnings updated successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Subnet' | |
| '400': | |
| $ref: '#/components/responses/InvalidInput' | |
| '404': | |
| description: Subnet not found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "5000 requests per 1 hour" | |
| # Reset endpoints | |
| /reset: | |
| get: | |
| summary: Get reset options for all servers | |
| description: Query reset options for all servers | |
| operationId: getResetOptions | |
| tags: | |
| - Reset | |
| responses: | |
| '200': | |
| description: Reset options retrieved successfully | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/ResetOptions' | |
| '404': | |
| description: No servers with reset option found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "500 requests per 1 hour" | |
| /reset/{server-number}: | |
| get: | |
| summary: Get reset options for specific server | |
| description: Query reset options for a specific server | |
| operationId: getServerResetOptions | |
| tags: | |
| - Reset | |
| parameters: | |
| - $ref: '#/components/parameters/ServerNumber' | |
| responses: | |
| '200': | |
| description: Reset options retrieved successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/ResetOptionsDetailed' | |
| '404': | |
| description: Server not found or reset not available | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "500 requests per 1 hour" | |
| post: | |
| summary: Execute server reset | |
| description: Execute reset on specific server | |
| operationId: executeServerReset | |
| tags: | |
| - Reset | |
| parameters: | |
| - $ref: '#/components/parameters/ServerNumber' | |
| requestBody: | |
| required: true | |
| content: | |
| application/x-www-form-urlencoded: | |
| schema: | |
| type: object | |
| required: | |
| - type | |
| properties: | |
| type: | |
| type: string | |
| description: Reset type to execute | |
| enum: [sw, hw, man, power, power_long] | |
| example: "hw" | |
| responses: | |
| '200': | |
| description: Reset executed successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/ResetResult' | |
| '400': | |
| $ref: '#/components/responses/InvalidInput' | |
| '404': | |
| description: Server not found or reset not available | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| '409': | |
| description: There is already a running manual reset | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "50 requests per hour" | |
| # Failover endpoints | |
| /failover: | |
| get: | |
| summary: Get all failover IPs | |
| description: Query failover data for all servers | |
| operationId: getFailoverIPs | |
| tags: | |
| - Failover | |
| responses: | |
| '200': | |
| description: Failover IP data retrieved successfully | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/FailoverIP' | |
| '404': | |
| description: No failover IP addresses found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "100 requests per 1 hour" | |
| /failover/{failover-ip}: | |
| get: | |
| summary: Get specific failover IP | |
| description: Query specific failover IP address data | |
| operationId: getFailoverIP | |
| tags: | |
| - Failover | |
| parameters: | |
| - $ref: '#/components/parameters/FailoverIP' | |
| responses: | |
| '200': | |
| description: Failover IP data retrieved successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/FailoverIP' | |
| '404': | |
| description: Failover IP address not found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "100 requests per 1 hour" | |
| post: | |
| summary: Switch failover IP routing | |
| description: Switch routing of failover IP address to another server | |
| operationId: switchFailoverIP | |
| tags: | |
| - Failover | |
| parameters: | |
| - $ref: '#/components/parameters/FailoverIP' | |
| requestBody: | |
| required: true | |
| content: | |
| application/x-www-form-urlencoded: | |
| schema: | |
| type: object | |
| required: | |
| - active_server_ip | |
| properties: | |
| active_server_ip: | |
| type: string | |
| description: Main IP address of the server where the failover IP should be routed to | |
| example: "124.124.124.124" | |
| responses: | |
| '200': | |
| description: Failover IP switched successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/FailoverIP' | |
| '400': | |
| $ref: '#/components/responses/InvalidInput' | |
| '404': | |
| description: Failover IP or destination server not found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| '409': | |
| description: Failover IP switching conflict | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "50 requests per hour" | |
| delete: | |
| summary: Delete failover IP routing | |
| description: Delete the routing of a failover IP | |
| operationId: deleteFailoverIP | |
| tags: | |
| - Failover | |
| parameters: | |
| - $ref: '#/components/parameters/FailoverIP' | |
| responses: | |
| '200': | |
| description: Failover IP routing deleted successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/FailoverIP' | |
| '404': | |
| description: Failover IP address not found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| '409': | |
| description: Deleting the failover IP routing is blocked | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "50 requests per hour" | |
| # Wake on LAN endpoints | |
| /wol/{server-number}: | |
| get: | |
| summary: Get Wake on LAN availability | |
| description: Query Wake On LAN data | |
| operationId: getWakeOnLAN | |
| tags: | |
| - Wake on LAN | |
| parameters: | |
| - $ref: '#/components/parameters/ServerNumber' | |
| responses: | |
| '200': | |
| description: Wake on LAN data retrieved successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/WakeOnLAN' | |
| '404': | |
| description: Server not found or Wake On LAN not available | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "500 requests per 1 hour" | |
| post: | |
| summary: Send Wake on LAN packet | |
| description: Send Wake On LAN packet to server | |
| operationId: sendWakeOnLAN | |
| tags: | |
| - Wake on LAN | |
| parameters: | |
| - $ref: '#/components/parameters/ServerNumber' | |
| responses: | |
| '200': | |
| description: Wake on LAN packet sent successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/WakeOnLAN' | |
| '404': | |
| description: Server not found or Wake On LAN not available | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| '500': | |
| description: Sending Wake On LAN packet failed | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "10 requests per 1 hour" | |
| # Boot Configuration endpoints | |
| /boot/{server-number}: | |
| get: | |
| summary: Get boot configuration status | |
| description: Query the current boot configuration status for a server | |
| operationId: getBootConfiguration | |
| tags: | |
| - Boot Configuration | |
| parameters: | |
| - $ref: '#/components/parameters/ServerNumber' | |
| responses: | |
| '200': | |
| description: Boot configuration retrieved successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/BootConfiguration' | |
| '404': | |
| description: Server not found or boot configuration not available | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "500 requests per 1 hour" | |
| /boot/{server-number}/rescue: | |
| get: | |
| summary: Get rescue system options | |
| description: Query boot options for the Rescue System | |
| operationId: getRescueOptions | |
| tags: | |
| - Boot Configuration | |
| parameters: | |
| - $ref: '#/components/parameters/ServerNumber' | |
| responses: | |
| '200': | |
| description: Rescue system options retrieved successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/RescueSystem' | |
| '404': | |
| description: Server not found or boot configuration not available | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "500 requests per 1 hour" | |
| post: | |
| summary: Activate rescue system | |
| description: Activate Rescue System | |
| operationId: activateRescueSystem | |
| tags: | |
| - Boot Configuration | |
| parameters: | |
| - $ref: '#/components/parameters/ServerNumber' | |
| requestBody: | |
| required: true | |
| content: | |
| application/x-www-form-urlencoded: | |
| schema: | |
| type: object | |
| required: | |
| - os | |
| properties: | |
| os: | |
| type: string | |
| description: Operating System | |
| enum: [linux, vkvm] | |
| example: "linux" | |
| arch: | |
| type: integer | |
| description: Architecture (optional, default 64) | |
| enum: [32, 64] | |
| example: 64 | |
| deprecated: true | |
| authorized_key: | |
| type: array | |
| items: | |
| type: string | |
| description: One or more SSH key fingerprints (optional) | |
| keyboard: | |
| type: string | |
| description: Desired keyboard layout (optional, default us) | |
| example: "us" | |
| responses: | |
| '200': | |
| description: Rescue system activated successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/RescueSystemActivated' | |
| '400': | |
| $ref: '#/components/responses/InvalidInput' | |
| '404': | |
| description: Server not found or boot configuration not available | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| '500': | |
| description: Activation of the Rescue System failed | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "500 requests per 1 hour" | |
| delete: | |
| summary: Deactivate rescue system | |
| description: Deactivate Rescue System | |
| operationId: deactivateRescueSystem | |
| tags: | |
| - Boot Configuration | |
| parameters: | |
| - $ref: '#/components/parameters/ServerNumber' | |
| responses: | |
| '200': | |
| description: Rescue system deactivated successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/RescueSystem' | |
| '404': | |
| description: Server not found or boot configuration not available | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| '500': | |
| description: Deactivation of the Rescue System failed | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "500 requests per 1 hour" | |
| # Reverse DNS endpoints | |
| /rdns: | |
| get: | |
| summary: Get all reverse DNS entries | |
| description: Query all rDNS entries | |
| operationId: getAllReverseDNS | |
| tags: | |
| - Reverse DNS | |
| parameters: | |
| - name: server_ip | |
| in: query | |
| description: Server main IP address; show only reverse DNS entries assigned to this server | |
| schema: | |
| type: string | |
| format: ipv4 | |
| responses: | |
| '200': | |
| description: Reverse DNS entries retrieved successfully | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/ReverseDNS' | |
| '404': | |
| description: No reverse DNS entries found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "500 requests per 1 hour" | |
| /rdns/{ip}: | |
| get: | |
| summary: Get reverse DNS entry | |
| description: Query the current reverse DNS entry for one IP address | |
| operationId: getReverseDNS | |
| tags: | |
| - Reverse DNS | |
| parameters: | |
| - $ref: '#/components/parameters/IPAddress' | |
| responses: | |
| '200': | |
| description: Reverse DNS entry retrieved successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/ReverseDNS' | |
| '404': | |
| description: IP address not found or no reverse DNS entry | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "500 requests per 1 hour" | |
| put: | |
| summary: Create reverse DNS entry | |
| description: Create new reverse DNS entry for one IP address | |
| operationId: createReverseDNS | |
| tags: | |
| - Reverse DNS | |
| parameters: | |
| - $ref: '#/components/parameters/IPAddress' | |
| requestBody: | |
| required: true | |
| content: | |
| application/x-www-form-urlencoded: | |
| schema: | |
| type: object | |
| required: | |
| - ptr | |
| properties: | |
| ptr: | |
| type: string | |
| description: PTR record | |
| example: "testen.de" | |
| responses: | |
| '201': | |
| description: Reverse DNS entry created successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/ReverseDNS' | |
| '400': | |
| $ref: '#/components/responses/InvalidInput' | |
| '404': | |
| description: IP address not found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| '409': | |
| description: There is already an existing reverse DNS entry | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "500 requests per 1 hour" | |
| post: | |
| summary: Update/create reverse DNS entry | |
| description: Update/create a reverse DNS entry for one IP | |
| operationId: updateReverseDNS | |
| tags: | |
| - Reverse DNS | |
| parameters: | |
| - $ref: '#/components/parameters/IPAddress' | |
| requestBody: | |
| required: true | |
| content: | |
| application/x-www-form-urlencoded: | |
| schema: | |
| type: object | |
| required: | |
| - ptr | |
| properties: | |
| ptr: | |
| type: string | |
| description: PTR record | |
| example: "testen.de" | |
| responses: | |
| '200': | |
| description: Reverse DNS entry updated successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/ReverseDNS' | |
| '201': | |
| description: Reverse DNS entry created successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/ReverseDNS' | |
| '400': | |
| $ref: '#/components/responses/InvalidInput' | |
| '404': | |
| description: IP address not found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "500 requests per 1 hour" | |
| delete: | |
| summary: Delete reverse DNS entry | |
| description: Delete reverse DNS entry for one IP | |
| operationId: deleteReverseDNS | |
| tags: | |
| - Reverse DNS | |
| parameters: | |
| - $ref: '#/components/parameters/IPAddress' | |
| responses: | |
| '200': | |
| description: Reverse DNS entry deleted successfully | |
| '404': | |
| description: IP address not found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "500 requests per 1 hour" | |
| # Traffic endpoints | |
| /traffic: | |
| post: | |
| summary: Request traffic data | |
| description: Request traffic data for servers and IPs | |
| operationId: requestTrafficData | |
| tags: | |
| - Traffic | |
| requestBody: | |
| required: true | |
| content: | |
| application/x-www-form-urlencoded: | |
| schema: | |
| type: object | |
| properties: | |
| server_ip: | |
| type: string | |
| description: Server IP address | |
| type: | |
| type: string | |
| enum: [day, month, year] | |
| description: Traffic data type | |
| from: | |
| type: string | |
| format: date | |
| description: Start date | |
| to: | |
| type: string | |
| format: date | |
| description: End date | |
| responses: | |
| '200': | |
| description: Traffic data request successful | |
| '400': | |
| $ref: '#/components/responses/InvalidInput' | |
| x-rate-limit: "100 requests per 1 hour" | |
| # SSH Keys endpoints | |
| /key: | |
| get: | |
| summary: Get all SSH keys | |
| description: Query all SSH keys | |
| operationId: getSSHKeys | |
| tags: | |
| - SSH Keys | |
| responses: | |
| '200': | |
| description: SSH keys retrieved successfully | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/SSHKey' | |
| '404': | |
| description: No keys found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "500 requests per 1 hour" | |
| post: | |
| summary: Add SSH key | |
| description: Add a new SSH key | |
| operationId: addSSHKey | |
| tags: | |
| - SSH Keys | |
| requestBody: | |
| required: true | |
| content: | |
| application/x-www-form-urlencoded: | |
| schema: | |
| type: object | |
| required: | |
| - name | |
| - data | |
| properties: | |
| name: | |
| type: string | |
| description: SSH key name | |
| example: "NewKey" | |
| data: | |
| type: string | |
| description: SSH key data in OpenSSH or SSH2 format | |
| example: "ssh-rsa AAAAB3NzaC1yc+..." | |
| responses: | |
| '201': | |
| description: SSH key added successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/SSHKey' | |
| '400': | |
| $ref: '#/components/responses/InvalidInput' | |
| '409': | |
| description: The supplied key already exists | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "200 requests per 1 hour" | |
| /key/{fingerprint}: | |
| get: | |
| summary: Get specific SSH key | |
| description: Query a specific SSH key | |
| operationId: getSSHKey | |
| tags: | |
| - SSH Keys | |
| parameters: | |
| - $ref: '#/components/parameters/SSHKeyFingerprint' | |
| responses: | |
| '200': | |
| description: SSH key retrieved successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/SSHKey' | |
| '404': | |
| description: Key not found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "500 requests per 1 hour" | |
| post: | |
| summary: Update SSH key name | |
| description: Update the key name | |
| operationId: updateSSHKeyName | |
| tags: | |
| - SSH Keys | |
| parameters: | |
| - $ref: '#/components/parameters/SSHKeyFingerprint' | |
| requestBody: | |
| required: true | |
| content: | |
| application/x-www-form-urlencoded: | |
| schema: | |
| type: object | |
| required: | |
| - name | |
| properties: | |
| name: | |
| type: string | |
| description: SSH key name | |
| example: "MyTestKey" | |
| responses: | |
| '200': | |
| description: SSH key name updated successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/SSHKey' | |
| '400': | |
| $ref: '#/components/responses/InvalidInput' | |
| '404': | |
| description: Key not found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "200 requests per 1 hour" | |
| delete: | |
| summary: Remove SSH key | |
| description: Remove public key | |
| operationId: removeSSHKey | |
| tags: | |
| - SSH Keys | |
| parameters: | |
| - $ref: '#/components/parameters/SSHKeyFingerprint' | |
| responses: | |
| '200': | |
| description: SSH key removed successfully | |
| '404': | |
| description: Key not found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "200 requests per 1 hour" | |
| # Storage Box endpoints | |
| /storagebox: | |
| get: | |
| summary: Get all Storage Boxes | |
| description: Query data of all Storage Boxes | |
| operationId: getStorageBoxes | |
| tags: | |
| - Storage Box | |
| parameters: | |
| - name: linked_server | |
| in: query | |
| description: Linked Server ID | |
| schema: | |
| type: integer | |
| responses: | |
| '200': | |
| description: Storage Boxes retrieved successfully | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/StorageBoxBasic' | |
| '404': | |
| description: No Storage Boxes found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "200 requests per 1 hour" | |
| /storagebox/{storagebox-id}: | |
| get: | |
| summary: Get specific Storage Box | |
| description: Query data of a specific Storage Box | |
| operationId: getStorageBox | |
| tags: | |
| - Storage Box | |
| parameters: | |
| - $ref: '#/components/parameters/StorageBoxId' | |
| responses: | |
| '200': | |
| description: Storage Box data retrieved successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/StorageBoxDetailed' | |
| '404': | |
| description: Storage Box not found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "200 requests per 1 hour" | |
| post: | |
| summary: Update Storage Box | |
| description: Update a specific Storage Box | |
| operationId: updateStorageBox | |
| tags: | |
| - Storage Box | |
| parameters: | |
| - $ref: '#/components/parameters/StorageBoxId' | |
| requestBody: | |
| required: true | |
| content: | |
| application/x-www-form-urlencoded: | |
| schema: | |
| type: object | |
| properties: | |
| storagebox_name: | |
| type: string | |
| description: Name of the Storage Box | |
| samba: | |
| type: boolean | |
| description: Status of Samba | |
| webdav: | |
| type: boolean | |
| description: Status of WebDAV | |
| ssh: | |
| type: boolean | |
| description: Status of SSH-Support | |
| external_reachability: | |
| type: boolean | |
| description: Status of external reachability | |
| zfs: | |
| type: boolean | |
| description: Status of ZFS directory | |
| responses: | |
| '200': | |
| description: Storage Box updated successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/StorageBoxDetailed' | |
| '400': | |
| $ref: '#/components/responses/InvalidInput' | |
| '404': | |
| description: Storage Box not found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "1 request per 5 seconds" | |
| # Firewall endpoints | |
| /firewall/{server-id}: | |
| get: | |
| summary: Get firewall configuration | |
| description: Get the firewall configuration for a server | |
| operationId: getFirewallConfiguration | |
| tags: | |
| - Firewall | |
| parameters: | |
| - $ref: '#/components/parameters/ServerId' | |
| responses: | |
| '200': | |
| description: Firewall configuration retrieved successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/FirewallConfiguration' | |
| '404': | |
| description: Server not found or firewall not available | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "500 requests per 1 hour" | |
| post: | |
| summary: Apply firewall configuration | |
| description: Apply a new firewall configuration | |
| operationId: applyFirewallConfiguration | |
| tags: | |
| - Firewall | |
| parameters: | |
| - $ref: '#/components/parameters/ServerId' | |
| requestBody: | |
| required: true | |
| content: | |
| application/x-www-form-urlencoded: | |
| schema: | |
| type: object | |
| properties: | |
| status: | |
| type: string | |
| enum: [active, disabled] | |
| description: Change the status of the firewall | |
| filter_ipv6: | |
| type: boolean | |
| description: Activate or deactivate the IPv6 filter | |
| whitelist_hos: | |
| type: boolean | |
| description: Change the flag of Hetzner services whitelisting | |
| template_id: | |
| type: integer | |
| description: Template ID (not possible in combination with whitelist_hos and rules) | |
| rules: | |
| type: object | |
| description: Firewall rules | |
| properties: | |
| input: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/FirewallRule' | |
| output: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/FirewallRule' | |
| responses: | |
| '200': | |
| description: Firewall configuration applied successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/FirewallConfiguration' | |
| '400': | |
| $ref: '#/components/responses/InvalidInput' | |
| '404': | |
| description: Server not found or firewall not available | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| '409': | |
| description: Firewall configuration conflict | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "500 requests per 1 hour" | |
| delete: | |
| summary: Clear firewall configuration | |
| description: Clear firewall configuration of a server | |
| operationId: clearFirewallConfiguration | |
| tags: | |
| - Firewall | |
| parameters: | |
| - $ref: '#/components/parameters/ServerId' | |
| responses: | |
| '200': | |
| description: Firewall configuration cleared successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/FirewallConfiguration' | |
| '404': | |
| description: Server not found or firewall not available | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| '409': | |
| description: Firewall cannot be cleared | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "500 requests per 1 hour" | |
| /firewall/template: | |
| get: | |
| summary: Get firewall templates | |
| description: Get list of available firewall templates | |
| operationId: getFirewallTemplates | |
| tags: | |
| - Firewall | |
| responses: | |
| '200': | |
| description: Firewall templates retrieved successfully | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/FirewallTemplate' | |
| '404': | |
| description: No firewall templates found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "500 requests per 1 hour" | |
| post: | |
| summary: Create firewall template | |
| description: Create a new firewall template | |
| operationId: createFirewallTemplate | |
| tags: | |
| - Firewall | |
| requestBody: | |
| required: true | |
| content: | |
| application/x-www-form-urlencoded: | |
| schema: | |
| type: object | |
| required: | |
| - name | |
| - whitelist_hos | |
| - is_default | |
| properties: | |
| name: | |
| type: string | |
| description: Template name | |
| filter_ipv6: | |
| type: boolean | |
| description: Activate or deactivate the IPv6 filter | |
| whitelist_hos: | |
| type: boolean | |
| description: Flag of Hetzner services whitelisting | |
| is_default: | |
| type: boolean | |
| description: If true the template is selected by default in the Robot webpanel | |
| rules: | |
| type: object | |
| description: Firewall rules | |
| responses: | |
| '201': | |
| description: Firewall template created successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/FirewallTemplateDetailed' | |
| '400': | |
| $ref: '#/components/responses/InvalidInput' | |
| x-rate-limit: "500 requests per 1 hour" | |
| # vSwitch endpoints | |
| /vswitch: | |
| get: | |
| summary: Get all vSwitches | |
| description: Query data of all vSwitches | |
| operationId: getVSwitches | |
| tags: | |
| - vSwitch | |
| responses: | |
| '200': | |
| description: List of vSwitches retrieved successfully | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/VSwitchBasic' | |
| example: | |
| - id: 1234 | |
| name: "vswitch 1234" | |
| vlan: 4000 | |
| cancelled: false | |
| - id: 4321 | |
| name: "vswitch test" | |
| vlan: 4001 | |
| cancelled: false | |
| '404': | |
| $ref: '#/components/responses/NotFound' | |
| '401': | |
| $ref: '#/components/responses/Unauthorized' | |
| '403': | |
| $ref: '#/components/responses/RateLimited' | |
| x-rate-limit: "500 requests per 1 hour" | |
| post: | |
| summary: Create new vSwitch | |
| description: Create a new vSwitch with specified name and VLAN ID | |
| operationId: createVSwitch | |
| tags: | |
| - vSwitch | |
| requestBody: | |
| required: true | |
| content: | |
| application/x-www-form-urlencoded: | |
| schema: | |
| type: object | |
| required: | |
| - name | |
| - vlan | |
| properties: | |
| name: | |
| type: string | |
| description: vSwitch name | |
| example: "my vSwitch" | |
| vlan: | |
| type: integer | |
| minimum: 4000 | |
| maximum: 4091 | |
| description: VLAN ID (range from 4000 to 4091) | |
| example: 4000 | |
| responses: | |
| '201': | |
| description: vSwitch created successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/VSwitchDetailed' | |
| '400': | |
| $ref: '#/components/responses/InvalidInput' | |
| '401': | |
| $ref: '#/components/responses/Unauthorized' | |
| '403': | |
| $ref: '#/components/responses/RateLimited' | |
| '409': | |
| description: vSwitch limit reached | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| example: | |
| error: | |
| status: 409 | |
| code: "VSWITCH_LIMIT_REACHED" | |
| message: "The maximum count of vSwitches is reached" | |
| x-rate-limit: "100 requests per 1 hour" | |
| /vswitch/{vswitch-id}: | |
| get: | |
| summary: Get specific vSwitch | |
| description: Query detailed data of a specific vSwitch | |
| operationId: getVSwitch | |
| tags: | |
| - vSwitch | |
| parameters: | |
| - $ref: '#/components/parameters/VSwitchId' | |
| responses: | |
| '200': | |
| description: vSwitch data retrieved successfully | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/VSwitchDetailed' | |
| '404': | |
| description: vSwitch not found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| '401': | |
| $ref: '#/components/responses/Unauthorized' | |
| '403': | |
| $ref: '#/components/responses/RateLimited' | |
| x-rate-limit: "500 requests per 1 hour" | |
| post: | |
| summary: Update vSwitch | |
| description: Change the name or the VLAN ID of a vSwitch | |
| operationId: updateVSwitch | |
| tags: | |
| - vSwitch | |
| parameters: | |
| - $ref: '#/components/parameters/VSwitchId' | |
| requestBody: | |
| required: true | |
| content: | |
| application/x-www-form-urlencoded: | |
| schema: | |
| type: object | |
| properties: | |
| name: | |
| type: string | |
| description: New vSwitch name | |
| example: "my new name" | |
| vlan: | |
| type: integer | |
| minimum: 4000 | |
| maximum: 4091 | |
| description: New VLAN ID | |
| example: 4001 | |
| responses: | |
| '200': | |
| description: vSwitch updated successfully | |
| '400': | |
| $ref: '#/components/responses/InvalidInput' | |
| '401': | |
| $ref: '#/components/responses/Unauthorized' | |
| '403': | |
| $ref: '#/components/responses/RateLimited' | |
| '404': | |
| description: vSwitch not found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| '409': | |
| description: Update conflict | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| examples: | |
| in_process: | |
| summary: Update in progress | |
| value: | |
| error: | |
| status: 409 | |
| code: "VSWITCH_IN_PROCESS" | |
| message: "The vSwitch cannot be updated because a update is currently running" | |
| vlan_conflict: | |
| summary: VLAN ID conflict | |
| value: | |
| error: | |
| status: 409 | |
| code: "VSWITCH_VLAN_NOT_UNIQUE" | |
| message: "The vSwitch cannot be updated because of a conflicting VLAN ID" | |
| x-rate-limit: "100 requests per 1 hour" | |
| delete: | |
| summary: Cancel vSwitch | |
| description: Cancel a vSwitch at a specified date | |
| operationId: cancelVSwitch | |
| tags: | |
| - vSwitch | |
| parameters: | |
| - $ref: '#/components/parameters/VSwitchId' | |
| requestBody: | |
| required: true | |
| content: | |
| application/x-www-form-urlencoded: | |
| schema: | |
| type: object | |
| required: | |
| - cancellation_date | |
| properties: | |
| cancellation_date: | |
| type: string | |
| description: Date to which the vSwitch should be cancelled (format yyyy-MM-dd) or "now" to cancel immediately | |
| example: "2018-06-30" | |
| pattern: '^(\d{4}-\d{2}-\d{2}|now)' | |
| responses: | |
| '200': | |
| description: vSwitch cancelled successfully | |
| '400': | |
| $ref: '#/components/responses/InvalidInput' | |
| '401': | |
| $ref: '#/components/responses/Unauthorized' | |
| '403': | |
| $ref: '#/components/responses/RateLimited' | |
| '404': | |
| description: vSwitch not found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| '409': | |
| description: vSwitch already cancelled | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "100 requests per 1 hour" | |
| /vswitch/{vswitch-id}/server: | |
| post: | |
| summary: Add servers to vSwitch | |
| description: Add one or more servers to a vSwitch | |
| operationId: addServersToVSwitch | |
| tags: | |
| - vSwitch | |
| parameters: | |
| - $ref: '#/components/parameters/VSwitchId' | |
| requestBody: | |
| required: true | |
| content: | |
| application/x-www-form-urlencoded: | |
| schema: | |
| type: object | |
| required: | |
| - server | |
| properties: | |
| server: | |
| type: array | |
| items: | |
| type: string | |
| description: One or more server identifiers (server_number or server_ip) | |
| example: ["123.123.123.123", "123.123.123.124"] | |
| encoding: | |
| server: | |
| style: form | |
| explode: true | |
| responses: | |
| '200': | |
| description: Servers added to vSwitch successfully | |
| '400': | |
| $ref: '#/components/responses/InvalidInput' | |
| '401': | |
| $ref: '#/components/responses/Unauthorized' | |
| '403': | |
| $ref: '#/components/responses/RateLimited' | |
| '404': | |
| description: Resource not found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| '409': | |
| description: Add conflict | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "100 requests per 1 hour" | |
| delete: | |
| summary: Remove servers from vSwitch | |
| description: Remove one or more servers from a vSwitch | |
| operationId: removeServersFromVSwitch | |
| tags: | |
| - vSwitch | |
| parameters: | |
| - $ref: '#/components/parameters/VSwitchId' | |
| requestBody: | |
| required: true | |
| content: | |
| application/x-www-form-urlencoded: | |
| schema: | |
| type: object | |
| required: | |
| - server | |
| properties: | |
| server: | |
| type: array | |
| items: | |
| type: string | |
| description: One or more server identifiers (server_number or server_ip) | |
| example: ["123.123.123.123", "123.123.123.124"] | |
| encoding: | |
| server: | |
| style: form | |
| explode: true | |
| responses: | |
| '200': | |
| description: Servers removed from vSwitch successfully | |
| '400': | |
| $ref: '#/components/responses/InvalidInput' | |
| '401': | |
| $ref: '#/components/responses/Unauthorized' | |
| '403': | |
| $ref: '#/components/responses/RateLimited' | |
| '404': | |
| description: Resource not found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| '409': | |
| description: Remove conflict | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| x-rate-limit: "100 requests per 1 hour" | |
| components: | |
| securitySchemes: | |
| basicAuth: | |
| type: http | |
| scheme: basic | |
| description: HTTP Basic Authentication using Robot webservice username and password | |
| parameters: | |
| ServerNumber: | |
| name: server-number | |
| in: path | |
| required: true | |
| description: Server ID | |
| schema: | |
| type: integer | |
| example: 321 | |
| ServerId: | |
| name: server-id | |
| in: path | |
| required: true | |
| description: Server ID | |
| schema: | |
| type: integer | |
| example: 321 | |
| IPAddress: | |
| name: ip | |
| in: path | |
| required: true | |
| description: IP address | |
| schema: | |
| type: string | |
| format: ipv4 | |
| example: "123.123.123.123" | |
| NetIP: | |
| name: net-ip | |
| in: path | |
| required: true | |
| description: Network IP address | |
| schema: | |
| type: string | |
| example: "123.123.123.123" | |
| FailoverIP: | |
| name: failover-ip | |
| in: path | |
| required: true | |
| description: Failover IP address | |
| schema: | |
| type: string | |
| example: "123.123.123.123" | |
| SSHKeyFingerprint: | |
| name: fingerprint | |
| in: path | |
| required: true | |
| description: SSH key fingerprint | |
| schema: | |
| type: string | |
| example: "15:28:b0:03:95:f0:77:b3:10:56:15:6b:77:22:a5:bb" | |
| StorageBoxId: | |
| name: storagebox-id | |
| in: path | |
| required: true | |
| description: Storage Box ID | |
| schema: | |
| type: integer | |
| example: 123456 | |
| VSwitchId: | |
| name: vswitch-id | |
| in: path | |
| required: true | |
| description: vSwitch ID | |
| schema: | |
| type: integer | |
| example: 4321 | |
| responses: | |
| NotFound: | |
| description: Resource not found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| example: | |
| error: | |
| status: 404 | |
| code: "NOT_FOUND" | |
| message: "Resource not found" | |
| ServerNotFound: | |
| description: Server not found | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| example: | |
| error: | |
| status: 404 | |
| code: "SERVER_NOT_FOUND" | |
| message: "Server not found" | |
| InvalidInput: | |
| description: Invalid input parameters | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/ErrorInvalidInput' | |
| example: | |
| error: | |
| status: 400 | |
| code: "INVALID_INPUT" | |
| message: "invalid input" | |
| missing: null | |
| invalid: ["server_name"] | |
| Unauthorized: | |
| description: Authentication failed | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/Error' | |
| example: | |
| error: | |
| status: 401 | |
| code: "UNAUTHORIZED" | |
| message: "Authentication failed" | |
| RateLimited: | |
| description: Rate limit exceeded | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/ErrorRateLimit' | |
| example: | |
| error: | |
| status: 403 | |
| code: "RATE_LIMIT_EXCEEDED" | |
| message: "rate limit exceeded" | |
| max_request: 200 | |
| interval: 3600 | |
| schemas: | |
| Error: | |
| type: object | |
| properties: | |
| error: | |
| type: object | |
| properties: | |
| status: | |
| type: string | |
| enum: [ready, "in process"] | |
| description: Server status | |
| cancelled: | |
| type: boolean | |
| description: Status of server cancellation | |
| paid_until: | |
| type: string | |
| format: date | |
| description: Paid until date | |
| ip: | |
| type: array | |
| items: | |
| type: string | |
| format: ipv4 | |
| description: Array of assigned single IP addresses | |
| subnet: | |
| type: array | |
| items: | |
| type: object | |
| properties: | |
| ip: | |
| type: string | |
| description: IP address | |
| mask: | |
| type: string | |
| description: Subnet mask | |
| nullable: true | |
| description: Array of assigned subnets | |
| required: | |
| - server_ip | |
| - server_number | |
| - server_name | |
| - product | |
| - dc | |
| - traffic | |
| - status | |
| - cancelled | |
| - paid_until | |
| ServerDetailed: | |
| type: object | |
| properties: | |
| server: | |
| allOf: | |
| - $ref: '#/components/schemas/ServerBasic/properties/server' | |
| - type: object | |
| properties: | |
| reset: | |
| type: boolean | |
| description: Flag of reset system availability | |
| rescue: | |
| type: boolean | |
| description: Flag of Rescue System availability | |
| vnc: | |
| type: boolean | |
| description: Flag of VNC installation availability | |
| windows: | |
| type: boolean | |
| description: Flag of Windows installation availability | |
| plesk: | |
| type: boolean | |
| description: Flag of Plesk installation availability | |
| cpanel: | |
| type: boolean | |
| description: Flag of cPanel installation availability | |
| wol: | |
| type: boolean | |
| description: Flag of Wake On Lan availability | |
| hot_swap: | |
| type: boolean | |
| description: Flag of Hot Swap availability | |
| linked_storagebox: | |
| type: integer | |
| nullable: true | |
| description: Linked Storage Box ID | |
| ServerCancellation: | |
| type: object | |
| properties: | |
| cancellation: | |
| type: object | |
| properties: | |
| server_ip: | |
| type: string | |
| format: ipv4 | |
| description: Server main IP address | |
| server_ipv6_net: | |
| type: string | |
| format: ipv6 | |
| description: Server main IPv6 net address | |
| server_number: | |
| type: integer | |
| description: Server ID | |
| server_name: | |
| type: string | |
| description: Server name | |
| earliest_cancellation_date: | |
| type: string | |
| format: date | |
| description: Earliest possible cancellation date | |
| cancelled: | |
| type: boolean | |
| description: Status of server cancellation | |
| reservation_possible: | |
| type: boolean | |
| description: Indicates whether the current server location is eligible for reservation | |
| reserved: | |
| type: boolean | |
| description: Indicates whether the current server location will be reserved | |
| cancellation_date: | |
| type: string | |
| format: date | |
| nullable: true | |
| description: Cancellation date if cancellation is active | |
| cancellation_reason: | |
| oneOf: | |
| - type: array | |
| items: | |
| type: string | |
| - type: string | |
| - type: "null" | |
| description: Array of possible cancellation reasons or cancellation reason if active | |
| IPAddress: | |
| type: object | |
| properties: | |
| ip: | |
| type: object | |
| properties: | |
| ip: | |
| type: string | |
| format: ipv4 | |
| description: IP address | |
| server_ip: | |
| type: string | |
| format: ipv4 | |
| description: Servers main IP address | |
| server_number: | |
| type: integer | |
| description: Server ID | |
| locked: | |
| type: boolean | |
| description: Status of locking | |
| separate_mac: | |
| type: string | |
| nullable: true | |
| description: Separate MAC address, if not set null | |
| traffic_warnings: | |
| type: boolean | |
| description: True if traffic warnings are enabled | |
| traffic_hourly: | |
| type: integer | |
| description: Hourly traffic limit in MB | |
| traffic_daily: | |
| type: integer | |
| description: Daily traffic limit in MB | |
| traffic_monthly: | |
| type: integer | |
| description: Monthly traffic limit in GB | |
| IPAddressDetailed: | |
| type: object | |
| properties: | |
| ip: | |
| allOf: | |
| - $ref: '#/components/schemas/IPAddress/properties/ip' | |
| - type: object | |
| properties: | |
| gateway: | |
| type: string | |
| format: ipv4 | |
| description: Gateway | |
| mask: | |
| type: integer | |
| description: Subnet mask in CIDR notation | |
| broadcast: | |
| type: string | |
| format: ipv4 | |
| description: Broadcast address | |
| IPCancellation: | |
| type: object | |
| properties: | |
| cancellation: | |
| type: object | |
| properties: | |
| ip: | |
| type: string | |
| format: ipv4 | |
| description: IP address | |
| server_number: | |
| type: integer | |
| description: Server ID | |
| earliest_cancellation_date: | |
| type: string | |
| format: date | |
| description: Earliest possible cancellation date | |
| cancelled: | |
| type: boolean | |
| description: This shows whether or not the IP has been earmarked for cancellation | |
| cancellation_date: | |
| type: string | |
| format: date | |
| nullable: true | |
| description: Cancellation date if cancellation is active | |
| MACAddress: | |
| type: object | |
| properties: | |
| mac: | |
| type: object | |
| properties: | |
| ip: | |
| type: string | |
| description: IP address | |
| mac: | |
| type: string | |
| nullable: true | |
| description: MAC address | |
| mask: | |
| type: string | |
| description: Subnet mask in CIDR notation (for subnets) | |
| possible_mac: | |
| type: object | |
| description: Possible MAC addresses (for subnets) | |
| Subnet: | |
| type: object | |
| properties: | |
| subnet: | |
| type: object | |
| properties: | |
| ip: | |
| type: string | |
| description: IP address | |
| mask: | |
| type: integer | |
| description: Subnet mask in CIDR notation | |
| gateway: | |
| type: string | |
| description: Subnet gateway | |
| server_ip: | |
| type: string | |
| format: ipv4 | |
| description: Servers main IP address | |
| server_number: | |
| type: integer | |
| description: Server ID | |
| failover: | |
| type: boolean | |
| description: True if subnet is a failover subnet | |
| locked: | |
| type: boolean | |
| description: Status of locking | |
| traffic_warnings: | |
| type: boolean | |
| description: True if traffic warnings are enabled | |
| traffic_hourly: | |
| type: integer | |
| description: Hourly traffic limit in MB | |
| traffic_daily: | |
| type: integer | |
| description: Daily traffic limit in MB | |
| traffic_monthly: | |
| type: integer | |
| description: Monthly traffic limit in GB | |
| ResetOptions: | |
| type: object | |
| properties: | |
| reset: | |
| type: object | |
| properties: | |
| server_ip: | |
| type: string | |
| format: ipv4 | |
| description: Server main IP address | |
| server_ipv6_net: | |
| type: string | |
| format: ipv6 | |
| description: Server main IPv6 net address | |
| server_number: | |
| type: integer | |
| description: Server ID | |
| type: | |
| type: array | |
| items: | |
| type: string | |
| enum: [sw, hw, man, power, power_long] | |
| description: Available reset options | |
| ResetOptionsDetailed: | |
| type: object | |
| properties: | |
| reset: | |
| allOf: | |
| - $ref: '#/components/schemas/ResetOptions/properties/reset' | |
| - type: object | |
| properties: | |
| operating_status: | |
| type: string | |
| enum: ["not supported", running, stopped] | |
| description: Current operating status of the server | |
| ResetResult: | |
| type: object | |
| properties: | |
| reset: | |
| type: object | |
| properties: | |
| server_ip: | |
| type: string | |
| format: ipv4 | |
| description: Server main IP address | |
| server_ipv6_net: | |
| type: string | |
| format: ipv6 | |
| description: Server main IPv6 net address | |
| server_number: | |
| type: integer | |
| description: Server ID | |
| type: | |
| type: string | |
| description: Executed reset option | |
| FailoverIP: | |
| type: object | |
| properties: | |
| failover: | |
| type: object | |
| properties: | |
| ip: | |
| type: string | |
| description: Failover net address | |
| netmask: | |
| type: string | |
| description: Failover netmask | |
| server_ip: | |
| type: string | |
| format: ipv4 | |
| description: Main IP of related server | |
| server_ipv6_net: | |
| type: string | |
| format: ipv6 | |
| description: Main IPv6 net of related server | |
| server_number: | |
| type: integer | |
| description: Server ID | |
| active_server_ip: | |
| type: string | |
| nullable: true | |
| description: Main IP of current destination server | |
| WakeOnLAN: | |
| type: object | |
| properties: | |
| wol: | |
| type: object | |
| properties: | |
| server_ip: | |
| type: string | |
| format: ipv4 | |
| description: Server main IP address | |
| server_ipv6_net: | |
| type: string | |
| format: ipv6 | |
| description: Server main IPv6 net address | |
| server_number: | |
| type: integer | |
| description: Server ID | |
| BootConfiguration: | |
| type: object | |
| properties: | |
| boot: | |
| type: object | |
| properties: | |
| rescue: | |
| $ref: '#/components/schemas/RescueSystem/properties/rescue' | |
| linux: | |
| type: object | |
| description: Linux installation configuration | |
| vnc: | |
| type: object | |
| description: VNC installation configuration | |
| windows: | |
| type: object | |
| description: Windows installation configuration | |
| plesk: | |
| type: object | |
| description: Plesk installation configuration | |
| cpanel: | |
| type: object | |
| description: cPanel installation configuration | |
| RescueSystem: | |
| type: object | |
| properties: | |
| rescue: | |
| type: object | |
| properties: | |
| server_ip: | |
| type: string | |
| format: ipv4 | |
| description: Server main IP address | |
| server_ipv6_net: | |
| type: string | |
| format: ipv6 | |
| description: Server main IPv6 net address | |
| server_number: | |
| type: integer | |
| description: Server ID | |
| os: | |
| oneOf: | |
| - type: array | |
| items: | |
| type: string | |
| enum: [linux, vkvm] | |
| - type: string | |
| enum: [linux, vkvm] | |
| description: Array of available operating systems or the active operating system | |
| arch: | |
| oneOf: | |
| - type: array | |
| items: | |
| type: integer | |
| enum: [32, 64] | |
| - type: integer | |
| enum: [32, 64] | |
| description: Array of available architectures or the active architecture | |
| deprecated: true | |
| active: | |
| type: boolean | |
| description: Current Rescue System status | |
| password: | |
| type: string | |
| nullable: true | |
| description: Current Rescue System root password or null | |
| authorized_key: | |
| type: array | |
| items: | |
| type: string | |
| description: Authorized public SSH keys | |
| host_key: | |
| type: array | |
| items: | |
| type: string | |
| description: Host keys | |
| ServerBasic: | |
| type: object | |
| properties: | |
| server: | |
| type: object | |
| properties: | |
| server_ip: | |
| type: string | |
| format: ipv4 | |
| description: Server main IP address | |
| example: "123.123.123.123" | |
| server_ipv6_net: | |
| type: string | |
| format: ipv6 | |
| description: Server main IPv6 net address | |
| example: "2a01:f48:111:4221::" | |
| server_number: | |
| type: integer | |
| description: Server ID | |
| example: 321 | |
| server_name: | |
| type: string | |
| description: Server name | |
| example: "server1" | |
| product: | |
| type: string | |
| description: Server product name | |
| example: "DS 3000" | |
| dc: | |
| type: string | |
| description: Data center | |
| example: "NBG1-DC1" | |
| traffic: | |
| type: string | |
| description: Free traffic quota, 'unlimited' in case of unlimited traffic | |
| example: "5 TB" | |
| status: | |
| type: string | |
| enum: [ ready, "in process" ] | |
| description: Server status | |
| example: "ready" | |
| cancelled: | |
| type: boolean | |
| description: Status of server cancellation | |
| example: false | |
| paid_until: | |
| type: string | |
| format: date | |
| description: Paid until date | |
| example: "2010-09-02" | |
| ip: | |
| type: array | |
| items: | |
| type: string | |
| format: ipv4 | |
| description: Array of assigned single IP addresses | |
| example: [ "123.123.123.123" ] | |
| subnet: | |
| type: array | |
| items: | |
| type: object | |
| properties: | |
| ip: | |
| type: string | |
| description: IP address | |
| example: "2a01:4f8:111:4221::" | |
| mask: | |
| type: string | |
| description: Subnet mask | |
| example: "64" | |
| nullable: true | |
| description: Array of assigned subnets | |
| example: | |
| - ip: "2a01:4f8:111:4221::" | |
| mask: "64" | |
| required: | |
| - server_ip | |
| - server_number | |
| - server_name | |
| - product | |
| - dc | |
| - traffic | |
| - status | |
| - cancelled | |
| - paid_until | |
| - ip | |
| ErrorInvalidInput: | |
| type: object | |
| properties: | |
| error: | |
| type: object | |
| properties: | |
| status: | |
| type: integer | |
| description: HTTP Status Code | |
| example: 400 | |
| code: | |
| type: string | |
| description: Specific error code | |
| example: "INVALID_INPUT" | |
| message: | |
| type: string | |
| description: Specific error message | |
| example: "invalid input" | |
| missing: | |
| type: array | |
| items: | |
| type: string | |
| nullable: true | |
| description: Array of missing input parameters or null | |
| example: [ "server_name" ] | |
| invalid: | |
| type: array | |
| items: | |
| type: string | |
| nullable: true | |
| description: Array of invalid input parameters or null | |
| example: null | |
| required: | |
| - status | |
| - code | |
| - message | |
| - missing | |
| - invalid | |
| ErrorRateLimit: | |
| type: object | |
| properties: | |
| error: | |
| type: object | |
| properties: | |
| status: | |
| type: integer | |
| description: HTTP Status Code | |
| example: 403 | |
| code: | |
| type: string | |
| description: Specific error code | |
| example: "RATE_LIMIT_EXCEEDED" | |
| message: | |
| type: string | |
| description: Specific error message | |
| example: "rate limit exceeded" | |
| max_request: | |
| type: integer | |
| description: Maximum allowed requests | |
| example: 200 | |
| interval: | |
| type: integer | |
| description: Time interval in seconds | |
| example: 3600 | |
| required: | |
| - status | |
| - code | |
| - message | |
| - max_request | |
| - interval | |
| RescueSystemActivated: | |
| type: object | |
| properties: | |
| rescue: | |
| type: object | |
| properties: | |
| server_ip: | |
| type: string | |
| format: ipv4 | |
| description: Server main IP address | |
| example: "123.123.123.123" | |
| server_ipv6_net: | |
| type: string | |
| format: ipv6 | |
| description: Server main IPv6 net address | |
| example: "2a01:4f8:111:4221::" | |
| server_number: | |
| type: integer | |
| description: Server ID | |
| example: 321 | |
| os: | |
| type: string | |
| enum: [ linux, vkvm ] | |
| description: Operating system | |
| example: "linux" | |
| arch: | |
| type: integer | |
| enum: [ 32, 64 ] | |
| description: Architecture | |
| example: 64 | |
| deprecated: true | |
| active: | |
| type: boolean | |
| description: Rescue system status (always true when activated) | |
| example: true | |
| password: | |
| type: string | |
| description: Rescue System root password | |
| example: "jEt0dtUvomlyOwRr" | |
| authorized_key: | |
| type: array | |
| items: | |
| type: string | |
| description: Authorized public SSH keys | |
| example: [ ] | |
| host_key: | |
| type: array | |
| items: | |
| type: string | |
| description: Host keys | |
| example: [ ] | |
| required: | |
| - server_ip | |
| - server_ipv6_net | |
| - server_number | |
| - os | |
| - active | |
| - password | |
| - authorized_key | |
| - host_key | |
| ReverseDNS: | |
| type: object | |
| properties: | |
| rdns: | |
| type: object | |
| properties: | |
| ip: | |
| type: string | |
| description: IP address | |
| ptr: | |
| type: string | |
| description: PTR record | |
| SSHKey: | |
| type: object | |
| properties: | |
| key: | |
| type: object | |
| properties: | |
| name: | |
| type: string | |
| description: Key name | |
| fingerprint: | |
| type: string | |
| description: Key fingerprint | |
| type: | |
| type: string | |
| enum: [RSA, ECDSA, ED25519] | |
| description: Key algorithm type | |
| size: | |
| type: integer | |
| description: Key size in bits | |
| data: | |
| type: string | |
| description: Key data in OpenSSH format | |
| created_at: | |
| type: string | |
| format: date-time | |
| description: Key creation date | |
| StorageBoxBasic: | |
| type: object | |
| properties: | |
| storagebox: | |
| type: object | |
| properties: | |
| id: | |
| type: integer | |
| description: Storage Box ID | |
| login: | |
| type: string | |
| description: User name | |
| name: | |
| type: string | |
| description: Name of the Storage Box | |
| product: | |
| type: string | |
| description: Product name | |
| cancelled: | |
| type: boolean | |
| description: Status of Storage Box cancellation | |
| locked: | |
| type: boolean | |
| description: Status of locking | |
| location: | |
| type: string | |
| description: Location of Storage Box host | |
| linked_server: | |
| type: integer | |
| nullable: true | |
| description: Linked server id | |
| paid_until: | |
| type: string | |
| format: date | |
| description: Paid until date | |
| StorageBoxDetailed: | |
| type: object | |
| properties: | |
| storagebox: | |
| allOf: | |
| - $ref: '#/components/schemas/StorageBoxBasic/properties/storagebox' | |
| - type: object | |
| properties: | |
| disk_quota: | |
| type: integer | |
| description: Total space in MB | |
| disk_usage: | |
| type: integer | |
| description: Used space in MB | |
| disk_usage_data: | |
| type: integer | |
| description: Used space by data in MB | |
| disk_usage_snapshots: | |
| type: integer | |
| description: Used space by snapshots in MB | |
| webdav: | |
| type: boolean | |
| description: Status of WebDAV | |
| samba: | |
| type: boolean | |
| description: Status of Samba | |
| ssh: | |
| type: boolean | |
| description: Status of SSH-Support | |
| external_reachability: | |
| type: boolean | |
| description: Status of external reachability | |
| zfs: | |
| type: boolean | |
| description: Status of ZFS directory | |
| server: | |
| type: string | |
| description: Server | |
| host_system: | |
| type: string | |
| description: Identifier of Storage Box host | |
| FirewallRule: | |
| type: object | |
| properties: | |
| ip_version: | |
| type: string | |
| enum: [ipv4, ipv6] | |
| description: Internet protocol version | |
| name: | |
| type: string | |
| description: Rule name | |
| dst_ip: | |
| type: string | |
| nullable: true | |
| description: Destination IP address or subnet address (CIDR notation) | |
| src_ip: | |
| type: string | |
| nullable: true | |
| description: Source IP address or subnet address (CIDR notation) | |
| dst_port: | |
| type: string | |
| nullable: true | |
| description: Destination port or port range | |
| src_port: | |
| type: string | |
| nullable: true | |
| description: Source port or port range | |
| protocol: | |
| type: string | |
| enum: [tcp, udp, gre, icmp, ipip, ah, esp] | |
| nullable: true | |
| description: Protocol above IP layer | |
| tcp_flags: | |
| type: string | |
| nullable: true | |
| description: TCP flag or logical combination of flags | |
| action: | |
| type: string | |
| enum: [accept, discard] | |
| description: Action if rule matches | |
| required: | |
| - action | |
| FirewallConfiguration: | |
| type: object | |
| properties: | |
| firewall: | |
| type: object | |
| properties: | |
| server_ip: | |
| type: string | |
| format: ipv4 | |
| description: Server main IP address | |
| server_number: | |
| type: integer | |
| description: Server ID | |
| status: | |
| type: string | |
| enum: [active, disabled, "in process"] | |
| description: Status of firewall | |
| filter_ipv6: | |
| type: boolean | |
| description: Flag indicating if IPv6 filter is active | |
| whitelist_hos: | |
| type: boolean | |
| description: Flag of Hetzner services whitelisting | |
| port: | |
| type: string | |
| enum: [main, kvm] | |
| description: Switch port of firewall | |
| rules: | |
| type: object | |
| properties: | |
| input: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/FirewallRule' | |
| description: Input rules | |
| output: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/FirewallRule' | |
| description: Output rules | |
| FirewallTemplate: | |
| type: object | |
| properties: | |
| firewall_template: | |
| type: object | |
| properties: | |
| id: | |
| type: integer | |
| description: ID of firewall template | |
| name: | |
| type: string | |
| description: Name of firewall template | |
| filter_ipv6: | |
| type: boolean | |
| description: Flag indicating if IPv6 filter is active | |
| whitelist_hos: | |
| type: boolean | |
| description: Flag of Hetzner services whitelisting | |
| is_default: | |
| type: boolean | |
| description: If true the template is selected by default in the Robot webpanel | |
| FirewallTemplateDetailed: | |
| type: object | |
| properties: | |
| firewall_template: | |
| allOf: | |
| - $ref: '#/components/schemas/FirewallTemplate/properties/firewall_template' | |
| - type: object | |
| properties: | |
| rules: | |
| type: object | |
| properties: | |
| input: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/FirewallRule' | |
| output: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/FirewallRule' | |
| VSwitchBasic: | |
| type: object | |
| properties: | |
| id: | |
| type: integer | |
| description: vSwitch ID | |
| example: 1234 | |
| name: | |
| type: string | |
| description: vSwitch name | |
| example: "vswitch 1234" | |
| vlan: | |
| type: integer | |
| minimum: 4000 | |
| maximum: 4091 | |
| description: VLAN ID | |
| example: 4000 | |
| cancelled: | |
| type: boolean | |
| description: Cancellation status | |
| example: false | |
| required: | |
| - id | |
| - name | |
| - vlan | |
| - cancelled | |
| VSwitchServer: | |
| type: object | |
| properties: | |
| server_ip: | |
| type: string | |
| format: ipv4 | |
| description: Server main IP address | |
| example: "123.123.123.123" | |
| server_ipv6_net: | |
| type: string | |
| format: ipv6 | |
| description: Server main IPv6 net address | |
| example: "2a01:4f8:111:4221::" | |
| server_number: | |
| type: integer | |
| description: Server ID | |
| example: 321 | |
| status: | |
| type: string | |
| enum: [ready, "in process", failed] | |
| description: Status of vSwitch for this server | |
| example: "ready" | |
| required: | |
| - server_ip | |
| - server_ipv6_net | |
| - server_number | |
| - status | |
| VSwitchSubnet: | |
| type: object | |
| properties: | |
| ip: | |
| type: string | |
| description: IP address | |
| example: "213.239.252.48" | |
| mask: | |
| type: integer | |
| description: Subnet mask in CIDR notation | |
| example: 29 | |
| gateway: | |
| type: string | |
| description: Gateway | |
| example: "213.239.252.49" | |
| required: | |
| - ip | |
| - mask | |
| - gateway | |
| VSwitchCloudNetwork: | |
| type: object | |
| properties: | |
| id: | |
| type: integer | |
| description: Cloud network ID | |
| example: 123 | |
| ip: | |
| type: string | |
| description: IP address | |
| example: "10.0.2.0" | |
| mask: | |
| type: integer | |
| description: Subnet mask in CIDR notation | |
| example: 24 | |
| gateway: | |
| type: string | |
| description: Gateway | |
| example: "10.0.2.1" | |
| required: | |
| - id | |
| - ip | |
| - mask | |
| - gateway | |
| VSwitchDetailed: | |
| allOf: | |
| - $ref: '#/components/schemas/VSwitchBasic' | |
| - type: object | |
| properties: | |
| server: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/VSwitchServer' | |
| description: Array of servers attached to this vSwitch | |
| example: | |
| - server_ip: "123.123.123.123" | |
| server_ipv6_net: "2a01:4f8:111:4221::" | |
| server_number: 321 | |
| status: "ready" | |
| - server_ip: "123.123.123.124" | |
| server_ipv6_net: "2a01:4f8:111:4221::" | |
| server_number: 421 | |
| status: "ready" | |
| subnet: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/VSwitchSubnet' | |
| description: Array of subnets attached to this vSwitch | |
| example: | |
| - ip: "213.239.252.48" | |
| mask: 29 | |
| gateway: "213.239.252.49" | |
| cloud_network: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/VSwitchCloudNetwork' | |
| description: Array of cloud networks attached to this vSwitch | |
| example: | |
| - id: 123 | |
| ip: "10.0.2.0" | |
| mask: 24 | |
| gateway: "10.0.2.1" | |
| required: | |
| - server | |
| - subnet | |
| - cloud_network | |
| examples: | |
| ServerExample: | |
| summary: Example server response | |
| value: | |
| server: | |
| server_ip: "123.123.123.123" | |
| server_ipv6_net: "2a01:4f8:111:4221::" | |
| server_number: 321 | |
| server_name: "server1" | |
| product: "DS 3000" | |
| dc: "NBG1-DC1" | |
| traffic: "5 TB" | |
| status: "ready" | |
| cancelled: false | |
| paid_until: "2010-09-02" | |
| ip: ["123.123.123.123"] | |
| subnet: | |
| - ip: "2a01:4f8:111:4221::" | |
| mask: "64" | |
| VSwitchExample: | |
| summary: Example vSwitch response | |
| value: | |
| id: 4321 | |
| name: "my vSwitch" | |
| vlan: 4000 | |
| cancelled: false | |
| server: | |
| - server_ip: "123.123.123.123" | |
| server_ipv6_net: "2a01:4f8:111:4221::" | |
| server_number: 321 | |
| status: "ready" | |
| subnet: | |
| - ip: "213.239.252.48" | |
| mask: 29 | |
| gateway: "213.239.252.49" | |
| cloud_network: | |
| - id: 123 | |
| ip: "10.0.2.0" | |
| mask: 24 | |
| gateway: "10.0.2.1" | |
| FirewallConfigurationExample: | |
| summary: Example firewall configuration | |
| value: | |
| firewall: | |
| server_ip: "123.123.123.123" | |
| server_number: 321 | |
| status: "active" | |
| filter_ipv6: false | |
| 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" | |
| output: | |
| - ip_version: null | |
| name: "Allow all" | |
| dst_ip: null | |
| src_ip: null | |
| dst_port: null | |
| src_port: null | |
| protocol: null | |
| tcp_flags: null | |
| action: "accept" | |
| SSHKeyExample: | |
| summary: Example SSH key response | |
| value: | |
| 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 ..." | |
| created_at: "2021-12-31T23:59:59" | |
| StorageBoxExample: | |
| summary: Example Storage Box response | |
| value: | |
| storagebox: | |
| id: 123456 | |
| login: "u12345" | |
| name: "Backup Server 1" | |
| product: "BX60" | |
| cancelled: false | |
| locked: false | |
| location: "FSN1" | |
| linked_server: 123456 | |
| 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 | |
| external_reachability: true | |
| zfs: false | |
| server: "u12345.your-storagebox.de" | |
| host_system: "FSN1-BX355" | |
| FailoverIPExample: | |
| summary: Example failover IP response | |
| value: | |
| failover: | |
| ip: "123.123.123.123" | |
| netmask: "255.255.255.255" | |
| server_ip: "78.46.1.93" | |
| server_ipv6_net: "2a01:4f8:d0a:2003::" | |
| server_number: 321 | |
| active_server_ip: "78.46.1.93" | |
| ReverseDNSExample: | |
| summary: Example reverse DNS response | |
| value: | |
| rdns: | |
| ip: "123.123.123.123" | |
| ptr: "testen.de" | |
| ErrorExample: | |
| summary: Example error response | |
| value: | |
| error: | |
| status: 404 | |
| code: "SERVER_NOT_FOUND" | |
| message: "Server with id 321 not found" | |
| RateLimitErrorExample: | |
| summary: Example rate limit error | |
| value: | |
| error: | |
| status: 403 | |
| code: "RATE_LIMIT_EXCEEDED" | |
| message: "rate limit exceeded" | |
| max_request: 200 | |
| interval: 3600 | |
| InvalidInputExample: | |
| summary: Example invalid input error | |
| value: | |
| error: | |
| status: 400 | |
| code: "INVALID_INPUT" | |
| message: "invalid input" | |
| missing: ["server_name"] | |
| invalid: null |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment