{"openapi":"3.0.0","servers":[{"url":"https://api.hetzner.cloud/v1"}],"info":{"description":"This is the official API documentation for the Public Hetzner Cloud.\n\n## Introduction\n\nThe Hetzner Cloud API operates over HTTPS and uses JSON as its data format. The API is a RESTful API and utilizes HTTP methods and HTTP status codes to specify requests and responses.\n\nAs an alternative to working directly with our API you may also consider to use:\n* Our CLI program [hcloud](https://github.com/hetznercloud/cli)\n* Our [library for Go](https://github.com/hetznercloud/hcloud-go)\n* Our [library for Python](https://github.com/hetznercloud/hcloud-python)\n\nAlso you can find a [list of libraries, tools, and integrations on GitHub](https://github.com/hetznercloud/awesome-hcloud).\n\nIf you are developing integrations based on our API and your product is Open Source you may be eligible for a free one time €50 (excl. VAT) credit on your account. Please contact us via the the support page on your Cloud Console and let us know the following:\n* The type of integration you would like to develop\n* Link to the GitHub repo you will use for the Project\n* Link to some other Open Source work you have already done (if you have done so)\n\n## Getting Started\nTo get started using the API you first need an API token. Sign in into the [Hetzner Cloud Console](https://console.hetzner.cloud/) choose a Project, go to `Security` → `API Tokens`, and generate a new token. Make sure to copy the token because it won’t be shown to you again. A token is bound to a Project, to interact with the API of another Project you have to create a new token inside the Project. Let’s say your new token is `jEheVytlAoFl7F8MqUQ7jAo2hOXASztX`.\n\nYou’re now ready to do your first request against the API. To get a list of all Servers in your Project, issue the example request on the right side using [curl](https://curl.haxx.se/).\n\nMake sure to replace the token in the example command with the token you have just created. Since your Project probably does not contain any Servers yet, the example response will look like the response on the right side. We will almost always provide a resource root like `servers` inside the example response. A response can also contain a `meta` object with information like [Pagination](https://docs.hetzner.cloud/#overview-pagination).\n\n**Example Request**\n```bash\ncurl -H \"Authorization: Bearer jEheVytlAoFl7F8MqUQ7jAo2hOXASztX\" \\\n    https://api.hetzner.cloud/v1/servers\n```\n\n**Example Response**\n```json\n{\n    \"servers\": [],\n    \"meta\": {\n        \"pagination\": {\n            \"page\": 1,\n            \"per_page\": 25,\n            \"previous_page\": null,\n            \"next_page\": null,\n            \"last_page\": 1,\n            \"total_entries\": 0\n        }\n    }\n}\n```\n\n## Authentication\nAll requests to the Hetzner Cloud API must be authenticated via a API token. Include your secret API token in every request you send to the API with the `Authorization` HTTP header.\n\nTo create a new API token for your Project, switch into the [Hetzner Cloud Console](https://console.hetzner.cloud/) choose a Project, go to `Security` → `API Tokens`, and generate a new token.\n\n**Example Authorization header**\n```html\nAuthorization: Bearer LRK9DAWQ1ZAEFSrCNEEzLCUwhYX1U3g7wMg4dTlkkDC96fyDuyJ39nVbVjCKSDfj\n```\n\n## Errors\nErrors are indicated by HTTP status codes. Further, the response of the request which generated the error contains an error code, an error message, and, optionally, error details. The schema of the error details object depends on the error code.\n\nThe error response contains the following keys:\n\n| Keys      | Meaning                                                               |\n|-----------|-----------------------------------------------------------------------|\n| `code`    | Short string indicating the type of error (machine-parsable)          |\n| `message` | Textual description on what has gone wrong                            |\n| `details` | An object providing for details on the error (schema depends on code) |\n\n**Example response**\n```json\n{\n  \"error\": {\n    \"code\": \"invalid_input\",\n    \"message\": \"invalid input in field 'broken_field': is too long\",\n    \"details\": {\n      \"fields\": [\n        {\n          \"name\": \"broken_field\",\n          \"messages\": [\"is too long\"]\n        }\n      ]\n    }\n  }\n}\n```\n\n### Error Codes\n\n| Code                      | Description                                                                      |\n|---------------------------|----------------------------------------------------------------------------------|\n| `forbidden`               | Insufficient permissions for this request                                        |\n| `invalid_input`           | Error while parsing or processing the input                                      |\n| `json_error`              | Invalid JSON input in your request                                               |\n| `locked`                  | The item you are trying to access is locked (there is already an Action running) |\n| `not_found`               | Entity not found                                                                 |\n| `rate_limit_exceeded`     | Error when sending too many requests                                             |\n| `resource_limit_exceeded` | Error when exceeding the maximum quantity of a resource for an account           |\n| `resource_unavailable`    | The requested resource is currently unavailable                                  |\n| `service_error`           | Error within a service                                                           |\n| `uniqueness_error`        | One or more of the objects fields must be unique                                 |\n| `protected`               | The Action you are trying to start is protected for this resource                |\n| `maintenance`             | Cannot perform operation due to maintenance                                      |\n| `conflict`                | The resource has changed during the request, please retry                        |\n| `unsupported_error`       | The corresponding resource does not support the Action                           |\n| `token_readonly`          | The token is only allowed to perform GET requests                                |\n| `unavailable`             | A service or product is currently not available                                  |\n\n**invalid_input**\n```json\n{\n  \"error\": {\n    \"code\": \"invalid_input\",\n    \"message\": \"invalid input in field 'broken_field': is too long\",\n    \"details\": {\n      \"fields\": [\n        {\n          \"name\": \"broken_field\",\n          \"messages\": [\"is too long\"]\n        }\n      ]\n    }\n  }\n}\n```\n\n**uniqueness_error**\n```json\n{\n  \"error\": {\n    \"code\": \"uniqueness_error\",\n    \"message\": \"SSH key with the same fingerprint already exists\",\n    \"details\": {\n      \"fields\": [\n        {\n          \"name\": \"public_key\"\n        }\n      ]\n    }\n  }\n}\n```\n\n**resource_limit_exceeded**\n```json\n{\n  \"error\": {\n    \"code\": \"resource_limit_exceeded\",\n    \"message\": \"project limit exceeded\",\n    \"details\": {\n      \"limits\": [\n        {\n          \"name\": \"project_limit\"\n        }\n      ]\n    }\n  }\n}\n```\n\n## Labels\nLabels are `key/value` pairs that can be attached to all resources.\n\nValid label keys have two segments: an optional prefix and name, separated by a slash (`/`). The name segment is required and must be a string of 63 characters or less, beginning and ending with an alphanumeric character (`[a-z0-9A-Z]`) with dashes (`-`), underscores (`_`), dots (`.`), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (`.`), not longer than 253 characters in total, followed by a slash (`/`).\n\nValid label values must be a string of 63 characters or less and must be empty or begin and end with an alphanumeric character (`[a-z0-9A-Z]`) with dashes (`-`), underscores (`_`), dots (`.`), and alphanumerics between.\n\nThe `hetzner.cloud/` prefix is reserved and cannot be used.\n\n**Example Labels**\n```json\n{\n  \"labels\": {\n    \"environment\":\"development\",\n    \"service\":\"backend\",\n    \"example.com/my\":\"label\",\n    \"just-a-key\":\"\"\n  }\n}\n```\n\n## Label Selector\nFor resources with labels, you can filter resources by their labels using the label selector query language.\n\n| Expression           | Meaning                                                             |\n|----------------------|---------------------------------------------------------------------|\n| `k==v` / `k=v`       | Value of key `k` does equal value `v`                               |\n| `k!=v`               | Value of key `k` does not equal value `v`                           |\n| `k`                  | Key `k` is present                                                  |\n| `!k`                 | Key `k` is not present                                              |\n| `k in (v1,v2,v3)`    | Value of key `k` is `v1`, `v2`, or `v3`                             |\n| `k notin (v1,v2,v3)` | Value of key `k` is neither `v1`, nor `v2`, nor `v3`                |\n| `k1==v,!k2`          | Value of key `k1` is `v` and key `k2` is not present                |\n\n### Examples\n* Returns all resources that have a `env=production` label and that don't have a `type=database` label:\n\n  `env=production,type!=database`\n* Returns all resources that have a `env=testing` or `env=staging` label:\n\n    `env in (testing,staging)`\n* Returns all resources that don't have a `type` label:\n\n    `!type`\n\n## Pagination\nResponses which return multiple items support pagination. If they do support pagination, it can be controlled with following query string parameters:\n\n* A `page` parameter specifies the page to fetch. The number of the first page is 1.\n* A `per_page` parameter specifies the number of items returned per page. The default value is 25, the maximum value is 50 except otherwise specified in the documentation.\n\nResponses contain a `Link` header with pagination information.\n\nAdditionally, if the response body is JSON and the root object is an object, that object has a `pagination` object inside the `meta` object with pagination information:\n\n**Example Pagination**\n```json\n{\n    \"servers\": [...],\n    \"meta\": {\n        \"pagination\": {\n            \"page\": 2,\n            \"per_page\": 25,\n            \"previous_page\": 1,\n            \"next_page\": 3,\n            \"last_page\": 4,\n            \"total_entries\": 100\n        }\n    }\n}\n```\n\nThe keys `previous_page`, `next_page`, `last_page`, and `total_entries` may be `null` when on the first page, last page, or when the total number of entries is unknown.\n\n**Example Pagination Link header**\n```bash\nLink: <https://api.hetzner.cloud/v1/actions?page=2&per_page=5>; rel=\"prev\",\n      <https://api.hetzner.cloud/v1/actions?page=4&per_page=5>; rel=\"next\",\n      <https://api.hetzner.cloud/v1/actions?page=6&per_page=5>; rel=\"last\"\n```\n\nLine breaks have been added for display purposes only and responses may only contain some of the above `rel` values.\n\n## Rate Limiting\nAll requests, whether they are authenticated or not, are subject to rate limiting. If you have reached your limit, your requests will be handled with a `429 Too Many Requests` error. Burst requests are allowed. Responses contain serveral headers which provide information about your current rate limit status.\n\n* The `RateLimit-Limit` header contains the total number of requests you can perform per hour.\n* The `RateLimit-Remaining` header contains the number of requests remaining in the current rate limit time frame.\n* The `RateLimit-Reset` header contains a UNIX timestamp of the point in time when your rate limit will have recovered and you will have the full number of requests available again.\n\nThe default limit is 3600 requests per hour and per Project. The number of remaining requests increases gradually. For example, when your limit is 3600 requests per hour, the number of remaining requests will increase by 1 every second.\n\n## Server Metadata\nYour Server can discover metadata about itself by doing a HTTP request to specific URLs. The following data is available:\n\n| Data              | Format | Contents                                                     |\n|-------------------|--------|--------------------------------------------------------------|\n| hostname          | text   | Name of the Server as set in the api                         |\n| instance-id       | number | ID of the server                                             |\n| public-ipv4       | text   | Primary public IPv4 address                                  |\n| private-networks  | yaml   | Details about the private networks the Server is attached to |\n| availability-zone | text   | Name of the availability zone that Server runs in            |\n| region            | text   | Network zone, e.g. eu-central                                |\n\n**Example: Summary**\n```bash\n$ curl http://169.254.169.254/hetzner/v1/metadata\n```\n\n```yaml\navailability-zone: hel1-dc2\nhostname: my-server\ninstance-id: 42\npublic-ipv4: 1.2.3.4\nregion: eu-central\n```\n\n**Example: Hostname**\n```bash\n$ curl http://169.254.169.254/hetzner/v1/metadata/hostname\nmy-server\n```\n\n**Example: Instance ID**\n```bash\n$ curl http://169.254.169.254/hetzner/v1/metadata/instance-id\n42\n```\n\n**Example: Public IPv4**\n```bash\n$ curl http://169.254.169.254/hetzner/v1/metadata/public-ipv4\n1.2.3.4\n```\n\n**Example: Private Networks**\n```bash\n$ curl http://169.254.169.254/hetzner/v1/metadata/private-networks\n```\n\n```json\n- ip: 10.0.0.2\n  alias_ips: [10.0.0.3, 10.0.0.4]\n  interface_num: 1\n  mac_address: 86:00:00:2a:7d:e0\n  network_id: 1234\n  network_name: nw-test1\n  network: 10.0.0.0/8\n  subnet: 10.0.0.0/24\n  gateway: 10.0.0.1\n- ip: 192.168.0.2\n  alias_ips: []\n  interface_num: 2\n  mac_address: 86:00:00:2a:7d:e1\n  network_id: 4321\n  network_name: nw-test2\n  network: 192.168.0.0/16\n  subnet: 192.168.0.0/24\n  gateway: 192.168.0.1\n```\n\n**Example: Availability Zone**\n```bash\n$ curl http://169.254.169.254/hetzner/v1/metadata/availability-zone\nhel1-dc2\n```\n\n**Example: Region**\n```bash\n$ curl http://169.254.169.254/hetzner/v1/metadata/region\neu-central\n```\n\n## Sorting\nSome responses which return multiple items support sorting. If they do support sorting the documentation states which fields can be used for sorting. You specify sorting with the `sort` query string parameter. You can sort by multiple fields. You can set the sort direction by appending `:asc` or `:desc` to the field name. By default, ascending sorting is used.\n\n**Example: Sorting**\n```bash\nhttps://api.hetzner.cloud/v1/actions?sort=status\nhttps://api.hetzner.cloud/v1/actions?sort=status:asc\nhttps://api.hetzner.cloud/v1/actions?sort=status:desc\nhttps://api.hetzner.cloud/v1/actions?sort=status:asc&sort=command:desc\n```\n","title":"Hetzner Cloud API","version":"1.0.0","x-apisguru-categories":["hosting"],"x-logo":{"url":"https://www.hetzner.com/themes/hetzner/images/favicons/apple-touch-icon.png"},"x-origin":[{"format":"openapi","url":"https://docs.hetzner.cloud/spec.json","version":"3.0"}],"x-providerName":"hetzner.cloud"},"tags":[{"description":"Actions show the results and progress of asynchronous requests to the API.","name":"Actions"},{"description":"TLS/SSL Certificates prove the identity of a Server and are used to encrypt client traffic.","name":"Certificates"},{"name":"Certificate Actions"},{"description":"Each Datacenter represents a *virtual* Datacenter which is made up of possible many physical Datacenters where Servers are hosted.\n\nDatacenter names are composed from their Location and virtual Datacenter number, for example `fsn1-dc14` means virtual Datacenter `14` in Location `fsn1`.\n\nRight now there is only one Datacenter for each Location. The Datacenter numbers for `fsn`, `nbg` and `hel` are arbitrarily set to `14`, `3` and `2` for historic reasons and do not represent real physical Hetzner datacenters.\n","name":"Datacenters"},{"description":"Firewalls can limit the network access to or from your resources.\n\n* When applying a firewall with no `in` rule all inbound traffic will be dropped. The default for `in` is `DROP`.\n* When applying a firewall with no `out` rule all outbound traffic will be accepted. The default for `out` is `ACCEPT`.\n","name":"Firewalls"},{"name":"Firewall Actions"},{"description":"Floating IPs help you to create highly available setups. You can assign a Floating IP to any Server. The Server can then use this IP. You can reassign it to a different Server at any time, or you can choose to unassign the IP from Servers all together.\n\nFloating IPs can be used globally. This means you can assign a Floating IP to a Server in one Location and later reassign it to a Server in a different Location. For optimal routing and latency Floating IPs should be used in the Location they were created in.\n\nFor Floating IPs to work with your Server, you must configure them inside your operation system.\n\nFloating IPs of type `ipv4` use a single IPv4 address as their `ip` property. Floating IPs of type `ipv6` use a /64 network such as `fc00::/64` as their `ip` property. Any IP address within that network can be used on your host.\n\nFloating IPs are billed on a monthly basis.\n","name":"Floating IPs"},{"name":"Floating IP Actions"},{"description":"Images are blueprints for your VM disks. They can be of different types:\n\n### System Images\nDistribution Images maintained by us, e.g. “Ubuntu 20.04”\n\n### Snapshot Images\nMaintained by you, for example “Ubuntu 20.04 with my own settings”. These are billed per GB per month.\n\n### Backup Images\nDaily Backups of your Server. Will automatically be created for Servers which have backups enabled (`POST /servers/{id}/actions/enable_backup`)\n\nBound to exactly one Server. If you delete the Server, you also delete all backups bound to it. You may convert backup Images to snapshot Images to keep them.\n\nThese are billed at 20% of your instance price for 7 backup slots.\n\n### App Images\nPrebuild images with specific software configurations, e.g. “Wordpress”. All app images are created by us.\n","name":"Images"},{"name":"Image Actions"},{"description":"ISOs are read-only Images of DVDs. While we recommend using our Image functionality to install your Servers we also provide some stock ISOs so you can install more exotic operating systems by yourself.\n\nOn request our support uploads a private ISO just for you. These are marked with type `private` and only visible in your Project.\n\nTo attach an ISO to your Server use `POST /servers/{id}/actions/attach_iso`.\n","name":"ISOs"},{"name":"Load Balancers"},{"name":"Load Balancer Actions"},{"description":"Load Balancer types define kinds of Load Balancers offered. Each type has an hourly and a monthly cost. You will pay whichever amount is lower for your usage of this specific Load Balancer. Costs may differ between Locations.\n\nCurrency for all amounts is €. All prices exclude VAT.\n","name":"Load Balancer Types"},{"description":"Datacenters are organized by Locations. Datacenters in the same Location are connected with very low latency links.","name":"Locations"},{"description":"Primary IPs help you to create more flexible networking setups. You can assign at most one Primary IP of type `ipv4` and one of type `ipv6` per Server. This Server then uses these IPs.\n\nYou can only unassign a Primary IP from a Server when it's powered off. This Primary IP can then be assigned to a different powered off Server, or you can keep it around for later use.\n\nPrimary IPs are bound to a specific Datacenter. You can not assign a Primary IP from one Datacenter to a Server in a different Datacenter. If you need this capability use Floating IPs instead.\n\nIf your Server's operating system supports cloud-init there is no further configuration needed to make Primary IPs work.\n\nPrimary IPs of type `ipv4` use a single IPv4 address as their `ip` property. Primary IPs of type `ipv6` use a /64 network such as `fc00::/64` as their `ip` property. Any IP address within that network can be used on your host.\n\nPrimary IPs are billed on an hourly basis.\n","name":"Primary IPs"},{"name":"Primary IP Actions"},{"description":"Networks is a private networks feature. These Networks are optional and they coexist with the public network that every Server has by default.\n\nThey allow Servers to talk to each other over a dedicated network interface using private IP addresses not available publicly.\n\nThe IP addresses are allocated and managed via the API, they must conform to [RFC1918](https://tools.ietf.org/html/rfc1918#section-3) standard. IPs and network interfaces defined under Networks do not provide public internet connectivity, you will need to use the already existing public network interface for that.\n\nEach network has a user selected `ip_range` which defines all available IP addresses which can be used for Subnets within the Network.\n\nTo assign individual IPs to Servers you will need to create Network Subnets, described below.\n\nCurrently Networks support IPv4 only.\n\n### Subnets\nSubnets divide the `ip_range` from the parent Network object into multiple Subnetworks that you can use for different specific purposes.\n\nFor each subnet you need to specify its own `ip_range` which must be contained within the parent Network’s `ip_range`. Additionally each subnet must belong to one of the available Network Zones described below. Subnets can not have overlapping IP ranges.\n\nCurrently there are three types of subnet:\n* type `cloud` is used to connect cloud Resources into your Network.\n* type `server` was used to connect only cloud Servers into your Network. This type is deprecated and is replaced by type cloud.\n* type `vswitch` allows you to connect [Dedicated Server vSwitch](https://docs.hetzner.com/robot/dedicated-server/network/vswitch) - and all Dedicated Servers attached to it - into your Network\n\nSubnets of type `vswitch` must set a `vswitch_id` which is the ID of the existing vSwitch in Hetzner Robot that should be coupled.\n\n### Network Zones\nNetwork Zones are groups of Locations which have special high-speed network connections between them. The [Location object](https://docs.hetzner.cloud/#locations-get-a-location) contains the `network_zone` property each Location belongs to. Currently these network zones exist:\n\n|Network Zone|Contains Locations|\n|------------|------------------|\n|eu-central  | nbg1, fsn1, hel1 |\n|us-east     | ash              |\n\n### IP address management\nWhen a cloud Server is attached to a network without the user specifying an IP it automatically gets an IP address assigned from a subnet of type `server` in the same network zone. If you specify the optional `ip` parameter when attaching then we will try to assign that IP. Keep in mind that the Server’s location must be covered by the Subnet’s Network Zone if you specify an IP, or that at least one Subnet with the zone covering Server’s location must exist.\n\nA cloud Server can also have more than one IP address in a Network by specifying aliases. For details see the [attach to network action](https://docs.hetzner.cloud/#server-actions-attach-a-server-to-a-network).\n\nThe following IP addresses are reserved in networks and can not be used:\n  * the first IP of the network `ip_range` as it will be used as a default gateway for the private Network interface.\n  * `172.31.1.1` as it is being used as default gateway for our public Network interfaces.\n\n### Coupling Dedicated Servers\n\nBy using subnets of type `vswitch` you can couple the Cloud Networks with an existing [Dedicated Server vSwitch](https://docs.hetzner.com/robot/dedicated-server/network/vswitch) and enable dedicated and cloud servers to\ntalk to each other over the Network.\nIn order for this to work the dedicated servers may only use IPs from the subnet and must have a special network configuration. Please refer to [FAQ](https://docs.hetzner.com/cloud/networks/connect-dedi-vswitch). vSwitch Layer 2 features are not supported.\n\n### Routes\nNetworks also support the notion of routes which are automatically applied to private traffic. A route makes sure that all packets for a given `destination` IP prefix will be sent to the address specified in its `gateway`.\n","name":"Networks"},{"name":"Network Actions"},{"description":"Placement groups are used to influence the location of interdependent virtual servers in our data centers. The distribution of the different instances within a group is based on a pattern specified in the type. By enforcing certain rules on the placement of instances within our infrastructure, availability can be influenced in a way that fits your needs best.\n\nIn `spread` placement groups, all virtual servers will run on different physical servers. This decreases the probability that some instances might fail together.\n","name":"Placement Groups"},{"description":"Returns prices for resources.","name":"Pricing"},{"description":"Servers are virtual machines that can be provisioned.","name":"Servers"},{"name":"Server Actions"},{"description":"Server types define kinds of Servers offered. Each type has an hourly and a monthly cost. You will pay whichever cost is lower for your usage of this specific Server. Costs may differ between Locations.\n\nCurrency for all amounts is €. All prices exclude VAT.\n","name":"Server Types"},{"description":"SSH keys are public keys you provide to the cloud system. They can be injected into Servers at creation time. We highly recommend that you use keys instead of passwords to manage your Servers.","name":"SSH Keys"},{"description":"A Volume is a highly-available, scalable, and SSD-based block storage for Servers.\n\nPricing for Volumes depends on the Volume size and Location, not the actual used storage.\n\nPlease see [Hetzner Docs](https://docs.hetzner.com/cloud/#Volumes) for more details about Volumes.\n","name":"Volumes"},{"name":"Volume Actions"}],"paths":{"/actions":{"get":{"description":"Returns all Action objects. You can `sort` the results by using the sort URI parameter, and filter them with the `status` parameter.","parameters":[{"description":"Can be used multiple times, the response will contain only Actions with specified IDs","in":"query","name":"id","required":false,"schema":{"type":"integer"}},{"description":"Can be used multiple times.","in":"query","name":"sort","required":false,"schema":{"enum":["id","id:asc","id:desc","command","command:asc","command:desc","status","status:asc","status:desc","progress","progress:asc","progress:desc","started","started:asc","started:desc","finished","finished:asc","finished:desc"],"title":"ParameterSort","type":"string"}},{"description":"Can be used multiple times, the response will contain only Actions with specified statuses","in":"query","name":"status","required":false,"schema":{"enum":["running","success","error"],"title":"ParameterStatus","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"actions":{"items":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.611Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.611Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"},"type":"array"},"meta":{"properties":{"pagination":{"properties":{"last_page":{"description":"ID of the last page available. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"next_page":{"description":"ID of the next page. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"page":{"description":"Current page number","example":3,"type":"number"},"per_page":{"description":"Maximum number of items shown per page in the response","example":25,"type":"number"},"previous_page":{"description":"ID of the previous page. Can be null if the current page is the first one.","example":2,"nullable":true,"type":"number"},"total_entries":{"description":"The total number of entries that exist in the database for this query. Nullable if unknown.","example":100,"nullable":true,"type":"number"}},"required":["page","per_page","previous_page","next_page","last_page","total_entries"],"type":"object"}},"required":["pagination"],"type":"object"}},"required":["actions"],"title":"ActionsResponse","type":"object"}}},"description":"The `actions` key contains a list of Actions"}},"summary":"Get all Actions","tags":["Actions"]}},"/actions/{id}":{"get":{"description":"Returns a specific Action object.","parameters":[{"description":"ID of the Resource","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.611Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.611Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key in the reply has this structure"}},"summary":"Get an Action","tags":["Actions"]}},"/certificates":{"get":{"description":"Returns all Certificate objects.","parameters":[{"description":"Can be used multiple times.","in":"query","name":"sort","required":false,"schema":{"enum":["id","id:asc","id:desc","name","name:asc","name:desc","created","created:asc","created:desc"],"type":"string"}},{"description":"Can be used to filter resources by their name. The response will only contain the resources matching the specified name","in":"query","name":"name","required":false,"schema":{"type":"string"}},{"description":"Can be used to filter resources by labels. The response will only contain resources matching the label selector.","in":"query","name":"label_selector","required":false,"schema":{"type":"string"}},{"description":"Can be used multiple times. The response will only contain Certificates matching the type.","in":"query","name":"type","required":false,"schema":{"enum":["uploaded","managed"],"title":"ParameterType","type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"certificates":[{"certificate":"-----BEGIN CERTIFICATE-----\n...","created":"2025-08-15T13:52:16.611Z","domain_names":["example.com","webmail.example.com","www.example.com"],"fingerprint":"03:c7:55:9b:2a:d1:04:17:09:f6:d0:7f:18:34:63:d4:3e:5f","id":897,"labels":{"env":"dev"},"name":"my website cert","not_valid_after":"2025-08-15T13:52:16.611Z","not_valid_before":"2025-08-15T13:52:16.611Z","status":null,"type":"uploaded","used_by":[{"id":4711,"type":"load_balancer"}]}]},"schema":{"properties":{"certificates":{"items":{"properties":{"certificate":{"description":"Certificate and chain in PEM format, in order so that each record directly certifies the one preceding","example":"-----BEGIN CERTIFICATE-----\n...","nullable":true,"type":"string"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.611Z","type":"string"},"domain_names":{"description":"Domains and subdomains covered by the Certificate","example":["example.com","webmail.example.com","www.example.com"],"items":{"type":"string"},"type":"array"},"fingerprint":{"description":"SHA256 fingerprint of the Certificate","example":"03:c7:55:9b:2a:d1:04:17:09:f6:d0:7f:18:34:63:d4:3e:5f","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"not_valid_after":{"description":"Point in time when the Certificate stops being valid (in ISO-8601 format)","example":"2025-08-15T13:52:16.611Z","nullable":true,"type":"string"},"not_valid_before":{"description":"Point in time when the Certificate becomes valid (in ISO-8601 format)","example":"2025-08-15T13:52:16.611Z","nullable":true,"type":"string"},"status":{"description":"Current status of a type `managed` Certificate, always *null* for type `uploaded` Certificates","nullable":true,"properties":{"error":{"description":"If issuance or renewal reports `failed`, this property contains information about what happened","example":null,"nullable":true,"properties":{"code":{"type":"string"},"message":{"type":"string"}},"type":"object"},"issuance":{"description":"Status of the issuance process of the Certificate","enum":["pending","completed","failed"],"example":"valid","type":"string"},"renewal":{"description":"Status of the renewal process of the Certificate.","enum":["scheduled","pending","failed","unavailable"],"example":"scheduled","type":"string"}},"type":"object"},"type":{"description":"Type of the Certificate","enum":["uploaded","managed"],"example":"uploaded","type":"string"},"used_by":{"description":"Resources currently using the Certificate","items":{"properties":{"id":{"description":"ID of resource referenced","example":4711,"type":"integer"},"type":{"description":"Type of resource referenced","example":"load_balancer","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"}},"required":["id","name","labels","certificate","created","not_valid_before","not_valid_after","domain_names","fingerprint","used_by"],"title":"Certificate","type":"object"},"type":"array"},"meta":{"properties":{"pagination":{"properties":{"last_page":{"description":"ID of the last page available. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"next_page":{"description":"ID of the next page. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"page":{"description":"Current page number","example":3,"type":"number"},"per_page":{"description":"Maximum number of items shown per page in the response","example":25,"type":"number"},"previous_page":{"description":"ID of the previous page. Can be null if the current page is the first one.","example":2,"nullable":true,"type":"number"},"total_entries":{"description":"The total number of entries that exist in the database for this query. Nullable if unknown.","example":100,"nullable":true,"type":"number"}},"required":["page","per_page","previous_page","next_page","last_page","total_entries"],"type":"object"}},"required":["pagination"],"type":"object"}},"required":["certificates"],"title":"CertificatesResponse","type":"object"}}},"description":"The `certificates` key contains an array of Certificate objects"}},"summary":"Get all Certificates","tags":["Certificates"]},"post":{"description":"Creates a new Certificate.\n\nThe default type **uploaded** allows for uploading your existing `certificate` and `private_key` in PEM format. You have to monitor its expiration date and handle renewal yourself.\n\nIn contrast, type **managed** requests a new Certificate from *Let's Encrypt* for the specified `domain_names`. Only domains managed by *Hetzner DNS* are supported. We handle renewal and timely alert the project owner via email if problems occur.\n\nFor type `managed` Certificates the `action` key of the response contains the Action that allows for tracking the issuance process. For type `uploaded` Certificates the `action` is always null.\n","requestBody":{"content":{"application/json":{"examples":{"managed":{"summary":"Creating a type `managed` Certificate","value":{"domain_names":["example.com","webmail.example.com","www.example.com"],"name":"my website cert","type":"managed"}},"uploaded":{"summary":"Creating a type `uploaded` Certificate","value":{"certificate":"-----BEGIN CERTIFICATE-----\n...","name":"my website cert","private_key":"-----BEGIN PRIVATE KEY-----\n...","type":"uploaded"}}},"schema":{"properties":{"certificate":{"description":"Certificate and chain in PEM format, in order so that each record directly certifies the one preceding. Required for type `uploaded` Certificates.","example":"-----BEGIN CERTIFICATE-----\n...","type":"string"},"domain_names":{"description":"Domains and subdomains that should be contained in the Certificate issued by *Let's Encrypt*. Required for type `managed` Certificates.","example":null,"items":{"type":"string"},"type":"array"},"labels":{"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Certificate","example":"my website cert","type":"string"},"private_key":{"description":"Certificate key in PEM format. Required for type `uploaded` Certificates.","example":"-----BEGIN PRIVATE KEY-----\n...","type":"string"},"type":{"description":"Choose between uploading a Certificate in PEM format or requesting a managed *Let's Encrypt* Certificate. If omitted defaults to `uploaded`.","enum":["uploaded","managed"],"example":"uploaded","type":"string"}},"required":["name"],"title":"CreateCertificateRequest","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"examples":{"managed":{"summary":"Response when creating a type `managed` Certificate","value":{"action":{"command":"create_certificate","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":879,"type":"certificate"}],"started":"2025-08-15T13:52:16.611Z","status":"running"},"certificate":{"certificate":null,"created":"2025-08-15T13:52:16.611Z","domain_names":["example.com","webmail.example.com","www.example.com"],"fingerprint":null,"id":897,"labels":{"env":"dev"},"name":"my website cert","not_valid_after":null,"not_valid_before":null,"status":{"error":null,"issuance":"pending","renewal":"unavailable"},"type":"managed","used_by":[{"id":4711,"type":"load_balancer"}]}}},"uploaded":{"summary":"Response when creating a type `uploaded` Certificate","value":{"action":null,"certificate":{"certificate":"-----BEGIN CERTIFICATE-----\n...","created":"2025-08-15T13:52:16.611Z","domain_names":["example.com","webmail.example.com","www.example.com"],"fingerprint":"03:c7:55:9b:2a:d1:04:17:09:f6:d0:7f:18:34:63:d4:3e:5f","id":897,"labels":{"env":"dev"},"name":"my website cert","not_valid_after":"2025-08-15T13:52:16.611Z","not_valid_before":"2025-08-15T13:52:16.611Z","status":null,"type":"uploaded","used_by":[{"id":4711,"type":"load_balancer"}]}}}},"schema":{"properties":{"action":{"nullable":true,"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.611Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.611Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"NullableAction","type":"object"},"certificate":{"properties":{"certificate":{"description":"Certificate and chain in PEM format, in order so that each record directly certifies the one preceding","example":"-----BEGIN CERTIFICATE-----\n...","nullable":true,"type":"string"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.611Z","type":"string"},"domain_names":{"description":"Domains and subdomains covered by the Certificate","example":["example.com","webmail.example.com","www.example.com"],"items":{"type":"string"},"type":"array"},"fingerprint":{"description":"SHA256 fingerprint of the Certificate","example":"03:c7:55:9b:2a:d1:04:17:09:f6:d0:7f:18:34:63:d4:3e:5f","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"not_valid_after":{"description":"Point in time when the Certificate stops being valid (in ISO-8601 format)","example":"2025-08-15T13:52:16.611Z","nullable":true,"type":"string"},"not_valid_before":{"description":"Point in time when the Certificate becomes valid (in ISO-8601 format)","example":"2025-08-15T13:52:16.611Z","nullable":true,"type":"string"},"status":{"description":"Current status of a type `managed` Certificate, always *null* for type `uploaded` Certificates","nullable":true,"properties":{"error":{"description":"If issuance or renewal reports `failed`, this property contains information about what happened","example":null,"nullable":true,"properties":{"code":{"type":"string"},"message":{"type":"string"}},"type":"object"},"issuance":{"description":"Status of the issuance process of the Certificate","enum":["pending","completed","failed"],"example":"valid","type":"string"},"renewal":{"description":"Status of the renewal process of the Certificate.","enum":["scheduled","pending","failed","unavailable"],"example":"scheduled","type":"string"}},"type":"object"},"type":{"description":"Type of the Certificate","enum":["uploaded","managed"],"example":"uploaded","type":"string"},"used_by":{"description":"Resources currently using the Certificate","items":{"properties":{"id":{"description":"ID of resource referenced","example":4711,"type":"integer"},"type":{"description":"Type of resource referenced","example":"load_balancer","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"}},"required":["id","name","labels","certificate","created","not_valid_before","not_valid_after","domain_names","fingerprint","used_by"],"title":"Certificate","type":"object"}},"required":["certificate"],"title":"CreateCertificateResponse","type":"object"}}},"description":"The `certificate` key contains the Certificate that was just created. For type `managed` Certificates the `action` key contains the Action that allows for tracking the issuance process. For type `uploaded` Certificates the `action` is always null."}},"summary":"Create a Certificate","tags":["Certificates"]}},"/certificates/{id}":{"delete":{"description":"Deletes a Certificate.","parameters":[{"description":"ID of the resource","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"204":{"description":"Certificate deleted"}},"summary":"Delete a Certificate","tags":["Certificates"]},"get":{"description":"Gets a specific Certificate object.","parameters":[{"description":"ID of the resource","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"example":{"certificate":{"certificate":"-----BEGIN CERTIFICATE-----\n...","created":"2025-08-15T13:52:16.611Z","domain_names":["example.com","webmail.example.com","www.example.com"],"fingerprint":"03:c7:55:9b:2a:d1:04:17:09:f6:d0:7f:18:34:63:d4:3e:5f","id":897,"labels":{"env":"dev"},"name":"my website cert","not_valid_after":"2025-08-15T13:52:16.611Z","not_valid_before":"2025-08-15T13:52:16.611Z","status":null,"type":"uploaded","used_by":[{"id":4711,"type":"load_balancer"}]}},"schema":{"properties":{"certificate":{"properties":{"certificate":{"description":"Certificate and chain in PEM format, in order so that each record directly certifies the one preceding","example":"-----BEGIN CERTIFICATE-----\n...","nullable":true,"type":"string"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.611Z","type":"string"},"domain_names":{"description":"Domains and subdomains covered by the Certificate","example":["example.com","webmail.example.com","www.example.com"],"items":{"type":"string"},"type":"array"},"fingerprint":{"description":"SHA256 fingerprint of the Certificate","example":"03:c7:55:9b:2a:d1:04:17:09:f6:d0:7f:18:34:63:d4:3e:5f","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"not_valid_after":{"description":"Point in time when the Certificate stops being valid (in ISO-8601 format)","example":"2025-08-15T13:52:16.611Z","nullable":true,"type":"string"},"not_valid_before":{"description":"Point in time when the Certificate becomes valid (in ISO-8601 format)","example":"2025-08-15T13:52:16.611Z","nullable":true,"type":"string"},"status":{"description":"Current status of a type `managed` Certificate, always *null* for type `uploaded` Certificates","nullable":true,"properties":{"error":{"description":"If issuance or renewal reports `failed`, this property contains information about what happened","example":null,"nullable":true,"properties":{"code":{"type":"string"},"message":{"type":"string"}},"type":"object"},"issuance":{"description":"Status of the issuance process of the Certificate","enum":["pending","completed","failed"],"example":"valid","type":"string"},"renewal":{"description":"Status of the renewal process of the Certificate.","enum":["scheduled","pending","failed","unavailable"],"example":"scheduled","type":"string"}},"type":"object"},"type":{"description":"Type of the Certificate","enum":["uploaded","managed"],"example":"uploaded","type":"string"},"used_by":{"description":"Resources currently using the Certificate","items":{"properties":{"id":{"description":"ID of resource referenced","example":4711,"type":"integer"},"type":{"description":"Type of resource referenced","example":"load_balancer","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"}},"required":["id","name","labels","certificate","created","not_valid_before","not_valid_after","domain_names","fingerprint","used_by"],"title":"Certificate","type":"object"}},"required":["certificate"],"title":"CertificateResponse","type":"object"}}},"description":"The `certificate` key contains a Certificate object"}},"summary":"Get a Certificate","tags":["Certificates"]},"put":{"description":"Updates the Certificate properties.\n\nNote that when updating labels, the Certificate’s current set of labels will be replaced with the labels provided in the request body. So, for example, if you want to add a new label, you have to provide all existing labels plus the new label in the request body.\n\nNote: if the Certificate object changes during the request, the response will be a “conflict” error.\n","parameters":[{"description":"ID of the resource","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"labels":{"description":"User-defined labels (key-value pairs)","example":{"labelkey":"value"},"type":"object"},"name":{"description":"New Certificate name","example":"my website cert","type":"string"}},"title":"UpdateCertificateRequest","type":"object"}}}},"responses":{"200":{"content":{"application/json":{"example":{"certificate":{"certificate":"-----BEGIN CERTIFICATE-----\n...","created":"2025-08-15T13:52:16.612Z","domain_names":["example.com","webmail.example.com","www.example.com"],"fingerprint":"03:c7:55:9b:2a:d1:04:17:09:f6:d0:7f:18:34:63:d4:3e:5f","id":897,"labels":{"labelkey":"value"},"name":"my website cert","not_valid_after":"2025-08-15T13:52:16.612Z","not_valid_before":"2025-08-15T13:52:16.612Z","status":null,"type":"uploaded","used_by":[{"id":4711,"type":"load_balancer"}]}},"schema":{"properties":{"certificate":{"properties":{"certificate":{"description":"Certificate and chain in PEM format, in order so that each record directly certifies the one preceding","example":"-----BEGIN CERTIFICATE-----\n...","nullable":true,"type":"string"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.612Z","type":"string"},"domain_names":{"description":"Domains and subdomains covered by the Certificate","example":["example.com","webmail.example.com","www.example.com"],"items":{"type":"string"},"type":"array"},"fingerprint":{"description":"SHA256 fingerprint of the Certificate","example":"03:c7:55:9b:2a:d1:04:17:09:f6:d0:7f:18:34:63:d4:3e:5f","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"not_valid_after":{"description":"Point in time when the Certificate stops being valid (in ISO-8601 format)","example":"2025-08-15T13:52:16.612Z","nullable":true,"type":"string"},"not_valid_before":{"description":"Point in time when the Certificate becomes valid (in ISO-8601 format)","example":"2025-08-15T13:52:16.612Z","nullable":true,"type":"string"},"status":{"description":"Current status of a type `managed` Certificate, always *null* for type `uploaded` Certificates","nullable":true,"properties":{"error":{"description":"If issuance or renewal reports `failed`, this property contains information about what happened","example":null,"nullable":true,"properties":{"code":{"type":"string"},"message":{"type":"string"}},"type":"object"},"issuance":{"description":"Status of the issuance process of the Certificate","enum":["pending","completed","failed"],"example":"valid","type":"string"},"renewal":{"description":"Status of the renewal process of the Certificate.","enum":["scheduled","pending","failed","unavailable"],"example":"scheduled","type":"string"}},"type":"object"},"type":{"description":"Type of the Certificate","enum":["uploaded","managed"],"example":"uploaded","type":"string"},"used_by":{"description":"Resources currently using the Certificate","items":{"properties":{"id":{"description":"ID of resource referenced","example":4711,"type":"integer"},"type":{"description":"Type of resource referenced","example":"load_balancer","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"}},"required":["id","name","labels","certificate","created","not_valid_before","not_valid_after","domain_names","fingerprint","used_by"],"title":"Certificate","type":"object"}},"required":["certificate"],"title":"CertificateResponse","type":"object"}}},"description":"The `certificate` key contains the Certificate that was just updated"}},"summary":"Update a Certificate","tags":["Certificates"]}},"/certificates/{id}/actions":{"get":{"description":"Returns all Action objects for a Certificate. You can sort the results by using the `sort` URI parameter, and filter them with the `status` parameter.\n\nOnly type `managed` Certificates can have Actions. For type `uploaded` Certificates the `actions` key will always contain an empty array.\n","parameters":[{"description":"ID of the Resource","in":"path","name":"id","required":true,"schema":{"type":"integer"}},{"description":"Can be used multiple times.","in":"query","name":"sort","required":false,"schema":{"enum":["id","id:asc","id:desc","command","command:asc","command:desc","status","status:asc","status:desc","progress","progress:asc","progress:desc","started","started:asc","started:desc","finished","finished:asc","finished:desc"],"title":"ParameterSort","type":"string"}},{"description":"Can be used multiple times, the response will contain only Actions with specified statuses","in":"query","name":"status","required":false,"schema":{"enum":["running","success","error"],"title":"ParameterStatus","type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"actions":[{"command":"issue_certificate","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.612Z","id":14,"progress":100,"resources":[{"id":896,"type":"certificate"}],"started":"2025-08-15T13:52:16.612Z","status":"success"}]},"schema":{"properties":{"actions":{"items":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.612Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.612Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"},"type":"array"},"meta":{"properties":{"pagination":{"properties":{"last_page":{"description":"ID of the last page available. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"next_page":{"description":"ID of the next page. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"page":{"description":"Current page number","example":3,"type":"number"},"per_page":{"description":"Maximum number of items shown per page in the response","example":25,"type":"number"},"previous_page":{"description":"ID of the previous page. Can be null if the current page is the first one.","example":2,"nullable":true,"type":"number"},"total_entries":{"description":"The total number of entries that exist in the database for this query. Nullable if unknown.","example":100,"nullable":true,"type":"number"}},"required":["page","per_page","previous_page","next_page","last_page","total_entries"],"type":"object"}},"required":["pagination"],"type":"object"}},"required":["actions"],"title":"ActionsResponse","type":"object"}}},"description":"The `actions` key contains a list of Actions"}},"summary":"Get all Actions for a Certificate","tags":["Certificate Actions"]}},"/certificates/{id}/actions/retry":{"post":{"description":"Retry a failed Certificate issuance or renewal.\n\nOnly applicable if the type of the Certificate is `managed` and the issuance or renewal status is `failed`.\n\n#### Call specific error codes\n\n| Code                                                    | Description                                                               |\n|---------------------------------------------------------|---------------------------------------------------------------------------|\n| `caa_record_does_not_allow_ca`                          | CAA record does not allow certificate authority                           |\n| `ca_dns_validation_failed`                              | Certificate Authority: DNS validation failed                              |\n| `ca_too_many_authorizations_failed_recently`            | Certificate Authority: Too many authorizations failed recently            |\n| `ca_too_many_certificates_issued_for_registered_domain` | Certificate Authority: Too many certificates issued for registered domain |\n| `ca_too_many_duplicate_certificates`                    | Certificate Authority: Too many duplicate certificates                    |\n| `could_not_verify_domain_delegated_to_zone`             | Could not verify domain delegated to zone                                 |\n| `dns_zone_not_found`                                    | DNS zone not found                                                        |\n| `dns_zone_is_secondary_zone`                            | DNS zone is a secondary zone                                              |\n","parameters":[{"description":"ID of the Certificate","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"issue_certificate","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.612Z","id":14,"progress":100,"resources":[{"id":896,"type":"certificate"}],"started":"2025-08-15T13:52:16.612Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.612Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.612Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the resulting Action"}},"summary":"Retry Issuance or Renewal","tags":["Certificate Actions"]}},"/certificates/{id}/actions/{action_id}":{"get":{"description":"Returns a specific Action for a Certificate. Only type `managed` Certificates have Actions.","parameters":[{"description":"ID of the Certificate","in":"path","name":"id","required":true,"schema":{"type":"integer"}},{"description":"ID of the Action","in":"path","name":"action_id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"example":{"action":{"command":"issue_certificate","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.612Z","id":14,"progress":100,"resources":[{"id":896,"type":"certificate"}],"started":"2025-08-15T13:52:16.612Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.612Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.612Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the Certificate Action"}},"summary":"Get an Action for a Certificate","tags":["Certificate Actions"]}},"/datacenters":{"get":{"description":"Returns all Datacenter objects.","parameters":[{"description":"Can be used to filter Datacenters by their name. The response will only contain the Datacenter matching the specified name. When the name does not match the Datacenter name format, an `invalid_input` error is returned.","in":"query","name":"name","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"datacenters":{"items":{"properties":{"description":{"description":"Description of the Datacenter","example":"Falkenstein DC Park 8","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"location":{"properties":{"city":{"description":"City the Location is closest to","example":"Falkenstein","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 code of the country the Location resides in","example":"DE","type":"string"},"description":{"description":"Description of the Location","example":"Falkenstein DC Park 1","type":"string"},"id":{"description":"ID of the Location","example":1,"type":"number"},"latitude":{"description":"Latitude of the city closest to the Location","example":50.47612,"type":"number"},"longitude":{"description":"Longitude of the city closest to the Location","example":12.370071,"type":"number"},"name":{"description":"Unique identifier of the Location","example":"fsn1","type":"string"},"network_zone":{"description":"Name of network zone this Location resides in","example":"eu-central","type":"string"}},"required":["id","name","description","country","city","latitude","longitude","network_zone"],"type":"object"},"name":{"description":"Unique identifier of the Datacenter","example":"fsn1-dc8","type":"string"},"server_types":{"description":"The Server types the Datacenter can handle","properties":{"available":{"description":"IDs of Server types that are supported and for which the Datacenter has enough resources left","example":[1,2,3],"items":{"type":"number"},"type":"array"},"available_for_migration":{"description":"IDs of Server types that are supported and for which the Datacenter has enough resources left","example":[1,2,3],"items":{"type":"number"},"type":"array"},"supported":{"description":"IDs of Server types that are supported in the Datacenter","example":[1,2,3],"items":{"type":"number"},"type":"array"}},"required":["supported","available","available_for_migration"],"type":"object"}},"required":["id","name","description","location","server_types"],"type":"object"},"type":"array"},"recommendation":{"description":"The Datacenter which is recommended to be used to create new Servers.","example":1,"type":"number"}},"required":["datacenters","recommendation"],"type":"object"}}},"description":"The reply contains the `datacenters` and `recommendation` keys"}},"summary":"Get all Datacenters","tags":["Datacenters"]}},"/datacenters/{id}":{"get":{"description":"Returns a specific Datacenter object.","parameters":[{"description":"ID of Datacenter","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"datacenter":{"properties":{"description":{"description":"Description of the Datacenter","example":"Falkenstein DC Park 8","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"location":{"properties":{"city":{"description":"City the Location is closest to","example":"Falkenstein","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 code of the country the Location resides in","example":"DE","type":"string"},"description":{"description":"Description of the Location","example":"Falkenstein DC Park 1","type":"string"},"id":{"description":"ID of the Location","example":1,"type":"number"},"latitude":{"description":"Latitude of the city closest to the Location","example":50.47612,"type":"number"},"longitude":{"description":"Longitude of the city closest to the Location","example":12.370071,"type":"number"},"name":{"description":"Unique identifier of the Location","example":"fsn1","type":"string"},"network_zone":{"description":"Name of network zone this Location resides in","example":"eu-central","type":"string"}},"required":["id","name","description","country","city","latitude","longitude","network_zone"],"type":"object"},"name":{"description":"Unique identifier of the Datacenter","example":"fsn1-dc8","type":"string"},"server_types":{"description":"The Server types the Datacenter can handle","properties":{"available":{"description":"IDs of Server types that are supported and for which the Datacenter has enough resources left","example":[1,2,3],"items":{"type":"number"},"type":"array"},"available_for_migration":{"description":"IDs of Server types that are supported and for which the Datacenter has enough resources left","example":[1,2,3],"items":{"type":"number"},"type":"array"},"supported":{"description":"IDs of Server types that are supported in the Datacenter","example":[1,2,3],"items":{"type":"number"},"type":"array"}},"required":["supported","available","available_for_migration"],"type":"object"}},"required":["id","name","description","location","server_types"],"type":"object"}},"required":["datacenter"],"type":"object"}}},"description":"The `datacenter` key in the reply contains a Datacenter object with this structure"}},"summary":"Get a Datacenter","tags":["Datacenters"]}},"/firewalls":{"get":{"description":"Returns all Firewall objects.","parameters":[{"description":"Can be used multiple times.","in":"query","name":"sort","required":false,"schema":{"enum":["id","id:asc","id:desc","name","name:asc","name:desc","created","created:asc","created:desc"],"type":"string"}},{"description":"Can be used to filter resources by their name. The response will only contain the resources matching the specified name","in":"query","name":"name","required":false,"schema":{"type":"string"}},{"description":"Can be used to filter resources by labels. The response will only contain resources matching the label selector.","in":"query","name":"label_selector","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"firewalls":{"items":{"properties":{"applied_to":{"items":{"properties":{"applied_to_resources":{"items":{"properties":{"server":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"}},"required":["id"],"type":"object"},"type":{"description":"Type of resource referenced","enum":["server"],"example":"server","type":"string"}},"type":"object"},"type":"array"},"label_selector":{"properties":{"selector":{"description":"Label selector","example":"env=prod","type":"string"}},"required":["selector"],"type":"object"},"server":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"}},"required":["id"],"type":"object"},"type":{"description":"Type of resource referenced","enum":["server","label_selector"],"example":"server","type":"string"}},"required":["type"],"type":"object"},"type":"array"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.612Z","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"rules":{"items":{"properties":{"description":{"description":"Description of the Rule","maxLength":255,"nullable":true,"type":"string"},"destination_ips":{"description":"List of permitted IPv4/IPv6 addresses in CIDR notation. Use `0.0.0.0/0` to allow all IPv4 addresses and `::/0` to allow all IPv6 addresses. You can specify 100 CIDRs at most.","example":["28.239.13.1/32","28.239.14.0/24","ff21:1eac:9a3b:ee58:5ca:990c:8bc9:c03b/128"],"items":{"type":"string"},"type":"array"},"direction":{"description":"Select traffic direction on which rule should be applied. Use `source_ips` for direction `in` and `destination_ips` for direction `out`.","enum":["in","out"],"type":"string"},"port":{"description":"Port or port range to which traffic will be allowed, only applicable for protocols TCP and UDP. A port range can be specified by separating two ports with a dash, e.g `1024-5000`.","example":"80","type":"string"},"protocol":{"description":"Type of traffic to allow","enum":["tcp","udp","icmp","esp","gre"],"type":"string"},"source_ips":{"description":"List of permitted IPv4/IPv6 addresses in CIDR notation. Use `0.0.0.0/0` to allow all IPv4 addresses and `::/0` to allow all IPv6 addresses. You can specify 100 CIDRs at most.","example":["28.239.13.1/32","28.239.14.0/24","ff21:1eac:9a3b:ee58:5ca:990c:8bc9:c03b/128"],"items":{"type":"string"},"type":"array"}},"required":["direction","protocol"],"title":"Rule","type":"object"},"type":"array"}},"required":["id","name","created","rules","applied_to"],"title":"Firewall","type":"object"},"type":"array"},"meta":{"properties":{"pagination":{"properties":{"last_page":{"description":"ID of the last page available. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"next_page":{"description":"ID of the next page. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"page":{"description":"Current page number","example":3,"type":"number"},"per_page":{"description":"Maximum number of items shown per page in the response","example":25,"type":"number"},"previous_page":{"description":"ID of the previous page. Can be null if the current page is the first one.","example":2,"nullable":true,"type":"number"},"total_entries":{"description":"The total number of entries that exist in the database for this query. Nullable if unknown.","example":100,"nullable":true,"type":"number"}},"required":["page","per_page","previous_page","next_page","last_page","total_entries"],"type":"object"}},"required":["pagination"],"type":"object"}},"required":["firewalls"],"title":"FirewallsResponse","type":"object"}}},"description":"The `firewalls` key contains an array of Firewall objects"}},"summary":"Get all Firewalls","tags":["Firewalls"]},"post":{"description":"Creates a new Firewall.\n\n#### Call specific error codes\n\n| Code                          | Description                                                   |\n|------------------------------ |-------------------------------------------------------------- |\n| `server_already_added`        | Server added more than one time to resource                   |\n| `incompatible_network_type`   | The Network type is incompatible for the given resource       |\n| `firewall_resource_not_found` | The resource the Firewall should be attached to was not found |\n","requestBody":{"content":{"application/json":{"examples":{"request":{"value":{"apply_to":[{"server":{"id":42},"type":"server"}],"labels":{"env":"dev"},"name":"Corporate Intranet Protection","rules":[{"description":"Allow port 80","direction":"in","port":"80","protocol":"tcp","source_ips":["28.239.13.1/32","28.239.14.0/24","ff21:1eac:9a3b:ee58:5ca:990c:8bc9:c03b/128"]}]}}},"schema":{"properties":{"apply_to":{"description":"Resources the Firewall should be applied to after creation","items":{"properties":{"label_selector":{"description":"Configuration for type LabelSelector, required if type is `label_selector`","properties":{"selector":{"description":"Label selector","type":"string"}},"required":["selector"],"type":"object"},"server":{"description":"Configuration for type Server, required if type is `server`","properties":{"id":{"description":"ID of the Server","type":"integer"}},"required":["id"],"type":"object"},"type":{"description":"Type of the resource","enum":["server","label_selector"],"type":"string"}},"required":["type"],"type":"object"},"type":"array"},"labels":{"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Firewall","example":"Corporate Intranet Protection","type":"string"},"rules":{"description":"Array of rules","example":[{"direction":"in","port":"80","protocol":"tcp","source_ips":["28.239.13.1/32","28.239.14.0/24","ff21:1eac:9a3b:ee58:5ca:990c:8bc9:c03b/128"]}],"items":{"properties":{"description":{"description":"Description of the Rule","maxLength":255,"nullable":true,"type":"string"},"destination_ips":{"description":"List of permitted IPv4/IPv6 addresses in CIDR notation. Use `0.0.0.0/0` to allow all IPv4 addresses and `::/0` to allow all IPv6 addresses. You can specify 100 CIDRs at most.","example":["28.239.13.1/32","28.239.14.0/24","ff21:1eac:9a3b:ee58:5ca:990c:8bc9:c03b/128"],"items":{"type":"string"},"type":"array"},"direction":{"description":"Select traffic direction on which rule should be applied. Use `source_ips` for direction `in` and `destination_ips` for direction `out`.","enum":["in","out"],"type":"string"},"port":{"description":"Port or port range to which traffic will be allowed, only applicable for protocols TCP and UDP. A port range can be specified by separating two ports with a dash, e.g `1024-5000`.","example":"80","type":"string"},"protocol":{"description":"Type of traffic to allow","enum":["tcp","udp","icmp","esp","gre"],"type":"string"},"source_ips":{"description":"List of permitted IPv4/IPv6 addresses in CIDR notation. Use `0.0.0.0/0` to allow all IPv4 addresses and `::/0` to allow all IPv6 addresses. You can specify 100 CIDRs at most.","example":["28.239.13.1/32","28.239.14.0/24","ff21:1eac:9a3b:ee58:5ca:990c:8bc9:c03b/128"],"items":{"type":"string"},"type":"array"}},"required":["direction","protocol"],"title":"Rule","type":"object"},"type":"array"}},"required":["name"],"title":"CreateFirewallRequest","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"actions":{"example":[{"command":"set_firewall_rules","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.612Z","id":13,"progress":100,"resources":[{"id":38,"type":"firewall"}],"started":"2025-08-15T13:52:16.612Z","status":"success"},{"command":"apply_firewall","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.612Z","id":14,"progress":100,"resources":[{"id":42,"type":"server"},{"id":38,"type":"firewall"}],"started":"2025-08-15T13:52:16.612Z","status":"success"}],"items":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.612Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.612Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"},"type":"array"},"firewall":{"properties":{"applied_to":{"items":{"properties":{"applied_to_resources":{"items":{"properties":{"server":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"}},"required":["id"],"type":"object"},"type":{"description":"Type of resource referenced","enum":["server"],"example":"server","type":"string"}},"type":"object"},"type":"array"},"label_selector":{"properties":{"selector":{"description":"Label selector","example":"env=prod","type":"string"}},"required":["selector"],"type":"object"},"server":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"}},"required":["id"],"type":"object"},"type":{"description":"Type of resource referenced","enum":["server","label_selector"],"example":"server","type":"string"}},"required":["type"],"type":"object"},"type":"array"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.612Z","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"rules":{"items":{"properties":{"description":{"description":"Description of the Rule","maxLength":255,"nullable":true,"type":"string"},"destination_ips":{"description":"List of permitted IPv4/IPv6 addresses in CIDR notation. Use `0.0.0.0/0` to allow all IPv4 addresses and `::/0` to allow all IPv6 addresses. You can specify 100 CIDRs at most.","example":["28.239.13.1/32","28.239.14.0/24","ff21:1eac:9a3b:ee58:5ca:990c:8bc9:c03b/128"],"items":{"type":"string"},"type":"array"},"direction":{"description":"Select traffic direction on which rule should be applied. Use `source_ips` for direction `in` and `destination_ips` for direction `out`.","enum":["in","out"],"type":"string"},"port":{"description":"Port or port range to which traffic will be allowed, only applicable for protocols TCP and UDP. A port range can be specified by separating two ports with a dash, e.g `1024-5000`.","example":"80","type":"string"},"protocol":{"description":"Type of traffic to allow","enum":["tcp","udp","icmp","esp","gre"],"type":"string"},"source_ips":{"description":"List of permitted IPv4/IPv6 addresses in CIDR notation. Use `0.0.0.0/0` to allow all IPv4 addresses and `::/0` to allow all IPv6 addresses. You can specify 100 CIDRs at most.","example":["28.239.13.1/32","28.239.14.0/24","ff21:1eac:9a3b:ee58:5ca:990c:8bc9:c03b/128"],"items":{"type":"string"},"type":"array"}},"required":["direction","protocol"],"title":"Rule","type":"object"},"type":"array"}},"required":["id","name","created","rules","applied_to"],"title":"Firewall","type":"object"}},"title":"CreateFirewallResponse","type":"object"}}},"description":"The `firewall` key contains the Firewall that was just created"}},"summary":"Create a Firewall","tags":["Firewalls"]}},"/firewalls/{id}":{"delete":{"description":"Deletes a Firewall.\n\n#### Call specific error codes\n\n| Code                 | Description                               |\n|--------------------- |-------------------------------------------|\n| `resource_in_use`    | Firewall must not be in use to be deleted |\n","parameters":[{"description":"ID of the resource","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"204":{"description":"Firewall deleted"}},"summary":"Delete a Firewall","tags":["Firewalls"]},"get":{"description":"Gets a specific Firewall object.","parameters":[{"description":"ID of the resource","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"firewall":{"properties":{"applied_to":{"items":{"properties":{"applied_to_resources":{"items":{"properties":{"server":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"}},"required":["id"],"type":"object"},"type":{"description":"Type of resource referenced","enum":["server"],"example":"server","type":"string"}},"type":"object"},"type":"array"},"label_selector":{"properties":{"selector":{"description":"Label selector","example":"env=prod","type":"string"}},"required":["selector"],"type":"object"},"server":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"}},"required":["id"],"type":"object"},"type":{"description":"Type of resource referenced","enum":["server","label_selector"],"example":"server","type":"string"}},"required":["type"],"type":"object"},"type":"array"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.612Z","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"rules":{"items":{"properties":{"description":{"description":"Description of the Rule","maxLength":255,"nullable":true,"type":"string"},"destination_ips":{"description":"List of permitted IPv4/IPv6 addresses in CIDR notation. Use `0.0.0.0/0` to allow all IPv4 addresses and `::/0` to allow all IPv6 addresses. You can specify 100 CIDRs at most.","example":["28.239.13.1/32","28.239.14.0/24","ff21:1eac:9a3b:ee58:5ca:990c:8bc9:c03b/128"],"items":{"type":"string"},"type":"array"},"direction":{"description":"Select traffic direction on which rule should be applied. Use `source_ips` for direction `in` and `destination_ips` for direction `out`.","enum":["in","out"],"type":"string"},"port":{"description":"Port or port range to which traffic will be allowed, only applicable for protocols TCP and UDP. A port range can be specified by separating two ports with a dash, e.g `1024-5000`.","example":"80","type":"string"},"protocol":{"description":"Type of traffic to allow","enum":["tcp","udp","icmp","esp","gre"],"type":"string"},"source_ips":{"description":"List of permitted IPv4/IPv6 addresses in CIDR notation. Use `0.0.0.0/0` to allow all IPv4 addresses and `::/0` to allow all IPv6 addresses. You can specify 100 CIDRs at most.","example":["28.239.13.1/32","28.239.14.0/24","ff21:1eac:9a3b:ee58:5ca:990c:8bc9:c03b/128"],"items":{"type":"string"},"type":"array"}},"required":["direction","protocol"],"title":"Rule","type":"object"},"type":"array"}},"required":["id","name","created","rules","applied_to"],"title":"Firewall","type":"object"}},"required":["firewall"],"title":"FirewallResponse","type":"object"}}},"description":"The `firewall` key contains a Firewall object"}},"summary":"Get a Firewall","tags":["Firewalls"]},"put":{"description":"Updates the Firewall.\n\nNote that when updating labels, the Firewall's current set of labels will be replaced with the labels provided in the request body. So, for example, if you want to add a new label, you have to provide all existing labels plus the new label in the request body.\n\nNote: if the Firewall object changes during the request, the response will be a “conflict” error.\n","parameters":[{"description":"ID of the resource","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"labels":{"description":"User-defined labels (key-value pairs)","example":{"labelkey":"value"},"type":"object"},"name":{"description":"New Firewall name","example":"new-name","type":"string"}},"title":"UpdateFirewallRequest","type":"object"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"firewall":{"properties":{"applied_to":{"items":{"properties":{"applied_to_resources":{"items":{"properties":{"server":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"}},"required":["id"],"type":"object"},"type":{"description":"Type of resource referenced","enum":["server"],"example":"server","type":"string"}},"type":"object"},"type":"array"},"label_selector":{"properties":{"selector":{"description":"Label selector","example":"env=prod","type":"string"}},"required":["selector"],"type":"object"},"server":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"}},"required":["id"],"type":"object"},"type":{"description":"Type of resource referenced","enum":["server","label_selector"],"example":"server","type":"string"}},"required":["type"],"type":"object"},"type":"array"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.612Z","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"rules":{"items":{"properties":{"description":{"description":"Description of the Rule","maxLength":255,"nullable":true,"type":"string"},"destination_ips":{"description":"List of permitted IPv4/IPv6 addresses in CIDR notation. Use `0.0.0.0/0` to allow all IPv4 addresses and `::/0` to allow all IPv6 addresses. You can specify 100 CIDRs at most.","example":["28.239.13.1/32","28.239.14.0/24","ff21:1eac:9a3b:ee58:5ca:990c:8bc9:c03b/128"],"items":{"type":"string"},"type":"array"},"direction":{"description":"Select traffic direction on which rule should be applied. Use `source_ips` for direction `in` and `destination_ips` for direction `out`.","enum":["in","out"],"type":"string"},"port":{"description":"Port or port range to which traffic will be allowed, only applicable for protocols TCP and UDP. A port range can be specified by separating two ports with a dash, e.g `1024-5000`.","example":"80","type":"string"},"protocol":{"description":"Type of traffic to allow","enum":["tcp","udp","icmp","esp","gre"],"type":"string"},"source_ips":{"description":"List of permitted IPv4/IPv6 addresses in CIDR notation. Use `0.0.0.0/0` to allow all IPv4 addresses and `::/0` to allow all IPv6 addresses. You can specify 100 CIDRs at most.","example":["28.239.13.1/32","28.239.14.0/24","ff21:1eac:9a3b:ee58:5ca:990c:8bc9:c03b/128"],"items":{"type":"string"},"type":"array"}},"required":["direction","protocol"],"title":"Rule","type":"object"},"type":"array"}},"required":["id","name","created","rules","applied_to"],"title":"Firewall","type":"object"}},"required":["firewall"],"title":"FirewallResponse","type":"object"}}},"description":"The `firewall` key contains the Firewall that was just updated"}},"summary":"Update a Firewall","tags":["Firewalls"]}},"/firewalls/{id}/actions":{"get":{"description":"Returns all Action objects for a Firewall. You can sort the results by using the `sort` URI parameter, and filter them with the `status` parameter.","parameters":[{"description":"ID of the Resource","in":"path","name":"id","required":true,"schema":{"type":"integer"}},{"description":"Can be used multiple times.","in":"query","name":"sort","required":false,"schema":{"enum":["id","id:asc","id:desc","command","command:asc","command:desc","status","status:asc","status:desc","progress","progress:asc","progress:desc","started","started:asc","started:desc","finished","finished:asc","finished:desc"],"title":"ParameterSort","type":"string"}},{"description":"Can be used multiple times, the response will contain only Actions with specified statuses","in":"query","name":"status","required":false,"schema":{"enum":["running","success","error"],"title":"ParameterStatus","type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"actions":[{"command":"set_firewall_rules","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.613Z","id":13,"progress":100,"resources":[{"id":38,"type":"firewall"}],"started":"2025-08-15T13:52:16.613Z","status":"success"}]},"schema":{"properties":{"actions":{"items":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.613Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.613Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"},"type":"array"},"meta":{"properties":{"pagination":{"properties":{"last_page":{"description":"ID of the last page available. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"next_page":{"description":"ID of the next page. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"page":{"description":"Current page number","example":3,"type":"number"},"per_page":{"description":"Maximum number of items shown per page in the response","example":25,"type":"number"},"previous_page":{"description":"ID of the previous page. Can be null if the current page is the first one.","example":2,"nullable":true,"type":"number"},"total_entries":{"description":"The total number of entries that exist in the database for this query. Nullable if unknown.","example":100,"nullable":true,"type":"number"}},"required":["page","per_page","previous_page","next_page","last_page","total_entries"],"type":"object"}},"required":["pagination"],"type":"object"}},"required":["actions"],"title":"ActionsResponse","type":"object"}}},"description":"The `actions` key contains a list of Actions"}},"summary":"Get all Actions for a Firewall","tags":["Firewall Actions"]}},"/firewalls/{id}/actions/apply_to_resources":{"post":{"description":"Applies one Firewall to multiple resources.\n\nCurrently servers (public network interface) and label selectors are supported.\n\n#### Call specific error codes\n\n| Code                          | Description                                                   |\n|-------------------------------|---------------------------------------------------------------|\n| `firewall_already_applied`    | Firewall was already applied on resource                      |\n| `incompatible_network_type`   | The Network type is incompatible for the given resource       |\n| `firewall_resource_not_found` | The resource the Firewall should be attached to was not found |\n","parameters":[{"description":"ID of the Firewall","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"example":{"apply_to":[{"server":{"id":42},"type":"server"}]},"schema":{"properties":{"apply_to":{"description":"Resources the Firewall should be applied to","items":{"properties":{"label_selector":{"description":"Configuration for type label_selector, required if type is `label_selector`","properties":{"selector":{"description":"Label selector","example":"env=prod","type":"string"}},"required":["selector"],"type":"object"},"server":{"description":"Configuration for type server, required if type is `server`","properties":{"id":{"description":"ID of the Server","type":"integer"}},"required":["id"],"type":"object"},"type":{"description":"Type of the resource","enum":["server","label_selector"],"type":"string"}},"title":"FirewallApplyToResources","type":"object"},"type":"array"}},"required":["apply_to"],"title":"ApplyToResourcesRequest","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"actions":[{"command":"apply_firewall","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.613Z","id":14,"progress":100,"resources":[{"id":42,"type":"server"},{"id":38,"type":"firewall"}],"started":"2025-08-15T13:52:16.613Z","status":"success"}]},"schema":{"properties":{"actions":{"items":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.613Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.613Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"},"type":"array"},"meta":{"properties":{"pagination":{"properties":{"last_page":{"description":"ID of the last page available. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"next_page":{"description":"ID of the next page. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"page":{"description":"Current page number","example":3,"type":"number"},"per_page":{"description":"Maximum number of items shown per page in the response","example":25,"type":"number"},"previous_page":{"description":"ID of the previous page. Can be null if the current page is the first one.","example":2,"nullable":true,"type":"number"},"total_entries":{"description":"The total number of entries that exist in the database for this query. Nullable if unknown.","example":100,"nullable":true,"type":"number"}},"required":["page","per_page","previous_page","next_page","last_page","total_entries"],"type":"object"}},"required":["pagination"],"type":"object"}},"required":["actions"],"title":"ActionsResponse","type":"object"}}},"description":"The `actions` key contains multiple `apply_firewall` Actions"}},"summary":"Apply to Resources","tags":["Firewall Actions"]}},"/firewalls/{id}/actions/remove_from_resources":{"post":{"description":"Removes one Firewall from multiple resources.\n\nCurrently only Servers (and their public network interfaces) are supported.\n\n#### Call specific error codes\n\n| Code                                  | Description                                                            |\n|---------------------------------------|------------------------------------------------------------------------|\n| `firewall_already_removed`            | Firewall was already removed from the resource                         |\n| `firewall_resource_not_found`         | The resource the Firewall should be attached to was not found          |\n| `firewall_managed_by_label_selector`  | Firewall was applied via label selector and cannot be removed manually |\n","parameters":[{"description":"ID of the Firewall","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"example":{"remove_from":[{"server":{"id":42},"type":"server"}]},"schema":{"properties":{"remove_from":{"description":"Resources the Firewall should be removed from","items":{"properties":{"label_selector":{"description":"Configuration for type label_selector, required if type is `label_selector`","properties":{"selector":{"description":"Label selector","example":"env=prod","type":"string"}},"required":["selector"],"type":"object"},"server":{"description":"Configuration for type server, required if type is `server`","properties":{"id":{"description":"ID of the Server","type":"integer"}},"required":["id"],"type":"object"},"type":{"description":"Type of the resource","enum":["server","label_selector"],"type":"string"}},"title":"FirewallRemoveFromResources","type":"object"},"type":"array"}},"required":["remove_from"],"title":"RemoveFromResourcesRequest","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"actions":[{"command":"remove_firewall","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.613Z","id":14,"progress":100,"resources":[{"id":42,"type":"server"},{"id":38,"type":"firewall"}],"started":"2025-08-15T13:52:16.613Z","status":"success"}]},"schema":{"properties":{"actions":{"items":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.613Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.613Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"},"type":"array"},"meta":{"properties":{"pagination":{"properties":{"last_page":{"description":"ID of the last page available. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"next_page":{"description":"ID of the next page. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"page":{"description":"Current page number","example":3,"type":"number"},"per_page":{"description":"Maximum number of items shown per page in the response","example":25,"type":"number"},"previous_page":{"description":"ID of the previous page. Can be null if the current page is the first one.","example":2,"nullable":true,"type":"number"},"total_entries":{"description":"The total number of entries that exist in the database for this query. Nullable if unknown.","example":100,"nullable":true,"type":"number"}},"required":["page","per_page","previous_page","next_page","last_page","total_entries"],"type":"object"}},"required":["pagination"],"type":"object"}},"required":["actions"],"title":"ActionsResponse","type":"object"}}},"description":"The `actions` key contains multiple `remove_firewall` Actions"}},"summary":"Remove from Resources","tags":["Firewall Actions"]}},"/firewalls/{id}/actions/set_rules":{"post":{"description":"Sets the rules of a Firewall.\n\nAll existing rules will be overwritten. Pass an empty `rules` array to remove all rules.\nThe maximum amount of rules that can be defined is 50.\n\n#### Call specific error codes\n\n| Code                          | Description                                                   |\n|-------------------------------|---------------------------------------------------------------|\n| `firewall_resource_not_found` | The resource the Firewall should be attached to was not found |\n","parameters":[{"description":"ID of the Firewall","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"examples":{"rules":{"value":{"rules":[{"description":"Allow port 80","direction":"in","port":"80","protocol":"tcp","source_ips":["28.239.13.1/32","28.239.14.0/24","ff21:1eac:9a3b:ee58:5ca:990c:8bc9:c03b/128"]}]}}},"schema":{"properties":{"rules":{"description":"Array of rules","items":{"properties":{"description":{"description":"Description of the Rule","maxLength":255,"nullable":true,"type":"string"},"destination_ips":{"description":"List of permitted IPv4/IPv6 addresses in CIDR notation. Use `0.0.0.0/0` to allow all IPv4 addresses and `::/0` to allow all IPv6 addresses. You can specify 100 CIDRs at most.","example":["28.239.13.1/32","28.239.14.0/24","ff21:1eac:9a3b:ee58:5ca:990c:8bc9:c03b/128"],"items":{"type":"string"},"type":"array"},"direction":{"description":"Select traffic direction on which rule should be applied. Use `source_ips` for direction `in` and `destination_ips` for direction `out`.","enum":["in","out"],"type":"string"},"port":{"description":"Port or port range to which traffic will be allowed, only applicable for protocols TCP and UDP. A port range can be specified by separating two ports with a dash, e.g `1024-5000`.","example":"80","type":"string"},"protocol":{"description":"Type of traffic to allow","enum":["tcp","udp","icmp","esp","gre"],"type":"string"},"source_ips":{"description":"List of permitted IPv4/IPv6 addresses in CIDR notation. Use `0.0.0.0/0` to allow all IPv4 addresses and `::/0` to allow all IPv6 addresses. You can specify 100 CIDRs at most.","example":["28.239.13.1/32","28.239.14.0/24","ff21:1eac:9a3b:ee58:5ca:990c:8bc9:c03b/128"],"items":{"type":"string"},"type":"array"}},"required":["direction","protocol"],"title":"Rule","type":"object"},"maxItems":50,"type":"array"}},"required":["rules"],"title":"SetRulesRequest","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"actions":[{"command":"set_firewall_rules","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.613Z","id":13,"progress":100,"resources":[{"id":38,"type":"firewall"}],"started":"2025-08-15T13:52:16.613Z","status":"success"},{"command":"apply_firewall","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.613Z","id":14,"progress":100,"resources":[{"id":38,"type":"firewall"},{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.613Z","status":"success"}]},"schema":{"properties":{"actions":{"items":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.613Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.613Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"},"type":"array"},"meta":{"properties":{"pagination":{"properties":{"last_page":{"description":"ID of the last page available. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"next_page":{"description":"ID of the next page. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"page":{"description":"Current page number","example":3,"type":"number"},"per_page":{"description":"Maximum number of items shown per page in the response","example":25,"type":"number"},"previous_page":{"description":"ID of the previous page. Can be null if the current page is the first one.","example":2,"nullable":true,"type":"number"},"total_entries":{"description":"The total number of entries that exist in the database for this query. Nullable if unknown.","example":100,"nullable":true,"type":"number"}},"required":["page","per_page","previous_page","next_page","last_page","total_entries"],"type":"object"}},"required":["pagination"],"type":"object"}},"required":["actions"],"title":"ActionsResponse","type":"object"}}},"description":"The `action` key contains one `set_firewall_rules` Action plus one `apply_firewall` Action per resource where the Firewall is active"}},"summary":"Set Rules","tags":["Firewall Actions"]}},"/firewalls/{id}/actions/{action_id}":{"get":{"description":"Returns a specific Action for a Firewall.","parameters":[{"description":"ID of the Firewall","in":"path","name":"id","required":true,"schema":{"type":"integer"}},{"description":"ID of the Action","in":"path","name":"action_id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"example":{"action":{"command":"set_firewall_rules","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.613Z","id":13,"progress":100,"resources":[{"id":38,"type":"firewall"}],"started":"2025-08-15T13:52:16.613Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.613Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.613Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the Firewall Action"}},"summary":"Get an Action for a Firewall","tags":["Firewall Actions"]}},"/floating_ips":{"get":{"description":"Returns all Floating IP objects.","parameters":[{"description":"Can be used to filter Floating IPs by their name. The response will only contain the Floating IP matching the specified name.","in":"query","name":"name","required":false,"schema":{"type":"string"}},{"description":"Can be used to filter Floating IPs by labels. The response will only contain Floating IPs matching the label selector.","in":"query","name":"label_selector","required":false,"schema":{"type":"string"}},{"description":"Can be used multiple times. Choices id id:asc id:desc created created:asc created:desc","in":"query","name":"sort","required":false,"schema":{"enum":["id","id:asc","id:desc","created","created:asc","created:desc"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"floating_ips":{"items":{"properties":{"blocked":{"description":"Whether the IP is blocked","example":false,"type":"boolean"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.613Z","type":"string"},"description":{"description":"Description of the Resource","example":"this describes my resource","nullable":true,"type":"string"},"dns_ptr":{"description":"Array of reverse DNS entries","items":{"properties":{"dns_ptr":{"description":"DNS pointer for the specific IP address","example":"server.example.com","type":"string"},"ip":{"description":"Single IPv4 or IPv6 address","example":"2001:db8::1","type":"string"}},"required":["ip","dns_ptr"],"type":"object"},"type":"array"},"home_location":{"description":"Location the Floating IP was created in. Routing is optimized for this Location.","properties":{"city":{"description":"City the Location is closest to","example":"Falkenstein","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 code of the country the Location resides in","example":"DE","type":"string"},"description":{"description":"Description of the Location","example":"Falkenstein DC Park 1","type":"string"},"id":{"description":"ID of the Location","example":1,"type":"number"},"latitude":{"description":"Latitude of the city closest to the Location","example":50.47612,"type":"number"},"longitude":{"description":"Longitude of the city closest to the Location","example":12.370071,"type":"number"},"name":{"description":"Unique identifier of the Location","example":"fsn1","type":"string"},"network_zone":{"description":"Name of network zone this Location resides in","example":"eu-central","type":"string"}},"required":["id","name","description","country","city","latitude","longitude","network_zone"],"type":"object"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"ip":{"description":"IP address","example":"131.232.99.1","type":"string"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"protection":{"description":"Protection configuration for the Resource","properties":{"delete":{"description":"If true, prevents the Resource from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"server":{"description":"ID of the Server the Floating IP is assigned to, null if it is not assigned at all","example":42,"nullable":true,"type":"integer"},"type":{"description":"Type of the Floating IP","enum":["ipv4","ipv6"],"type":"string"}},"required":["id","name","description","ip","type","server","dns_ptr","home_location","blocked","protection","labels","created"],"type":"object"},"type":"array"},"meta":{"properties":{"pagination":{"properties":{"last_page":{"description":"ID of the last page available. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"next_page":{"description":"ID of the next page. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"page":{"description":"Current page number","example":3,"type":"number"},"per_page":{"description":"Maximum number of items shown per page in the response","example":25,"type":"number"},"previous_page":{"description":"ID of the previous page. Can be null if the current page is the first one.","example":2,"nullable":true,"type":"number"},"total_entries":{"description":"The total number of entries that exist in the database for this query. Nullable if unknown.","example":100,"nullable":true,"type":"number"}},"required":["page","per_page","previous_page","next_page","last_page","total_entries"],"type":"object"}},"required":["pagination"],"type":"object"}},"required":["floating_ips"],"type":"object"}}},"description":"The `floating_ips` key in the reply contains an array of Floating IP objects with this structure"}},"summary":"Get all Floating IPs","tags":["Floating IPs"]},"post":{"description":"Creates a new Floating IP assigned to a Server. If you want to create a Floating IP that is not bound to a Server, you need to provide the `home_location` key instead of `server`. This can be either the ID or the name of the Location this IP shall be created in. Note that a Floating IP can be assigned to a Server in any Location later on. For optimal routing it is advised to use the Floating IP in the same Location it was created in.","requestBody":{"content":{"application/json":{"schema":{"properties":{"description":{"example":"Web Frontend","type":"string"},"home_location":{"description":"Home Location (routing is optimized for that Location). Only optional if Server argument is passed.","example":"fsn1","type":"string"},"labels":{"description":"User-defined labels (key-value pairs)","example":{"labelkey":"value"},"type":"object"},"name":{"example":"Web Frontend","type":"string"},"server":{"description":"Server to assign the Floating IP to","example":42,"type":"integer"},"type":{"description":"Floating IP type","enum":["ipv4","ipv6"],"type":"string"}},"required":["type"],"title":"CreateFloatingIPRequest","type":"object"}}},"description":"The `type` argument is required while `home_location` and `server` are mutually exclusive."},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"create_floating_ip","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.613Z","status":"running"},"floating_ip":{"blocked":false,"created":"2025-08-15T13:52:16.613Z","description":"Web Frontend","dns_ptr":[{"dns_ptr":"server.example.com","ip":"2001:db8::1"}],"home_location":{"city":"Falkenstein","country":"DE","description":"Falkenstein DC Park 1","id":1,"latitude":50.47612,"longitude":12.370071,"name":"fsn1","network_zone":"eu-central"},"id":4711,"ip":"131.232.99.1","labels":{"env":"dev"},"name":"Web Frontend","protection":{"delete":false},"server":42,"type":"ipv4"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.613Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.613Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"},"floating_ip":{"properties":{"blocked":{"description":"Whether the IP is blocked","example":false,"type":"boolean"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.613Z","type":"string"},"description":{"description":"Description of the Resource","example":"this describes my resource","nullable":true,"type":"string"},"dns_ptr":{"description":"Array of reverse DNS entries","items":{"properties":{"dns_ptr":{"description":"DNS pointer for the specific IP address","example":"server.example.com","type":"string"},"ip":{"description":"Single IPv4 or IPv6 address","example":"2001:db8::1","type":"string"}},"required":["ip","dns_ptr"],"type":"object"},"type":"array"},"home_location":{"description":"Location the Floating IP was created in. Routing is optimized for this Location.","properties":{"city":{"description":"City the Location is closest to","example":"Falkenstein","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 code of the country the Location resides in","example":"DE","type":"string"},"description":{"description":"Description of the Location","example":"Falkenstein DC Park 1","type":"string"},"id":{"description":"ID of the Location","example":1,"type":"number"},"latitude":{"description":"Latitude of the city closest to the Location","example":50.47612,"type":"number"},"longitude":{"description":"Longitude of the city closest to the Location","example":12.370071,"type":"number"},"name":{"description":"Unique identifier of the Location","example":"fsn1","type":"string"},"network_zone":{"description":"Name of network zone this Location resides in","example":"eu-central","type":"string"}},"required":["id","name","description","country","city","latitude","longitude","network_zone"],"type":"object"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"ip":{"description":"IP address","example":"131.232.99.1","type":"string"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"protection":{"description":"Protection configuration for the Resource","properties":{"delete":{"description":"If true, prevents the Resource from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"server":{"description":"ID of the Server the Floating IP is assigned to, null if it is not assigned at all","example":42,"nullable":true,"type":"integer"},"type":{"description":"Type of the Floating IP","enum":["ipv4","ipv6"],"type":"string"}},"required":["id","name","description","ip","type","server","dns_ptr","home_location","blocked","protection","labels","created"],"type":"object"}},"required":["floating_ip"],"type":"object"}}},"description":"The `floating_ip` key in the reply contains the object that was just created"}},"summary":"Create a Floating IP","tags":["Floating IPs"]}},"/floating_ips/{id}":{"delete":{"description":"Deletes a Floating IP. If it is currently assigned to a Server it will automatically get unassigned.","parameters":[{"description":"ID of the Floating IP","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"204":{"description":"Floating IP deleted"}},"summary":"Delete a Floating IP","tags":["Floating IPs"]},"get":{"description":"Returns a specific Floating IP object.","parameters":[{"description":"ID of the Floating IP","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"floating_ip":{"properties":{"blocked":{"description":"Whether the IP is blocked","example":false,"type":"boolean"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.613Z","type":"string"},"description":{"description":"Description of the Resource","example":"this describes my resource","nullable":true,"type":"string"},"dns_ptr":{"description":"Array of reverse DNS entries","items":{"properties":{"dns_ptr":{"description":"DNS pointer for the specific IP address","example":"server.example.com","type":"string"},"ip":{"description":"Single IPv4 or IPv6 address","example":"2001:db8::1","type":"string"}},"required":["ip","dns_ptr"],"type":"object"},"type":"array"},"home_location":{"description":"Location the Floating IP was created in. Routing is optimized for this Location.","properties":{"city":{"description":"City the Location is closest to","example":"Falkenstein","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 code of the country the Location resides in","example":"DE","type":"string"},"description":{"description":"Description of the Location","example":"Falkenstein DC Park 1","type":"string"},"id":{"description":"ID of the Location","example":1,"type":"number"},"latitude":{"description":"Latitude of the city closest to the Location","example":50.47612,"type":"number"},"longitude":{"description":"Longitude of the city closest to the Location","example":12.370071,"type":"number"},"name":{"description":"Unique identifier of the Location","example":"fsn1","type":"string"},"network_zone":{"description":"Name of network zone this Location resides in","example":"eu-central","type":"string"}},"required":["id","name","description","country","city","latitude","longitude","network_zone"],"type":"object"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"ip":{"description":"IP address","example":"131.232.99.1","type":"string"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"protection":{"description":"Protection configuration for the Resource","properties":{"delete":{"description":"If true, prevents the Resource from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"server":{"description":"ID of the Server the Floating IP is assigned to, null if it is not assigned at all","example":42,"nullable":true,"type":"integer"},"type":{"description":"Type of the Floating IP","enum":["ipv4","ipv6"],"type":"string"}},"required":["id","name","description","ip","type","server","dns_ptr","home_location","blocked","protection","labels","created"],"type":"object"}},"required":["floating_ip"],"type":"object"}}},"description":"The `floating_ip` key in the reply contains a Floating IP object with this structure"}},"summary":"Get a Floating IP","tags":["Floating IPs"]},"put":{"description":"Updates the description or labels of a Floating IP.\nAlso note that when updating labels, the Floating IP’s current set of labels will be replaced with the labels provided in the request body. So, for example, if you want to add a new label, you have to provide all existing labels plus the new label in the request body.","parameters":[{"description":"ID of the Floating IP","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"description":{"description":"New Description to set","example":"Web Frontend","type":"string"},"labels":{"description":"User-defined labels (key-value pairs)","example":{"labelkey":"value"},"type":"object"},"name":{"description":"New unique name to set","example":"Web Frontend","type":"string"}},"title":"UpdateFloatingIPRequest","type":"object"}}}},"responses":{"200":{"content":{"application/json":{"example":{"floating_ip":{"blocked":false,"created":"2025-08-15T13:52:16.614Z","description":"Web Frontend","dns_ptr":[{"dns_ptr":"server.example.com","ip":"2001:db8::1"}],"home_location":{"city":"Falkenstein","country":"DE","description":"Falkenstein DC Park 1","id":1,"latitude":50.47612,"longitude":12.370071,"name":"fsn1","network_zone":"eu-central"},"id":4711,"ip":"131.232.99.1","labels":{"labelkey":"value"},"name":"Web Frontend","protection":{"delete":false},"server":42,"type":"ipv4"}},"schema":{"properties":{"floating_ip":{"properties":{"blocked":{"description":"Whether the IP is blocked","example":false,"type":"boolean"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.614Z","type":"string"},"description":{"description":"Description of the Resource","example":"this describes my resource","nullable":true,"type":"string"},"dns_ptr":{"description":"Array of reverse DNS entries","items":{"properties":{"dns_ptr":{"description":"DNS pointer for the specific IP address","example":"server.example.com","type":"string"},"ip":{"description":"Single IPv4 or IPv6 address","example":"2001:db8::1","type":"string"}},"required":["ip","dns_ptr"],"type":"object"},"type":"array"},"home_location":{"description":"Location the Floating IP was created in. Routing is optimized for this Location.","properties":{"city":{"description":"City the Location is closest to","example":"Falkenstein","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 code of the country the Location resides in","example":"DE","type":"string"},"description":{"description":"Description of the Location","example":"Falkenstein DC Park 1","type":"string"},"id":{"description":"ID of the Location","example":1,"type":"number"},"latitude":{"description":"Latitude of the city closest to the Location","example":50.47612,"type":"number"},"longitude":{"description":"Longitude of the city closest to the Location","example":12.370071,"type":"number"},"name":{"description":"Unique identifier of the Location","example":"fsn1","type":"string"},"network_zone":{"description":"Name of network zone this Location resides in","example":"eu-central","type":"string"}},"required":["id","name","description","country","city","latitude","longitude","network_zone"],"type":"object"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"ip":{"description":"IP address","example":"131.232.99.1","type":"string"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"protection":{"description":"Protection configuration for the Resource","properties":{"delete":{"description":"If true, prevents the Resource from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"server":{"description":"ID of the Server the Floating IP is assigned to, null if it is not assigned at all","example":42,"nullable":true,"type":"integer"},"type":{"description":"Type of the Floating IP","enum":["ipv4","ipv6"],"type":"string"}},"required":["id","name","description","ip","type","server","dns_ptr","home_location","blocked","protection","labels","created"],"type":"object"}},"required":["floating_ip"],"type":"object"}}},"description":"The `floating_ip` key in the reply contains the modified Floating IP object with the new description"}},"summary":"Update a Floating IP","tags":["Floating IPs"]}},"/floating_ips/{id}/actions":{"get":{"description":"Returns all Action objects for a Floating IP. You can sort the results by using the `sort` URI parameter, and filter them with the `status` parameter.","parameters":[{"description":"ID of the Floating IP","in":"path","name":"id","required":true,"schema":{"type":"integer"}},{"description":"Can be used multiple times.","in":"query","name":"sort","required":false,"schema":{"enum":["id","id:asc","id:desc","command","command:asc","command:desc","status","status:asc","status:desc","progress","progress:asc","progress:desc","started","started:asc","started:desc","finished","finished:asc","finished:desc"],"title":"ParameterSort","type":"string"}},{"description":"Can be used multiple times, the response will contain only Actions with specified statuses","in":"query","name":"status","required":false,"schema":{"enum":["running","success","error"],"title":"ParameterStatus","type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"actions":[{"command":"assign_floating_ip","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.614Z","id":13,"progress":100,"resources":[{"id":4711,"type":"server"},{"id":4712,"type":"floating_ip"}],"started":"2025-08-15T13:52:16.614Z","status":"success"}]},"schema":{"properties":{"actions":{"items":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.614Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.614Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"},"type":"array"}},"required":["actions"],"type":"object"}}},"description":"The `actions` key contains a list of Actions"}},"summary":"Get all Actions for a Floating IP","tags":["Floating IP Actions"]}},"/floating_ips/{id}/actions/assign":{"post":{"description":"Assigns a Floating IP to a Server.","parameters":[{"description":"ID of the Floating IP","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"description":"#### Call specific error codes\n\n| Code                          | Description                                                   |\n|------------------------------ |-------------------------------------------------------------- |\n| `floating_ip_assigned`        | The floating IP is already assigned                           |\n","properties":{"server":{"description":"ID of the Server the Floating IP shall be assigned to","example":42,"type":"integer"}},"required":["server"],"title":"AssignFloatingIPRequest","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"assign_floating_ip","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.614Z","id":13,"progress":100,"resources":[{"id":42,"type":"server"},{"id":4711,"type":"floating_ip"}],"started":"2025-08-15T13:52:16.614Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.614Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.614Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `assign` Action"}},"summary":"Assign a Floating IP to a Server","tags":["Floating IP Actions"]}},"/floating_ips/{id}/actions/change_dns_ptr":{"post":{"description":"Changes the hostname that will appear when getting the hostname belonging to this Floating IP.","parameters":[{"description":"ID of the Floating IP","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"dns_ptr":{"description":"Hostname to set as a reverse DNS PTR entry, will reset to original default value if `null`","example":"server02.example.com","nullable":true,"type":"string"},"ip":{"description":"IP address for which to set the reverse DNS entry","example":"1.2.3.4","type":"string"}},"required":["ip","dns_ptr"],"title":"ChangeDNSPTRRequest","type":"object"}}},"description":"Select the IP address for which to change the DNS entry by passing `ip`. For a Floating IP of type `ipv4` this must exactly match the IP address of the Floating IP. For a Floating IP of type `ipv6` this must be a single IP within the IPv6 /64 range that belongs to this Floating IP. You can add up to 100 IPv6 reverse DNS entries.\n\nThe target hostname is set by passing `dns_ptr`.\n"},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"change_dns_ptr","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.614Z","id":13,"progress":100,"resources":[{"id":4711,"type":"floating_ip"}],"started":"2025-08-15T13:52:16.614Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.614Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.614Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `change_dns_ptr` Action"}},"summary":"Change reverse DNS entry for a Floating IP","tags":["Floating IP Actions"]}},"/floating_ips/{id}/actions/change_protection":{"post":{"description":"Changes the protection configuration of the Floating IP.","parameters":[{"description":"ID of the Floating IP","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"delete":{"description":"If true, prevents the Floating IP from being deleted","example":true,"type":"boolean"}},"title":"ChangeProtectionRequest","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"change_protection","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.614Z","id":13,"progress":100,"resources":[{"id":4711,"type":"floating_ip"}],"started":"2025-08-15T13:52:16.614Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.614Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.614Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `change_protection` Action"}},"summary":"Change Floating IP Protection","tags":["Floating IP Actions"]}},"/floating_ips/{id}/actions/unassign":{"post":{"description":"Unassigns a Floating IP, resulting in it being unreachable. You may assign it to a Server again at a later time.","parameters":[{"description":"ID of the Floating IP","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"unassign_floating_ip","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.614Z","id":13,"progress":100,"resources":[{"id":42,"type":"server"},{"id":4711,"type":"floating_ip"}],"started":"2025-08-15T13:52:16.614Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.614Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.614Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `unassign` Action"}},"summary":"Unassign a Floating IP","tags":["Floating IP Actions"]}},"/floating_ips/{id}/actions/{action_id}":{"get":{"description":"Returns a specific Action object for a Floating IP.","parameters":[{"description":"ID of the Floating IP","in":"path","name":"id","required":true,"schema":{"type":"integer"}},{"description":"ID of the Action","in":"path","name":"action_id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"example":{"action":{"command":"assign_floating_ip","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.614Z","id":13,"progress":100,"resources":[{"id":42,"type":"server"},{"id":4711,"type":"floating_ip"}],"started":"2025-08-15T13:52:16.614Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.614Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.614Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key in the reply has this structure"}},"summary":"Get an Action for a Floating IP","tags":["Floating IP Actions"]}},"/images":{"get":{"description":"Returns all Image objects. You can select specific Image types only and sort the results by using URI parameters.","parameters":[{"description":"Can be used multiple times.","in":"query","name":"sort","required":false,"schema":{"enum":["id","id:asc","id:desc","name","name:asc","name:desc","created","created:asc","created:desc"],"type":"string"}},{"description":"Can be used multiple times.","in":"query","name":"type","required":false,"schema":{"enum":["system","snapshot","backup","app"],"type":"string"}},{"description":"Can be used multiple times. The response will only contain Images matching the status.","in":"query","name":"status","required":false,"schema":{"enum":["available","creating"],"type":"string"}},{"description":"Can be used multiple times. Server ID linked to the Image. Only available for Images of type `backup`","in":"query","name":"bound_to","required":false,"schema":{"type":"string"}},{"description":"Can be used multiple times.","in":"query","name":"include_deprecated","required":false,"schema":{"type":"boolean"}},{"description":"Can be used to filter resources by their name. The response will only contain the resources matching the specified name","in":"query","name":"name","required":false,"schema":{"type":"string"}},{"description":"Can be used to filter resources by labels. The response will only contain resources matching the label selector.","in":"query","name":"label_selector","required":false,"schema":{"type":"string"}},{"description":"Return only Images with the given architecture.","in":"query","name":"architecture","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"images":{"items":{"properties":{"bound_to":{"description":"ID of Server the Image is bound to. Only set for Images of type `backup`.","example":null,"nullable":true,"type":"integer"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.614Z","type":"string"},"created_from":{"description":"Information about the Server the Image was created from","nullable":true,"properties":{"id":{"description":"ID of the Server the Image was created from","example":1,"type":"integer"},"name":{"description":"Server name at the time the Image was created","example":"Server","type":"string"}},"required":["id","name"],"type":"object"},"deleted":{"description":"Point in time where the Image was deleted (in ISO-8601 format)","example":null,"nullable":true,"type":"string"},"deprecated":{"description":"Point in time when the Image is considered to be deprecated (in ISO-8601 format)","example":"2025-08-15T13:52:16.614Z","nullable":true,"type":"string"},"description":{"description":"Description of the Image","example":"Ubuntu 20.04 Standard 64 bit","type":"string"},"disk_size":{"description":"Size of the disk contained in the Image in GB","example":10,"type":"number"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"image_size":{"description":"Size of the Image file in our storage in GB. For snapshot Images this is the value relevant for calculating costs for the Image.","example":2.3,"nullable":true,"type":"number"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Unique identifier of the Image. This value is only set for system Images.","example":"ubuntu-20.04","nullable":true,"type":"string"},"os_flavor":{"description":"Flavor of operating system contained in the Image","enum":["ubuntu","centos","debian","fedora","unknown"],"example":"ubuntu","type":"string"},"os_version":{"description":"Operating system version","example":"20.04","nullable":true,"type":"string"},"protection":{"description":"Protection configuration for the Resource","properties":{"delete":{"description":"If true, prevents the Resource from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"rapid_deploy":{"description":"Indicates that rapid deploy of the Image is available","example":false,"type":"boolean"},"status":{"description":"Whether the Image can be used or if it's still being created or unavailable","enum":["available","creating","unavailable"],"type":"string"},"type":{"description":"Type of the Image","enum":["system","app","snapshot","backup","temporary"],"example":"snapshot","type":"string"}},"required":["id","type","status","name","description","image_size","disk_size","created","created_from","bound_to","os_flavor","os_version","protection","deprecated","deleted","labels"],"type":"object"},"type":"array"},"meta":{"properties":{"pagination":{"properties":{"last_page":{"description":"ID of the last page available. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"next_page":{"description":"ID of the next page. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"page":{"description":"Current page number","example":3,"type":"number"},"per_page":{"description":"Maximum number of items shown per page in the response","example":25,"type":"number"},"previous_page":{"description":"ID of the previous page. Can be null if the current page is the first one.","example":2,"nullable":true,"type":"number"},"total_entries":{"description":"The total number of entries that exist in the database for this query. Nullable if unknown.","example":100,"nullable":true,"type":"number"}},"required":["page","per_page","previous_page","next_page","last_page","total_entries"],"type":"object"}},"required":["pagination"],"type":"object"}},"required":["images"],"type":"object"}}},"description":"The `images` key in the reply contains an array of Image objects with this structure"}},"summary":"Get all Images","tags":["Images"]}},"/images/{id}":{"delete":{"description":"Deletes an Image. Only Images of type `snapshot` and `backup` can be deleted.","parameters":[{"description":"ID of the Image","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"204":{"description":"Image deleted"}},"summary":"Delete an Image","tags":["Images"]},"get":{"description":"Returns a specific Image object.","parameters":[{"description":"ID of the Image","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"image":{"properties":{"bound_to":{"description":"ID of Server the Image is bound to. Only set for Images of type `backup`.","example":null,"nullable":true,"type":"integer"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.614Z","type":"string"},"created_from":{"description":"Information about the Server the Image was created from","nullable":true,"properties":{"id":{"description":"ID of the Server the Image was created from","example":1,"type":"integer"},"name":{"description":"Server name at the time the Image was created","example":"Server","type":"string"}},"required":["id","name"],"type":"object"},"deleted":{"description":"Point in time where the Image was deleted (in ISO-8601 format)","example":null,"nullable":true,"type":"string"},"deprecated":{"description":"Point in time when the Image is considered to be deprecated (in ISO-8601 format)","example":"2025-08-15T13:52:16.614Z","nullable":true,"type":"string"},"description":{"description":"Description of the Image","example":"Ubuntu 20.04 Standard 64 bit","type":"string"},"disk_size":{"description":"Size of the disk contained in the Image in GB","example":10,"type":"number"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"image_size":{"description":"Size of the Image file in our storage in GB. For snapshot Images this is the value relevant for calculating costs for the Image.","example":2.3,"nullable":true,"type":"number"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Unique identifier of the Image. This value is only set for system Images.","example":"ubuntu-20.04","nullable":true,"type":"string"},"os_flavor":{"description":"Flavor of operating system contained in the Image","enum":["ubuntu","centos","debian","fedora","unknown"],"example":"ubuntu","type":"string"},"os_version":{"description":"Operating system version","example":"20.04","nullable":true,"type":"string"},"protection":{"description":"Protection configuration for the Resource","properties":{"delete":{"description":"If true, prevents the Resource from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"rapid_deploy":{"description":"Indicates that rapid deploy of the Image is available","example":false,"type":"boolean"},"status":{"description":"Whether the Image can be used or if it's still being created or unavailable","enum":["available","creating","unavailable"],"type":"string"},"type":{"description":"Type of the Image","enum":["system","app","snapshot","backup","temporary"],"example":"snapshot","type":"string"}},"required":["id","type","status","name","description","image_size","disk_size","created","created_from","bound_to","os_flavor","os_version","protection","deprecated","deleted","labels"],"type":"object"}},"type":"object"}}},"description":"The `image` key in the reply contains an Image object with this structure"}},"summary":"Get an Image","tags":["Images"]},"put":{"description":"Updates the Image. You may change the description, convert a Backup Image to a Snapshot Image or change the Image labels. Only Images of type `snapshot` and `backup` can be updated.\n\nNote that when updating labels, the current set of labels will be replaced with the labels provided in the request body. So, for example, if you want to add a new label, you have to provide all existing labels plus the new label in the request body.\n","parameters":[{"description":"ID of the Image","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"description":{"description":"New description of Image","example":"My new Image description","type":"string"},"labels":{"description":"User-defined labels (key-value pairs)","example":{"labelkey":"value"},"type":"object"},"type":{"description":"Destination Image type to convert to","enum":["snapshot"],"type":"string"}},"title":"UpdateImageRequest","type":"object"}}}},"responses":{"200":{"content":{"application/json":{"example":{"image":{"bound_to":null,"build_id":"c313fe40383af26094a5a92026054320ab55abc7","created":"2025-08-15T13:52:16.614Z","created_from":{"id":1,"name":"Server"},"deleted":null,"deprecated":"2025-08-15T13:52:16.614Z","description":"My new Image description","disk_size":10,"id":4711,"image_size":2.3,"labels":{"labelkey":"value"},"name":null,"os_flavor":"ubuntu","os_version":"20.04","protection":{"delete":false},"rapid_deploy":false,"status":"available","type":"snapshot"}},"schema":{"properties":{"image":{"properties":{"bound_to":{"description":"ID of Server the Image is bound to. Only set for Images of type `backup`.","example":null,"nullable":true,"type":"integer"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.614Z","type":"string"},"created_from":{"description":"Information about the Server the Image was created from","nullable":true,"properties":{"id":{"description":"ID of the Server the Image was created from","example":1,"type":"integer"},"name":{"description":"Server name at the time the Image was created","example":"Server","type":"string"}},"required":["id","name"],"type":"object"},"deleted":{"description":"Point in time where the Image was deleted (in ISO-8601 format)","example":null,"nullable":true,"type":"string"},"deprecated":{"description":"Point in time when the Image is considered to be deprecated (in ISO-8601 format)","example":"2025-08-15T13:52:16.614Z","nullable":true,"type":"string"},"description":{"description":"Description of the Image","example":"Ubuntu 20.04 Standard 64 bit","type":"string"},"disk_size":{"description":"Size of the disk contained in the Image in GB","example":10,"type":"number"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"image_size":{"description":"Size of the Image file in our storage in GB. For snapshot Images this is the value relevant for calculating costs for the Image.","example":2.3,"nullable":true,"type":"number"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Unique identifier of the Image. This value is only set for system Images.","example":"ubuntu-20.04","nullable":true,"type":"string"},"os_flavor":{"description":"Flavor of operating system contained in the Image","enum":["ubuntu","centos","debian","fedora","unknown"],"example":"ubuntu","type":"string"},"os_version":{"description":"Operating system version","example":"20.04","nullable":true,"type":"string"},"protection":{"description":"Protection configuration for the Resource","properties":{"delete":{"description":"If true, prevents the Resource from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"rapid_deploy":{"description":"Indicates that rapid deploy of the Image is available","example":false,"type":"boolean"},"status":{"description":"Whether the Image can be used or if it's still being created or unavailable","enum":["available","creating","unavailable"],"type":"string"},"type":{"description":"Type of the Image","enum":["system","app","snapshot","backup","temporary"],"example":"snapshot","type":"string"}},"required":["id","type","status","name","description","image_size","disk_size","created","created_from","bound_to","os_flavor","os_version","protection","deprecated","deleted","labels"],"type":"object"}},"type":"object"}}},"description":"The image key in the reply contains the modified Image object"}},"summary":"Update an Image","tags":["Images"]}},"/images/{id}/actions":{"get":{"description":"Returns all Action objects for an Image. You can sort the results by using the `sort` URI parameter, and filter them with the `status` parameter.","parameters":[{"description":"ID of the Image","in":"path","name":"id","required":true,"schema":{"type":"integer"}},{"description":"Can be used multiple times.","in":"query","name":"sort","required":false,"schema":{"enum":["id","id:asc","id:desc","command","command:asc","command:desc","status","status:asc","status:desc","progress","progress:asc","progress:desc","started","started:asc","started:desc","finished","finished:asc","finished:desc"],"title":"ParameterSort","type":"string"}},{"description":"Can be used multiple times, the response will contain only Actions with specified statuses","in":"query","name":"status","required":false,"schema":{"enum":["running","success","error"],"title":"ParameterStatus","type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"actions":[{"command":"change_protection","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.614Z","id":13,"progress":100,"resources":[{"id":4711,"type":"image"}],"started":"2025-08-15T13:52:16.614Z","status":"success"}]},"schema":{"properties":{"actions":{"items":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.614Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.614Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"},"type":"array"},"meta":{"properties":{"pagination":{"properties":{"last_page":{"description":"ID of the last page available. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"next_page":{"description":"ID of the next page. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"page":{"description":"Current page number","example":3,"type":"number"},"per_page":{"description":"Maximum number of items shown per page in the response","example":25,"type":"number"},"previous_page":{"description":"ID of the previous page. Can be null if the current page is the first one.","example":2,"nullable":true,"type":"number"},"total_entries":{"description":"The total number of entries that exist in the database for this query. Nullable if unknown.","example":100,"nullable":true,"type":"number"}},"required":["page","per_page","previous_page","next_page","last_page","total_entries"],"type":"object"}},"required":["pagination"],"type":"object"}},"required":["actions"],"title":"ActionsResponse","type":"object"}}},"description":"The `actions` key contains a list of Actions"}},"summary":"Get all Actions for an Image","tags":["Image Actions"]}},"/images/{id}/actions/change_protection":{"post":{"description":"Changes the protection configuration of the Image. Can only be used on snapshots.","parameters":[{"description":"ID of the Image","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"delete":{"description":"If true, prevents the snapshot from being deleted","example":true,"type":"boolean"}},"type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"change_protection","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.614Z","id":13,"progress":100,"resources":[{"id":4711,"type":"image"}],"started":"2025-08-15T13:52:16.614Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.614Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.615Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `change_protection` Action"}},"summary":"Change Image Protection","tags":["Image Actions"]}},"/images/{id}/actions/{action_id}":{"get":{"description":"Returns a specific Action for an Image.","parameters":[{"description":"ID of the Image","in":"path","name":"id","required":true,"schema":{"type":"integer"}},{"description":"ID of the Action","in":"path","name":"action_id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"example":{"action":{"command":"change_protection","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.615Z","id":13,"progress":100,"resources":[{"id":4711,"type":"image"}],"started":"2025-08-15T13:52:16.615Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.615Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.615Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the Image Action"}},"summary":"Get an Action for an Image","tags":["Image Actions"]}},"/isos":{"get":{"description":"Returns all available ISO objects.","parameters":[{"description":"Can be used to filter ISOs by their name. The response will only contain the ISO matching the specified name.","in":"query","name":"name","required":false,"schema":{"type":"string"}},{"description":"Return only ISOs with the given architecture.","in":"query","name":"architecture","required":false,"schema":{"type":"string"}},{"description":"Include Images with wildcard architecture (architecture is null). Works only if architecture filter is specified.","in":"query","name":"include_architecture_wildcard","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"isos":{"items":{"properties":{"architecture":{"description":"Type of cpu architecture this iso is compatible with. Null indicates no restriction on the architecture (wildcard).","enum":["x86","arm"],"example":"x86","nullable":true,"type":"string"},"deprecated":{"description":"ISO 8601 timestamp of deprecation, null if ISO is still available. After the deprecation time it will no longer be possible to attach the ISO to Servers.","example":"2025-08-15T13:52:16.615Z","nullable":true,"type":"string"},"description":{"description":"Description of the ISO","example":"FreeBSD 11.0 x64","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"name":{"description":"Unique identifier of the ISO. Only set for public ISOs","example":"FreeBSD-11.0-RELEASE-amd64-dvd1","nullable":true,"type":"string"},"type":{"description":"Type of the ISO","enum":["public","private"],"type":"string"}},"required":["id","name","description","type","deprecated","architecture"],"type":"object"},"type":"array"},"meta":{"properties":{"pagination":{"properties":{"last_page":{"description":"ID of the last page available. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"next_page":{"description":"ID of the next page. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"page":{"description":"Current page number","example":3,"type":"number"},"per_page":{"description":"Maximum number of items shown per page in the response","example":25,"type":"number"},"previous_page":{"description":"ID of the previous page. Can be null if the current page is the first one.","example":2,"nullable":true,"type":"number"},"total_entries":{"description":"The total number of entries that exist in the database for this query. Nullable if unknown.","example":100,"nullable":true,"type":"number"}},"required":["page","per_page","previous_page","next_page","last_page","total_entries"],"type":"object"}},"required":["pagination"],"type":"object"}},"required":["isos"],"type":"object"}}},"description":"The `isos` key in the reply contains an array of iso objects with this structure"}},"summary":"Get all ISOs","tags":["ISOs"]}},"/isos/{id}":{"get":{"description":"Returns a specific ISO object.","parameters":[{"description":"ID of the ISO","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"iso":{"properties":{"architecture":{"description":"Type of cpu architecture this iso is compatible with. Null indicates no restriction on the architecture (wildcard).","enum":["x86","arm"],"example":"x86","nullable":true,"type":"string"},"deprecated":{"description":"ISO 8601 timestamp of deprecation, null if ISO is still available. After the deprecation time it will no longer be possible to attach the ISO to Servers.","example":"2025-08-15T13:52:16.615Z","nullable":true,"type":"string"},"description":{"description":"Description of the ISO","example":"FreeBSD 11.0 x64","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"name":{"description":"Unique identifier of the ISO. Only set for public ISOs","example":"FreeBSD-11.0-RELEASE-amd64-dvd1","nullable":true,"type":"string"},"type":{"description":"Type of the ISO","enum":["public","private"],"type":"string"}},"required":["id","name","description","type","deprecated","architecture"],"type":"object"}},"required":["iso"],"type":"object"}}},"description":"The `iso` key in the reply contains an array of ISO objects with this structure"}},"summary":"Get an ISO","tags":["ISOs"]}},"/load_balancer_types":{"get":{"description":"Gets all Load Balancer type objects.","parameters":[{"description":"Can be used to filter Load Balancer types by their name. The response will only contain the Load Balancer type matching the specified name.","in":"query","name":"name","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"load_balancer_types":{"items":{"properties":{"deprecated":{"description":"Point in time when the Load Balancer type is deprecated (in ISO-8601 format)","example":"2025-08-15T13:52:16.615Z","nullable":true,"type":"string"},"description":{"description":"Description of the Load Balancer type","example":"LB11","type":"string"},"id":{"description":"ID of the Load Balancer type","example":1,"type":"number"},"max_assigned_certificates":{"description":"Number of SSL Certificates that can be assigned to a single Load Balancer","example":10,"type":"number"},"max_connections":{"description":"Number of maximum simultaneous open connections","example":20000,"type":"number"},"max_services":{"description":"Number of services a Load Balancer of this type can have","example":5,"type":"number"},"max_targets":{"description":"Number of targets a single Load Balancer can have","example":25,"type":"number"},"name":{"description":"Unique identifier of the Load Balancer type","example":"lb11","type":"string"},"prices":{"description":"Prices in different network zones","items":{"properties":{"location":{"description":"Name of the Location the price is for","example":"fsn1","type":"string"},"price_hourly":{"description":"Hourly costs for a Resource in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"},"price_monthly":{"description":"Monthly costs for a Resource in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"}},"required":["location","price_hourly","price_monthly"],"type":"object"},"type":"array"}},"required":["id","name","description","max_connections","max_services","max_targets","max_assigned_certificates","deprecated","prices"],"type":"object"},"type":"array"}},"required":["load_balancer_types"],"type":"object"}}},"description":"The `load_balancer_types` key in the reply contains an array of Load Balancer type objects with this structure"}},"summary":"Get all Load Balancer Types","tags":["Load Balancer Types"]}},"/load_balancer_types/{id}":{"get":{"description":"Gets a specific Load Balancer type object.","parameters":[{"description":"ID of Load Balancer type","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"load_balancer_type":{"properties":{"deprecated":{"description":"Point in time when the Load Balancer type is deprecated (in ISO-8601 format)","example":"2025-08-15T13:52:16.615Z","nullable":true,"type":"string"},"description":{"description":"Description of the Load Balancer type","example":"LB11","type":"string"},"id":{"description":"ID of the Load Balancer type","example":1,"type":"number"},"max_assigned_certificates":{"description":"Number of SSL Certificates that can be assigned to a single Load Balancer","example":10,"type":"number"},"max_connections":{"description":"Number of maximum simultaneous open connections","example":20000,"type":"number"},"max_services":{"description":"Number of services a Load Balancer of this type can have","example":5,"type":"number"},"max_targets":{"description":"Number of targets a single Load Balancer can have","example":25,"type":"number"},"name":{"description":"Unique identifier of the Load Balancer type","example":"lb11","type":"string"},"prices":{"description":"Prices in different network zones","items":{"properties":{"location":{"description":"Name of the Location the price is for","example":"fsn1","type":"string"},"price_hourly":{"description":"Hourly costs for a Resource in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"},"price_monthly":{"description":"Monthly costs for a Resource in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"}},"required":["location","price_hourly","price_monthly"],"type":"object"},"type":"array"}},"required":["id","name","description","max_connections","max_services","max_targets","max_assigned_certificates","deprecated","prices"],"type":"object"}},"type":"object"}}},"description":"The `load_balancer_type` key in the reply contains a Load Balancer type object with this structure"}},"summary":"Get a Load Balancer Type","tags":["Load Balancer Types"]}},"/load_balancers":{"get":{"description":"Gets all existing Load Balancers that you have available.","parameters":[{"description":"Can be used multiple times.","in":"query","name":"sort","required":false,"schema":{"enum":["id","id:asc","id:desc","name","name:asc","name:desc","created","created:asc","created:desc"],"type":"string"}},{"description":"Can be used to filter resources by their name. The response will only contain the resources matching the specified name","in":"query","name":"name","required":false,"schema":{"type":"string"}},{"description":"Can be used to filter resources by labels. The response will only contain resources matching the label selector.","in":"query","name":"label_selector","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"load_balancers":{"items":{"properties":{"algorithm":{"description":"Algorithm of the Load Balancer","properties":{"type":{"description":"Type of the algorithm","enum":["round_robin","least_connections"],"type":"string"}},"required":["type"],"type":"object"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.615Z","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"included_traffic":{"description":"Free Traffic for the current billing period in bytes","example":10000,"type":"integer"},"ingoing_traffic":{"description":"Inbound Traffic for the current billing period in bytes","nullable":true,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"load_balancer_type":{"properties":{"deprecated":{"description":"Point in time when the Load Balancer type is deprecated (in ISO-8601 format)","example":"2025-08-15T13:52:16.615Z","nullable":true,"type":"string"},"description":{"description":"Description of the Load Balancer type","example":"LB11","type":"string"},"id":{"description":"ID of the Load Balancer type","example":1,"type":"number"},"max_assigned_certificates":{"description":"Number of SSL Certificates that can be assigned to a single Load Balancer","example":10,"type":"number"},"max_connections":{"description":"Number of maximum simultaneous open connections","example":20000,"type":"number"},"max_services":{"description":"Number of services a Load Balancer of this type can have","example":5,"type":"number"},"max_targets":{"description":"Number of targets a single Load Balancer can have","example":25,"type":"number"},"name":{"description":"Unique identifier of the Load Balancer type","example":"lb11","type":"string"},"prices":{"description":"Prices in different network zones","items":{"properties":{"location":{"description":"Name of the Location the price is for","example":"fsn1","type":"string"},"price_hourly":{"description":"Hourly costs for a Resource in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"},"price_monthly":{"description":"Monthly costs for a Resource in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"}},"required":["location","price_hourly","price_monthly"],"type":"object"},"type":"array"}},"required":["id","name","description","max_connections","max_services","max_targets","max_assigned_certificates","deprecated","prices"],"type":"object"},"location":{"properties":{"city":{"description":"City the Location is closest to","example":"Falkenstein","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 code of the country the Location resides in","example":"DE","type":"string"},"description":{"description":"Description of the Location","example":"Falkenstein DC Park 1","type":"string"},"id":{"description":"ID of the Location","example":1,"type":"number"},"latitude":{"description":"Latitude of the city closest to the Location","example":50.47612,"type":"number"},"longitude":{"description":"Longitude of the city closest to the Location","example":12.370071,"type":"number"},"name":{"description":"Unique identifier of the Location","example":"fsn1","type":"string"},"network_zone":{"description":"Name of network zone this Location resides in","example":"eu-central","type":"string"}},"required":["id","name","description","country","city","latitude","longitude","network_zone"],"type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"outgoing_traffic":{"description":"Outbound Traffic for the current billing period in bytes","nullable":true,"type":"integer"},"private_net":{"description":"Private networks information","items":{"properties":{"ip":{"example":"10.0.0.2","type":"string"},"network":{"example":4711,"type":"integer"}},"type":"object"},"type":"array"},"protection":{"description":"Protection configuration for the Resource","properties":{"delete":{"description":"If true, prevents the Resource from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"public_net":{"description":"Public network information","properties":{"enabled":{"description":"Public Interface enabled or not","type":"boolean"},"ipv4":{"description":"IP address (v4)","properties":{"dns_ptr":{"description":"Reverse DNS PTR entry for the IPv4 address of this Load Balancer","example":"lb1.example.com","nullable":true,"type":"string"},"ip":{"description":"IP address (v4) of this Load Balancer","example":"1.2.3.4","nullable":true,"type":"string"}},"type":"object"},"ipv6":{"description":"IP address (v6)","properties":{"dns_ptr":{"description":"Reverse DNS PTR entry for the IPv6 address of this Load Balancer","example":"lb1.example.com","nullable":true,"type":"string"},"ip":{"description":"IP address (v6) of this Load Balancer","example":"2001:db8::1","nullable":true,"type":"string"}},"type":"object"}},"required":["enabled","ipv4","ipv6"],"type":"object"},"services":{"description":"List of services that belong to this Load Balancer","items":{"properties":{"destination_port":{"description":"Port the Load Balancer will balance to","example":80,"type":"integer"},"health_check":{"additionalProperties":false,"description":"Service health check","properties":{"http":{"additionalProperties":false,"description":"Additional configuration for protocol http","properties":{"domain":{"description":"Host header to send in the HTTP request. May not contain spaces, percent or backslash symbols. Can be null, in that case no host header is sent.","example":"example.com","nullable":true,"type":"string"},"path":{"description":"HTTP path to use for health checks. May not contain literal spaces, use percent-encoding instead.","example":"/","type":"string"},"response":{"description":"String that must be contained in HTTP response in order to pass the health check","example":"{\"status\": \"ok\"}","type":"string"},"status_codes":{"description":"List of returned HTTP status codes in order to pass the health check. Supports the wildcards `?` for exactly one character and `*` for multiple ones. The default is to pass the health check for any status code between 2?? and 3??.","example":["2??","3??"],"items":{"type":"string"},"type":"array"},"tls":{"description":"Use HTTPS for health check","example":false,"type":"boolean"}},"required":["domain","path"],"type":"object"},"interval":{"description":"Time interval in seconds health checks are performed","example":15,"type":"integer"},"port":{"description":"Port the health check will be performed on","example":4711,"type":"integer"},"protocol":{"description":"Type of the health check","enum":["tcp","http"],"example":"http","type":"string"},"retries":{"description":"Unsuccessful retries needed until a target is considered unhealthy; an unhealthy target needs the same number of successful retries to become healthy again","example":3,"type":"integer"},"timeout":{"description":"Time in seconds after an attempt is considered a timeout","example":10,"type":"integer"}},"required":["protocol","port","interval","timeout","retries"],"title":"LoadBalancerServiceHealthCheck","type":"object"},"http":{"description":"Configuration option for protocols http and https","properties":{"certificates":{"description":"IDs of the Certificates to use for TLS/SSL termination by the Load Balancer; empty for TLS/SSL passthrough or if `protocol` is \"http\"","example":[897],"items":{"type":"integer"},"type":"array"},"cookie_lifetime":{"description":"Lifetime of the cookie used for sticky sessions","example":300,"type":"integer"},"cookie_name":{"description":"Name of the cookie used for sticky sessions","example":"HCLBSTICKY","type":"string"},"redirect_http":{"description":"Redirect HTTP requests to HTTPS. Only available if protocol is \"https\". Default `false`","example":true,"type":"boolean"},"sticky_sessions":{"description":"Use sticky sessions. Only available if protocol is \"http\" or \"https\". Default `false`","example":true,"type":"boolean"}},"title":"LoadBalancerServiceHTTP","type":"object"},"listen_port":{"description":"Port the Load Balancer listens on","example":443,"type":"integer"},"protocol":{"description":"Protocol of the Load Balancer","enum":["tcp","http","https"],"example":"https","type":"string"},"proxyprotocol":{"description":"Is Proxyprotocol enabled or not","example":false,"type":"boolean"}},"required":["protocol","listen_port","destination_port","proxyprotocol","health_check"],"title":"LoadBalancerService","type":"object"},"type":"array"},"targets":{"description":"List of targets that belong to this Load Balancer","items":{"properties":{"health_status":{"description":"List of health statuses of the services on this target. Only present for target types \"server\" and \"ip\".","items":{"properties":{"listen_port":{"example":443,"type":"integer"},"status":{"enum":["healthy","unhealthy","unknown"],"example":"healthy","type":"string"}},"type":"object"},"title":"LoadBalancerTargetHealthStatus","type":"array"},"ip":{"description":"IP targets where the traffic should be routed to. It is only possible to use the (Public or vSwitch) IPs of Hetzner Online Root Servers belonging to the project owner. IPs belonging to other users are blocked. Additionally IPs belonging to services provided by Hetzner Cloud (Servers, Load Balancers, ...) are blocked as well. Only present for target type \"ip\".","properties":{"ip":{"description":"IP of a server that belongs to the same customer (public IPv4/IPv6) or private IP in a Subnetwork type vswitch.","example":"203.0.113.1","type":"string"}},"required":["ip"],"title":"LoadBalancerTargetIP","type":"object"},"label_selector":{"description":"Label selector used to determine targets. Only present for target type \"label_selector\".","properties":{"selector":{"description":"Label selector","example":"env=prod","type":"string"}},"required":["selector"],"title":"LoadBalancerTargetLabelSelector","type":"object"},"server":{"description":"Server where the traffic should be routed to. Only present for target type \"server\".","properties":{"id":{"description":"ID of the Server","example":80,"type":"integer"}},"required":["id"],"title":"LoadBalancerTargetServer","type":"object"},"targets":{"description":"List of resolved label selector target Servers. Only present for type \"label_selector\".","items":{"properties":{"health_status":{"description":"List of health statuses of the services on this target. Only present for target types \"server\" and \"ip\".","items":{"properties":{"listen_port":{"example":443,"type":"integer"},"status":{"enum":["healthy","unhealthy","unknown"],"example":"healthy","type":"string"}},"type":"object"},"title":"LoadBalancerTargetHealthStatus","type":"array"},"server":{"description":"Server where the traffic should be routed to. Only present for target type \"server\".","properties":{"id":{"description":"ID of the Server","example":80,"type":"integer"}},"required":["id"],"title":"LoadBalancerTargetServer","type":"object"},"type":{"description":"Type of the resource. Here always \"server\".","example":"server","type":"string"},"use_private_ip":{"description":"Use the private network IP instead of the public IP. Default value is false. Only present for target types \"server\" and \"label_selector\".","title":"LoadBalancerTargetUsePrivateIP","type":"boolean"}},"title":"LoadBalancerTargetTarget","type":"object"},"type":"array"},"type":{"description":"Type of the resource","enum":["server","label_selector","ip"],"type":"string"},"use_private_ip":{"description":"Use the private network IP instead of the public IP. Default value is false. Only present for target types \"server\" and \"label_selector\".","title":"LoadBalancerTargetUsePrivateIP","type":"boolean"}},"required":["type"],"title":"LoadBalancerTarget","type":"object"},"type":"array"}},"required":["id","name","public_net","private_net","location","load_balancer_type","protection","labels","created","services","targets","algorithm","outgoing_traffic","ingoing_traffic","included_traffic"],"type":"object"},"type":"array"},"meta":{"properties":{"pagination":{"properties":{"last_page":{"description":"ID of the last page available. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"next_page":{"description":"ID of the next page. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"page":{"description":"Current page number","example":3,"type":"number"},"per_page":{"description":"Maximum number of items shown per page in the response","example":25,"type":"number"},"previous_page":{"description":"ID of the previous page. Can be null if the current page is the first one.","example":2,"nullable":true,"type":"number"},"total_entries":{"description":"The total number of entries that exist in the database for this query. Nullable if unknown.","example":100,"nullable":true,"type":"number"}},"required":["page","per_page","previous_page","next_page","last_page","total_entries"],"type":"object"}},"required":["pagination"],"type":"object"}},"required":["load_balancers"],"type":"object"}}},"description":"The `load_balancers` key contains a list of Load Balancers"}},"summary":"Get all Load Balancers","tags":["Load Balancers"]},"post":{"description":"Creates a Load Balancer.\n\n#### Call specific error codes\n\n| Code                                    | Description                                                                                           |\n|-----------------------------------------|-------------------------------------------------------------------------------------------------------|\n| `cloud_resource_ip_not_allowed`         | The IP you are trying to add as a target belongs to a Hetzner Cloud resource                          |\n| `ip_not_owned`                          | The IP is not owned by the owner of the project of the Load Balancer                                  |\n| `load_balancer_not_attached_to_network` | The Load Balancer is not attached to a network                                                        |\n| `robot_unavailable`                     | Robot was not available. The caller may retry the operation after a short delay.                      |\n| `server_not_attached_to_network`        | The server you are trying to add as a target is not attached to the same network as the Load Balancer |\n| `source_port_already_used`              | The source port you are trying to add is already in use                                               |\n| `target_already_defined`                | The Load Balancer target you are trying to define is already defined                                  |\n","requestBody":{"content":{"application/json":{"schema":{"properties":{"algorithm":{"description":"Algorithm of the Load Balancer","properties":{"type":{"description":"Type of the algorithm","enum":["round_robin","least_connections"],"type":"string"}},"required":["type"],"title":"LoadBalancerAlgorithm","type":"object"},"labels":{"description":"User-defined labels (key-value pairs)","properties":{"labelkey":{"description":"New label","example":"value","type":"string"}},"type":"object"},"load_balancer_type":{"description":"ID or name of the Load Balancer type this Load Balancer should be created with","example":"lb11","type":"string"},"location":{"description":"ID or name of Location to create Load Balancer in","type":"string"},"name":{"description":"Name of the Load Balancer","example":"Web Frontend","type":"string"},"network":{"description":"ID of the network the Load Balancer should be attached to on creation","example":123,"type":"integer"},"network_zone":{"description":"Name of network zone","example":"eu-central","type":"string"},"public_interface":{"description":"Enable or disable the public interface of the Load Balancer","example":true,"type":"boolean"},"services":{"description":"Array of services","items":{"properties":{"destination_port":{"description":"Port the Load Balancer will balance to","example":80,"type":"integer"},"health_check":{"additionalProperties":false,"description":"Service health check","properties":{"http":{"additionalProperties":false,"description":"Additional configuration for protocol http","properties":{"domain":{"description":"Host header to send in the HTTP request. May not contain spaces, percent or backslash symbols. Can be null, in that case no host header is sent.","example":"example.com","nullable":true,"type":"string"},"path":{"description":"HTTP path to use for health checks. May not contain literal spaces, use percent-encoding instead.","example":"/","type":"string"},"response":{"description":"String that must be contained in HTTP response in order to pass the health check","example":"{\"status\": \"ok\"}","type":"string"},"status_codes":{"description":"List of returned HTTP status codes in order to pass the health check. Supports the wildcards `?` for exactly one character and `*` for multiple ones. The default is to pass the health check for any status code between 2?? and 3??.","example":["2??","3??"],"items":{"type":"string"},"type":"array"},"tls":{"description":"Use HTTPS for health check","example":false,"type":"boolean"}},"required":["domain","path"],"type":"object"},"interval":{"description":"Time interval in seconds health checks are performed","example":15,"type":"integer"},"port":{"description":"Port the health check will be performed on","example":4711,"type":"integer"},"protocol":{"description":"Type of the health check","enum":["tcp","http"],"example":"http","type":"string"},"retries":{"description":"Unsuccessful retries needed until a target is considered unhealthy; an unhealthy target needs the same number of successful retries to become healthy again","example":3,"type":"integer"},"timeout":{"description":"Time in seconds after an attempt is considered a timeout","example":10,"type":"integer"}},"required":["protocol","port","interval","timeout","retries"],"title":"LoadBalancerServiceHealthCheck","type":"object"},"http":{"description":"Configuration option for protocols http and https","properties":{"certificates":{"description":"IDs of the Certificates to use for TLS/SSL termination by the Load Balancer; empty for TLS/SSL passthrough or if `protocol` is \"http\"","example":[897],"items":{"type":"integer"},"type":"array"},"cookie_lifetime":{"description":"Lifetime of the cookie used for sticky sessions","example":300,"type":"integer"},"cookie_name":{"description":"Name of the cookie used for sticky sessions","example":"HCLBSTICKY","type":"string"},"redirect_http":{"description":"Redirect HTTP requests to HTTPS. Only available if protocol is \"https\". Default `false`","example":true,"type":"boolean"},"sticky_sessions":{"description":"Use sticky sessions. Only available if protocol is \"http\" or \"https\". Default `false`","example":true,"type":"boolean"}},"title":"LoadBalancerServiceHTTP","type":"object"},"listen_port":{"description":"Port the Load Balancer listens on","example":443,"type":"integer"},"protocol":{"description":"Protocol of the Load Balancer","enum":["tcp","http","https"],"example":"https","type":"string"},"proxyprotocol":{"description":"Is Proxyprotocol enabled or not","example":false,"type":"boolean"}},"required":["protocol","listen_port","destination_port","proxyprotocol","health_check"],"title":"LoadBalancerService","type":"object"},"type":"array"},"targets":{"description":"Array of targets","items":{"properties":{"health_status":{"description":"List of health statuses of the services on this target. Only present for target types \"server\" and \"ip\".","items":{"properties":{"listen_port":{"example":443,"type":"integer"},"status":{"enum":["healthy","unhealthy","unknown"],"example":"healthy","type":"string"}},"type":"object"},"title":"LoadBalancerTargetHealthStatus","type":"array"},"ip":{"description":"IP targets where the traffic should be routed to. It is only possible to use the (Public or vSwitch) IPs of Hetzner Online Root Servers belonging to the project owner. IPs belonging to other users are blocked. Additionally IPs belonging to services provided by Hetzner Cloud (Servers, Load Balancers, ...) are blocked as well. Only present for target type \"ip\".","properties":{"ip":{"description":"IP of a server that belongs to the same customer (public IPv4/IPv6) or private IP in a Subnetwork type vswitch.","example":"203.0.113.1","type":"string"}},"required":["ip"],"title":"LoadBalancerTargetIP","type":"object"},"label_selector":{"description":"Label selector used to determine targets. Only present for target type \"label_selector\".","properties":{"selector":{"description":"Label selector","example":"env=prod","type":"string"}},"required":["selector"],"title":"LoadBalancerTargetLabelSelector","type":"object"},"server":{"description":"Server where the traffic should be routed to. Only present for target type \"server\".","properties":{"id":{"description":"ID of the Server","example":80,"type":"integer"}},"required":["id"],"title":"LoadBalancerTargetServer","type":"object"},"targets":{"description":"List of resolved label selector target Servers. Only present for type \"label_selector\".","items":{"properties":{"health_status":{"description":"List of health statuses of the services on this target. Only present for target types \"server\" and \"ip\".","items":{"properties":{"listen_port":{"example":443,"type":"integer"},"status":{"enum":["healthy","unhealthy","unknown"],"example":"healthy","type":"string"}},"type":"object"},"title":"LoadBalancerTargetHealthStatus","type":"array"},"server":{"description":"Server where the traffic should be routed to. Only present for target type \"server\".","properties":{"id":{"description":"ID of the Server","example":80,"type":"integer"}},"required":["id"],"title":"LoadBalancerTargetServer","type":"object"},"type":{"description":"Type of the resource. Here always \"server\".","example":"server","type":"string"},"use_private_ip":{"description":"Use the private network IP instead of the public IP. Default value is false. Only present for target types \"server\" and \"label_selector\".","title":"LoadBalancerTargetUsePrivateIP","type":"boolean"}},"title":"LoadBalancerTargetTarget","type":"object"},"type":"array"},"type":{"description":"Type of the resource","enum":["server","label_selector","ip"],"type":"string"},"use_private_ip":{"description":"Use the private network IP instead of the public IP. Default value is false. Only present for target types \"server\" and \"label_selector\".","title":"LoadBalancerTargetUsePrivateIP","type":"boolean"}},"required":["type"],"title":"LoadBalancerTarget","type":"object"},"type":"array"}},"required":["name","load_balancer_type","algorithm"],"title":"CreateLoadBalancerRequest","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"create_load_balancer","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.615Z","id":13,"progress":100,"resources":[{"id":4711,"type":"load_balancer"}],"started":"2025-08-15T13:52:16.615Z","status":"success"},"load_balancer":{"algorithm":{"type":"round_robin"},"created":"2025-08-15T13:52:16.615Z","id":4711,"included_traffic":654321,"ingoing_traffic":123456,"labels":{"env":"dev"},"load_balancer_type":{"deprecated":"2025-08-15T13:52:16.615Z","description":"LB11","id":1,"max_assigned_certificates":10,"max_connections":20000,"max_services":5,"max_targets":25,"name":"lb11","prices":[{"location":"fsn1","price_hourly":{"gross":"1.1900000000000000","net":"1.0000000000"},"price_monthly":{"gross":"1.1900000000000000","net":"1.0000000000"}}]},"location":{"city":"Falkenstein","country":"DE","description":"Falkenstein DC Park 1","id":1,"latitude":50.47612,"longitude":12.370071,"name":"fsn1","network_zone":"eu-central"},"name":"Web Frontend","outgoing_traffic":123456,"private_net":[{"ip":"10.0.0.2","network":4711}],"protection":{"delete":false},"public_net":{"enabled":false,"ipv4":{"ip":"1.2.3.4"},"ipv6":{"ip":"2001:db8::1"}},"services":[{"destination_port":80,"health_check":{"http":{"domain":"example.com","path":"/","response":"{\"status\": \"ok\"}","status_codes":["2??,3??"],"tls":false},"interval":15,"port":4711,"protocol":"http","retries":3,"timeout":10},"http":{"certificates":[897],"cookie_lifetime":300,"cookie_name":"HCLBSTICKY","redirect_http":true,"sticky_sessions":true},"listen_port":443,"protocol":"http","proxyprotocol":false}],"targets":[{"health_status":[{"listen_port":443,"status":"healthy"}],"server":{"id":80},"targets":[{"health_status":[{"listen_port":443,"status":"healthy"}],"label_selector":null,"server":{"id":80},"type":"server","use_private_ip":true}],"type":"server","use_private_ip":true}]}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.616Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.616Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"},"load_balancer":{"properties":{"algorithm":{"description":"Algorithm of the Load Balancer","properties":{"type":{"description":"Type of the algorithm","enum":["round_robin","least_connections"],"type":"string"}},"required":["type"],"type":"object"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.616Z","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"included_traffic":{"description":"Free Traffic for the current billing period in bytes","example":10000,"type":"integer"},"ingoing_traffic":{"description":"Inbound Traffic for the current billing period in bytes","nullable":true,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"load_balancer_type":{"properties":{"deprecated":{"description":"Point in time when the Load Balancer type is deprecated (in ISO-8601 format)","example":"2025-08-15T13:52:16.616Z","nullable":true,"type":"string"},"description":{"description":"Description of the Load Balancer type","example":"LB11","type":"string"},"id":{"description":"ID of the Load Balancer type","example":1,"type":"number"},"max_assigned_certificates":{"description":"Number of SSL Certificates that can be assigned to a single Load Balancer","example":10,"type":"number"},"max_connections":{"description":"Number of maximum simultaneous open connections","example":20000,"type":"number"},"max_services":{"description":"Number of services a Load Balancer of this type can have","example":5,"type":"number"},"max_targets":{"description":"Number of targets a single Load Balancer can have","example":25,"type":"number"},"name":{"description":"Unique identifier of the Load Balancer type","example":"lb11","type":"string"},"prices":{"description":"Prices in different network zones","items":{"properties":{"location":{"description":"Name of the Location the price is for","example":"fsn1","type":"string"},"price_hourly":{"description":"Hourly costs for a Resource in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"},"price_monthly":{"description":"Monthly costs for a Resource in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"}},"required":["location","price_hourly","price_monthly"],"type":"object"},"type":"array"}},"required":["id","name","description","max_connections","max_services","max_targets","max_assigned_certificates","deprecated","prices"],"type":"object"},"location":{"properties":{"city":{"description":"City the Location is closest to","example":"Falkenstein","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 code of the country the Location resides in","example":"DE","type":"string"},"description":{"description":"Description of the Location","example":"Falkenstein DC Park 1","type":"string"},"id":{"description":"ID of the Location","example":1,"type":"number"},"latitude":{"description":"Latitude of the city closest to the Location","example":50.47612,"type":"number"},"longitude":{"description":"Longitude of the city closest to the Location","example":12.370071,"type":"number"},"name":{"description":"Unique identifier of the Location","example":"fsn1","type":"string"},"network_zone":{"description":"Name of network zone this Location resides in","example":"eu-central","type":"string"}},"required":["id","name","description","country","city","latitude","longitude","network_zone"],"type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"outgoing_traffic":{"description":"Outbound Traffic for the current billing period in bytes","nullable":true,"type":"integer"},"private_net":{"description":"Private networks information","items":{"properties":{"ip":{"example":"10.0.0.2","type":"string"},"network":{"example":4711,"type":"integer"}},"type":"object"},"type":"array"},"protection":{"description":"Protection configuration for the Resource","properties":{"delete":{"description":"If true, prevents the Resource from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"public_net":{"description":"Public network information","properties":{"enabled":{"description":"Public Interface enabled or not","type":"boolean"},"ipv4":{"description":"IP address (v4)","properties":{"dns_ptr":{"description":"Reverse DNS PTR entry for the IPv4 address of this Load Balancer","example":"lb1.example.com","nullable":true,"type":"string"},"ip":{"description":"IP address (v4) of this Load Balancer","example":"1.2.3.4","nullable":true,"type":"string"}},"type":"object"},"ipv6":{"description":"IP address (v6)","properties":{"dns_ptr":{"description":"Reverse DNS PTR entry for the IPv6 address of this Load Balancer","example":"lb1.example.com","nullable":true,"type":"string"},"ip":{"description":"IP address (v6) of this Load Balancer","example":"2001:db8::1","nullable":true,"type":"string"}},"type":"object"}},"required":["enabled","ipv4","ipv6"],"type":"object"},"services":{"description":"List of services that belong to this Load Balancer","items":{"properties":{"destination_port":{"description":"Port the Load Balancer will balance to","example":80,"type":"integer"},"health_check":{"additionalProperties":false,"description":"Service health check","properties":{"http":{"additionalProperties":false,"description":"Additional configuration for protocol http","properties":{"domain":{"description":"Host header to send in the HTTP request. May not contain spaces, percent or backslash symbols. Can be null, in that case no host header is sent.","example":"example.com","nullable":true,"type":"string"},"path":{"description":"HTTP path to use for health checks. May not contain literal spaces, use percent-encoding instead.","example":"/","type":"string"},"response":{"description":"String that must be contained in HTTP response in order to pass the health check","example":"{\"status\": \"ok\"}","type":"string"},"status_codes":{"description":"List of returned HTTP status codes in order to pass the health check. Supports the wildcards `?` for exactly one character and `*` for multiple ones. The default is to pass the health check for any status code between 2?? and 3??.","example":["2??","3??"],"items":{"type":"string"},"type":"array"},"tls":{"description":"Use HTTPS for health check","example":false,"type":"boolean"}},"required":["domain","path"],"type":"object"},"interval":{"description":"Time interval in seconds health checks are performed","example":15,"type":"integer"},"port":{"description":"Port the health check will be performed on","example":4711,"type":"integer"},"protocol":{"description":"Type of the health check","enum":["tcp","http"],"example":"http","type":"string"},"retries":{"description":"Unsuccessful retries needed until a target is considered unhealthy; an unhealthy target needs the same number of successful retries to become healthy again","example":3,"type":"integer"},"timeout":{"description":"Time in seconds after an attempt is considered a timeout","example":10,"type":"integer"}},"required":["protocol","port","interval","timeout","retries"],"title":"LoadBalancerServiceHealthCheck","type":"object"},"http":{"description":"Configuration option for protocols http and https","properties":{"certificates":{"description":"IDs of the Certificates to use for TLS/SSL termination by the Load Balancer; empty for TLS/SSL passthrough or if `protocol` is \"http\"","example":[897],"items":{"type":"integer"},"type":"array"},"cookie_lifetime":{"description":"Lifetime of the cookie used for sticky sessions","example":300,"type":"integer"},"cookie_name":{"description":"Name of the cookie used for sticky sessions","example":"HCLBSTICKY","type":"string"},"redirect_http":{"description":"Redirect HTTP requests to HTTPS. Only available if protocol is \"https\". Default `false`","example":true,"type":"boolean"},"sticky_sessions":{"description":"Use sticky sessions. Only available if protocol is \"http\" or \"https\". Default `false`","example":true,"type":"boolean"}},"title":"LoadBalancerServiceHTTP","type":"object"},"listen_port":{"description":"Port the Load Balancer listens on","example":443,"type":"integer"},"protocol":{"description":"Protocol of the Load Balancer","enum":["tcp","http","https"],"example":"https","type":"string"},"proxyprotocol":{"description":"Is Proxyprotocol enabled or not","example":false,"type":"boolean"}},"required":["protocol","listen_port","destination_port","proxyprotocol","health_check"],"title":"LoadBalancerService","type":"object"},"type":"array"},"targets":{"description":"List of targets that belong to this Load Balancer","items":{"properties":{"health_status":{"description":"List of health statuses of the services on this target. Only present for target types \"server\" and \"ip\".","items":{"properties":{"listen_port":{"example":443,"type":"integer"},"status":{"enum":["healthy","unhealthy","unknown"],"example":"healthy","type":"string"}},"type":"object"},"title":"LoadBalancerTargetHealthStatus","type":"array"},"ip":{"description":"IP targets where the traffic should be routed to. It is only possible to use the (Public or vSwitch) IPs of Hetzner Online Root Servers belonging to the project owner. IPs belonging to other users are blocked. Additionally IPs belonging to services provided by Hetzner Cloud (Servers, Load Balancers, ...) are blocked as well. Only present for target type \"ip\".","properties":{"ip":{"description":"IP of a server that belongs to the same customer (public IPv4/IPv6) or private IP in a Subnetwork type vswitch.","example":"203.0.113.1","type":"string"}},"required":["ip"],"title":"LoadBalancerTargetIP","type":"object"},"label_selector":{"description":"Label selector used to determine targets. Only present for target type \"label_selector\".","properties":{"selector":{"description":"Label selector","example":"env=prod","type":"string"}},"required":["selector"],"title":"LoadBalancerTargetLabelSelector","type":"object"},"server":{"description":"Server where the traffic should be routed to. Only present for target type \"server\".","properties":{"id":{"description":"ID of the Server","example":80,"type":"integer"}},"required":["id"],"title":"LoadBalancerTargetServer","type":"object"},"targets":{"description":"List of resolved label selector target Servers. Only present for type \"label_selector\".","items":{"properties":{"health_status":{"description":"List of health statuses of the services on this target. Only present for target types \"server\" and \"ip\".","items":{"properties":{"listen_port":{"example":443,"type":"integer"},"status":{"enum":["healthy","unhealthy","unknown"],"example":"healthy","type":"string"}},"type":"object"},"title":"LoadBalancerTargetHealthStatus","type":"array"},"server":{"description":"Server where the traffic should be routed to. Only present for target type \"server\".","properties":{"id":{"description":"ID of the Server","example":80,"type":"integer"}},"required":["id"],"title":"LoadBalancerTargetServer","type":"object"},"type":{"description":"Type of the resource. Here always \"server\".","example":"server","type":"string"},"use_private_ip":{"description":"Use the private network IP instead of the public IP. Default value is false. Only present for target types \"server\" and \"label_selector\".","title":"LoadBalancerTargetUsePrivateIP","type":"boolean"}},"title":"LoadBalancerTargetTarget","type":"object"},"type":"array"},"type":{"description":"Type of the resource","enum":["server","label_selector","ip"],"type":"string"},"use_private_ip":{"description":"Use the private network IP instead of the public IP. Default value is false. Only present for target types \"server\" and \"label_selector\".","title":"LoadBalancerTargetUsePrivateIP","type":"boolean"}},"required":["type"],"title":"LoadBalancerTarget","type":"object"},"type":"array"}},"required":["id","name","public_net","private_net","location","load_balancer_type","protection","labels","created","services","targets","algorithm","outgoing_traffic","ingoing_traffic","included_traffic"],"type":"object"}},"required":["load_balancer","action"],"type":"object"}}},"description":"The `load_balancer` key contains the Load Balancer that was just created"}},"summary":"Create a Load Balancer","tags":["Load Balancers"]}},"/load_balancers/{id}":{"delete":{"description":"Deletes a Load Balancer.","parameters":[{"description":"ID of the Load Balancer","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"204":{"description":"Load Balancer deleted"}},"summary":"Delete a Load Balancer","tags":["Load Balancers"]},"get":{"description":"Gets a specific Load Balancer object.","parameters":[{"description":"ID of the Load Balancer","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"load_balancer":{"properties":{"algorithm":{"description":"Algorithm of the Load Balancer","properties":{"type":{"description":"Type of the algorithm","enum":["round_robin","least_connections"],"type":"string"}},"required":["type"],"type":"object"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.616Z","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"included_traffic":{"description":"Free Traffic for the current billing period in bytes","example":10000,"type":"integer"},"ingoing_traffic":{"description":"Inbound Traffic for the current billing period in bytes","nullable":true,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"load_balancer_type":{"properties":{"deprecated":{"description":"Point in time when the Load Balancer type is deprecated (in ISO-8601 format)","example":"2025-08-15T13:52:16.616Z","nullable":true,"type":"string"},"description":{"description":"Description of the Load Balancer type","example":"LB11","type":"string"},"id":{"description":"ID of the Load Balancer type","example":1,"type":"number"},"max_assigned_certificates":{"description":"Number of SSL Certificates that can be assigned to a single Load Balancer","example":10,"type":"number"},"max_connections":{"description":"Number of maximum simultaneous open connections","example":20000,"type":"number"},"max_services":{"description":"Number of services a Load Balancer of this type can have","example":5,"type":"number"},"max_targets":{"description":"Number of targets a single Load Balancer can have","example":25,"type":"number"},"name":{"description":"Unique identifier of the Load Balancer type","example":"lb11","type":"string"},"prices":{"description":"Prices in different network zones","items":{"properties":{"location":{"description":"Name of the Location the price is for","example":"fsn1","type":"string"},"price_hourly":{"description":"Hourly costs for a Resource in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"},"price_monthly":{"description":"Monthly costs for a Resource in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"}},"required":["location","price_hourly","price_monthly"],"type":"object"},"type":"array"}},"required":["id","name","description","max_connections","max_services","max_targets","max_assigned_certificates","deprecated","prices"],"type":"object"},"location":{"properties":{"city":{"description":"City the Location is closest to","example":"Falkenstein","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 code of the country the Location resides in","example":"DE","type":"string"},"description":{"description":"Description of the Location","example":"Falkenstein DC Park 1","type":"string"},"id":{"description":"ID of the Location","example":1,"type":"number"},"latitude":{"description":"Latitude of the city closest to the Location","example":50.47612,"type":"number"},"longitude":{"description":"Longitude of the city closest to the Location","example":12.370071,"type":"number"},"name":{"description":"Unique identifier of the Location","example":"fsn1","type":"string"},"network_zone":{"description":"Name of network zone this Location resides in","example":"eu-central","type":"string"}},"required":["id","name","description","country","city","latitude","longitude","network_zone"],"type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"outgoing_traffic":{"description":"Outbound Traffic for the current billing period in bytes","nullable":true,"type":"integer"},"private_net":{"description":"Private networks information","items":{"properties":{"ip":{"example":"10.0.0.2","type":"string"},"network":{"example":4711,"type":"integer"}},"type":"object"},"type":"array"},"protection":{"description":"Protection configuration for the Resource","properties":{"delete":{"description":"If true, prevents the Resource from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"public_net":{"description":"Public network information","properties":{"enabled":{"description":"Public Interface enabled or not","type":"boolean"},"ipv4":{"description":"IP address (v4)","properties":{"dns_ptr":{"description":"Reverse DNS PTR entry for the IPv4 address of this Load Balancer","example":"lb1.example.com","nullable":true,"type":"string"},"ip":{"description":"IP address (v4) of this Load Balancer","example":"1.2.3.4","nullable":true,"type":"string"}},"type":"object"},"ipv6":{"description":"IP address (v6)","properties":{"dns_ptr":{"description":"Reverse DNS PTR entry for the IPv6 address of this Load Balancer","example":"lb1.example.com","nullable":true,"type":"string"},"ip":{"description":"IP address (v6) of this Load Balancer","example":"2001:db8::1","nullable":true,"type":"string"}},"type":"object"}},"required":["enabled","ipv4","ipv6"],"type":"object"},"services":{"description":"List of services that belong to this Load Balancer","items":{"properties":{"destination_port":{"description":"Port the Load Balancer will balance to","example":80,"type":"integer"},"health_check":{"additionalProperties":false,"description":"Service health check","properties":{"http":{"additionalProperties":false,"description":"Additional configuration for protocol http","properties":{"domain":{"description":"Host header to send in the HTTP request. May not contain spaces, percent or backslash symbols. Can be null, in that case no host header is sent.","example":"example.com","nullable":true,"type":"string"},"path":{"description":"HTTP path to use for health checks. May not contain literal spaces, use percent-encoding instead.","example":"/","type":"string"},"response":{"description":"String that must be contained in HTTP response in order to pass the health check","example":"{\"status\": \"ok\"}","type":"string"},"status_codes":{"description":"List of returned HTTP status codes in order to pass the health check. Supports the wildcards `?` for exactly one character and `*` for multiple ones. The default is to pass the health check for any status code between 2?? and 3??.","example":["2??","3??"],"items":{"type":"string"},"type":"array"},"tls":{"description":"Use HTTPS for health check","example":false,"type":"boolean"}},"required":["domain","path"],"type":"object"},"interval":{"description":"Time interval in seconds health checks are performed","example":15,"type":"integer"},"port":{"description":"Port the health check will be performed on","example":4711,"type":"integer"},"protocol":{"description":"Type of the health check","enum":["tcp","http"],"example":"http","type":"string"},"retries":{"description":"Unsuccessful retries needed until a target is considered unhealthy; an unhealthy target needs the same number of successful retries to become healthy again","example":3,"type":"integer"},"timeout":{"description":"Time in seconds after an attempt is considered a timeout","example":10,"type":"integer"}},"required":["protocol","port","interval","timeout","retries"],"title":"LoadBalancerServiceHealthCheck","type":"object"},"http":{"description":"Configuration option for protocols http and https","properties":{"certificates":{"description":"IDs of the Certificates to use for TLS/SSL termination by the Load Balancer; empty for TLS/SSL passthrough or if `protocol` is \"http\"","example":[897],"items":{"type":"integer"},"type":"array"},"cookie_lifetime":{"description":"Lifetime of the cookie used for sticky sessions","example":300,"type":"integer"},"cookie_name":{"description":"Name of the cookie used for sticky sessions","example":"HCLBSTICKY","type":"string"},"redirect_http":{"description":"Redirect HTTP requests to HTTPS. Only available if protocol is \"https\". Default `false`","example":true,"type":"boolean"},"sticky_sessions":{"description":"Use sticky sessions. Only available if protocol is \"http\" or \"https\". Default `false`","example":true,"type":"boolean"}},"title":"LoadBalancerServiceHTTP","type":"object"},"listen_port":{"description":"Port the Load Balancer listens on","example":443,"type":"integer"},"protocol":{"description":"Protocol of the Load Balancer","enum":["tcp","http","https"],"example":"https","type":"string"},"proxyprotocol":{"description":"Is Proxyprotocol enabled or not","example":false,"type":"boolean"}},"required":["protocol","listen_port","destination_port","proxyprotocol","health_check"],"title":"LoadBalancerService","type":"object"},"type":"array"},"targets":{"description":"List of targets that belong to this Load Balancer","items":{"properties":{"health_status":{"description":"List of health statuses of the services on this target. Only present for target types \"server\" and \"ip\".","items":{"properties":{"listen_port":{"example":443,"type":"integer"},"status":{"enum":["healthy","unhealthy","unknown"],"example":"healthy","type":"string"}},"type":"object"},"title":"LoadBalancerTargetHealthStatus","type":"array"},"ip":{"description":"IP targets where the traffic should be routed to. It is only possible to use the (Public or vSwitch) IPs of Hetzner Online Root Servers belonging to the project owner. IPs belonging to other users are blocked. Additionally IPs belonging to services provided by Hetzner Cloud (Servers, Load Balancers, ...) are blocked as well. Only present for target type \"ip\".","properties":{"ip":{"description":"IP of a server that belongs to the same customer (public IPv4/IPv6) or private IP in a Subnetwork type vswitch.","example":"203.0.113.1","type":"string"}},"required":["ip"],"title":"LoadBalancerTargetIP","type":"object"},"label_selector":{"description":"Label selector used to determine targets. Only present for target type \"label_selector\".","properties":{"selector":{"description":"Label selector","example":"env=prod","type":"string"}},"required":["selector"],"title":"LoadBalancerTargetLabelSelector","type":"object"},"server":{"description":"Server where the traffic should be routed to. Only present for target type \"server\".","properties":{"id":{"description":"ID of the Server","example":80,"type":"integer"}},"required":["id"],"title":"LoadBalancerTargetServer","type":"object"},"targets":{"description":"List of resolved label selector target Servers. Only present for type \"label_selector\".","items":{"properties":{"health_status":{"description":"List of health statuses of the services on this target. Only present for target types \"server\" and \"ip\".","items":{"properties":{"listen_port":{"example":443,"type":"integer"},"status":{"enum":["healthy","unhealthy","unknown"],"example":"healthy","type":"string"}},"type":"object"},"title":"LoadBalancerTargetHealthStatus","type":"array"},"server":{"description":"Server where the traffic should be routed to. Only present for target type \"server\".","properties":{"id":{"description":"ID of the Server","example":80,"type":"integer"}},"required":["id"],"title":"LoadBalancerTargetServer","type":"object"},"type":{"description":"Type of the resource. Here always \"server\".","example":"server","type":"string"},"use_private_ip":{"description":"Use the private network IP instead of the public IP. Default value is false. Only present for target types \"server\" and \"label_selector\".","title":"LoadBalancerTargetUsePrivateIP","type":"boolean"}},"title":"LoadBalancerTargetTarget","type":"object"},"type":"array"},"type":{"description":"Type of the resource","enum":["server","label_selector","ip"],"type":"string"},"use_private_ip":{"description":"Use the private network IP instead of the public IP. Default value is false. Only present for target types \"server\" and \"label_selector\".","title":"LoadBalancerTargetUsePrivateIP","type":"boolean"}},"required":["type"],"title":"LoadBalancerTarget","type":"object"},"type":"array"}},"required":["id","name","public_net","private_net","location","load_balancer_type","protection","labels","created","services","targets","algorithm","outgoing_traffic","ingoing_traffic","included_traffic"],"type":"object"}},"required":["load_balancer"],"type":"object"}}},"description":"The `load_balancer` key contains the Load Balancer"}},"summary":"Get a Load Balancer","tags":["Load Balancers"]},"put":{"description":"Updates a Load Balancer. You can update a Load Balancer’s name and a Load Balancer’s labels.\n\nNote that when updating labels, the Load Balancer’s current set of labels will be replaced with the labels provided in the request body. So, for example, if you want to add a new label, you have to provide all existing labels plus the new label in the request body.\n\nNote: if the Load Balancer object changes during the request, the response will be a “conflict” error.\n","parameters":[{"description":"ID of the Load Balancer","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"labels":{"description":"User-defined labels (key-value pairs)","example":{"labelkey":"value"},"type":"object"},"name":{"description":"New Load Balancer name","example":"new-name","type":"string"}},"type":"object"}}}},"responses":{"200":{"content":{"application/json":{"example":{"load_balancer":{"algorithm":{"type":"round_robin"},"created":"2025-08-15T13:52:16.616Z","id":4711,"included_traffic":654321,"ingoing_traffic":123456,"labels":{"labelkey":"value"},"load_balancer_type":{"deprecated":"2025-08-15T13:52:16.616Z","description":"LB11","id":1,"max_assigned_certificates":10,"max_connections":20000,"max_services":5,"max_targets":25,"name":"lb11","prices":[{"location":"fsn1","price_hourly":{"gross":"1.1900000000000000","net":"1.0000000000"},"price_monthly":{"gross":"1.1900000000000000","net":"1.0000000000"}}]},"location":{"city":"Falkenstein","country":"DE","description":"Falkenstein DC Park 1","id":1,"latitude":50.47612,"longitude":12.370071,"name":"fsn1","network_zone":"eu-central"},"name":"new-name","outgoing_traffic":123456,"private_net":[{"ip":"10.0.0.2","network":4711}],"protection":{"delete":false},"public_net":{"enabled":false,"ipv4":{"ip":"1.2.3.4"},"ipv6":{"ip":"2001:db8::1"}},"services":[{"destination_port":80,"health_check":{"http":{"domain":"example.com","path":"/","response":"{\"status\": \"ok\"}","status_codes":["2??,3??"],"tls":false},"interval":15,"port":4711,"protocol":"http","retries":3,"timeout":10},"http":{"certificates":[897],"cookie_lifetime":300,"cookie_name":"HCLBSTICKY","redirect_http":true,"sticky_sessions":true},"listen_port":443,"protocol":"http","proxyprotocol":false}],"targets":[{"health_status":[{"listen_port":443,"status":"healthy"}],"ip":{"ip":"203.0.113.1"},"label_selector":{"selector":"env=prod"},"server":{"id":80},"targets":[{"health_status":[{"listen_port":443,"status":"healthy"}],"label_selector":null,"server":{"id":80},"type":"server","use_private_ip":true}],"type":"server","use_private_ip":true}]}},"schema":{"properties":{"load_balancer":{"properties":{"algorithm":{"description":"Algorithm of the Load Balancer","properties":{"type":{"description":"Type of the algorithm","enum":["round_robin","least_connections"],"type":"string"}},"required":["type"],"type":"object"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.616Z","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"included_traffic":{"description":"Free Traffic for the current billing period in bytes","example":10000,"type":"integer"},"ingoing_traffic":{"description":"Inbound Traffic for the current billing period in bytes","nullable":true,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"load_balancer_type":{"properties":{"deprecated":{"description":"Point in time when the Load Balancer type is deprecated (in ISO-8601 format)","example":"2025-08-15T13:52:16.616Z","nullable":true,"type":"string"},"description":{"description":"Description of the Load Balancer type","example":"LB11","type":"string"},"id":{"description":"ID of the Load Balancer type","example":1,"type":"number"},"max_assigned_certificates":{"description":"Number of SSL Certificates that can be assigned to a single Load Balancer","example":10,"type":"number"},"max_connections":{"description":"Number of maximum simultaneous open connections","example":20000,"type":"number"},"max_services":{"description":"Number of services a Load Balancer of this type can have","example":5,"type":"number"},"max_targets":{"description":"Number of targets a single Load Balancer can have","example":25,"type":"number"},"name":{"description":"Unique identifier of the Load Balancer type","example":"lb11","type":"string"},"prices":{"description":"Prices in different network zones","items":{"properties":{"location":{"description":"Name of the Location the price is for","example":"fsn1","type":"string"},"price_hourly":{"description":"Hourly costs for a Resource in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"},"price_monthly":{"description":"Monthly costs for a Resource in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"}},"required":["location","price_hourly","price_monthly"],"type":"object"},"type":"array"}},"required":["id","name","description","max_connections","max_services","max_targets","max_assigned_certificates","deprecated","prices"],"type":"object"},"location":{"properties":{"city":{"description":"City the Location is closest to","example":"Falkenstein","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 code of the country the Location resides in","example":"DE","type":"string"},"description":{"description":"Description of the Location","example":"Falkenstein DC Park 1","type":"string"},"id":{"description":"ID of the Location","example":1,"type":"number"},"latitude":{"description":"Latitude of the city closest to the Location","example":50.47612,"type":"number"},"longitude":{"description":"Longitude of the city closest to the Location","example":12.370071,"type":"number"},"name":{"description":"Unique identifier of the Location","example":"fsn1","type":"string"},"network_zone":{"description":"Name of network zone this Location resides in","example":"eu-central","type":"string"}},"required":["id","name","description","country","city","latitude","longitude","network_zone"],"type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"outgoing_traffic":{"description":"Outbound Traffic for the current billing period in bytes","nullable":true,"type":"integer"},"private_net":{"description":"Private networks information","items":{"properties":{"ip":{"example":"10.0.0.2","type":"string"},"network":{"example":4711,"type":"integer"}},"type":"object"},"type":"array"},"protection":{"description":"Protection configuration for the Resource","properties":{"delete":{"description":"If true, prevents the Resource from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"public_net":{"description":"Public network information","properties":{"enabled":{"description":"Public Interface enabled or not","type":"boolean"},"ipv4":{"description":"IP address (v4)","properties":{"dns_ptr":{"description":"Reverse DNS PTR entry for the IPv4 address of this Load Balancer","example":"lb1.example.com","nullable":true,"type":"string"},"ip":{"description":"IP address (v4) of this Load Balancer","example":"1.2.3.4","nullable":true,"type":"string"}},"type":"object"},"ipv6":{"description":"IP address (v6)","properties":{"dns_ptr":{"description":"Reverse DNS PTR entry for the IPv6 address of this Load Balancer","example":"lb1.example.com","nullable":true,"type":"string"},"ip":{"description":"IP address (v6) of this Load Balancer","example":"2001:db8::1","nullable":true,"type":"string"}},"type":"object"}},"required":["enabled","ipv4","ipv6"],"type":"object"},"services":{"description":"List of services that belong to this Load Balancer","items":{"properties":{"destination_port":{"description":"Port the Load Balancer will balance to","example":80,"type":"integer"},"health_check":{"additionalProperties":false,"description":"Service health check","properties":{"http":{"additionalProperties":false,"description":"Additional configuration for protocol http","properties":{"domain":{"description":"Host header to send in the HTTP request. May not contain spaces, percent or backslash symbols. Can be null, in that case no host header is sent.","example":"example.com","nullable":true,"type":"string"},"path":{"description":"HTTP path to use for health checks. May not contain literal spaces, use percent-encoding instead.","example":"/","type":"string"},"response":{"description":"String that must be contained in HTTP response in order to pass the health check","example":"{\"status\": \"ok\"}","type":"string"},"status_codes":{"description":"List of returned HTTP status codes in order to pass the health check. Supports the wildcards `?` for exactly one character and `*` for multiple ones. The default is to pass the health check for any status code between 2?? and 3??.","example":["2??","3??"],"items":{"type":"string"},"type":"array"},"tls":{"description":"Use HTTPS for health check","example":false,"type":"boolean"}},"required":["domain","path"],"type":"object"},"interval":{"description":"Time interval in seconds health checks are performed","example":15,"type":"integer"},"port":{"description":"Port the health check will be performed on","example":4711,"type":"integer"},"protocol":{"description":"Type of the health check","enum":["tcp","http"],"example":"http","type":"string"},"retries":{"description":"Unsuccessful retries needed until a target is considered unhealthy; an unhealthy target needs the same number of successful retries to become healthy again","example":3,"type":"integer"},"timeout":{"description":"Time in seconds after an attempt is considered a timeout","example":10,"type":"integer"}},"required":["protocol","port","interval","timeout","retries"],"title":"LoadBalancerServiceHealthCheck","type":"object"},"http":{"description":"Configuration option for protocols http and https","properties":{"certificates":{"description":"IDs of the Certificates to use for TLS/SSL termination by the Load Balancer; empty for TLS/SSL passthrough or if `protocol` is \"http\"","example":[897],"items":{"type":"integer"},"type":"array"},"cookie_lifetime":{"description":"Lifetime of the cookie used for sticky sessions","example":300,"type":"integer"},"cookie_name":{"description":"Name of the cookie used for sticky sessions","example":"HCLBSTICKY","type":"string"},"redirect_http":{"description":"Redirect HTTP requests to HTTPS. Only available if protocol is \"https\". Default `false`","example":true,"type":"boolean"},"sticky_sessions":{"description":"Use sticky sessions. Only available if protocol is \"http\" or \"https\". Default `false`","example":true,"type":"boolean"}},"title":"LoadBalancerServiceHTTP","type":"object"},"listen_port":{"description":"Port the Load Balancer listens on","example":443,"type":"integer"},"protocol":{"description":"Protocol of the Load Balancer","enum":["tcp","http","https"],"example":"https","type":"string"},"proxyprotocol":{"description":"Is Proxyprotocol enabled or not","example":false,"type":"boolean"}},"required":["protocol","listen_port","destination_port","proxyprotocol","health_check"],"title":"LoadBalancerService","type":"object"},"type":"array"},"targets":{"description":"List of targets that belong to this Load Balancer","items":{"properties":{"health_status":{"description":"List of health statuses of the services on this target. Only present for target types \"server\" and \"ip\".","items":{"properties":{"listen_port":{"example":443,"type":"integer"},"status":{"enum":["healthy","unhealthy","unknown"],"example":"healthy","type":"string"}},"type":"object"},"title":"LoadBalancerTargetHealthStatus","type":"array"},"ip":{"description":"IP targets where the traffic should be routed to. It is only possible to use the (Public or vSwitch) IPs of Hetzner Online Root Servers belonging to the project owner. IPs belonging to other users are blocked. Additionally IPs belonging to services provided by Hetzner Cloud (Servers, Load Balancers, ...) are blocked as well. Only present for target type \"ip\".","properties":{"ip":{"description":"IP of a server that belongs to the same customer (public IPv4/IPv6) or private IP in a Subnetwork type vswitch.","example":"203.0.113.1","type":"string"}},"required":["ip"],"title":"LoadBalancerTargetIP","type":"object"},"label_selector":{"description":"Label selector used to determine targets. Only present for target type \"label_selector\".","properties":{"selector":{"description":"Label selector","example":"env=prod","type":"string"}},"required":["selector"],"title":"LoadBalancerTargetLabelSelector","type":"object"},"server":{"description":"Server where the traffic should be routed to. Only present for target type \"server\".","properties":{"id":{"description":"ID of the Server","example":80,"type":"integer"}},"required":["id"],"title":"LoadBalancerTargetServer","type":"object"},"targets":{"description":"List of resolved label selector target Servers. Only present for type \"label_selector\".","items":{"properties":{"health_status":{"description":"List of health statuses of the services on this target. Only present for target types \"server\" and \"ip\".","items":{"properties":{"listen_port":{"example":443,"type":"integer"},"status":{"enum":["healthy","unhealthy","unknown"],"example":"healthy","type":"string"}},"type":"object"},"title":"LoadBalancerTargetHealthStatus","type":"array"},"server":{"description":"Server where the traffic should be routed to. Only present for target type \"server\".","properties":{"id":{"description":"ID of the Server","example":80,"type":"integer"}},"required":["id"],"title":"LoadBalancerTargetServer","type":"object"},"type":{"description":"Type of the resource. Here always \"server\".","example":"server","type":"string"},"use_private_ip":{"description":"Use the private network IP instead of the public IP. Default value is false. Only present for target types \"server\" and \"label_selector\".","title":"LoadBalancerTargetUsePrivateIP","type":"boolean"}},"title":"LoadBalancerTargetTarget","type":"object"},"type":"array"},"type":{"description":"Type of the resource","enum":["server","label_selector","ip"],"type":"string"},"use_private_ip":{"description":"Use the private network IP instead of the public IP. Default value is false. Only present for target types \"server\" and \"label_selector\".","title":"LoadBalancerTargetUsePrivateIP","type":"boolean"}},"required":["type"],"title":"LoadBalancerTarget","type":"object"},"type":"array"}},"required":["id","name","public_net","private_net","location","load_balancer_type","protection","labels","created","services","targets","algorithm","outgoing_traffic","ingoing_traffic","included_traffic"],"type":"object"}},"required":["load_balancer"],"type":"object"}}},"description":"The `load_balancer` key contains the updated Load Balancer"}},"summary":"Update a Load Balancer","tags":["Load Balancers"]}},"/load_balancers/{id}/actions":{"get":{"description":"Returns all Action objects for a Load Balancer. You can sort the results by using the `sort` URI parameter, and filter them with the `status` parameter.","parameters":[{"description":"ID of the Load Balancer","in":"path","name":"id","required":true,"schema":{"type":"integer"}},{"description":"Can be used multiple times.","in":"query","name":"sort","required":false,"schema":{"enum":["id","id:asc","id:desc","command","command:asc","command:desc","status","status:asc","status:desc","progress","progress:asc","progress:desc","started","started:asc","started:desc","finished","finished:asc","finished:desc"],"title":"ParameterSort","type":"string"}},{"description":"Can be used multiple times, the response will contain only Actions with specified statuses","in":"query","name":"status","required":false,"schema":{"enum":["running","success","error"],"title":"ParameterStatus","type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"actions":[{"command":"add_service","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.617Z","id":13,"progress":100,"resources":[{"id":4711,"type":"load_balancer"}],"started":"2025-08-15T13:52:16.617Z","status":"success"}]},"schema":{"properties":{"actions":{"items":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.617Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.617Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"},"type":"array"},"meta":{"properties":{"pagination":{"properties":{"last_page":{"description":"ID of the last page available. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"next_page":{"description":"ID of the next page. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"page":{"description":"Current page number","example":3,"type":"number"},"per_page":{"description":"Maximum number of items shown per page in the response","example":25,"type":"number"},"previous_page":{"description":"ID of the previous page. Can be null if the current page is the first one.","example":2,"nullable":true,"type":"number"},"total_entries":{"description":"The total number of entries that exist in the database for this query. Nullable if unknown.","example":100,"nullable":true,"type":"number"}},"required":["page","per_page","previous_page","next_page","last_page","total_entries"],"type":"object"}},"required":["pagination"],"type":"object"}},"required":["actions"],"title":"ActionsResponse","type":"object"}}},"description":"The `actions` key contains a list of Actions"}},"summary":"Get all Actions for a Load Balancer","tags":["Load Balancer Actions"]}},"/load_balancers/{id}/actions/add_service":{"post":{"description":"Adds a service to a Load Balancer.\n\n#### Call specific error codes\n\n| Code                       | Description                                             |\n|----------------------------|---------------------------------------------------------|\n| `source_port_already_used` | The source port you are trying to add is already in use |\n","parameters":[{"description":"ID of the Load Balancer","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"destination_port":{"description":"Port the Load Balancer will balance to","example":80,"type":"integer"},"health_check":{"additionalProperties":false,"description":"Service health check","properties":{"http":{"additionalProperties":false,"description":"Additional configuration for protocol http","properties":{"domain":{"description":"Host header to send in the HTTP request. May not contain spaces, percent or backslash symbols. Can be null, in that case no host header is sent.","example":"example.com","nullable":true,"type":"string"},"path":{"description":"HTTP path to use for health checks. May not contain literal spaces, use percent-encoding instead.","example":"/","type":"string"},"response":{"description":"String that must be contained in HTTP response in order to pass the health check","example":"{\"status\": \"ok\"}","type":"string"},"status_codes":{"description":"List of returned HTTP status codes in order to pass the health check. Supports the wildcards `?` for exactly one character and `*` for multiple ones. The default is to pass the health check for any status code between 2?? and 3??.","example":["2??","3??"],"items":{"type":"string"},"type":"array"},"tls":{"description":"Use HTTPS for health check","example":false,"type":"boolean"}},"required":["domain","path"],"type":"object"},"interval":{"description":"Time interval in seconds health checks are performed","example":15,"type":"integer"},"port":{"description":"Port the health check will be performed on","example":4711,"type":"integer"},"protocol":{"description":"Type of the health check","enum":["tcp","http"],"example":"http","type":"string"},"retries":{"description":"Unsuccessful retries needed until a target is considered unhealthy; an unhealthy target needs the same number of successful retries to become healthy again","example":3,"type":"integer"},"timeout":{"description":"Time in seconds after an attempt is considered a timeout","example":10,"type":"integer"}},"required":["protocol","port","interval","timeout","retries"],"title":"LoadBalancerServiceHealthCheck","type":"object"},"http":{"description":"Configuration option for protocols http and https","properties":{"certificates":{"description":"IDs of the Certificates to use for TLS/SSL termination by the Load Balancer; empty for TLS/SSL passthrough or if `protocol` is \"http\"","example":[897],"items":{"type":"integer"},"type":"array"},"cookie_lifetime":{"description":"Lifetime of the cookie used for sticky sessions","example":300,"type":"integer"},"cookie_name":{"description":"Name of the cookie used for sticky sessions","example":"HCLBSTICKY","type":"string"},"redirect_http":{"description":"Redirect HTTP requests to HTTPS. Only available if protocol is \"https\". Default `false`","example":true,"type":"boolean"},"sticky_sessions":{"description":"Use sticky sessions. Only available if protocol is \"http\" or \"https\". Default `false`","example":true,"type":"boolean"}},"title":"LoadBalancerServiceHTTP","type":"object"},"listen_port":{"description":"Port the Load Balancer listens on","example":443,"type":"integer"},"protocol":{"description":"Protocol of the Load Balancer","enum":["tcp","http","https"],"example":"https","type":"string"},"proxyprotocol":{"description":"Is Proxyprotocol enabled or not","example":false,"type":"boolean"}},"required":["protocol","listen_port","destination_port","proxyprotocol","health_check"],"title":"LoadBalancerService","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"add_service","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.617Z","id":13,"progress":100,"resources":[{"id":4711,"type":"load_balancer"}],"started":"2025-08-15T13:52:16.617Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.617Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.617Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `add_service` Action"}},"summary":"Add Service","tags":["Load Balancer Actions"]}},"/load_balancers/{id}/actions/add_target":{"post":{"description":"Adds a target to a Load Balancer.\n\n#### Call specific error codes\n\n| Code                                    | Description                                                                                           |\n|-----------------------------------------|-------------------------------------------------------------------------------------------------------|\n| `cloud_resource_ip_not_allowed`         | The IP you are trying to add as a target belongs to a Hetzner Cloud resource                          |\n| `ip_not_owned`                          | The IP you are trying to add as a target is not owned by the Project owner                            |\n| `load_balancer_not_attached_to_network` | The Load Balancer is not attached to a network                                                        |\n| `robot_unavailable`                     | Robot was not available. The caller may retry the operation after a short delay.                      |\n| `server_not_attached_to_network`        | The server you are trying to add as a target is not attached to the same network as the Load Balancer |\n| `target_already_defined`                | The Load Balancer target you are trying to define is already defined                                  |\n","parameters":[{"description":"ID of the Load Balancer","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"ip":{"description":"IP targets where the traffic should be routed to. It is only possible to use the (Public or vSwitch) IPs of Hetzner Online Root Servers belonging to the project owner. IPs belonging to other users are blocked. Additionally IPs belonging to services provided by Hetzner Cloud (Servers, Load Balancers, ...) are blocked as well. Only present for target type \"ip\".","properties":{"ip":{"description":"IP of a server that belongs to the same customer (public IPv4/IPv6) or private IP in a Subnetwork type vswitch.","example":"203.0.113.1","type":"string"}},"required":["ip"],"title":"LoadBalancerTargetIP","type":"object"},"label_selector":{"description":"Configuration for label selector targets, required if type is `label_selector`","properties":{"selector":{"description":"Label selector","example":"env=prod","type":"string"}},"required":["selector"],"type":"object"},"server":{"additionalProperties":false,"description":"Configuration for type Server, required if type is `server`","properties":{"id":{"description":"ID of the Server","example":80,"type":"number"}},"required":["id"],"type":"object"},"type":{"description":"Type of the resource","enum":["server","label_selector","ip"],"type":"string"},"use_private_ip":{"description":"Use the private network IP instead of the public IP of the Server, requires the Server and Load Balancer to be in the same network. Default value is false.","example":true,"type":"boolean"}},"required":["type"],"title":"AddTargetRequest","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"add_target","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.617Z","id":13,"progress":100,"resources":[{"id":4711,"type":"load_balancer"}],"started":"2025-08-15T13:52:16.617Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.617Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.617Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `add_target` Action"}},"summary":"Add Target","tags":["Load Balancer Actions"]}},"/load_balancers/{id}/actions/attach_to_network":{"post":{"description":"Attach a Load Balancer to a Network.\n\n**Call specific error codes**\n\n| Code                             | Description                                                           |\n|----------------------------------|-----------------------------------------------------------------------|\n| `load_balancer_already_attached` | The Load Balancer is already attached to a network                    |\n| `ip_not_available`               | The provided Network IP is not available                              |\n| `no_subnet_available`            | No Subnet or IP is available for the Load Balancer within the network |\n","parameters":[{"description":"ID of the Load Balancer","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"ip":{"description":"IP to request to be assigned to this Load Balancer; if you do not provide this then you will be auto assigned an IP address","example":"10.0.1.1","type":"string"},"network":{"description":"ID of an existing network to attach the Load Balancer to","example":4711,"type":"number"}},"required":["network"],"type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"attach_to_network","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.617Z","id":13,"progress":100,"resources":[{"id":4711,"type":"load_balancer"}],"started":"2025-08-15T13:52:16.617Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.617Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.617Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `attach_to_network` Action"}},"summary":"Attach a Load Balancer to a Network","tags":["Load Balancer Actions"]}},"/load_balancers/{id}/actions/change_algorithm":{"post":{"description":"Change the algorithm that determines to which target new requests are sent.","parameters":[{"description":"ID of the Load Balancer","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"type":{"description":"Algorithm of the Load Balancer","enum":["round_robin","least_connections"],"type":"string"}},"required":["type"],"type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"change_algorithm","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.617Z","id":13,"progress":100,"resources":[{"id":4711,"type":"load_balancer"}],"started":"2025-08-15T13:52:16.617Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.617Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.617Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `change_algorithm` Action"}},"summary":"Change Algorithm","tags":["Load Balancer Actions"]}},"/load_balancers/{id}/actions/change_dns_ptr":{"post":{"description":"Changes the hostname that will appear when getting the hostname belonging to the public IPs (IPv4 and IPv6) of this Load Balancer.\n\nFloating IPs assigned to the Server are not affected by this.\n","parameters":[{"description":"ID of the Load Balancer","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"dns_ptr":{"description":"Hostname to set as a reverse DNS PTR entry","example":"lb1.example.com","nullable":true,"type":"string"},"ip":{"description":"Public IP address for which the reverse DNS entry should be set","example":"1.2.3.4","type":"string"}},"required":["ip","dns_ptr"],"title":"ChangeLoadbalancerDnsPtrRequest","type":"object"}}},"description":"Select the IP address for which to change the DNS entry by passing `ip`. It can be either IPv4 or IPv6. The target hostname is set by passing `dns_ptr`."},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"change_dns_ptr","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"load_balancer"}],"started":"2025-08-15T13:52:16.617Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.617Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.617Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key in the reply contains an Action object with this structure"}},"summary":"Change reverse DNS entry for this Load Balancer","tags":["Load Balancer Actions"]}},"/load_balancers/{id}/actions/change_protection":{"post":{"description":"Changes the protection configuration of a Load Balancer.","parameters":[{"description":"ID of the Load Balancer","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"delete":{"description":"If true, prevents the Load Balancer from being deleted","example":true,"type":"boolean"}},"type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"change_protection","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.617Z","id":13,"progress":100,"resources":[{"id":4711,"type":"load_balancer"}],"started":"2025-08-15T13:52:16.617Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.617Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.617Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `change_protection` Action"}},"summary":"Change Load Balancer Protection","tags":["Load Balancer Actions"]}},"/load_balancers/{id}/actions/change_type":{"post":{"description":"Changes the type (Max Services, Max Targets and Max Connections) of a Load Balancer.\n\n**Call specific error codes**\n\n| Code                         | Description                                                     |\n|------------------------------|-----------------------------------------------------------------|\n| `invalid_load_balancer_type` | The Load Balancer type does not fit for the given Load Balancer |\n","parameters":[{"description":"ID of the Load Balancer","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"load_balancer_type":{"description":"ID or name of Load Balancer type the Load Balancer should migrate to","example":"lb21","type":"string"}},"required":["load_balancer_type"],"title":"ChangeTypeRequest","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"change_load_balancer_type","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.617Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.617Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.617Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `change_load_balancer_type` Action"}},"summary":"Change the Type of a Load Balancer","tags":["Load Balancer Actions"]}},"/load_balancers/{id}/actions/delete_service":{"post":{"description":"Delete a service of a Load Balancer.","parameters":[{"description":"ID of the Load Balancer","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"listen_port":{"description":"The listen port of the service you want to delete","example":4711,"type":"number"}},"required":["listen_port"],"type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"delete_service","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.617Z","id":13,"progress":100,"resources":[{"id":4711,"type":"load_balancer"}],"started":"2025-08-15T13:52:16.617Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.617Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.617Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `delete_service` Action"}},"summary":"Delete Service","tags":["Load Balancer Actions"]}},"/load_balancers/{id}/actions/detach_from_network":{"post":{"description":"Detaches a Load Balancer from a network.","parameters":[{"description":"ID of the Load Balancer","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"network":{"description":"ID of an existing network to detach the Load Balancer from","example":4711,"type":"number"}},"required":["network"],"type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"detach_from_network","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"server"},{"id":4711,"type":"network"}],"started":"2025-08-15T13:52:16.617Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.617Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.617Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `detach_from_network` Action"}},"summary":"Detach a Load Balancer from a Network","tags":["Load Balancer Actions"]}},"/load_balancers/{id}/actions/disable_public_interface":{"post":{"description":"Disable the public interface of a Load Balancer. The Load Balancer will be not accessible from the internet via its public IPs.\n\n#### Call specific error codes\n\n| Code                                      | Description                                                                    |\n|-------------------------------------------|--------------------------------------------------------------------------------|\n| `load_balancer_not_attached_to_network`   |  The Load Balancer is not attached to a network                                |\n| `targets_without_use_private_ip`          | The Load Balancer has targets that use the public IP instead of the private IP |\n","parameters":[{"description":"ID of the Load Balancer","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"disable_public_interface","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"server"},{"id":4711,"type":"network"}],"started":"2025-08-15T13:52:16.617Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.617Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.617Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `disable_public_interface` Action"}},"summary":"Disable the public interface of a Load Balancer","tags":["Load Balancer Actions"]}},"/load_balancers/{id}/actions/enable_public_interface":{"post":{"description":"Enable the public interface of a Load Balancer. The Load Balancer will be accessible from the internet via its public IPs.","parameters":[{"description":"ID of the Load Balancer","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"enable_public_interface","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"server"},{"id":4711,"type":"network"}],"started":"2025-08-15T13:52:16.617Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.617Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.617Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `enable_public_interface` Action"}},"summary":"Enable the public interface of a Load Balancer","tags":["Load Balancer Actions"]}},"/load_balancers/{id}/actions/remove_target":{"post":{"description":"Removes a target from a Load Balancer.","parameters":[{"description":"ID of the Load Balancer","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"ip":{"description":"IP targets where the traffic should be routed to. It is only possible to use the (Public or vSwitch) IPs of Hetzner Online Root Servers belonging to the project owner. IPs belonging to other users are blocked. Additionally IPs belonging to services provided by Hetzner Cloud (Servers, Load Balancers, ...) are blocked as well. Only present for target type \"ip\".","properties":{"ip":{"description":"IP of a server that belongs to the same customer (public IPv4/IPv6) or private IP in a Subnetwork type vswitch.","example":"203.0.113.1","type":"string"}},"required":["ip"],"title":"LoadBalancerTargetIP","type":"object"},"label_selector":{"description":"Configuration for label selector targets, required if type is `label_selector`","properties":{"selector":{"description":"Label selector","example":"env=prod","type":"string"}},"required":["selector"],"type":"object"},"server":{"additionalProperties":false,"description":"Configuration for type Server, required if type is `server`","properties":{"id":{"description":"ID of the Server","example":80,"type":"number"}},"required":["id"],"type":"object"},"type":{"description":"Type of the resource","enum":["server","label_selector","ip"],"type":"string"}},"required":["type"],"title":"RemoveTargetRequest","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"remove_target","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.618Z","id":13,"progress":100,"resources":[{"id":4711,"type":"load_balancer"}],"started":"2025-08-15T13:52:16.618Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.618Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.618Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `remove_target` Action"}},"summary":"Remove Target","tags":["Load Balancer Actions"]}},"/load_balancers/{id}/actions/update_service":{"post":{"description":"Updates a Load Balancer Service.\n\n#### Call specific error codes\n\n| Code                       | Description                                             |\n|----------------------------|---------------------------------------------------------|\n| `source_port_already_used` | The source port you are trying to add is already in use |\n","parameters":[{"description":"ID of the Load Balancer","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"destination_port":{"description":"Port the Load Balancer will balance to","example":80,"type":"integer"},"health_check":{"additionalProperties":false,"description":"Service health check","properties":{"http":{"additionalProperties":false,"description":"Additional configuration for protocol http","properties":{"domain":{"description":"Host header to send in the HTTP request. May not contain spaces, percent or backslash symbols. Can be null, in that case no host header is sent.","example":"example.com","nullable":true,"type":"string"},"path":{"description":"HTTP path to use for health checks. May not contain literal spaces, use percent-encoding instead.","example":"/","type":"string"},"response":{"description":"String that must be contained in HTTP response in order to pass the health check","example":"{\"status\": \"ok\"}","type":"string"},"status_codes":{"description":"List of returned HTTP status codes in order to pass the health check. Supports the wildcards `?` for exactly one character and `*` for multiple ones. The default is to pass the health check for any status code between 2?? and 3??.","example":["2??","3??"],"items":{"type":"string"},"type":"array"},"tls":{"description":"Use HTTPS for health check","example":false,"type":"boolean"}},"required":["domain","path"],"type":"object"},"interval":{"description":"Time interval in seconds health checks are performed","example":15,"type":"integer"},"port":{"description":"Port the health check will be performed on","example":4711,"type":"integer"},"protocol":{"description":"Type of the health check","enum":["tcp","http"],"example":"http","type":"string"},"retries":{"description":"Unsuccessful retries needed until a target is considered unhealthy; an unhealthy target needs the same number of successful retries to become healthy again","example":3,"type":"integer"},"timeout":{"description":"Time in seconds after an attempt is considered a timeout","example":10,"type":"integer"}},"required":["protocol","port","interval","timeout","retries"],"title":"LoadBalancerServiceHealthCheck","type":"object"},"http":{"description":"Configuration option for protocols http and https","properties":{"certificates":{"description":"IDs of the Certificates to use for TLS/SSL termination by the Load Balancer; empty for TLS/SSL passthrough or if `protocol` is \"http\"","example":[897],"items":{"type":"integer"},"type":"array"},"cookie_lifetime":{"description":"Lifetime of the cookie used for sticky sessions","example":300,"type":"integer"},"cookie_name":{"description":"Name of the cookie used for sticky sessions","example":"HCLBSTICKY","type":"string"},"redirect_http":{"description":"Redirect HTTP requests to HTTPS. Only available if protocol is \"https\". Default `false`","example":true,"type":"boolean"},"sticky_sessions":{"description":"Use sticky sessions. Only available if protocol is \"http\" or \"https\". Default `false`","example":true,"type":"boolean"}},"title":"LoadBalancerServiceHTTP","type":"object"},"listen_port":{"description":"Port the Load Balancer listens on","example":443,"type":"integer"},"protocol":{"description":"Protocol of the Load Balancer","enum":["tcp","http","https"],"example":"https","type":"string"},"proxyprotocol":{"description":"Is Proxyprotocol enabled or not","example":false,"type":"boolean"}},"required":["protocol","listen_port","destination_port","proxyprotocol","health_check"],"title":"LoadBalancerService","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"update_service","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.618Z","id":13,"progress":100,"resources":[{"id":4711,"type":"load_balancer"}],"started":"2025-08-15T13:52:16.618Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.618Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.618Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `update_service` Action"}},"summary":"Update Service","tags":["Load Balancer Actions"]}},"/load_balancers/{id}/actions/{action_id}":{"get":{"description":"Returns a specific Action for a Load Balancer.","parameters":[{"description":"ID of the Load Balancer","in":"path","name":"id","required":true,"schema":{"type":"integer"}},{"description":"ID of the Action","in":"path","name":"action_id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"example":{"action":{"command":"change_protection","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.618Z","id":13,"progress":100,"resources":[{"id":4711,"type":"load_balancer"}],"started":"2025-08-15T13:52:16.618Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.618Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.618Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the Load Balancer Action"}},"summary":"Get an Action for a Load Balancer","tags":["Load Balancer Actions"]}},"/load_balancers/{id}/metrics":{"get":{"description":"You must specify the type of metric to get: `open_connections`, `connections_per_second`, `requests_per_second` or `bandwidth`. You can also specify more than one type by comma separation, e.g. `requests_per_second,bandwidth`.\n\nDepending on the type you will get different time series data:\n\n|Type | Timeseries | Unit | Description |\n|---- |------------|------|-------------|\n| open_connections | open_connections | number | Open connections |\n| connections_per_second | connections_per_second | connections/s | Connections per second |\n| requests_per_second | requests_per_second | requests/s | Requests per second |\n| bandwidth | bandwidth.in | bytes/s | Ingress bandwidth |\n|| bandwidth.out | bytes/s | Egress bandwidth |\n\nMetrics are available for the last 30 days only.\n\nIf you do not provide the step argument we will automatically adjust it so that 200 samples are returned.\n\nWe limit the number of samples to a maximum of 500 and will adjust the step parameter accordingly.\n","parameters":[{"description":"ID of the Load Balancer","in":"path","name":"id","required":true,"schema":{"type":"integer"}},{"description":"Type of metrics to get","in":"query","name":"type","required":true,"schema":{"enum":["open_connections","connections_per_second","requests_per_second","bandwidth"],"type":"string"}},{"description":"Start of period to get Metrics for (in ISO-8601 format)","in":"query","name":"start","required":true,"schema":{"type":"string"}},{"description":"End of period to get Metrics for (in ISO-8601 format)","in":"query","name":"end","required":true,"schema":{"type":"string"}},{"description":"Resolution of results in seconds","in":"query","name":"step","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"metrics":{"properties":{"end":{"description":"End of period of metrics reported (in ISO-8601 format)","example":"2025-08-15T13:52:16.618Z","type":"string"},"start":{"description":"Start of period of metrics reported (in ISO-8601 format)","example":"2025-08-15T13:52:16.618Z","type":"string"},"step":{"description":"Resolution of results in seconds.","example":60,"type":"number"},"time_series":{"additionalProperties":{"properties":{"values":{"description":"Metrics Timestamps with values","items":{"items":{"oneOf":[{"type":"number"},{"type":"string"}]},"type":"array"},"type":"array"}},"required":["values"],"type":"object"},"description":"Hash with timeseries information, containing the name of timeseries as key","example":{"name_of_timeseries":{"values":[[1435781470.622,"42"],[1435781471.622,"43"]]}},"type":"object"}},"required":["start","end","step","time_series"],"type":"object"}},"required":["metrics"],"type":"object"}}},"description":"The `metrics` key in the reply contains a metrics object with this structure"}},"summary":"Get Metrics for a LoadBalancer","tags":["Load Balancers"]}},"/locations":{"get":{"description":"Returns all Location objects.","parameters":[{"description":"Can be used to filter Locations by their name. The response will only contain the Location matching the specified name.","in":"query","name":"name","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"locations":{"items":{"properties":{"city":{"description":"City the Location is closest to","example":"Falkenstein","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 code of the country the Location resides in","example":"DE","type":"string"},"description":{"description":"Description of the Location","example":"Falkenstein DC Park 1","type":"string"},"id":{"description":"ID of the Location","example":1,"type":"number"},"latitude":{"description":"Latitude of the city closest to the Location","example":50.47612,"type":"number"},"longitude":{"description":"Longitude of the city closest to the Location","example":12.370071,"type":"number"},"name":{"description":"Unique identifier of the Location","example":"fsn1","type":"string"},"network_zone":{"description":"Name of network zone this Location resides in","example":"eu-central","type":"string"}},"required":["id","name","description","country","city","latitude","longitude","network_zone"],"type":"object"},"type":"array"}},"required":["locations"],"type":"object"}}},"description":"The `locations` key in the reply contains an array of Location objects with this structure"}},"summary":"Get all Locations","tags":["Locations"]}},"/locations/{id}":{"get":{"description":"Returns a specific Location object.","parameters":[{"description":"ID of Location","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"location":{"properties":{"city":{"description":"City the Location is closest to","example":"Falkenstein","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 code of the country the Location resides in","example":"DE","type":"string"},"description":{"description":"Description of the Location","example":"Falkenstein DC Park 1","type":"string"},"id":{"description":"ID of the Location","example":1,"type":"number"},"latitude":{"description":"Latitude of the city closest to the Location","example":50.47612,"type":"number"},"longitude":{"description":"Longitude of the city closest to the Location","example":12.370071,"type":"number"},"name":{"description":"Unique identifier of the Location","example":"fsn1","type":"string"},"network_zone":{"description":"Name of network zone this Location resides in","example":"eu-central","type":"string"}},"required":["id","name","description","country","city","latitude","longitude","network_zone"],"type":"object"}},"required":["location"],"type":"object"}}},"description":"The `location` key in the reply contains a Location object with this structure"}},"summary":"Get a Location","tags":["Locations"]}},"/networks":{"get":{"description":"Gets all existing networks that you have available.","parameters":[{"description":"Can be used to filter networks by their name. The response will only contain the networks matching the specified name.","in":"query","name":"name","required":false,"schema":{"type":"string"}},{"description":"Can be used to filter networks by labels. The response will only contain networks with a matching label selector pattern.","in":"query","name":"label_selector","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"meta":{"properties":{"pagination":{"properties":{"last_page":{"description":"ID of the last page available. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"next_page":{"description":"ID of the next page. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"page":{"description":"Current page number","example":3,"type":"number"},"per_page":{"description":"Maximum number of items shown per page in the response","example":25,"type":"number"},"previous_page":{"description":"ID of the previous page. Can be null if the current page is the first one.","example":2,"nullable":true,"type":"number"},"total_entries":{"description":"The total number of entries that exist in the database for this query. Nullable if unknown.","example":100,"nullable":true,"type":"number"}},"required":["page","per_page","previous_page","next_page","last_page","total_entries"],"type":"object"}},"required":["pagination"],"type":"object"},"networks":{"items":{"properties":{"created":{"description":"Point in time when the Network was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.618Z","type":"string"},"id":{"description":"ID of the Network","example":4711,"type":"integer"},"ip_range":{"description":"IPv4 prefix of the whole Network","example":"10.0.0.0/16","type":"string"},"labels":{"description":"User-defined labels (key-value pairs)","type":"object"},"load_balancers":{"description":"Array of IDs of Load Balancers attached to this Network","example":[42],"items":{"type":"integer"},"type":"array"},"name":{"description":"Name of the Network","example":"mynet","type":"string"},"protection":{"description":"Protection configuration for the Network","properties":{"delete":{"description":"If true, prevents the Network from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"routes":{"description":"Array of routes set in this Network","items":{"properties":{"destination":{"description":"Destination network or host of this route. Must not overlap with an existing ip_range in any subnets or with any destinations in other routes or with the first IP of the networks ip_range or with 172.31.1.1. Must be one of the private IPv4 ranges of RFC1918.","example":"10.100.1.0/24","type":"string"},"gateway":{"description":"Gateway for the route. Cannot be the first IP of the networks ip_range and also cannot be 172.31.1.1 as this IP is being used as a gateway for the public network interface of Servers.","example":"10.0.1.1","type":"string"}},"required":["destination","gateway"],"type":"object"},"type":"array"},"servers":{"description":"Array of IDs of Servers attached to this Network","example":[42],"items":{"type":"integer"},"type":"array"},"subnets":{"description":"Array subnets allocated in this Network","items":{"properties":{"gateway":{"description":"Gateway for Servers attached to this subnet. For subnets of type Server this is always the first IP of the network IP range.","example":"10.0.0.1","type":"string"},"ip_range":{"description":"Range to allocate IPs from. Must be a Subnet of the ip_range of the parent network object and must not overlap with any other subnets or with any destinations in routes. Minimum Network size is /30. We suggest that you pick a bigger Network with a /24 netmask.","example":"10.0.1.0/24","type":"string"},"network_zone":{"description":"Name of Network zone. The Location object contains the `network_zone` property each Location belongs to.","example":"eu-central","type":"string"},"type":{"description":"Type of Subnetwork","enum":["cloud","server","vswitch"],"type":"string"}},"required":["type","network_zone","gateway"],"type":"object"},"type":"array"}},"required":["id","name","ip_range","subnets","routes","servers","protection","labels","created"],"type":"object"},"type":"array"}},"required":["networks"],"type":"object"}}},"description":"The `networks` key contains a list of networks"}},"summary":"Get all Networks","tags":["Networks"]},"post":{"description":"Creates a network with the specified `ip_range`.\n\nYou may specify one or more `subnets`. You can also add more Subnets later by using the [add subnet action](https://docs.hetzner.cloud/#network-actions-add-a-subnet-to-a-network). If you do not specify an `ip_range` in the subnet we will automatically pick the first available /24 range for you.\n\nYou may specify one or more routes in `routes`. You can also add more routes later by using the [add route action](https://docs.hetzner.cloud/#network-actions-add-a-route-to-a-network).\n","requestBody":{"content":{"application/json":{"schema":{"properties":{"ip_range":{"description":"IP range of the whole network which must span all included subnets. Must be one of the private IPv4 ranges of RFC1918. Minimum network size is /24. We highly recommend that you pick a larger network with a /16 netmask.","example":"10.0.0.0/16","type":"string"},"labels":{"description":"User-defined labels (key-value pairs)","properties":{"labelkey":{"description":"New label","example":"value","type":"string"}},"type":"object"},"name":{"description":"Name of the network","example":"mynet","type":"string"},"routes":{"description":"Array of routes set in this network. The destination of the route must be one of the private IPv4 ranges of RFC1918. The gateway must be a subnet/IP of the ip_range of the network object. The destination must not overlap with an existing ip_range in any subnets or with any destinations in other routes or with the first IP of the networks ip_range or with 172.31.1.1. The gateway cannot be the first IP of the networks ip_range and also cannot be 172.31.1.1.","items":{"properties":{"destination":{"description":"Destination network or host of this route. Must not overlap with an existing ip_range in any subnets or with any destinations in other routes or with the first IP of the networks ip_range or with 172.31.1.1. Must be one of the private IPv4 ranges of RFC1918.","example":"10.100.1.0/24","type":"string"},"gateway":{"description":"Gateway for the route. Cannot be the first IP of the networks ip_range and also cannot be 172.31.1.1 as this IP is being used as a gateway for the public network interface of Servers.","example":"10.0.1.1","type":"string"}},"required":["destination","gateway"],"type":"object"},"type":"array"},"subnets":{"description":"Array of subnets allocated.","items":{"properties":{"ip_range":{"description":"Range to allocate IPs from. Must be a Subnet of the ip_range of the parent network object and must not overlap with any other subnets or with any destinations in routes. Minimum Network size is /30. We suggest that you pick a bigger Network with a /24 netmask.","example":"10.0.1.0/24","type":"string"},"network_zone":{"description":"Name of Network zone. The Location object contains the `network_zone` property each Location belongs to.","example":"eu-central","type":"string"},"type":{"description":"Type of Subnetwork","enum":["cloud","server","vswitch"],"type":"string"},"vswitch_id":{"description":"ID of the robot vSwitch. Must be supplied if the subnet is of type vswitch.","example":1000,"type":"integer"}},"required":["type","network_zone"],"type":"object"},"type":"array"}},"required":["name","ip_range"],"title":"CreateNetworkRequest","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"network":{"properties":{"created":{"description":"Point in time when the Network was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.618Z","type":"string"},"id":{"description":"ID of the Network","example":4711,"type":"integer"},"ip_range":{"description":"IPv4 prefix of the whole Network","example":"10.0.0.0/16","type":"string"},"labels":{"description":"User-defined labels (key-value pairs)","type":"object"},"load_balancers":{"description":"Array of IDs of Load Balancers attached to this Network","example":[42],"items":{"type":"integer"},"type":"array"},"name":{"description":"Name of the Network","example":"mynet","type":"string"},"protection":{"description":"Protection configuration for the Network","properties":{"delete":{"description":"If true, prevents the Network from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"routes":{"description":"Array of routes set in this Network","items":{"properties":{"destination":{"description":"Destination network or host of this route. Must not overlap with an existing ip_range in any subnets or with any destinations in other routes or with the first IP of the networks ip_range or with 172.31.1.1. Must be one of the private IPv4 ranges of RFC1918.","example":"10.100.1.0/24","type":"string"},"gateway":{"description":"Gateway for the route. Cannot be the first IP of the networks ip_range and also cannot be 172.31.1.1 as this IP is being used as a gateway for the public network interface of Servers.","example":"10.0.1.1","type":"string"}},"required":["destination","gateway"],"type":"object"},"type":"array"},"servers":{"description":"Array of IDs of Servers attached to this Network","example":[42],"items":{"type":"integer"},"type":"array"},"subnets":{"description":"Array subnets allocated in this Network","items":{"properties":{"gateway":{"description":"Gateway for Servers attached to this subnet. For subnets of type Server this is always the first IP of the network IP range.","example":"10.0.0.1","type":"string"},"ip_range":{"description":"Range to allocate IPs from. Must be a Subnet of the ip_range of the parent network object and must not overlap with any other subnets or with any destinations in routes. Minimum Network size is /30. We suggest that you pick a bigger Network with a /24 netmask.","example":"10.0.1.0/24","type":"string"},"network_zone":{"description":"Name of Network zone. The Location object contains the `network_zone` property each Location belongs to.","example":"eu-central","type":"string"},"type":{"description":"Type of Subnetwork","enum":["cloud","server","vswitch"],"type":"string"}},"required":["type","network_zone","gateway"],"type":"object"},"type":"array"}},"required":["id","name","ip_range","subnets","routes","servers","protection","labels","created"],"type":"object"}},"type":"object"}}},"description":"The `network` key contains the network that was just created"}},"summary":"Create a Network","tags":["Networks"]}},"/networks/{id}":{"delete":{"description":"Deletes a network. If there are Servers attached they will be detached in the background.\n\nNote: if the network object changes during the request, the response will be a “conflict” error.\n","parameters":[{"description":"ID of the network","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"204":{"description":"Network deleted"}},"summary":"Delete a Network","tags":["Networks"]},"get":{"description":"Gets a specific network object.","parameters":[{"description":"ID of the network","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"network":{"properties":{"created":{"description":"Point in time when the Network was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.618Z","type":"string"},"id":{"description":"ID of the Network","example":4711,"type":"integer"},"ip_range":{"description":"IPv4 prefix of the whole Network","example":"10.0.0.0/16","type":"string"},"labels":{"description":"User-defined labels (key-value pairs)","type":"object"},"load_balancers":{"description":"Array of IDs of Load Balancers attached to this Network","example":[42],"items":{"type":"integer"},"type":"array"},"name":{"description":"Name of the Network","example":"mynet","type":"string"},"protection":{"description":"Protection configuration for the Network","properties":{"delete":{"description":"If true, prevents the Network from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"routes":{"description":"Array of routes set in this Network","items":{"properties":{"destination":{"description":"Destination network or host of this route. Must not overlap with an existing ip_range in any subnets or with any destinations in other routes or with the first IP of the networks ip_range or with 172.31.1.1. Must be one of the private IPv4 ranges of RFC1918.","example":"10.100.1.0/24","type":"string"},"gateway":{"description":"Gateway for the route. Cannot be the first IP of the networks ip_range and also cannot be 172.31.1.1 as this IP is being used as a gateway for the public network interface of Servers.","example":"10.0.1.1","type":"string"}},"required":["destination","gateway"],"type":"object"},"type":"array"},"servers":{"description":"Array of IDs of Servers attached to this Network","example":[42],"items":{"type":"integer"},"type":"array"},"subnets":{"description":"Array subnets allocated in this Network","items":{"properties":{"gateway":{"description":"Gateway for Servers attached to this subnet. For subnets of type Server this is always the first IP of the network IP range.","example":"10.0.0.1","type":"string"},"ip_range":{"description":"Range to allocate IPs from. Must be a Subnet of the ip_range of the parent network object and must not overlap with any other subnets or with any destinations in routes. Minimum Network size is /30. We suggest that you pick a bigger Network with a /24 netmask.","example":"10.0.1.0/24","type":"string"},"network_zone":{"description":"Name of Network zone. The Location object contains the `network_zone` property each Location belongs to.","example":"eu-central","type":"string"},"type":{"description":"Type of Subnetwork","enum":["cloud","server","vswitch"],"type":"string"}},"required":["type","network_zone","gateway"],"type":"object"},"type":"array"}},"required":["id","name","ip_range","subnets","routes","servers","protection","labels","created"],"type":"object"}},"type":"object"}}},"description":"The `network` key contains the network"}},"summary":"Get a Network","tags":["Networks"]},"put":{"description":"Updates the network properties.\n\nNote that when updating labels, the network’s current set of labels will be replaced with the labels provided in the request body. So, for example, if you want to add a new label, you have to provide all existing labels plus the new label in the request body.\n\nNote: if the network object changes during the request, the response will be a “conflict” error.\n","parameters":[{"description":"ID of the network","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"labels":{"description":"User-defined labels (key-value pairs)","properties":{"labelkey":{"example":"value","type":"string"}},"type":"object"},"name":{"description":"New network name","example":"new-name","type":"string"}},"title":"UpdateNetworkRequest","type":"object"}}}},"responses":{"200":{"content":{"application/json":{"example":{"network":{"created":"2025-08-15T13:52:16.618Z","id":4711,"ip_range":"10.0.0.0/16","labels":{"labelkey":"value"},"load_balancers":[42],"name":"new-name","protection":{"delete":false},"routes":[{"destination":"10.100.1.0/24","gateway":"10.0.1.1"}],"servers":[42],"subnets":[{"gateway":"10.0.0.1","ip_range":"10.0.1.0/24","network_zone":"eu-central","type":"cloud"}]}},"schema":{"properties":{"network":{"properties":{"created":{"description":"Point in time when the Network was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.618Z","type":"string"},"id":{"description":"ID of the Network","example":4711,"type":"integer"},"ip_range":{"description":"IPv4 prefix of the whole Network","example":"10.0.0.0/16","type":"string"},"labels":{"description":"User-defined labels (key-value pairs)","type":"object"},"load_balancers":{"description":"Array of IDs of Load Balancers attached to this Network","example":[42],"items":{"type":"integer"},"type":"array"},"name":{"description":"Name of the Network","example":"mynet","type":"string"},"protection":{"description":"Protection configuration for the Network","properties":{"delete":{"description":"If true, prevents the Network from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"routes":{"description":"Array of routes set in this Network","items":{"properties":{"destination":{"description":"Destination network or host of this route. Must not overlap with an existing ip_range in any subnets or with any destinations in other routes or with the first IP of the networks ip_range or with 172.31.1.1. Must be one of the private IPv4 ranges of RFC1918.","example":"10.100.1.0/24","type":"string"},"gateway":{"description":"Gateway for the route. Cannot be the first IP of the networks ip_range and also cannot be 172.31.1.1 as this IP is being used as a gateway for the public network interface of Servers.","example":"10.0.1.1","type":"string"}},"required":["destination","gateway"],"type":"object"},"type":"array"},"servers":{"description":"Array of IDs of Servers attached to this Network","example":[42],"items":{"type":"integer"},"type":"array"},"subnets":{"description":"Array subnets allocated in this Network","items":{"properties":{"gateway":{"description":"Gateway for Servers attached to this subnet. For subnets of type Server this is always the first IP of the network IP range.","example":"10.0.0.1","type":"string"},"ip_range":{"description":"Range to allocate IPs from. Must be a Subnet of the ip_range of the parent network object and must not overlap with any other subnets or with any destinations in routes. Minimum Network size is /30. We suggest that you pick a bigger Network with a /24 netmask.","example":"10.0.1.0/24","type":"string"},"network_zone":{"description":"Name of Network zone. The Location object contains the `network_zone` property each Location belongs to.","example":"eu-central","type":"string"},"type":{"description":"Type of Subnetwork","enum":["cloud","server","vswitch"],"type":"string"}},"required":["type","network_zone","gateway"],"type":"object"},"type":"array"}},"required":["id","name","ip_range","subnets","routes","servers","protection","labels","created"],"type":"object"}},"type":"object"}}},"description":"The `network` key contains the updated network"}},"summary":"Update a Network","tags":["Networks"]}},"/networks/{id}/actions":{"get":{"description":"Returns all Action objects for a Network. You can sort the results by using the `sort` URI parameter, and filter them with the `status` parameter.","parameters":[{"description":"ID of the Network","in":"path","name":"id","required":true,"schema":{"type":"integer"}},{"description":"Can be used multiple times.","in":"query","name":"sort","required":false,"schema":{"enum":["id","id:asc","id:desc","command","command:asc","command:desc","status","status:asc","status:desc","progress","progress:asc","progress:desc","started","started:asc","started:desc","finished","finished:asc","finished:desc"],"title":"ParameterSort","type":"string"}},{"description":"Can be used multiple times, the response will contain only Actions with specified statuses","in":"query","name":"status","required":false,"schema":{"enum":["running","success","error"],"title":"ParameterStatus","type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"actions":[{"command":"add_subnet","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.618Z","id":13,"progress":100,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.618Z","status":"success"}]},"schema":{"properties":{"actions":{"items":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.618Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.618Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"},"type":"array"},"meta":{"properties":{"pagination":{"properties":{"last_page":{"description":"ID of the last page available. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"next_page":{"description":"ID of the next page. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"page":{"description":"Current page number","example":3,"type":"number"},"per_page":{"description":"Maximum number of items shown per page in the response","example":25,"type":"number"},"previous_page":{"description":"ID of the previous page. Can be null if the current page is the first one.","example":2,"nullable":true,"type":"number"},"total_entries":{"description":"The total number of entries that exist in the database for this query. Nullable if unknown.","example":100,"nullable":true,"type":"number"}},"required":["page","per_page","previous_page","next_page","last_page","total_entries"],"type":"object"}},"required":["pagination"],"type":"object"}},"required":["actions"],"title":"ActionsResponse","type":"object"}}},"description":"The `actions` key contains a list of Actions"}},"summary":"Get all Actions for a Network","tags":["Network Actions"]}},"/networks/{id}/actions/add_route":{"post":{"description":"Adds a route entry to a Network.\n\nNote: if the Network object changes during the request, the response will be a “conflict” error.\n","parameters":[{"description":"ID of the Network","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"destination":{"description":"Destination network or host of this route. Must not overlap with an existing ip_range in any subnets or with any destinations in other routes or with the first IP of the networks ip_range or with 172.31.1.1. Must be one of the private IPv4 ranges of RFC1918.","example":"10.100.1.0/24","type":"string"},"gateway":{"description":"Gateway for the route. Cannot be the first IP of the networks ip_range, an IP behind a vSwitch or 172.31.1.1, as this IP is being used as a gateway for the public network interface of Servers.","example":"10.0.1.1","type":"string"}},"required":["destination","gateway"],"title":"AddDeleteRouteRequest","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"add_route","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":4711,"type":"network"}],"started":"2025-08-15T13:52:16.618Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.618Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.618Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `add_route` Action"}},"summary":"Add a route to a Network","tags":["Network Actions"]}},"/networks/{id}/actions/add_subnet":{"post":{"description":"Adds a new subnet object to the Network. If you do not specify an `ip_range` for the subnet we will automatically pick the first available /24 range for you if possible.\n\nNote: if the parent Network object changes during the request, the response will be a “conflict” error.\n","parameters":[{"description":"ID of the Network","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"ip_range":{"description":"Range to allocate IPs from. Must be a Subnet of the ip_range of the parent network object and must not overlap with any other subnets or with any destinations in routes. If the Subnet is of type vSwitch, it also can not overlap with any gateway in routes. Minimum Network size is /30. We suggest that you pick a bigger Network with a /24 netmask.","example":"10.0.1.0/24","type":"string"},"network_zone":{"description":"Name of Network zone. The Location object contains the `network_zone` property each Location belongs to.","example":"eu-central","type":"string"},"type":{"description":"Type of Subnetwork","enum":["cloud","server","vswitch"],"type":"string"},"vswitch_id":{"description":"ID of the robot vSwitch. Must be supplied if the subnet is of type vswitch.","example":1000,"type":"integer"}},"required":["type","network_zone"],"title":"AddSubnetRequest","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"add_subnet","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":4711,"type":"network"}],"started":"2025-08-15T13:52:16.618Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.618Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.618Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `add_subnet` Action"}},"summary":"Add a subnet to a Network","tags":["Network Actions"]}},"/networks/{id}/actions/change_ip_range":{"post":{"description":"Changes the IP range of a Network. IP ranges can only be extended and never shrunk. You can only add IPs at the end of an existing IP range. This means that the IP part of your existing range must stay the same and you can only change its netmask.\n\nFor example if you have a range `10.0.0.0/16` you want to extend then your new range must also start with the IP `10.0.0.0`. Your CIDR netmask `/16` may change to a number that is smaller than `16` thereby increasing the IP range. So valid entries would be `10.0.0.0/15`, `10.0.0.0/14`, `10.0.0.0/13` and so on.\n\nAfter changing the IP range you will have to adjust the routes on your connected Servers by either rebooting them or manually changing the routes to your private Network interface.\n\nNote: if the Network object changes during the request, the response will be a “conflict” error.\n","parameters":[{"description":"ID of the Network","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"ip_range":{"description":"The new prefix for the whole Network","example":"10.0.0.0/12","type":"string"}},"required":["ip_range"],"title":"ChangeIPRangeRequest","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"change_ip_range","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.618Z","id":13,"progress":100,"resources":[{"id":4711,"type":"network"}],"started":"2025-08-15T13:52:16.618Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.618Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.618Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `change_ip_range` Action"}},"summary":"Change IP range of a Network","tags":["Network Actions"]}},"/networks/{id}/actions/change_protection":{"post":{"description":"Changes the protection configuration of a Network.\n\nNote: if the Network object changes during the request, the response will be a “conflict” error.\n","parameters":[{"description":"ID of the Network","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"delete":{"description":"If true, prevents the Network from being deleted","example":true,"type":"boolean"}},"title":"ChangeProtectionRequest","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"change_protection","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.619Z","id":13,"progress":100,"resources":[{"id":4711,"type":"network"}],"started":"2025-08-15T13:52:16.619Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.619Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.619Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `change_protection` Action"}},"summary":"Change Network Protection","tags":["Network Actions"]}},"/networks/{id}/actions/delete_route":{"post":{"description":"Delete a route entry from a Network.\n\nNote: if the Network object changes during the request, the response will be a “conflict” error.\n","parameters":[{"description":"ID of the Network","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"destination":{"description":"Destination network or host of this route. Must not overlap with an existing ip_range in any subnets or with any destinations in other routes or with the first IP of the networks ip_range or with 172.31.1.1. Must be one of the private IPv4 ranges of RFC1918.","example":"10.100.1.0/24","type":"string"},"gateway":{"description":"Gateway for the route. Cannot be the first IP of the networks ip_range, an IP behind a vSwitch or 172.31.1.1, as this IP is being used as a gateway for the public network interface of Servers.","example":"10.0.1.1","type":"string"}},"required":["destination","gateway"],"title":"AddDeleteRouteRequest","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"delete_route","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":4711,"type":"network"}],"started":"2025-08-15T13:52:16.619Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.619Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.619Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `delete_route` Action"}},"summary":"Delete a route from a Network","tags":["Network Actions"]}},"/networks/{id}/actions/delete_subnet":{"post":{"description":"Deletes a single subnet entry from a Network. You cannot delete subnets which still have Servers attached. If you have Servers attached you first need to detach all Servers that use IPs from this subnet before you can delete the subnet.\n\nNote: if the Network object changes during the request, the response will be a “conflict” error.\n","parameters":[{"description":"ID of the Network","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"ip_range":{"description":"IP range of subnet to delete","example":"10.0.1.0/24","type":"string"}},"required":["ip_range"],"title":"DeleteSubnetRequest","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"delete_subnet","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":4711,"type":"network"}],"started":"2025-08-15T13:52:16.619Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.619Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.619Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `delete_subnet` Action"}},"summary":"Delete a subnet from a Network","tags":["Network Actions"]}},"/networks/{id}/actions/{action_id}":{"get":{"description":"Returns a specific Action for a Network.","parameters":[{"description":"ID of the Network","in":"path","name":"id","required":true,"schema":{"type":"integer"}},{"description":"ID of the Action","in":"path","name":"action_id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"example":{"action":{"command":"add_subnet","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.619Z","id":13,"progress":100,"resources":[{"id":4711,"type":"network"}],"started":"2025-08-15T13:52:16.619Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.619Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.619Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the Network Action"}},"summary":"Get an Action for a Network","tags":["Network Actions"]}},"/placement_groups":{"get":{"description":"Returns all PlacementGroup objects.","parameters":[{"description":"Can be used multiple times.","in":"query","name":"sort","required":false,"schema":{"enum":["id","id:asc","id:desc","name","name:asc","name:desc","created","created:asc","created:desc"],"type":"string"}},{"description":"Can be used to filter resources by their name. The response will only contain the resources matching the specified name","in":"query","name":"name","required":false,"schema":{"type":"string"}},{"description":"Can be used to filter resources by labels. The response will only contain resources matching the label selector.","in":"query","name":"label_selector","required":false,"schema":{"type":"string"}},{"description":"Can be used multiple times. The response will only contain PlacementGroups matching the type.","in":"query","name":"type","required":false,"schema":{"enum":["spread"],"title":"ParameterType","type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"placement_groups":[{"created":"2025-08-15T13:52:16.619Z","id":897,"labels":{"key":"value"},"name":"my Placement Group","servers":[4711,4712],"type":"spread"}]},"schema":{"properties":{"meta":{"properties":{"pagination":{"properties":{"last_page":{"description":"ID of the last page available. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"next_page":{"description":"ID of the next page. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"page":{"description":"Current page number","example":3,"type":"number"},"per_page":{"description":"Maximum number of items shown per page in the response","example":25,"type":"number"},"previous_page":{"description":"ID of the previous page. Can be null if the current page is the first one.","example":2,"nullable":true,"type":"number"},"total_entries":{"description":"The total number of entries that exist in the database for this query. Nullable if unknown.","example":100,"nullable":true,"type":"number"}},"required":["page","per_page","previous_page","next_page","last_page","total_entries"],"type":"object"}},"required":["pagination"],"type":"object"},"placement_groups":{"items":{"properties":{"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.619Z","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"servers":{"description":"Array of IDs of Servers that are part of this Placement Group","example":[42],"items":{"type":"integer"},"type":"array"},"type":{"description":"Type of the Placement Group","enum":["spread"],"example":"spread","type":"string"}},"required":["id","name","labels","type","created","servers"],"title":"PlacementGroup","type":"object"},"type":"array"}},"required":["placement_groups"],"title":"PlacementGroupsResponse","type":"object"}}},"description":"The `placement_groups` key contains an array of PlacementGroup objects"}},"summary":"Get all PlacementGroups","tags":["Placement Groups"]},"post":{"description":"Creates a new PlacementGroup.\n","requestBody":{"content":{"application/json":{"examples":{"spread":{"summary":"Creating a type `spread` Placement Group","value":{"name":"my Placement Group","type":"spread"}}},"schema":{"properties":{"labels":{"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the PlacementGroup","example":"my Placement Group","type":"string"},"type":{"description":"Define the Placement Group Type.","enum":["spread"],"example":"spread","type":"string"}},"required":["name","type"],"title":"CreatePlacementGroupRequest","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"examples":{"spread":{"summary":"Response when creating a type `spread` PlacementGroup","value":{"placement_group":{"created":"2025-08-15T13:52:16.619Z","id":897,"labels":{"key":"value"},"name":"my Placement Group","servers":[],"type":"spread"}}}},"schema":{"properties":{"action":{"nullable":true,"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.619Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.619Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"NullableAction","type":"object"},"placement_group":{"properties":{"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.619Z","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"servers":{"description":"Array of IDs of Servers that are part of this Placement Group","example":[42],"items":{"type":"integer"},"type":"array"},"type":{"description":"Type of the Placement Group","enum":["spread"],"example":"spread","type":"string"}},"required":["id","name","labels","type","created","servers"],"title":"PlacementGroup","type":"object"}},"required":["placement_group"],"title":"CreatePlacementGroupResponse","type":"object"}}},"description":"The `PlacementGroup` key contains the PlacementGroup that was just created."}},"summary":"Create a PlacementGroup","tags":["Placement Groups"]}},"/placement_groups/{id}":{"delete":{"description":"Deletes a PlacementGroup.","parameters":[{"description":"ID of the resource","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"204":{"description":"PlacementGroup deleted"}},"summary":"Delete a PlacementGroup","tags":["Placement Groups"]},"get":{"description":"Gets a specific PlacementGroup object.","parameters":[{"description":"ID of the resource","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"example":{"placement_group":{"created":"2025-08-15T13:52:16.619Z","id":897,"labels":{"key":"value"},"name":"my Placement Group","servers":[4711,4712],"type":"spread"}},"schema":{"properties":{"placement_group":{"properties":{"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.619Z","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"servers":{"description":"Array of IDs of Servers that are part of this Placement Group","example":[42],"items":{"type":"integer"},"type":"array"},"type":{"description":"Type of the Placement Group","enum":["spread"],"example":"spread","type":"string"}},"required":["id","name","labels","type","created","servers"],"title":"PlacementGroup","type":"object"}},"required":["placement_group"],"title":"PlacementGroupResponse","type":"object"}}},"description":"The `placement_group` key contains a PlacementGroup object"}},"summary":"Get a PlacementGroup","tags":["Placement Groups"]},"put":{"description":"Updates the PlacementGroup properties.\n\nNote that when updating labels, the PlacementGroup’s current set of labels will be replaced with the labels provided in the request body. So, for example, if you want to add a new label, you have to provide all existing labels plus the new label in the request body.\n\nNote: if the PlacementGroup object changes during the request, the response will be a “conflict” error.\n","parameters":[{"description":"ID of the resource","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"labels":{"description":"User-defined labels (key-value pairs)","example":{"labelkey":"value"},"type":"object"},"name":{"description":"New PlacementGroup name","example":"my Placement Group","type":"string"}},"title":"UpdatePlacementGroupRequest","type":"object"}}}},"responses":{"200":{"content":{"application/json":{"example":{"placement_group":{"created":"2025-08-15T13:52:16.619Z","id":897,"labels":{"key":"value"},"name":"my Placement Group","servers":[4711,4712],"type":"spread"}},"schema":{"properties":{"placement_group":{"properties":{"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.619Z","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"servers":{"description":"Array of IDs of Servers that are part of this Placement Group","example":[42],"items":{"type":"integer"},"type":"array"},"type":{"description":"Type of the Placement Group","enum":["spread"],"example":"spread","type":"string"}},"required":["id","name","labels","type","created","servers"],"title":"PlacementGroup","type":"object"}},"required":["placement_group"],"title":"PlacementGroupResponse","type":"object"}}},"description":"The `certificate` key contains the PlacementGroup that was just updated"}},"summary":"Update a PlacementGroup","tags":["Placement Groups"]}},"/pricing":{"get":{"description":"Returns prices for all resources available on the platform. VAT and currency of the Project owner are used for calculations.\n\nBoth net and gross prices are included in the response.\n","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"pricing":{"additionalProperties":false,"properties":{"currency":{"description":"Currency the returned prices are expressed in, coded according to ISO 4217","example":"EUR","type":"string"},"floating_ip":{"description":"The cost of one Floating IP per month","properties":{"price_monthly":{"properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"}},"required":["price_monthly"],"type":"object"},"floating_ips":{"description":"Costs of Floating IPs types per Location and type","items":{"properties":{"prices":{"description":"Floating IP type costs per Location","items":{"properties":{"location":{"description":"Name of the Location the price is for","example":"fsn1","type":"string"},"price_monthly":{"description":"Monthly costs for a Floating IP type in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"}},"required":["location","price_monthly"],"type":"object"},"type":"array"},"type":{"description":"The type of the Floating IP","enum":["ipv4","ipv6"],"example":"ipv4","type":"string"}},"required":["type","prices"],"type":"object"},"type":"array"},"image":{"description":"The cost of Image per GB/month","properties":{"price_per_gb_month":{"properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"}},"required":["price_per_gb_month"],"type":"object"},"load_balancer_types":{"description":"Costs of Load Balancer types per Location and type","items":{"properties":{"id":{"description":"ID of the Load Balancer type the price is for","example":1,"type":"number"},"name":{"description":"Name of the Load Balancer type the price is for","example":"lb11","type":"string"},"prices":{"description":"Load Balancer type costs per Location","items":{"properties":{"location":{"description":"Name of the Location the price is for","example":"fsn1","type":"string"},"price_hourly":{"description":"Hourly costs for a Load Balancer type in this network zone","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"},"price_monthly":{"description":"Monthly costs for a Load Balancer type in this network zone","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"}},"required":["location","price_hourly","price_monthly"],"type":"object"},"type":"array"}},"required":["id","name","prices"],"type":"object"},"type":"array"},"primary_ips":{"description":"Costs of Primary IPs types per Location","items":{"properties":{"prices":{"description":"Primary IP type costs per Location","items":{"properties":{"location":{"description":"Name of the Location the price is for","example":"fsn1","type":"string"},"price_hourly":{"description":"Hourly costs for a Primary IP type in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"},"price_monthly":{"description":"Monthly costs for a Primary IP type in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"}},"required":["location","price_hourly","price_monthly"],"type":"object"},"type":"array"},"type":{"description":"The type of the Primary IP","enum":["ipv4","ipv6"],"example":"ipv4","type":"string"}},"required":["type","prices"],"type":"object"},"type":"array"},"server_backup":{"description":"Will increase base Server costs by specific percentage","properties":{"percentage":{"description":"Percentage by how much the base price will increase","example":"20.0000000000","type":"string"}},"required":["percentage"],"type":"object"},"server_types":{"description":"Costs of Server types per Location and type","items":{"properties":{"id":{"description":"ID of the Server type the price is for","example":4,"type":"number"},"name":{"description":"Name of the Server type the price is for","example":"cx11","type":"string"},"prices":{"description":"Server type costs per Location","items":{"properties":{"location":{"description":"Name of the Location the price is for","example":"fsn1","type":"string"},"price_hourly":{"description":"Hourly costs for a Server type in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"},"price_monthly":{"description":"Monthly costs for a Server type in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"}},"required":["location","price_hourly","price_monthly"],"type":"object"},"type":"array"}},"required":["id","name","prices"],"type":"object"},"type":"array"},"traffic":{"description":"The cost of additional traffic per TB","properties":{"price_per_tb":{"properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"}},"required":["price_per_tb"],"type":"object"},"vat_rate":{"description":"The VAT rate used for calculating prices with VAT","example":"19.000000","type":"string"},"volume":{"description":"The cost of Volume per GB/month","properties":{"price_per_gb_month":{"properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"}},"required":["price_per_gb_month"],"type":"object"}},"required":["currency","vat_rate","image","floating_ip","floating_ips","traffic","server_backup","volume","server_types","load_balancer_types","primary_ips"],"type":"object"}},"required":["pricing"],"type":"object"}}},"description":"The `pricing` key in the reply contains an pricing object with this structure"}},"summary":"Get all prices","tags":["Pricing"]}},"/primary_ips":{"get":{"description":"Returns all Primary IP objects.","parameters":[{"description":"Can be used to filter resources by their name. The response will only contain the resources matching the specified name","in":"query","name":"name","required":false,"schema":{"type":"string"}},{"description":"Can be used to filter resources by labels. The response will only contain resources matching the label selector.","in":"query","name":"label_selector","required":false,"schema":{"type":"string"}},{"description":"Can be used to filter resources by their ip. The response will only contain the resources matching the specified ip.","example":"127.0.0.1","in":"query","name":"ip","required":false,"schema":{"type":"string"}},{"description":"Can be used multiple times. Choices id id:asc id:desc created created:asc created:desc","in":"query","name":"sort","required":false,"schema":{"enum":["id","id:asc","id:desc","created","created:asc","created:desc"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"meta":{"properties":{"pagination":{"properties":{"last_page":{"description":"ID of the last page available. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"next_page":{"description":"ID of the next page. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"page":{"description":"Current page number","example":3,"type":"number"},"per_page":{"description":"Maximum number of items shown per page in the response","example":25,"type":"number"},"previous_page":{"description":"ID of the previous page. Can be null if the current page is the first one.","example":2,"nullable":true,"type":"number"},"total_entries":{"description":"The total number of entries that exist in the database for this query. Nullable if unknown.","example":100,"nullable":true,"type":"number"}},"required":["page","per_page","previous_page","next_page","last_page","total_entries"],"type":"object"}},"required":["pagination"],"type":"object"},"primary_ips":{"items":{"properties":{"assignee_id":{"description":"ID of the resource the Primary IP is assigned to, null if it is not assigned at all","example":17,"nullable":true,"type":"integer"},"assignee_type":{"description":"Resource type the Primary IP can be assigned to","enum":["server"],"type":"string"},"auto_delete":{"description":"Delete this Primary IP when the resource it is assigned to is deleted","example":true,"type":"boolean"},"blocked":{"description":"Whether the IP is blocked","example":false,"type":"boolean"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.619Z","type":"string"},"datacenter":{"description":"Datacenter this Primary IP is located at","properties":{"description":{"description":"Description of the Datacenter","example":"Falkenstein DC Park 8","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"location":{"properties":{"city":{"description":"City the Location is closest to","example":"Falkenstein","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 code of the country the Location resides in","example":"DE","type":"string"},"description":{"description":"Description of the Location","example":"Falkenstein DC Park 1","type":"string"},"id":{"description":"ID of the Location","example":1,"type":"number"},"latitude":{"description":"Latitude of the city closest to the Location","example":50.47612,"type":"number"},"longitude":{"description":"Longitude of the city closest to the Location","example":12.370071,"type":"number"},"name":{"description":"Unique identifier of the Location","example":"fsn1","type":"string"},"network_zone":{"description":"Name of network zone this Location resides in","example":"eu-central","type":"string"}},"required":["id","name","description","country","city","latitude","longitude","network_zone"],"type":"object"},"name":{"description":"Unique identifier of the Datacenter","example":"fsn1-dc8","type":"string"},"server_types":{"description":"The Server types the Datacenter can handle","properties":{"available":{"description":"IDs of Server types that are supported and for which the Datacenter has enough resources left","example":[1,2,3],"items":{"type":"number"},"type":"array"},"available_for_migration":{"description":"IDs of Server types that are supported and for which the Datacenter has enough resources left","example":[1,2,3],"items":{"type":"number"},"type":"array"},"supported":{"description":"IDs of Server types that are supported in the Datacenter","example":[1,2,3],"items":{"type":"number"},"type":"array"}},"required":["supported","available","available_for_migration"],"type":"object"}},"required":["id","name","description","location","server_types"],"type":"object"},"dns_ptr":{"description":"Array of reverse DNS entries","items":{"properties":{"dns_ptr":{"description":"DNS pointer for the specific IP address","example":"server.example.com","type":"string"},"ip":{"description":"Single IPv4 or IPv6 address","example":"131.232.99.1","type":"string"}},"required":["ip","dns_ptr"],"type":"object"},"type":"array"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"ip":{"description":"IP address","example":"131.232.99.1","type":"string"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"protection":{"description":"Protection configuration for the Resource","properties":{"delete":{"description":"If true, prevents the Resource from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"type":{"description":"Type of the Primary IP","enum":["ipv4","ipv6"],"type":"string"}},"required":["id","name","labels","created","blocked","datacenter","ip","dns_ptr","protection","type","auto_delete","assignee_type","assignee_id"],"title":"PrimaryIP","type":"object"},"type":"array"}},"required":["primary_ips"],"title":"PrimaryIPsResponse","type":"object"}}},"description":"The `primary_ips` key contains an array of Primary IP objects"}},"summary":"Get all Primary IPs","tags":["Primary IPs"]},"post":{"description":"Creates a new Primary IP, optionally assigned to a Server.\n\nIf you want to create a Primary IP that is not assigned to a Server, you need to provide the `datacenter` key instead of `assignee_id`. This can be either the ID or the name of the Datacenter this Primary IP shall be created in.\n\nNote that a Primary IP can only be assigned to a Server in the same Datacenter later on.\n\n#### Call specific error codes\n\n| Code                          | Description                                                   |\n|------------------------------ |-------------------------------------------------------------- |\n| `server_not_stopped`          | The specified server is running, but needs to be powered off  |\n| `server_has_ipv4`             | The server already has an ipv4 address                        |\n| `server_has_ipv6`             | The server already has an ipv6 address                        |\n","requestBody":{"content":{"application/json":{"schema":{"properties":{"assignee_id":{"description":"ID of the resource the Primary IP should be assigned to. Omitted if it should not be assigned.","example":17,"type":"integer"},"assignee_type":{"description":"Resource type the Primary IP can be assigned to","enum":["server"],"example":"server","type":"string"},"auto_delete":{"description":"Delete the Primary IP when the Server it is assigned to is deleted. If omitted defaults to `false`.","example":false,"type":"boolean"},"datacenter":{"description":"ID or name of Datacenter the Primary IP will be bound to. Needs to be omitted if `assignee_id` is passed.","example":"fsn1-dc8","type":"string"},"labels":{"description":"User-defined labels (key-value pairs)","example":{"labelkey":"value"},"type":"object"},"name":{"example":"my-ip","type":"string"},"type":{"description":"Primary IP type","enum":["ipv4","ipv6"],"type":"string"}},"required":["name","type","assignee_type"],"title":"CreatePrimaryIPRequest","type":"object"}}},"description":"The `type` argument is required while `datacenter` and `assignee_id` are mutually exclusive."},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"create_primary_ip","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":17,"type":"server"}],"started":"2025-08-15T13:52:16.619Z","status":"running"},"primary_ip":{"assignee_id":17,"assignee_type":"server","auto_delete":true,"blocked":false,"created":"2025-08-15T13:52:16.619Z","datacenter":{"description":"Falkenstein DC Park 8","id":42,"location":{"city":"Falkenstein","country":"DE","description":"Falkenstein DC Park 1","id":1,"latitude":50.47612,"longitude":12.370071,"name":"fsn1","network_zone":"eu-central"},"name":"fsn1-dc8","server_types":{"available":[1,2,3],"available_for_migration":[1,2,3],"supported":[1,2,3]}},"dns_ptr":[{"dns_ptr":"server.example.com","ip":"2001:db8::1"}],"id":42,"ip":"131.232.99.1","labels":{"labelkey":"value"},"name":"my-ip","protection":{"delete":false},"type":"ipv4"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.619Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.619Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"},"primary_ip":{"properties":{"assignee_id":{"description":"ID of the resource the Primary IP is assigned to, null if it is not assigned at all","example":17,"nullable":true,"type":"integer"},"assignee_type":{"description":"Resource type the Primary IP can be assigned to","enum":["server"],"type":"string"},"auto_delete":{"description":"Delete this Primary IP when the resource it is assigned to is deleted","example":true,"type":"boolean"},"blocked":{"description":"Whether the IP is blocked","example":false,"type":"boolean"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.619Z","type":"string"},"datacenter":{"description":"Datacenter this Primary IP is located at","properties":{"description":{"description":"Description of the Datacenter","example":"Falkenstein DC Park 8","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"location":{"properties":{"city":{"description":"City the Location is closest to","example":"Falkenstein","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 code of the country the Location resides in","example":"DE","type":"string"},"description":{"description":"Description of the Location","example":"Falkenstein DC Park 1","type":"string"},"id":{"description":"ID of the Location","example":1,"type":"number"},"latitude":{"description":"Latitude of the city closest to the Location","example":50.47612,"type":"number"},"longitude":{"description":"Longitude of the city closest to the Location","example":12.370071,"type":"number"},"name":{"description":"Unique identifier of the Location","example":"fsn1","type":"string"},"network_zone":{"description":"Name of network zone this Location resides in","example":"eu-central","type":"string"}},"required":["id","name","description","country","city","latitude","longitude","network_zone"],"type":"object"},"name":{"description":"Unique identifier of the Datacenter","example":"fsn1-dc8","type":"string"},"server_types":{"description":"The Server types the Datacenter can handle","properties":{"available":{"description":"IDs of Server types that are supported and for which the Datacenter has enough resources left","example":[1,2,3],"items":{"type":"number"},"type":"array"},"available_for_migration":{"description":"IDs of Server types that are supported and for which the Datacenter has enough resources left","example":[1,2,3],"items":{"type":"number"},"type":"array"},"supported":{"description":"IDs of Server types that are supported in the Datacenter","example":[1,2,3],"items":{"type":"number"},"type":"array"}},"required":["supported","available","available_for_migration"],"type":"object"}},"required":["id","name","description","location","server_types"],"type":"object"},"dns_ptr":{"description":"Array of reverse DNS entries","items":{"properties":{"dns_ptr":{"description":"DNS pointer for the specific IP address","example":"server.example.com","type":"string"},"ip":{"description":"Single IPv4 or IPv6 address","example":"131.232.99.1","type":"string"}},"required":["ip","dns_ptr"],"type":"object"},"type":"array"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"ip":{"description":"IP address","example":"131.232.99.1","type":"string"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"protection":{"description":"Protection configuration for the Resource","properties":{"delete":{"description":"If true, prevents the Resource from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"type":{"description":"Type of the Primary IP","enum":["ipv4","ipv6"],"type":"string"}},"required":["id","name","labels","created","blocked","datacenter","ip","dns_ptr","protection","type","auto_delete","assignee_type","assignee_id"],"title":"PrimaryIP","type":"object"}},"required":["primary_ip"],"title":"CreatePrimaryIPResponse","type":"object"}}},"description":"The `primary_ip` key contains the Primary IP that was just created"}},"summary":"Create a Primary IP","tags":["Primary IPs"]}},"/primary_ips/{id}":{"delete":{"description":"Deletes a Primary IP.\n\nThe Primary IP may be assigned to a Server. In this case it is unassigned automatically. The Server must be powered off (status `off`) in order for this operation to succeed.\n","parameters":[{"description":"ID of the resource","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"204":{"description":"Primary IP deleted"}},"summary":"Delete a Primary IP","tags":["Primary IPs"]},"get":{"description":"Returns a specific Primary IP object.","parameters":[{"description":"ID of the resource","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"primary_ip":{"properties":{"assignee_id":{"description":"ID of the resource the Primary IP is assigned to, null if it is not assigned at all","example":17,"nullable":true,"type":"integer"},"assignee_type":{"description":"Resource type the Primary IP can be assigned to","enum":["server"],"type":"string"},"auto_delete":{"description":"Delete this Primary IP when the resource it is assigned to is deleted","example":true,"type":"boolean"},"blocked":{"description":"Whether the IP is blocked","example":false,"type":"boolean"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.620Z","type":"string"},"datacenter":{"description":"Datacenter this Primary IP is located at","properties":{"description":{"description":"Description of the Datacenter","example":"Falkenstein DC Park 8","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"location":{"properties":{"city":{"description":"City the Location is closest to","example":"Falkenstein","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 code of the country the Location resides in","example":"DE","type":"string"},"description":{"description":"Description of the Location","example":"Falkenstein DC Park 1","type":"string"},"id":{"description":"ID of the Location","example":1,"type":"number"},"latitude":{"description":"Latitude of the city closest to the Location","example":50.47612,"type":"number"},"longitude":{"description":"Longitude of the city closest to the Location","example":12.370071,"type":"number"},"name":{"description":"Unique identifier of the Location","example":"fsn1","type":"string"},"network_zone":{"description":"Name of network zone this Location resides in","example":"eu-central","type":"string"}},"required":["id","name","description","country","city","latitude","longitude","network_zone"],"type":"object"},"name":{"description":"Unique identifier of the Datacenter","example":"fsn1-dc8","type":"string"},"server_types":{"description":"The Server types the Datacenter can handle","properties":{"available":{"description":"IDs of Server types that are supported and for which the Datacenter has enough resources left","example":[1,2,3],"items":{"type":"number"},"type":"array"},"available_for_migration":{"description":"IDs of Server types that are supported and for which the Datacenter has enough resources left","example":[1,2,3],"items":{"type":"number"},"type":"array"},"supported":{"description":"IDs of Server types that are supported in the Datacenter","example":[1,2,3],"items":{"type":"number"},"type":"array"}},"required":["supported","available","available_for_migration"],"type":"object"}},"required":["id","name","description","location","server_types"],"type":"object"},"dns_ptr":{"description":"Array of reverse DNS entries","items":{"properties":{"dns_ptr":{"description":"DNS pointer for the specific IP address","example":"server.example.com","type":"string"},"ip":{"description":"Single IPv4 or IPv6 address","example":"131.232.99.1","type":"string"}},"required":["ip","dns_ptr"],"type":"object"},"type":"array"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"ip":{"description":"IP address","example":"131.232.99.1","type":"string"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"protection":{"description":"Protection configuration for the Resource","properties":{"delete":{"description":"If true, prevents the Resource from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"type":{"description":"Type of the Primary IP","enum":["ipv4","ipv6"],"type":"string"}},"required":["id","name","labels","created","blocked","datacenter","ip","dns_ptr","protection","type","auto_delete","assignee_type","assignee_id"],"title":"PrimaryIP","type":"object"}},"required":["primary_ip"],"title":"PrimaryIPResponse","type":"object"}}},"description":"The `primary_ip` key contains a Primary IP object"}},"summary":"Get a Primary IP","tags":["Primary IPs"]},"put":{"description":"Updates the Primary IP.\n\nNote that when updating labels, the Primary IP's current set of labels will be replaced with the labels provided in the request body. So, for example, if you want to add a new label, you have to provide all existing labels plus the new label in the request body.\n\nIf the Primary IP object changes during the request, the response will be a “conflict” error.\n","parameters":[{"description":"ID of the resource","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"auto_delete":{"description":"Delete this Primary IP when the resource it is assigned to is deleted","example":true,"type":"boolean"},"labels":{"description":"User-defined labels (key-value pairs)","example":{"labelkey":"value"},"type":"object"},"name":{"description":"New unique name to set","example":"my-ip","type":"string"}},"title":"UpdatePrimaryIPRequest","type":"object"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"primary_ip":{"properties":{"assignee_id":{"description":"ID of the resource the Primary IP is assigned to, null if it is not assigned at all","example":17,"nullable":true,"type":"integer"},"assignee_type":{"description":"Resource type the Primary IP can be assigned to","enum":["server"],"type":"string"},"auto_delete":{"description":"Delete this Primary IP when the resource it is assigned to is deleted","example":true,"type":"boolean"},"blocked":{"description":"Whether the IP is blocked","example":false,"type":"boolean"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.620Z","type":"string"},"datacenter":{"description":"Datacenter this Primary IP is located at","properties":{"description":{"description":"Description of the Datacenter","example":"Falkenstein DC Park 8","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"location":{"properties":{"city":{"description":"City the Location is closest to","example":"Falkenstein","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 code of the country the Location resides in","example":"DE","type":"string"},"description":{"description":"Description of the Location","example":"Falkenstein DC Park 1","type":"string"},"id":{"description":"ID of the Location","example":1,"type":"number"},"latitude":{"description":"Latitude of the city closest to the Location","example":50.47612,"type":"number"},"longitude":{"description":"Longitude of the city closest to the Location","example":12.370071,"type":"number"},"name":{"description":"Unique identifier of the Location","example":"fsn1","type":"string"},"network_zone":{"description":"Name of network zone this Location resides in","example":"eu-central","type":"string"}},"required":["id","name","description","country","city","latitude","longitude","network_zone"],"type":"object"},"name":{"description":"Unique identifier of the Datacenter","example":"fsn1-dc8","type":"string"},"server_types":{"description":"The Server types the Datacenter can handle","properties":{"available":{"description":"IDs of Server types that are supported and for which the Datacenter has enough resources left","example":[1,2,3],"items":{"type":"number"},"type":"array"},"available_for_migration":{"description":"IDs of Server types that are supported and for which the Datacenter has enough resources left","example":[1,2,3],"items":{"type":"number"},"type":"array"},"supported":{"description":"IDs of Server types that are supported in the Datacenter","example":[1,2,3],"items":{"type":"number"},"type":"array"}},"required":["supported","available","available_for_migration"],"type":"object"}},"required":["id","name","description","location","server_types"],"type":"object"},"dns_ptr":{"description":"Array of reverse DNS entries","items":{"properties":{"dns_ptr":{"description":"DNS pointer for the specific IP address","example":"server.example.com","type":"string"},"ip":{"description":"Single IPv4 or IPv6 address","example":"131.232.99.1","type":"string"}},"required":["ip","dns_ptr"],"type":"object"},"type":"array"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"ip":{"description":"IP address","example":"131.232.99.1","type":"string"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"protection":{"description":"Protection configuration for the Resource","properties":{"delete":{"description":"If true, prevents the Resource from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"type":{"description":"Type of the Primary IP","enum":["ipv4","ipv6"],"type":"string"}},"required":["id","name","labels","created","blocked","datacenter","ip","dns_ptr","protection","type","auto_delete","assignee_type","assignee_id"],"title":"PrimaryIP","type":"object"}},"required":["primary_ip"],"title":"PrimaryIPResponse","type":"object"}}},"description":"The `primary_ip` key contains the Primary IP that was just updated"}},"summary":"Update a Primary IP","tags":["Primary IPs"]}},"/primary_ips/{id}/actions/assign":{"post":{"description":"Assigns a Primary IP to a Server.\n\nA Server can only have one Primary IP of type `ipv4` and one of type `ipv6` assigned. If you need more IPs use Floating IPs.\n\nThe Server must be powered off (status `off`) in order for this operation to succeed.\n\n#### Call specific error codes\n\n| Code                          | Description                                                   |\n|------------------------------ |-------------------------------------------------------------- |\n| `server_not_stopped`          | The server is running, but needs to be powered off            |\n| `primary_ip_already_assigned` | Primary ip is already assigned to a different server          |\n| `server_has_ipv4`             | The server already has an ipv4 address                        |\n| `server_has_ipv6`             | The server already has an ipv6 address                        |\n","parameters":[{"description":"ID of the Primary IP","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"assignee_id":{"description":"ID of a resource of type `assignee_type`","example":4711,"type":"integer"},"assignee_type":{"description":"Type of resource assigning the Primary IP to","enum":["server"],"example":"server","type":"string"}},"required":["assignee_type","assignee_id"],"title":"AssignPrimaryIPRequest","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"assign_primary_ip","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"server"},{"id":4711,"type":"primary_ip"}],"started":"2025-08-15T13:52:16.620Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.620Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.620Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key in the reply contains an Action object with this structure"}},"summary":"Assign a Primary IP to a resource","tags":["Primary IP Actions"]}},"/primary_ips/{id}/actions/change_dns_ptr":{"post":{"description":"Changes the hostname that will appear when getting the hostname belonging to this Primary IP.","parameters":[{"description":"ID of the Primary IP","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"dns_ptr":{"description":"Hostname to set as a reverse DNS PTR entry, will reset to original default value if `null`","example":"server02.example.com","nullable":true,"type":"string"},"ip":{"description":"IP address for which to set the reverse DNS entry","example":"1.2.3.4","type":"string"}},"required":["ip","dns_ptr"],"title":"ChangeDNSPTRRequest","type":"object"}}},"description":"Select the IP address for which to change the DNS entry by passing `ip`. For a Primary IP of type `ipv4` this must exactly match the IP address of the Primary IP. For a Primary IP of type `ipv6` this must be a single IP within the IPv6 /64 range that belongs to this Primary IP. You can add up to 100 IPv6 reverse DNS entries.\n\nThe target hostname is set by passing `dns_ptr`.\n"},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"change_dns_ptr","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.620Z","id":13,"progress":100,"resources":[{"id":4711,"type":"primary_ip"}],"started":"2025-08-15T13:52:16.620Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.620Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.620Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `change_dns_ptr` Action"}},"summary":"Change reverse DNS entry for a Primary IP","tags":["Primary IP Actions"]}},"/primary_ips/{id}/actions/change_protection":{"post":{"description":"Changes the protection configuration of a Primary IP.\n\nA Primary IP can only be delete protected if its `auto_delete` property is set to `false`.\n","parameters":[{"description":"ID of the Primary IP","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"delete":{"description":"If true, prevents the Primary IP from being deleted","example":true,"type":"boolean"}},"title":"ChangeProtectionRequest","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"change_protection","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.620Z","id":13,"progress":100,"resources":[{"id":4711,"type":"primary_ip"}],"started":"2025-08-15T13:52:16.620Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.620Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.620Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `change_protection` Action"}},"summary":"Change Primary IP Protection","tags":["Primary IP Actions"]}},"/primary_ips/{id}/actions/unassign":{"post":{"description":"Unassigns a Primary IP from a Server.\n\nThe Server must be powered off (status `off`) in order for this operation to succeed.\n\nNote that only Servers that have at least one network interface (public or private) attached can be powered on.\n\n#### Call specific error codes\n\n| Code                              | Description                                                   |\n|---------------------------------- |-------------------------------------------------------------- |\n| `server_not_stopped`              | The server is running, but needs to be powered off            |\n| `server_is_load_balancer_target`  | The server ipv4 address is a loadbalancer target              |\n","parameters":[{"description":"ID of the Primary IP","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"unassign_primary_ip","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"server"},{"id":4711,"type":"primary_ip"}],"started":"2025-08-15T13:52:16.620Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.620Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.620Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key in the reply contains an Action object with this structure"}},"summary":"Unassign a Primary IP from a resource","tags":["Primary IP Actions"]}},"/server_types":{"get":{"description":"Gets all Server type objects.","parameters":[{"description":"Can be used to filter Server types by their name. The response will only contain the Server type matching the specified name.","in":"query","name":"name","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"server_types":{"items":{"properties":{"architecture":{"description":"Type of cpu architecture","enum":["x86","arm"],"example":"x86","type":"string"},"cores":{"description":"Number of cpu cores a Server of this type will have","example":1,"type":"number"},"cpu_type":{"description":"Type of cpu","enum":["shared","dedicated"],"type":"string"},"deprecated":{"description":"True if Server type is deprecated","example":false,"type":"boolean"},"description":{"description":"Description of the Server type","example":"CX11","type":"string"},"disk":{"description":"Disk size a Server of this type will have in GB","example":24,"type":"number"},"id":{"description":"ID of the Server type","example":1,"type":"number"},"memory":{"description":"Memory a Server of this type will have in GB","example":1,"type":"number"},"name":{"description":"Unique identifier of the Server type","example":"cx11","type":"string"},"prices":{"description":"Prices in different Locations","items":{"properties":{"location":{"description":"Name of the Location the price is for","example":"fsn1","type":"string"},"price_hourly":{"description":"Hourly costs for a Server type in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"},"price_monthly":{"description":"Monthly costs for a Server type in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"}},"required":["location","price_hourly","price_monthly"],"type":"object"},"type":"array"},"storage_type":{"description":"Type of Server boot drive. Local has higher speed. Network has better availability.","enum":["local","network"],"type":"string"}},"required":["id","name","description","cores","memory","disk","deprecated","prices","storage_type","cpu_type","architecture"],"type":"object"},"type":"array"}},"required":["server_types"],"type":"object"}}},"description":"The `server_types` key in the reply contains an array of Server type objects with this structure"}},"summary":"Get all Server Types","tags":["Server Types"]}},"/server_types/{id}":{"get":{"description":"Gets a specific Server type object.","parameters":[{"description":"ID of Server Type","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"server_type":{"properties":{"architecture":{"description":"Type of cpu architecture","enum":["x86","arm"],"example":"x86","type":"string"},"cores":{"description":"Number of cpu cores a Server of this type will have","example":1,"type":"number"},"cpu_type":{"description":"Type of cpu","enum":["shared","dedicated"],"type":"string"},"deprecated":{"description":"True if Server type is deprecated","example":false,"type":"boolean"},"description":{"description":"Description of the Server type","example":"CX11","type":"string"},"disk":{"description":"Disk size a Server of this type will have in GB","example":24,"type":"number"},"id":{"description":"ID of the Server type","example":1,"type":"number"},"memory":{"description":"Memory a Server of this type will have in GB","example":1,"type":"number"},"name":{"description":"Unique identifier of the Server type","example":"cx11","type":"string"},"prices":{"description":"Prices in different Locations","items":{"properties":{"location":{"description":"Name of the Location the price is for","example":"fsn1","type":"string"},"price_hourly":{"description":"Hourly costs for a Server type in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"},"price_monthly":{"description":"Monthly costs for a Server type in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"}},"required":["location","price_hourly","price_monthly"],"type":"object"},"type":"array"},"storage_type":{"description":"Type of Server boot drive. Local has higher speed. Network has better availability.","enum":["local","network"],"type":"string"}},"required":["id","name","description","cores","memory","disk","deprecated","prices","storage_type","cpu_type","architecture"],"type":"object"}},"required":["server_type"],"type":"object"}}},"description":"The `server_type` key in the reply contains a Server type object with this structure"}},"summary":"Get a Server Type","tags":["Server Types"]}},"/servers":{"get":{"description":"Returns all existing Server objects","parameters":[{"description":"Can be used to filter resources by their name. The response will only contain the resources matching the specified name","in":"query","name":"name","required":false,"schema":{"type":"string"}},{"description":"Can be used to filter resources by labels. The response will only contain resources matching the label selector.","in":"query","name":"label_selector","required":false,"schema":{"type":"string"}},{"description":"Can be used multiple times.","in":"query","name":"sort","required":false,"schema":{"enum":["id","id:asc","id:desc","name","name:asc","name:desc","created","created:asc","created:desc"],"type":"string"}},{"description":"Can be used multiple times. The response will only contain Server matching the status","in":"query","name":"status","required":false,"schema":{"enum":["initializing","starting","running","stopping","off","deleting","rebuilding","migrating","unknown"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"meta":{"properties":{"pagination":{"properties":{"last_page":{"description":"ID of the last page available. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"next_page":{"description":"ID of the next page. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"page":{"description":"Current page number","example":3,"type":"number"},"per_page":{"description":"Maximum number of items shown per page in the response","example":25,"type":"number"},"previous_page":{"description":"ID of the previous page. Can be null if the current page is the first one.","example":2,"nullable":true,"type":"number"},"total_entries":{"description":"The total number of entries that exist in the database for this query. Nullable if unknown.","example":100,"nullable":true,"type":"number"}},"required":["page","per_page","previous_page","next_page","last_page","total_entries"],"type":"object"}},"required":["pagination"],"type":"object"},"servers":{"items":{"properties":{"backup_window":{"description":"Time window (UTC) in which the backup will run, or null if the backups are not enabled","example":"22-02","nullable":true,"type":"string"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.621Z","type":"string"},"datacenter":{"description":"Datacenter this Resource is located at","properties":{"description":{"description":"Description of the Datacenter","example":"Falkenstein DC Park 8","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"location":{"properties":{"city":{"description":"City the Location is closest to","example":"Falkenstein","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 code of the country the Location resides in","example":"DE","type":"string"},"description":{"description":"Description of the Location","example":"Falkenstein DC Park 1","type":"string"},"id":{"description":"ID of the Location","example":1,"type":"number"},"latitude":{"description":"Latitude of the city closest to the Location","example":50.47612,"type":"number"},"longitude":{"description":"Longitude of the city closest to the Location","example":12.370071,"type":"number"},"name":{"description":"Unique identifier of the Location","example":"fsn1","type":"string"},"network_zone":{"description":"Name of network zone this Location resides in","example":"eu-central","type":"string"}},"required":["id","name","description","country","city","latitude","longitude","network_zone"],"type":"object"},"name":{"description":"Unique identifier of the Datacenter","example":"fsn1-dc8","type":"string"},"server_types":{"description":"The Server types the Datacenter can handle","properties":{"available":{"description":"IDs of Server types that are supported and for which the Datacenter has enough resources left","example":[1,2,3],"items":{"type":"number"},"type":"array"},"available_for_migration":{"description":"IDs of Server types that are supported and for which the Datacenter has enough resources left","example":[1,2,3],"items":{"type":"number"},"type":"array"},"supported":{"description":"IDs of Server types that are supported in the Datacenter","example":[1,2,3],"items":{"type":"number"},"type":"array"}},"required":["supported","available","available_for_migration"],"type":"object"}},"required":["id","name","description","location","server_types"],"type":"object"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"image":{"nullable":true,"properties":{"bound_to":{"description":"ID of Server the Image is bound to. Only set for Images of type `backup`.","example":null,"nullable":true,"type":"integer"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.621Z","type":"string"},"created_from":{"description":"Information about the Server the Image was created from","nullable":true,"properties":{"id":{"description":"ID of the Server the Image was created from","example":1,"type":"integer"},"name":{"description":"Server name at the time the Image was created","example":"Server","type":"string"}},"required":["id","name"],"type":"object"},"deleted":{"description":"Point in time where the Image was deleted (in ISO-8601 format)","example":null,"nullable":true,"type":"string"},"deprecated":{"description":"Point in time when the Image is considered to be deprecated (in ISO-8601 format)","example":"2025-08-15T13:52:16.621Z","nullable":true,"type":"string"},"description":{"description":"Description of the Image","example":"Ubuntu 20.04 Standard 64 bit","type":"string"},"disk_size":{"description":"Size of the disk contained in the Image in GB","example":10,"type":"number"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"image_size":{"description":"Size of the Image file in our storage in GB. For snapshot Images this is the value relevant for calculating costs for the Image.","example":2.3,"nullable":true,"type":"number"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Unique identifier of the Image. This value is only set for system Images.","example":"ubuntu-20.04","nullable":true,"type":"string"},"os_flavor":{"description":"Flavor of operating system contained in the Image","enum":["ubuntu","centos","debian","fedora","unknown"],"example":"ubuntu","type":"string"},"os_version":{"description":"Operating system version","example":"20.04","nullable":true,"type":"string"},"protection":{"description":"Protection configuration for the Resource","properties":{"delete":{"description":"If true, prevents the Resource from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"rapid_deploy":{"description":"Indicates that rapid deploy of the Image is available","example":false,"type":"boolean"},"status":{"description":"Whether the Image can be used or if it's still being created or unavailable","enum":["available","creating","unavailable"],"type":"string"},"type":{"description":"Type of the Image","enum":["system","app","snapshot","backup","temporary"],"example":"snapshot","type":"string"}},"required":["id","type","status","name","description","image_size","disk_size","created","created_from","bound_to","os_flavor","os_version","protection","deprecated","deleted","labels"],"type":"object"},"included_traffic":{"description":"Free Traffic for the current billing period in bytes","example":654321,"nullable":true,"type":"number"},"ingoing_traffic":{"description":"Inbound Traffic for the current billing period in bytes","example":123456,"nullable":true,"type":"number"},"iso":{"description":"ISO Image that is attached to this Server. Null if no ISO is attached.","nullable":true,"properties":{"architecture":{"description":"Type of cpu architecture this iso is compatible with. Null indicates no restriction on the architecture (wildcard).","enum":["x86","arm"],"example":"x86","nullable":true,"type":"string"},"deprecated":{"description":"ISO 8601 timestamp of deprecation, null if ISO is still available. After the deprecation time it will no longer be possible to attach the ISO to Servers.","example":"2025-08-15T13:52:16.621Z","nullable":true,"type":"string"},"description":{"description":"Description of the ISO","example":"FreeBSD 11.0 x64","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"name":{"description":"Unique identifier of the ISO. Only set for public ISOs","example":"FreeBSD-11.0-RELEASE-amd64-dvd1","nullable":true,"type":"string"},"type":{"description":"Type of the ISO","enum":["public","private"],"type":"string"}},"required":["id","name","description","type","deprecated","architecture"],"type":"object"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"load_balancers":{"items":{"type":"integer"},"type":"array"},"locked":{"description":"True if Server has been locked and is not available to user","example":false,"type":"boolean"},"name":{"description":"Name of the Server (must be unique per Project and a valid hostname as per RFC 1123)","example":"my-resource","type":"string"},"outgoing_traffic":{"description":"Outbound Traffic for the current billing period in bytes","example":123456,"nullable":true,"type":"number"},"placement_group":{"nullable":true,"properties":{"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.621Z","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"servers":{"description":"Array of IDs of Servers that are part of this Placement Group","example":[42],"items":{"type":"integer"},"type":"array"},"type":{"description":"Type of the Placement Group","enum":["spread"],"example":"spread","type":"string"}},"required":["id","name","labels","type","created","servers"],"title":"PlacementGroupNullable","type":"object"},"primary_disk_size":{"description":"Size of the primary Disk","example":50,"type":"number"},"private_net":{"description":"Private networks information","items":{"properties":{"alias_ips":{"items":{"type":"string"},"type":"array"},"ip":{"example":"10.0.0.2","type":"string"},"mac_address":{"example":"86:00:ff:2a:7d:e1","type":"string"},"network":{"example":4711,"type":"integer"}},"type":"object"},"type":"array"},"protection":{"description":"Protection configuration for the Server","properties":{"delete":{"description":"If true, prevents the Server from being deleted","example":false,"type":"boolean"},"rebuild":{"description":"If true, prevents the Server from being rebuilt","example":false,"type":"boolean"}},"required":["delete","rebuild"],"type":"object"},"public_net":{"description":"Public network information. The Server's IPv4 address can be found in `public_net->ipv4->ip`","properties":{"firewalls":{"description":"Firewalls applied to the public network interface of this Server","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"status":{"description":"Status of the Firewall on the Server","enum":["applied","pending"],"example":"applied","type":"string"}},"title":"ServerPublicNetFirewall","type":"object"},"type":"array"},"floating_ips":{"description":"IDs of Floating IPs assigned to this Server","example":[478],"items":{"type":"integer"},"type":"array"},"ipv4":{"description":"IP address (v4) and its reverse DNS entry of this Server","nullable":true,"properties":{"blocked":{"description":"If the IP is blocked by our anti abuse dept","example":false,"type":"boolean"},"dns_ptr":{"description":"Reverse DNS PTR entry for the IPv4 addresses of this Server","example":"server01.example.com","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"ip":{"description":"IP address (v4) of this Server","example":"1.2.3.4","type":"string"}},"required":["ip","blocked","dns_ptr"],"type":"object"},"ipv6":{"description":"IPv6 network assigned to this Server and its reverse DNS entry","nullable":true,"properties":{"blocked":{"description":"If the IP is blocked by our anti abuse dept","example":false,"type":"boolean"},"dns_ptr":{"description":"Reverse DNS PTR entries for the IPv6 addresses of this Server, `null` by default","items":{"properties":{"dns_ptr":{"description":"DNS pointer for the specific IP address","example":"server.example.com","type":"string"},"ip":{"description":"Single IPv6 address of this Server for which the reverse DNS entry has been set up","example":"2001:db8::1","type":"string"}},"required":["ip","dns_ptr"],"type":"object"},"nullable":true,"type":"array"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"ip":{"description":"IP address (v6) of this Server","example":"2001:db8::/64","type":"string"}},"required":["ip","blocked","dns_ptr"],"type":"object"}},"required":["ipv4","ipv6","floating_ips"],"type":"object"},"rescue_enabled":{"description":"True if rescue mode is enabled. Server will then boot into rescue system on next reboot","example":false,"type":"boolean"},"server_type":{"description":"Type of Server - determines how much ram, disk and cpu a Server has","properties":{"cores":{"description":"Number of cpu cores a Server of this type will have","example":1,"type":"number"},"cpu_type":{"description":"Type of cpu","enum":["shared","dedicated"],"type":"string"},"deprecated":{"description":"True if Server type is deprecated","example":false,"type":"boolean"},"description":{"description":"Description of the Server type","example":"CX11","type":"string"},"disk":{"description":"Disk size a Server of this type will have in GB","example":25,"type":"number"},"id":{"description":"ID of the Server type","example":1,"type":"integer"},"memory":{"description":"Memory a Server of this type will have in GB","example":1,"type":"number"},"name":{"description":"Unique identifier of the Server type","example":"cx11","type":"string"},"prices":{"description":"Prices in different Locations","items":{"properties":{"location":{"description":"Name of the Location the price is for","example":"fsn1","type":"string"},"price_hourly":{"description":"Hourly costs for a Server type in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"},"price_monthly":{"description":"Monthly costs for a Server type in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"}},"required":["location","price_hourly","price_monthly"],"type":"object"},"type":"array"},"storage_type":{"description":"Type of Server boot drive. Local has higher speed. Network has better availability.","enum":["local","network"],"type":"string"}},"required":["id","name","description","cores","memory","disk","deprecated","prices","storage_type","cpu_type"],"type":"object"},"status":{"description":"Status of the Server","enum":["running","initializing","starting","stopping","off","deleting","migrating","rebuilding","unknown"],"type":"string"},"volumes":{"description":"IDs of Volumes assigned to this Server","items":{"type":"integer"},"type":"array"}},"required":["id","name","status","created","public_net","private_net","server_type","datacenter","image","iso","rescue_enabled","locked","backup_window","outgoing_traffic","ingoing_traffic","included_traffic","protection","labels","primary_disk_size"],"type":"object"},"type":"array"}},"required":["servers"],"type":"object"}}},"description":"A paged array of servers","headers":{"x-next":{"description":"A link to the next page of responses","schema":{"type":"string"}}}}},"summary":"Get all Servers","tags":["Servers"]},"post":{"description":"Creates a new Server. Returns preliminary information about the Server as well as an Action that covers progress of creation.","requestBody":{"content":{"application/json":{"schema":{"properties":{"automount":{"description":"Auto-mount Volumes after attach","example":false,"type":"boolean"},"datacenter":{"description":"ID or name of Datacenter to create Server in (must not be used together with location)","example":"nbg1-dc3","type":"string"},"firewalls":{"description":"Firewalls which should be applied on the Server's public network interface at creation time","example":[{"firewall":38}],"items":{"properties":{"firewall":{"description":"ID of the Firewall","type":"integer"}},"type":"object"},"type":"array"},"image":{"description":"ID or name of the Image the Server is created from","example":"ubuntu-20.04","type":"string"},"labels":{"description":"User-defined labels (key-value pairs)","type":"object"},"location":{"description":"ID or name of Location to create Server in (must not be used together with datacenter)","example":"nbg1","type":"string"},"name":{"description":"Name of the Server to create (must be unique per Project and a valid hostname as per RFC 1123)","example":"my-server","type":"string"},"networks":{"description":"Network IDs which should be attached to the Server private network interface at the creation time","example":[456],"items":{"type":"integer"},"type":"array"},"placement_group":{"description":"ID of the Placement Group the server should be in","example":1,"type":"integer"},"public_net":{"description":"Public Network options","properties":{"enable_ipv4":{"description":"Attach an IPv4 on the public NIC. If false, no IPv4 address will be attached. Defaults to true.","type":"boolean"},"enable_ipv6":{"description":"Attach an IPv6 on the public NIC. If false, no IPv6 address will be attached. Defaults to true.","type":"boolean"},"ipv4":{"description":"ID of the ipv4 Primary IP to use. If omitted and enable_ipv4 is true, a new ipv4 Primary IP will automatically be created.","nullable":true,"type":"integer"},"ipv6":{"description":"ID of the ipv6 Primary IP to use. If omitted and enable_ipv6 is true, a new ipv6 Primary IP will automatically be created.","nullable":true,"type":"integer"}},"type":"object"},"server_type":{"description":"ID or name of the Server type this Server should be created with","example":"cx11","type":"string"},"ssh_keys":{"description":"SSH key IDs (`integer`) or names (`string`) which should be injected into the Server at creation time","example":["my-ssh-key"],"items":{"type":"string"},"type":"array"},"start_after_create":{"description":"Start Server right after creation. Defaults to true.","example":true,"type":"boolean"},"user_data":{"description":"Cloud-Init user data to use during Server creation. This field is limited to 32KiB.","example":"#cloud-config\nruncmd:\n- [touch, /root/cloud-init-worked]\n","type":"string"},"volumes":{"description":"Volume IDs which should be attached to the Server at the creation time. Volumes must be in the same Location.","example":[123],"items":{"type":"integer"},"type":"array"}},"required":["name","server_type","image"],"title":"CreateServerRequest","type":"object"}}},"description":"Please note that Server names must be unique per Project and valid hostnames as per RFC 1123 (i.e. may only contain letters, digits, periods, and dashes).\n\nFor `server_type` you can either use the ID as listed in `/server_types` or its name.\n\nFor `image` you can either use the ID as listed in `/images` or its name.\n\nIf you want to create the Server in a Location, you must set `location` to the ID or name as listed in `/locations`. This is the recommended way. You can be even more specific by setting `datacenter` to the ID or name as listed in `/datacenters`. However we only recommend this if you want to assign a specific Primary IP to the Server which is located in the specified Datacenter.\n\nSome properties like `start_after_create` or `automount` will trigger Actions after the Server is created. Those Actions are listed in the `next_actions` field in the response.\n\nFor accessing your Server we strongly recommend to use SSH keys by passing the respective key IDs in `ssh_keys`. If you do not specify any `ssh_keys` we will generate a root password for you and return it in the response.\n\nPlease note that provided user-data is stored in our systems. While we take measures to protect it we highly recommend that you don’t use it to store passwords or other sensitive information.\n\n#### Call specific error codes\n\n| Code                             | Description                                                |\n|----------------------------------|------------------------------------------------------------|\n| `placement_error`                | An error during the placement occurred                     |\n| `primary_ip_assigned`            | The specified Primary IP is already assigned to a server   |\n| `primary_ip_datacenter_mismatch` | The specified Primary IP is in a different datacenter      |\n| `primary_ip_version_mismatch`    | The specified Primary IP has the wrong IP Version          |\n"},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"create_server","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":1,"progress":0,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.621Z","status":"running"},"next_actions":[{"command":"start_server","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.621Z","status":"running"}],"root_password":"YItygq1v3GYjjMomLaKc","server":{"backup_window":"22-02","created":"2025-08-15T13:52:16.621Z","datacenter":{"description":"Falkenstein 1 DC 8","id":1,"location":{"city":"Falkenstein","country":"DE","description":"Falkenstein DC Park 1","id":1,"latitude":50.47612,"longitude":12.370071,"name":"fsn1","network_zone":"eu-central"},"name":"fsn1-dc8","server_types":{"available":[1,2,3],"available_for_migration":[1,2,3],"supported":[1,2,3]}},"id":42,"image":{"architecture":"x86","bound_to":null,"created":"2025-08-15T13:52:16.621Z","created_from":{"id":1,"name":"Server"},"deleted":null,"deprecated":"2025-08-15T13:52:16.621Z","description":"Ubuntu 20.04 Standard 64 bit","disk_size":10,"id":4711,"image_size":2.3,"labels":{"env":"dev"},"name":"ubuntu-20.04","os_flavor":"ubuntu","os_version":"20.04","protection":{"delete":false},"rapid_deploy":false,"status":"available","type":"snapshot"},"included_traffic":654321,"ingoing_traffic":123456,"iso":{"architecture":"x86","deprecated":"2025-08-15T13:52:16.621Z","description":"FreeBSD 11.0 x64","id":4711,"name":"FreeBSD-11.0-RELEASE-amd64-dvd1","type":"public"},"labels":{"env":"dev"},"load_balancers":[],"locked":false,"name":"my-server","outgoing_traffic":123456,"primary_disk_size":50,"private_net":[{"alias_ips":[],"ip":"10.0.0.2","mac_address":"86:00:ff:2a:7d:e1","network":4711}],"protection":{"delete":false,"rebuild":false},"public_net":{"firewalls":[{"id":38,"status":"applied"}],"floating_ips":[478],"ipv4":{"blocked":false,"dns_ptr":"server01.example.com","ip":"1.2.3.4"},"ipv6":{"blocked":false,"dns_ptr":[{"dns_ptr":"server.example.com","ip":"2001:db8::1"}],"ip":"2001:db8::/64"}},"rescue_enabled":false,"server_type":{"architecture":"x86","cores":1,"cpu_type":"shared","deprecated":true,"description":"CX11","disk":25,"id":1,"memory":1,"name":"cx11","prices":[{"location":"fsn1","price_hourly":{"gross":"1.1900000000000000","net":"1.0000000000"},"price_monthly":{"gross":"1.1900000000000000","net":"1.0000000000"}}],"storage_type":"local"},"status":"initializing","volumes":[]}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.621Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.621Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"},"next_actions":{"items":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.621Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.621Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"},"type":"array"},"root_password":{"description":"Root password when no SSH keys have been specified","example":"YItygq1v3GYjjMomLaKc","nullable":true,"type":"string"},"server":{"properties":{"backup_window":{"description":"Time window (UTC) in which the backup will run, or null if the backups are not enabled","example":"22-02","nullable":true,"type":"string"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.621Z","type":"string"},"datacenter":{"description":"Datacenter this Resource is located at","properties":{"description":{"description":"Description of the Datacenter","example":"Falkenstein DC Park 8","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"location":{"properties":{"city":{"description":"City the Location is closest to","example":"Falkenstein","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 code of the country the Location resides in","example":"DE","type":"string"},"description":{"description":"Description of the Location","example":"Falkenstein DC Park 1","type":"string"},"id":{"description":"ID of the Location","example":1,"type":"number"},"latitude":{"description":"Latitude of the city closest to the Location","example":50.47612,"type":"number"},"longitude":{"description":"Longitude of the city closest to the Location","example":12.370071,"type":"number"},"name":{"description":"Unique identifier of the Location","example":"fsn1","type":"string"},"network_zone":{"description":"Name of network zone this Location resides in","example":"eu-central","type":"string"}},"required":["id","name","description","country","city","latitude","longitude","network_zone"],"type":"object"},"name":{"description":"Unique identifier of the Datacenter","example":"fsn1-dc8","type":"string"},"server_types":{"description":"The Server types the Datacenter can handle","properties":{"available":{"description":"IDs of Server types that are supported and for which the Datacenter has enough resources left","example":[1,2,3],"items":{"type":"number"},"type":"array"},"available_for_migration":{"description":"IDs of Server types that are supported and for which the Datacenter has enough resources left","example":[1,2,3],"items":{"type":"number"},"type":"array"},"supported":{"description":"IDs of Server types that are supported in the Datacenter","example":[1,2,3],"items":{"type":"number"},"type":"array"}},"required":["supported","available","available_for_migration"],"type":"object"}},"required":["id","name","description","location","server_types"],"type":"object"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"image":{"nullable":true,"properties":{"bound_to":{"description":"ID of Server the Image is bound to. Only set for Images of type `backup`.","example":null,"nullable":true,"type":"integer"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.621Z","type":"string"},"created_from":{"description":"Information about the Server the Image was created from","nullable":true,"properties":{"id":{"description":"ID of the Server the Image was created from","example":1,"type":"integer"},"name":{"description":"Server name at the time the Image was created","example":"Server","type":"string"}},"required":["id","name"],"type":"object"},"deleted":{"description":"Point in time where the Image was deleted (in ISO-8601 format)","example":null,"nullable":true,"type":"string"},"deprecated":{"description":"Point in time when the Image is considered to be deprecated (in ISO-8601 format)","example":"2025-08-15T13:52:16.621Z","nullable":true,"type":"string"},"description":{"description":"Description of the Image","example":"Ubuntu 20.04 Standard 64 bit","type":"string"},"disk_size":{"description":"Size of the disk contained in the Image in GB","example":10,"type":"number"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"image_size":{"description":"Size of the Image file in our storage in GB. For snapshot Images this is the value relevant for calculating costs for the Image.","example":2.3,"nullable":true,"type":"number"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Unique identifier of the Image. This value is only set for system Images.","example":"ubuntu-20.04","nullable":true,"type":"string"},"os_flavor":{"description":"Flavor of operating system contained in the Image","enum":["ubuntu","centos","debian","fedora","unknown"],"example":"ubuntu","type":"string"},"os_version":{"description":"Operating system version","example":"20.04","nullable":true,"type":"string"},"protection":{"description":"Protection configuration for the Resource","properties":{"delete":{"description":"If true, prevents the Resource from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"rapid_deploy":{"description":"Indicates that rapid deploy of the Image is available","example":false,"type":"boolean"},"status":{"description":"Whether the Image can be used or if it's still being created or unavailable","enum":["available","creating","unavailable"],"type":"string"},"type":{"description":"Type of the Image","enum":["system","app","snapshot","backup","temporary"],"example":"snapshot","type":"string"}},"required":["id","type","status","name","description","image_size","disk_size","created","created_from","bound_to","os_flavor","os_version","protection","deprecated","deleted","labels"],"type":"object"},"included_traffic":{"description":"Free Traffic for the current billing period in bytes","example":654321,"nullable":true,"type":"number"},"ingoing_traffic":{"description":"Inbound Traffic for the current billing period in bytes","example":123456,"nullable":true,"type":"number"},"iso":{"description":"ISO Image that is attached to this Server. Null if no ISO is attached.","nullable":true,"properties":{"architecture":{"description":"Type of cpu architecture this iso is compatible with. Null indicates no restriction on the architecture (wildcard).","enum":["x86","arm"],"example":"x86","nullable":true,"type":"string"},"deprecated":{"description":"ISO 8601 timestamp of deprecation, null if ISO is still available. After the deprecation time it will no longer be possible to attach the ISO to Servers.","example":"2025-08-15T13:52:16.621Z","nullable":true,"type":"string"},"description":{"description":"Description of the ISO","example":"FreeBSD 11.0 x64","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"name":{"description":"Unique identifier of the ISO. Only set for public ISOs","example":"FreeBSD-11.0-RELEASE-amd64-dvd1","nullable":true,"type":"string"},"type":{"description":"Type of the ISO","enum":["public","private"],"type":"string"}},"required":["id","name","description","type","deprecated","architecture"],"type":"object"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"load_balancers":{"items":{"type":"integer"},"type":"array"},"locked":{"description":"True if Server has been locked and is not available to user","example":false,"type":"boolean"},"name":{"description":"Name of the Server (must be unique per Project and a valid hostname as per RFC 1123)","example":"my-resource","type":"string"},"outgoing_traffic":{"description":"Outbound Traffic for the current billing period in bytes","example":123456,"nullable":true,"type":"number"},"placement_group":{"nullable":true,"properties":{"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.621Z","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"servers":{"description":"Array of IDs of Servers that are part of this Placement Group","example":[42],"items":{"type":"integer"},"type":"array"},"type":{"description":"Type of the Placement Group","enum":["spread"],"example":"spread","type":"string"}},"required":["id","name","labels","type","created","servers"],"title":"PlacementGroupNullable","type":"object"},"primary_disk_size":{"description":"Size of the primary Disk","example":50,"type":"number"},"private_net":{"description":"Private networks information","items":{"properties":{"alias_ips":{"items":{"type":"string"},"type":"array"},"ip":{"example":"10.0.0.2","type":"string"},"mac_address":{"example":"86:00:ff:2a:7d:e1","type":"string"},"network":{"example":4711,"type":"integer"}},"type":"object"},"type":"array"},"protection":{"description":"Protection configuration for the Server","properties":{"delete":{"description":"If true, prevents the Server from being deleted","example":false,"type":"boolean"},"rebuild":{"description":"If true, prevents the Server from being rebuilt","example":false,"type":"boolean"}},"required":["delete","rebuild"],"type":"object"},"public_net":{"description":"Public network information. The Server's IPv4 address can be found in `public_net->ipv4->ip`","properties":{"firewalls":{"description":"Firewalls applied to the public network interface of this Server","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"status":{"description":"Status of the Firewall on the Server","enum":["applied","pending"],"example":"applied","type":"string"}},"title":"ServerPublicNetFirewall","type":"object"},"type":"array"},"floating_ips":{"description":"IDs of Floating IPs assigned to this Server","example":[478],"items":{"type":"integer"},"type":"array"},"ipv4":{"description":"IP address (v4) and its reverse DNS entry of this Server","nullable":true,"properties":{"blocked":{"description":"If the IP is blocked by our anti abuse dept","example":false,"type":"boolean"},"dns_ptr":{"description":"Reverse DNS PTR entry for the IPv4 addresses of this Server","example":"server01.example.com","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"ip":{"description":"IP address (v4) of this Server","example":"1.2.3.4","type":"string"}},"required":["ip","blocked","dns_ptr"],"type":"object"},"ipv6":{"description":"IPv6 network assigned to this Server and its reverse DNS entry","nullable":true,"properties":{"blocked":{"description":"If the IP is blocked by our anti abuse dept","example":false,"type":"boolean"},"dns_ptr":{"description":"Reverse DNS PTR entries for the IPv6 addresses of this Server, `null` by default","items":{"properties":{"dns_ptr":{"description":"DNS pointer for the specific IP address","example":"server.example.com","type":"string"},"ip":{"description":"Single IPv6 address of this Server for which the reverse DNS entry has been set up","example":"2001:db8::1","type":"string"}},"required":["ip","dns_ptr"],"type":"object"},"nullable":true,"type":"array"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"ip":{"description":"IP address (v6) of this Server","example":"2001:db8::/64","type":"string"}},"required":["ip","blocked","dns_ptr"],"type":"object"}},"required":["ipv4","ipv6","floating_ips"],"type":"object"},"rescue_enabled":{"description":"True if rescue mode is enabled. Server will then boot into rescue system on next reboot","example":false,"type":"boolean"},"server_type":{"description":"Type of Server - determines how much ram, disk and cpu a Server has","properties":{"cores":{"description":"Number of cpu cores a Server of this type will have","example":1,"type":"number"},"cpu_type":{"description":"Type of cpu","enum":["shared","dedicated"],"type":"string"},"deprecated":{"description":"True if Server type is deprecated","example":false,"type":"boolean"},"description":{"description":"Description of the Server type","example":"CX11","type":"string"},"disk":{"description":"Disk size a Server of this type will have in GB","example":25,"type":"number"},"id":{"description":"ID of the Server type","example":1,"type":"integer"},"memory":{"description":"Memory a Server of this type will have in GB","example":1,"type":"number"},"name":{"description":"Unique identifier of the Server type","example":"cx11","type":"string"},"prices":{"description":"Prices in different Locations","items":{"properties":{"location":{"description":"Name of the Location the price is for","example":"fsn1","type":"string"},"price_hourly":{"description":"Hourly costs for a Server type in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"},"price_monthly":{"description":"Monthly costs for a Server type in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"}},"required":["location","price_hourly","price_monthly"],"type":"object"},"type":"array"},"storage_type":{"description":"Type of Server boot drive. Local has higher speed. Network has better availability.","enum":["local","network"],"type":"string"}},"required":["id","name","description","cores","memory","disk","deprecated","prices","storage_type","cpu_type"],"type":"object"},"status":{"description":"Status of the Server","enum":["running","initializing","starting","stopping","off","deleting","migrating","rebuilding","unknown"],"type":"string"},"volumes":{"description":"IDs of Volumes assigned to this Server","items":{"type":"integer"},"type":"array"}},"required":["id","name","status","created","public_net","private_net","server_type","datacenter","image","iso","rescue_enabled","locked","backup_window","outgoing_traffic","ingoing_traffic","included_traffic","protection","labels","primary_disk_size"],"type":"object"}},"required":["server","action","next_actions","root_password"],"title":"CreateServerResponse","type":"object"}}},"description":"The `server` key in the reply contains a Server object with this structure"}},"summary":"Create a Server","tags":["Servers"]}},"/servers/{id}":{"delete":{"description":"Deletes a Server. This immediately removes the Server from your account, and it is no longer accessible.","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.622Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.622Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"type":"object"}}},"description":"The `action` key in the reply contains an Action object with this structure"}},"summary":"Delete a Server","tags":["Servers"]},"get":{"description":"Returns a specific Server object. The Server must exist inside the Project","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"server":{"properties":{"backup_window":{"description":"Time window (UTC) in which the backup will run, or null if the backups are not enabled","example":"22-02","nullable":true,"type":"string"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.622Z","type":"string"},"datacenter":{"description":"Datacenter this Resource is located at","properties":{"description":{"description":"Description of the Datacenter","example":"Falkenstein DC Park 8","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"location":{"properties":{"city":{"description":"City the Location is closest to","example":"Falkenstein","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 code of the country the Location resides in","example":"DE","type":"string"},"description":{"description":"Description of the Location","example":"Falkenstein DC Park 1","type":"string"},"id":{"description":"ID of the Location","example":1,"type":"number"},"latitude":{"description":"Latitude of the city closest to the Location","example":50.47612,"type":"number"},"longitude":{"description":"Longitude of the city closest to the Location","example":12.370071,"type":"number"},"name":{"description":"Unique identifier of the Location","example":"fsn1","type":"string"},"network_zone":{"description":"Name of network zone this Location resides in","example":"eu-central","type":"string"}},"required":["id","name","description","country","city","latitude","longitude","network_zone"],"type":"object"},"name":{"description":"Unique identifier of the Datacenter","example":"fsn1-dc8","type":"string"},"server_types":{"description":"The Server types the Datacenter can handle","properties":{"available":{"description":"IDs of Server types that are supported and for which the Datacenter has enough resources left","example":[1,2,3],"items":{"type":"number"},"type":"array"},"available_for_migration":{"description":"IDs of Server types that are supported and for which the Datacenter has enough resources left","example":[1,2,3],"items":{"type":"number"},"type":"array"},"supported":{"description":"IDs of Server types that are supported in the Datacenter","example":[1,2,3],"items":{"type":"number"},"type":"array"}},"required":["supported","available","available_for_migration"],"type":"object"}},"required":["id","name","description","location","server_types"],"type":"object"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"image":{"nullable":true,"properties":{"bound_to":{"description":"ID of Server the Image is bound to. Only set for Images of type `backup`.","example":null,"nullable":true,"type":"integer"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.622Z","type":"string"},"created_from":{"description":"Information about the Server the Image was created from","nullable":true,"properties":{"id":{"description":"ID of the Server the Image was created from","example":1,"type":"integer"},"name":{"description":"Server name at the time the Image was created","example":"Server","type":"string"}},"required":["id","name"],"type":"object"},"deleted":{"description":"Point in time where the Image was deleted (in ISO-8601 format)","example":null,"nullable":true,"type":"string"},"deprecated":{"description":"Point in time when the Image is considered to be deprecated (in ISO-8601 format)","example":"2025-08-15T13:52:16.622Z","nullable":true,"type":"string"},"description":{"description":"Description of the Image","example":"Ubuntu 20.04 Standard 64 bit","type":"string"},"disk_size":{"description":"Size of the disk contained in the Image in GB","example":10,"type":"number"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"image_size":{"description":"Size of the Image file in our storage in GB. For snapshot Images this is the value relevant for calculating costs for the Image.","example":2.3,"nullable":true,"type":"number"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Unique identifier of the Image. This value is only set for system Images.","example":"ubuntu-20.04","nullable":true,"type":"string"},"os_flavor":{"description":"Flavor of operating system contained in the Image","enum":["ubuntu","centos","debian","fedora","unknown"],"example":"ubuntu","type":"string"},"os_version":{"description":"Operating system version","example":"20.04","nullable":true,"type":"string"},"protection":{"description":"Protection configuration for the Resource","properties":{"delete":{"description":"If true, prevents the Resource from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"rapid_deploy":{"description":"Indicates that rapid deploy of the Image is available","example":false,"type":"boolean"},"status":{"description":"Whether the Image can be used or if it's still being created or unavailable","enum":["available","creating","unavailable"],"type":"string"},"type":{"description":"Type of the Image","enum":["system","app","snapshot","backup","temporary"],"example":"snapshot","type":"string"}},"required":["id","type","status","name","description","image_size","disk_size","created","created_from","bound_to","os_flavor","os_version","protection","deprecated","deleted","labels"],"type":"object"},"included_traffic":{"description":"Free Traffic for the current billing period in bytes","example":654321,"nullable":true,"type":"number"},"ingoing_traffic":{"description":"Inbound Traffic for the current billing period in bytes","example":123456,"nullable":true,"type":"number"},"iso":{"description":"ISO Image that is attached to this Server. Null if no ISO is attached.","nullable":true,"properties":{"architecture":{"description":"Type of cpu architecture this iso is compatible with. Null indicates no restriction on the architecture (wildcard).","enum":["x86","arm"],"example":"x86","nullable":true,"type":"string"},"deprecated":{"description":"ISO 8601 timestamp of deprecation, null if ISO is still available. After the deprecation time it will no longer be possible to attach the ISO to Servers.","example":"2025-08-15T13:52:16.622Z","nullable":true,"type":"string"},"description":{"description":"Description of the ISO","example":"FreeBSD 11.0 x64","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"name":{"description":"Unique identifier of the ISO. Only set for public ISOs","example":"FreeBSD-11.0-RELEASE-amd64-dvd1","nullable":true,"type":"string"},"type":{"description":"Type of the ISO","enum":["public","private"],"type":"string"}},"required":["id","name","description","type","deprecated","architecture"],"type":"object"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"load_balancers":{"items":{"type":"integer"},"type":"array"},"locked":{"description":"True if Server has been locked and is not available to user","example":false,"type":"boolean"},"name":{"description":"Name of the Server (must be unique per Project and a valid hostname as per RFC 1123)","example":"my-resource","type":"string"},"outgoing_traffic":{"description":"Outbound Traffic for the current billing period in bytes","example":123456,"nullable":true,"type":"number"},"placement_group":{"nullable":true,"properties":{"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.622Z","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"servers":{"description":"Array of IDs of Servers that are part of this Placement Group","example":[42],"items":{"type":"integer"},"type":"array"},"type":{"description":"Type of the Placement Group","enum":["spread"],"example":"spread","type":"string"}},"required":["id","name","labels","type","created","servers"],"title":"PlacementGroupNullable","type":"object"},"primary_disk_size":{"description":"Size of the primary Disk","example":50,"type":"number"},"private_net":{"description":"Private networks information","items":{"properties":{"alias_ips":{"items":{"type":"string"},"type":"array"},"ip":{"example":"10.0.0.2","type":"string"},"mac_address":{"example":"86:00:ff:2a:7d:e1","type":"string"},"network":{"example":4711,"type":"integer"}},"type":"object"},"type":"array"},"protection":{"description":"Protection configuration for the Server","properties":{"delete":{"description":"If true, prevents the Server from being deleted","example":false,"type":"boolean"},"rebuild":{"description":"If true, prevents the Server from being rebuilt","example":false,"type":"boolean"}},"required":["delete","rebuild"],"type":"object"},"public_net":{"description":"Public network information. The Server's IPv4 address can be found in `public_net->ipv4->ip`","properties":{"firewalls":{"description":"Firewalls applied to the public network interface of this Server","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"status":{"description":"Status of the Firewall on the Server","enum":["applied","pending"],"example":"applied","type":"string"}},"title":"ServerPublicNetFirewall","type":"object"},"type":"array"},"floating_ips":{"description":"IDs of Floating IPs assigned to this Server","example":[478],"items":{"type":"integer"},"type":"array"},"ipv4":{"description":"IP address (v4) and its reverse DNS entry of this Server","nullable":true,"properties":{"blocked":{"description":"If the IP is blocked by our anti abuse dept","example":false,"type":"boolean"},"dns_ptr":{"description":"Reverse DNS PTR entry for the IPv4 addresses of this Server","example":"server01.example.com","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"ip":{"description":"IP address (v4) of this Server","example":"1.2.3.4","type":"string"}},"required":["ip","blocked","dns_ptr"],"type":"object"},"ipv6":{"description":"IPv6 network assigned to this Server and its reverse DNS entry","nullable":true,"properties":{"blocked":{"description":"If the IP is blocked by our anti abuse dept","example":false,"type":"boolean"},"dns_ptr":{"description":"Reverse DNS PTR entries for the IPv6 addresses of this Server, `null` by default","items":{"properties":{"dns_ptr":{"description":"DNS pointer for the specific IP address","example":"server.example.com","type":"string"},"ip":{"description":"Single IPv6 address of this Server for which the reverse DNS entry has been set up","example":"2001:db8::1","type":"string"}},"required":["ip","dns_ptr"],"type":"object"},"nullable":true,"type":"array"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"ip":{"description":"IP address (v6) of this Server","example":"2001:db8::/64","type":"string"}},"required":["ip","blocked","dns_ptr"],"type":"object"}},"required":["ipv4","ipv6","floating_ips"],"type":"object"},"rescue_enabled":{"description":"True if rescue mode is enabled. Server will then boot into rescue system on next reboot","example":false,"type":"boolean"},"server_type":{"description":"Type of Server - determines how much ram, disk and cpu a Server has","properties":{"cores":{"description":"Number of cpu cores a Server of this type will have","example":1,"type":"number"},"cpu_type":{"description":"Type of cpu","enum":["shared","dedicated"],"type":"string"},"deprecated":{"description":"True if Server type is deprecated","example":false,"type":"boolean"},"description":{"description":"Description of the Server type","example":"CX11","type":"string"},"disk":{"description":"Disk size a Server of this type will have in GB","example":25,"type":"number"},"id":{"description":"ID of the Server type","example":1,"type":"integer"},"memory":{"description":"Memory a Server of this type will have in GB","example":1,"type":"number"},"name":{"description":"Unique identifier of the Server type","example":"cx11","type":"string"},"prices":{"description":"Prices in different Locations","items":{"properties":{"location":{"description":"Name of the Location the price is for","example":"fsn1","type":"string"},"price_hourly":{"description":"Hourly costs for a Server type in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"},"price_monthly":{"description":"Monthly costs for a Server type in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"}},"required":["location","price_hourly","price_monthly"],"type":"object"},"type":"array"},"storage_type":{"description":"Type of Server boot drive. Local has higher speed. Network has better availability.","enum":["local","network"],"type":"string"}},"required":["id","name","description","cores","memory","disk","deprecated","prices","storage_type","cpu_type"],"type":"object"},"status":{"description":"Status of the Server","enum":["running","initializing","starting","stopping","off","deleting","migrating","rebuilding","unknown"],"type":"string"},"volumes":{"description":"IDs of Volumes assigned to this Server","items":{"type":"integer"},"type":"array"}},"required":["id","name","status","created","public_net","private_net","server_type","datacenter","image","iso","rescue_enabled","locked","backup_window","outgoing_traffic","ingoing_traffic","included_traffic","protection","labels","primary_disk_size"],"type":"object"}},"type":"object"}}},"description":"The `server` key in the reply contains a Server object with this structure"}},"summary":"Get a Server","tags":["Servers"]},"put":{"description":"Updates a Server. You can update a Server’s name and a Server’s labels.\nPlease note that Server names must be unique per Project and valid hostnames as per RFC 1123 (i.e. may only contain letters, digits, periods, and dashes).\nAlso note that when updating labels, the Server’s current set of labels will be replaced with the labels provided in the request body. So, for example, if you want to add a new label, you have to provide all existing labels plus the new label in the request body.","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"labels":{"description":"User-defined labels (key-value pairs)","example":{"labelkey":"value"},"type":"object"},"name":{"description":"New name to set","example":"my-server","type":"string"}},"title":"UpdateServerRequest","type":"object"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"server":{"properties":{"backup_window":{"description":"Time window (UTC) in which the backup will run, or null if the backups are not enabled","example":"22-02","nullable":true,"type":"string"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.622Z","type":"string"},"datacenter":{"description":"Datacenter this Resource is located at","properties":{"description":{"description":"Description of the Datacenter","example":"Falkenstein DC Park 8","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"location":{"properties":{"city":{"description":"City the Location is closest to","example":"Falkenstein","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 code of the country the Location resides in","example":"DE","type":"string"},"description":{"description":"Description of the Location","example":"Falkenstein DC Park 1","type":"string"},"id":{"description":"ID of the Location","example":1,"type":"number"},"latitude":{"description":"Latitude of the city closest to the Location","example":50.47612,"type":"number"},"longitude":{"description":"Longitude of the city closest to the Location","example":12.370071,"type":"number"},"name":{"description":"Unique identifier of the Location","example":"fsn1","type":"string"},"network_zone":{"description":"Name of network zone this Location resides in","example":"eu-central","type":"string"}},"required":["id","name","description","country","city","latitude","longitude","network_zone"],"type":"object"},"name":{"description":"Unique identifier of the Datacenter","example":"fsn1-dc8","type":"string"},"server_types":{"description":"The Server types the Datacenter can handle","properties":{"available":{"description":"IDs of Server types that are supported and for which the Datacenter has enough resources left","example":[1,2,3],"items":{"type":"number"},"type":"array"},"available_for_migration":{"description":"IDs of Server types that are supported and for which the Datacenter has enough resources left","example":[1,2,3],"items":{"type":"number"},"type":"array"},"supported":{"description":"IDs of Server types that are supported in the Datacenter","example":[1,2,3],"items":{"type":"number"},"type":"array"}},"required":["supported","available","available_for_migration"],"type":"object"}},"required":["id","name","description","location","server_types"],"type":"object"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"image":{"nullable":true,"properties":{"bound_to":{"description":"ID of Server the Image is bound to. Only set for Images of type `backup`.","example":null,"nullable":true,"type":"integer"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.622Z","type":"string"},"created_from":{"description":"Information about the Server the Image was created from","nullable":true,"properties":{"id":{"description":"ID of the Server the Image was created from","example":1,"type":"integer"},"name":{"description":"Server name at the time the Image was created","example":"Server","type":"string"}},"required":["id","name"],"type":"object"},"deleted":{"description":"Point in time where the Image was deleted (in ISO-8601 format)","example":null,"nullable":true,"type":"string"},"deprecated":{"description":"Point in time when the Image is considered to be deprecated (in ISO-8601 format)","example":"2025-08-15T13:52:16.622Z","nullable":true,"type":"string"},"description":{"description":"Description of the Image","example":"Ubuntu 20.04 Standard 64 bit","type":"string"},"disk_size":{"description":"Size of the disk contained in the Image in GB","example":10,"type":"number"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"image_size":{"description":"Size of the Image file in our storage in GB. For snapshot Images this is the value relevant for calculating costs for the Image.","example":2.3,"nullable":true,"type":"number"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Unique identifier of the Image. This value is only set for system Images.","example":"ubuntu-20.04","nullable":true,"type":"string"},"os_flavor":{"description":"Flavor of operating system contained in the Image","enum":["ubuntu","centos","debian","fedora","unknown"],"example":"ubuntu","type":"string"},"os_version":{"description":"Operating system version","example":"20.04","nullable":true,"type":"string"},"protection":{"description":"Protection configuration for the Resource","properties":{"delete":{"description":"If true, prevents the Resource from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"rapid_deploy":{"description":"Indicates that rapid deploy of the Image is available","example":false,"type":"boolean"},"status":{"description":"Whether the Image can be used or if it's still being created or unavailable","enum":["available","creating","unavailable"],"type":"string"},"type":{"description":"Type of the Image","enum":["system","app","snapshot","backup","temporary"],"example":"snapshot","type":"string"}},"required":["id","type","status","name","description","image_size","disk_size","created","created_from","bound_to","os_flavor","os_version","protection","deprecated","deleted","labels"],"type":"object"},"included_traffic":{"description":"Free Traffic for the current billing period in bytes","example":654321,"nullable":true,"type":"number"},"ingoing_traffic":{"description":"Inbound Traffic for the current billing period in bytes","example":123456,"nullable":true,"type":"number"},"iso":{"description":"ISO Image that is attached to this Server. Null if no ISO is attached.","nullable":true,"properties":{"architecture":{"description":"Type of cpu architecture this iso is compatible with. Null indicates no restriction on the architecture (wildcard).","enum":["x86","arm"],"example":"x86","nullable":true,"type":"string"},"deprecated":{"description":"ISO 8601 timestamp of deprecation, null if ISO is still available. After the deprecation time it will no longer be possible to attach the ISO to Servers.","example":"2025-08-15T13:52:16.622Z","nullable":true,"type":"string"},"description":{"description":"Description of the ISO","example":"FreeBSD 11.0 x64","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"name":{"description":"Unique identifier of the ISO. Only set for public ISOs","example":"FreeBSD-11.0-RELEASE-amd64-dvd1","nullable":true,"type":"string"},"type":{"description":"Type of the ISO","enum":["public","private"],"type":"string"}},"required":["id","name","description","type","deprecated","architecture"],"type":"object"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"load_balancers":{"items":{"type":"integer"},"type":"array"},"locked":{"description":"True if Server has been locked and is not available to user","example":false,"type":"boolean"},"name":{"description":"Name of the Server (must be unique per Project and a valid hostname as per RFC 1123)","example":"my-resource","type":"string"},"outgoing_traffic":{"description":"Outbound Traffic for the current billing period in bytes","example":123456,"nullable":true,"type":"number"},"placement_group":{"nullable":true,"properties":{"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.622Z","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"servers":{"description":"Array of IDs of Servers that are part of this Placement Group","example":[42],"items":{"type":"integer"},"type":"array"},"type":{"description":"Type of the Placement Group","enum":["spread"],"example":"spread","type":"string"}},"required":["id","name","labels","type","created","servers"],"title":"PlacementGroupNullable","type":"object"},"primary_disk_size":{"description":"Size of the primary Disk","example":50,"type":"number"},"private_net":{"description":"Private networks information","items":{"properties":{"alias_ips":{"items":{"type":"string"},"type":"array"},"ip":{"example":"10.0.0.2","type":"string"},"mac_address":{"example":"86:00:ff:2a:7d:e1","type":"string"},"network":{"example":4711,"type":"integer"}},"type":"object"},"type":"array"},"protection":{"description":"Protection configuration for the Server","properties":{"delete":{"description":"If true, prevents the Server from being deleted","example":false,"type":"boolean"},"rebuild":{"description":"If true, prevents the Server from being rebuilt","example":false,"type":"boolean"}},"required":["delete","rebuild"],"type":"object"},"public_net":{"description":"Public network information. The Server's IPv4 address can be found in `public_net->ipv4->ip`","properties":{"firewalls":{"description":"Firewalls applied to the public network interface of this Server","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"status":{"description":"Status of the Firewall on the Server","enum":["applied","pending"],"example":"applied","type":"string"}},"title":"ServerPublicNetFirewall","type":"object"},"type":"array"},"floating_ips":{"description":"IDs of Floating IPs assigned to this Server","example":[478],"items":{"type":"integer"},"type":"array"},"ipv4":{"description":"IP address (v4) and its reverse DNS entry of this Server","nullable":true,"properties":{"blocked":{"description":"If the IP is blocked by our anti abuse dept","example":false,"type":"boolean"},"dns_ptr":{"description":"Reverse DNS PTR entry for the IPv4 addresses of this Server","example":"server01.example.com","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"ip":{"description":"IP address (v4) of this Server","example":"1.2.3.4","type":"string"}},"required":["ip","blocked","dns_ptr"],"type":"object"},"ipv6":{"description":"IPv6 network assigned to this Server and its reverse DNS entry","nullable":true,"properties":{"blocked":{"description":"If the IP is blocked by our anti abuse dept","example":false,"type":"boolean"},"dns_ptr":{"description":"Reverse DNS PTR entries for the IPv6 addresses of this Server, `null` by default","items":{"properties":{"dns_ptr":{"description":"DNS pointer for the specific IP address","example":"server.example.com","type":"string"},"ip":{"description":"Single IPv6 address of this Server for which the reverse DNS entry has been set up","example":"2001:db8::1","type":"string"}},"required":["ip","dns_ptr"],"type":"object"},"nullable":true,"type":"array"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"ip":{"description":"IP address (v6) of this Server","example":"2001:db8::/64","type":"string"}},"required":["ip","blocked","dns_ptr"],"type":"object"}},"required":["ipv4","ipv6","floating_ips"],"type":"object"},"rescue_enabled":{"description":"True if rescue mode is enabled. Server will then boot into rescue system on next reboot","example":false,"type":"boolean"},"server_type":{"description":"Type of Server - determines how much ram, disk and cpu a Server has","properties":{"cores":{"description":"Number of cpu cores a Server of this type will have","example":1,"type":"number"},"cpu_type":{"description":"Type of cpu","enum":["shared","dedicated"],"type":"string"},"deprecated":{"description":"True if Server type is deprecated","example":false,"type":"boolean"},"description":{"description":"Description of the Server type","example":"CX11","type":"string"},"disk":{"description":"Disk size a Server of this type will have in GB","example":25,"type":"number"},"id":{"description":"ID of the Server type","example":1,"type":"integer"},"memory":{"description":"Memory a Server of this type will have in GB","example":1,"type":"number"},"name":{"description":"Unique identifier of the Server type","example":"cx11","type":"string"},"prices":{"description":"Prices in different Locations","items":{"properties":{"location":{"description":"Name of the Location the price is for","example":"fsn1","type":"string"},"price_hourly":{"description":"Hourly costs for a Server type in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"},"price_monthly":{"description":"Monthly costs for a Server type in this Location","properties":{"gross":{"description":"Price with VAT added","example":"1.1900000000000000","type":"string"},"net":{"description":"Price without VAT","example":"1.0000000000","type":"string"}},"required":["net","gross"],"type":"object"}},"required":["location","price_hourly","price_monthly"],"type":"object"},"type":"array"},"storage_type":{"description":"Type of Server boot drive. Local has higher speed. Network has better availability.","enum":["local","network"],"type":"string"}},"required":["id","name","description","cores","memory","disk","deprecated","prices","storage_type","cpu_type"],"type":"object"},"status":{"description":"Status of the Server","enum":["running","initializing","starting","stopping","off","deleting","migrating","rebuilding","unknown"],"type":"string"},"volumes":{"description":"IDs of Volumes assigned to this Server","items":{"type":"integer"},"type":"array"}},"required":["id","name","status","created","public_net","private_net","server_type","datacenter","image","iso","rescue_enabled","locked","backup_window","outgoing_traffic","ingoing_traffic","included_traffic","protection","labels","primary_disk_size"],"type":"object"}},"type":"object"}}},"description":"The `server` key in the reply contains the updated Server"}},"summary":"Update a Server","tags":["Servers"]}},"/servers/{id}/actions":{"get":{"description":"Returns all Action objects for a Server. You can `sort` the results by using the sort URI parameter, and filter them with the `status` parameter.","parameters":[{"description":"ID of the Resource","in":"path","name":"id","required":true,"schema":{"type":"integer"}},{"description":"Can be used multiple times.","in":"query","name":"sort","required":false,"schema":{"enum":["id","id:asc","id:desc","command","command:asc","command:desc","status","status:asc","status:desc","progress","progress:asc","progress:desc","started","started:asc","started:desc","finished","finished:asc","finished:desc"],"title":"ParameterSort","type":"string"}},{"description":"Can be used multiple times, the response will contain only Actions with specified statuses","in":"query","name":"status","required":false,"schema":{"enum":["running","success","error"],"title":"ParameterStatus","type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"actions":[{"command":"start_server","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.622Z","id":13,"progress":100,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.622Z","status":"success"}]},"schema":{"properties":{"actions":{"items":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.622Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.622Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"},"type":"array"},"meta":{"properties":{"pagination":{"properties":{"last_page":{"description":"ID of the last page available. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"next_page":{"description":"ID of the next page. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"page":{"description":"Current page number","example":3,"type":"number"},"per_page":{"description":"Maximum number of items shown per page in the response","example":25,"type":"number"},"previous_page":{"description":"ID of the previous page. Can be null if the current page is the first one.","example":2,"nullable":true,"type":"number"},"total_entries":{"description":"The total number of entries that exist in the database for this query. Nullable if unknown.","example":100,"nullable":true,"type":"number"}},"required":["page","per_page","previous_page","next_page","last_page","total_entries"],"type":"object"}},"required":["pagination"],"type":"object"}},"required":["actions"],"title":"ActionsResponse","type":"object"}}},"description":"The `actions` key contains a list of Actions"}},"summary":"Get all Actions for a Server","tags":["Server Actions"]}},"/servers/{id}/actions/add_to_placement_group":{"post":{"description":"Adds a Server to a Placement Group.\n\nServer must be powered off for this command to succeed.\n\n#### Call specific error codes\n\n| Code                          | Description                                                          |\n|-------------------------------|----------------------------------------------------------------------|\n| `server_not_stopped`          | The action requires a stopped server                                 |\n","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"placement_group":{"description":"ID of Placement Group the Server should be added to","example":1,"type":"integer"}},"required":["placement_group"],"title":"AddToPlacementGroupRequest","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"add_to_placement_group","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.623Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.623Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.623Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key in the reply contains an Action object with this structure"}},"summary":"Add a Server to a Placement Group","tags":["Server Actions"]}},"/servers/{id}/actions/attach_iso":{"post":{"description":"Attaches an ISO to a Server. The Server will immediately see it as a new disk. An already attached ISO will automatically be detached before the new ISO is attached.\n\nServers with attached ISOs have a modified boot order: They will try to boot from the ISO first before falling back to hard disk.\n","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"iso":{"description":"ID or name of ISO to attach to the Server as listed in GET `/isos`","example":"FreeBSD-11.0-RELEASE-amd64-dvd1","type":"string"}},"required":["iso"],"type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"attach_iso","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.623Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.623Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.623Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key in the reply contains an Action object with this structure"}},"summary":"Attach an ISO to a Server","tags":["Server Actions"]}},"/servers/{id}/actions/attach_to_network":{"post":{"description":"Attaches a Server to a network. This will complement the fixed public Server interface by adding an additional ethernet interface to the Server which is connected to the specified network.\n\nThe Server will get an IP auto assigned from a subnet of type `server` in the same `network_zone`.\n\nUsing the `alias_ips` attribute you can also define one or more additional IPs to the Servers. Please note that you will have to configure these IPs by hand on your Server since only the primary IP will be given out by DHCP.\n\n**Call specific error codes**\n\n| Code                             | Description                                                           |\n|----------------------------------|-----------------------------------------------------------------------|\n| `server_already_attached`        | The server is already attached to the network                         |\n| `ip_not_available`               | The provided Network IP is not available                              |\n| `no_subnet_available`            | No Subnet or IP is available for the Server within the network        |\n| `networks_overlap`               | The network IP range overlaps with one of the server networks         |\n","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"alias_ips":{"description":"Additional IPs to be assigned to this Server","example":["10.0.1.2"],"items":{"type":"string"},"type":"array"},"ip":{"description":"IP to request to be assigned to this Server; if you do not provide this then you will be auto assigned an IP address","example":"10.0.1.1","type":"string"},"network":{"description":"ID of an existing network to attach the Server to","example":4711,"type":"integer"}},"required":["network"],"title":"AttachToNetworkRequest","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"attach_to_network","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"server"},{"id":4711,"type":"network"}],"started":"2025-08-15T13:52:16.623Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.623Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.623Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key in the reply contains an Action object with this structure"}},"summary":"Attach a Server to a Network","tags":["Server Actions"]}},"/servers/{id}/actions/change_alias_ips":{"post":{"description":"Changes the alias IPs of an already attached Network. Note that the existing aliases for the specified Network will be replaced with these provided in the request body. So if you want to add an alias IP, you have to provide the existing ones from the Network plus the new alias IP in the request body.","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"alias_ips":{"description":"New alias IPs to set for this Server","example":["10.0.1.2"],"items":{"type":"string"},"type":"array"},"network":{"description":"ID of an existing Network already attached to the Server","example":4711,"type":"integer"}},"required":["network","alias_ips"],"type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"change_alias_ips","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"server"},{"id":4711,"type":"network"}],"started":"2025-08-15T13:52:16.623Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.623Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.623Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key in the reply contains an Action object with this structure"}},"summary":"Change alias IPs of a Network","tags":["Server Actions"]}},"/servers/{id}/actions/change_dns_ptr":{"post":{"description":"Changes the hostname that will appear when getting the hostname belonging to the primary IPs (IPv4 and IPv6) of this Server.\n\nFloating IPs assigned to the Server are not affected by this.\n","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"dns_ptr":{"description":"Hostname to set as a reverse DNS PTR entry, reset to original value if `null`","example":"server01.example.com","nullable":true,"type":"string"},"ip":{"description":"Primary IP address for which the reverse DNS entry should be set","example":"1.2.3.4","type":"string"}},"required":["ip","dns_ptr"],"type":"object"}}},"description":"Select the IP address for which to change the DNS entry by passing `ip`. It can be either IPv4 or IPv6. The target hostname is set by passing `dns_ptr`."},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"change_dns_ptr","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.623Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.623Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.623Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key in the reply contains an Action object with this structure"}},"summary":"Change reverse DNS entry for this Server","tags":["Server Actions"]}},"/servers/{id}/actions/change_protection":{"post":{"description":"Changes the protection configuration of the Server.","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"delete":{"description":"If true, prevents the Server from being deleted (currently delete and rebuild attribute needs to have the same value)","example":true,"type":"boolean"},"rebuild":{"description":"If true, prevents the Server from being rebuilt (currently delete and rebuild attribute needs to have the same value)","example":true,"type":"boolean"}},"type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"change_protection","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.623Z","id":13,"progress":100,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.623Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.623Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.623Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key in the reply contains an Action object with this structure"}},"summary":"Change Server Protection","tags":["Server Actions"]}},"/servers/{id}/actions/change_type":{"post":{"description":"Changes the type (Cores, RAM and disk sizes) of a Server.\n\nServer must be powered off for this command to succeed.\n\nThis copies the content of its disk, and starts it again.\n\nYou can only migrate to Server types with the same `storage_type` and equal or bigger disks. Shrinking disks is not possible as it might destroy data.\n\nIf the disk gets upgraded, the Server type can not be downgraded any more. If you plan to downgrade the Server type, set `upgrade_disk` to `false`.\n\n#### Call specific error codes\n\n| Code                          | Description                                                          |\n|-------------------------------|----------------------------------------------------------------------|\n| `invalid_server_type`         | The server type does not fit for the given server or is deprecated   |\n| `server_not_stopped`          | The action requires a stopped server                                 |\n","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"server_type":{"description":"ID or name of Server type the Server should migrate to","example":"cx11","type":"string"},"upgrade_disk":{"description":"If false, do not upgrade the disk (this allows downgrading the Server type later)","example":true,"type":"boolean"}},"required":["upgrade_disk","server_type"],"type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"change_server_type","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.623Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.623Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.623Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key in the reply contains an Action object with this structure"}},"summary":"Change the Type of a Server","tags":["Server Actions"]}},"/servers/{id}/actions/create_image":{"post":{"description":"Creates an Image (snapshot) from a Server by copying the contents of its disks. This creates a snapshot of the current state of the disk and copies it into an Image. If the Server is currently running you must make sure that its disk content is consistent. Otherwise, the created Image may not be readable.\n\nTo make sure disk content is consistent, we recommend to shut down the Server prior to creating an Image.\n\nYou can either create a `backup` Image that is bound to the Server and therefore will be deleted when the Server is deleted, or you can create an `snapshot` Image which is completely independent of the Server it was created from and will survive Server deletion. Backup Images are only available when the backup option is enabled for the Server. Snapshot Images are billed on a per GB basis.\n","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"description":{"description":"Description of the Image, will be auto-generated if not set","example":"my image","type":"string"},"labels":{"description":"User-defined labels (key-value pairs)","properties":{"labelkey":{"description":"New label","example":"value","type":"string"}},"type":"object"},"type":{"description":"Type of Image to create (default: `snapshot`)","enum":["snapshot","backup"],"example":"snapshot","type":"string"}},"title":"CreateImageRequest","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"create_image","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.623Z","id":13,"progress":100,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.623Z","status":"success"},"image":{"bound_to":null,"created":"2025-08-15T13:52:16.623Z","created_from":{"id":1,"name":"Server"},"deleted":null,"deprecated":"2025-08-15T13:52:16.623Z","description":"my image","disk_size":10,"id":4711,"image_size":2.3,"labels":{"env":"dev"},"name":null,"os_flavor":"ubuntu","os_version":"20.04","protection":{"delete":false},"rapid_deploy":false,"status":"creating","type":"snapshot"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.623Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.623Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"},"image":{"properties":{"bound_to":{"description":"ID of Server the Image is bound to. Only set for Images of type `backup`.","example":null,"nullable":true,"type":"integer"},"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.623Z","type":"string"},"created_from":{"description":"Information about the Server the Image was created from","nullable":true,"properties":{"id":{"description":"ID of the Server the Image was created from","example":1,"type":"integer"},"name":{"description":"Server name at the time the Image was created","example":"Server","type":"string"}},"required":["id","name"],"type":"object"},"deleted":{"description":"Point in time where the Image was deleted (in ISO-8601 format)","example":null,"nullable":true,"type":"string"},"deprecated":{"description":"Point in time when the Image is considered to be deprecated (in ISO-8601 format)","example":"2025-08-15T13:52:16.623Z","nullable":true,"type":"string"},"description":{"description":"Description of the Image","example":"Ubuntu 20.04 Standard 64 bit","type":"string"},"disk_size":{"description":"Size of the disk contained in the Image in GB","example":10,"type":"number"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"image_size":{"description":"Size of the Image file in our storage in GB. For snapshot Images this is the value relevant for calculating costs for the Image.","example":2.3,"nullable":true,"type":"number"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Unique identifier of the Image. This value is only set for system Images.","example":"ubuntu-20.04","nullable":true,"type":"string"},"os_flavor":{"description":"Flavor of operating system contained in the Image","enum":["ubuntu","centos","debian","fedora","unknown"],"example":"ubuntu","type":"string"},"os_version":{"description":"Operating system version","example":"20.04","nullable":true,"type":"string"},"protection":{"description":"Protection configuration for the Resource","properties":{"delete":{"description":"If true, prevents the Resource from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"rapid_deploy":{"description":"Indicates that rapid deploy of the Image is available","example":false,"type":"boolean"},"status":{"description":"Whether the Image can be used or if it's still being created or unavailable","enum":["available","creating","unavailable"],"type":"string"},"type":{"description":"Type of the Image","enum":["system","app","snapshot","backup","temporary"],"example":"snapshot","type":"string"}},"required":["id","type","status","name","description","image_size","disk_size","created","created_from","bound_to","os_flavor","os_version","protection","deprecated","deleted","labels"],"type":"object"}},"type":"object"}}},"description":"The `image` key in the reply contains an the created Image, which is an object with this structure\n\nThe `action` key in the reply contains an Action object with this structure\n"}},"summary":"Create Image from a Server","tags":["Server Actions"]}},"/servers/{id}/actions/detach_from_network":{"post":{"description":"Detaches a Server from a network. The interface for this network will vanish.","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"network":{"description":"ID of an existing network to detach the Server from","example":4711,"type":"integer"}},"required":["network"],"title":"DetachFromNetworkRequest","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"detach_from_network","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"server"},{"id":4711,"type":"network"}],"started":"2025-08-15T13:52:16.623Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.623Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.623Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key in the reply contains an Action object with this structure"}},"summary":"Detach a Server from a Network","tags":["Server Actions"]}},"/servers/{id}/actions/detach_iso":{"post":{"description":"Detaches an ISO from a Server. In case no ISO Image is attached to the Server, the status of the returned Action is immediately set to `success`","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"detach_iso","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.623Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.623Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.623Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key in the reply contains an Action object with this structure"}},"summary":"Detach an ISO from a Server","tags":["Server Actions"]}},"/servers/{id}/actions/disable_backup":{"post":{"description":"Disables the automatic backup option and deletes all existing Backups for a Server. No more additional charges for backups will be made.\n\nCaution: This immediately removes all existing backups for the Server!\n","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"disable_backup","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.623Z","id":13,"progress":100,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.623Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.623Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.623Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key in the reply contains an Action object with this structure"}},"summary":"Disable Backups for a Server","tags":["Server Actions"]}},"/servers/{id}/actions/disable_rescue":{"post":{"description":"Disables the Hetzner Rescue System for a Server. This makes a Server start from its disks on next reboot.\n\nRescue Mode is automatically disabled when you first boot into it or if you do not use it for 60 minutes.\n\nDisabling rescue mode will not reboot your Server — you will have to do this yourself.\n","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"disable_rescue","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.623Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.623Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.623Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key in the reply contains an Action object with this structure"}},"summary":"Disable Rescue Mode for a Server","tags":["Server Actions"]}},"/servers/{id}/actions/enable_backup":{"post":{"description":"Enables and configures the automatic daily backup option for the Server. Enabling automatic backups will increase the price of the Server by 20%. In return, you will get seven slots where Images of type backup can be stored.\n\nBackups are automatically created daily.\n","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"enable_backup","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.623Z","id":13,"progress":100,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.623Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.623Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.623Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key in the reply contains an Action object with this structure"}},"summary":"Enable and Configure Backups for a Server","tags":["Server Actions"]}},"/servers/{id}/actions/enable_rescue":{"post":{"description":"Enable the Hetzner Rescue System for this Server. The next time a Server with enabled rescue mode boots it will start a special minimal Linux distribution designed for repair and reinstall.\n\nIn case a Server cannot boot on its own you can use this to access a Server’s disks.\n\nRescue Mode is automatically disabled when you first boot into it or if you do not use it for 60 minutes.\n\nEnabling rescue mode will not [reboot](https://docs.hetzner.cloud/#server-actions-soft-reboot-a-server) your Server — you will have to do this yourself.\n","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"ssh_keys":{"description":"Array of SSH key IDs which should be injected into the rescue system.","example":[2323],"items":{"type":"integer"},"type":"array"},"type":{"description":"Type of rescue system to boot (default: `linux64`)","enum":["linux64","linux32"],"type":"string"}},"type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"enable_rescue","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.623Z","id":13,"progress":100,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.623Z","status":"success"},"root_password":"zCWbFhnu950dUTko5f40"},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.623Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.623Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"},"root_password":{"description":"Password that will be set for this Server once the Action succeeds","example":"zCWbFhnu950dUTko5f40","type":"string"}},"type":"object"}}},"description":"The `root_password` key in the reply contains the root password that can be used to access the booted rescue system.\n\nThe `action` key in the reply contains an Action object with this structure\n"}},"summary":"Enable Rescue Mode for a Server","tags":["Server Actions"]}},"/servers/{id}/actions/poweroff":{"post":{"description":"Cuts power to the Server. This forcefully stops it without giving the Server operating system time to gracefully stop. May lead to data loss, equivalent to pulling the power cord. Power off should only be used when shutdown does not work.","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"stop_server","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.624Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.624Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.624Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key in the reply contains an Action object with this structure"}},"summary":"Power off a Server","tags":["Server Actions"]}},"/servers/{id}/actions/poweron":{"post":{"description":"Starts a Server by turning its power on.","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"start_server","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.624Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.624Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.624Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key in the reply contains an Action object with this structure"}},"summary":"Power on a Server","tags":["Server Actions"]}},"/servers/{id}/actions/reboot":{"post":{"description":"Reboots a Server gracefully by sending an ACPI request. The Server operating system must support ACPI and react to the request, otherwise the Server will not reboot.","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"reboot_server","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.624Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.624Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.624Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key in the reply contains an Action object with this structure"}},"summary":"Soft-reboot a Server","tags":["Server Actions"]}},"/servers/{id}/actions/rebuild":{"post":{"description":"Rebuilds a Server overwriting its disk with the content of an Image, thereby **destroying all data** on the target Server\n\nThe Image can either be one you have created earlier (`backup` or `snapshot` Image) or it can be a completely fresh `system` Image provided by us. You can get a list of all available Images with `GET /images`.\n\nYour Server will automatically be powered off before the rebuild command executes.\n","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"image":{"description":"ID or name of Image to rebuilt from.","example":"ubuntu-20.04","type":"string"}},"required":["image"],"title":"RebuildServerRequest","type":"object"}}},"description":"To select which Image to rebuild from you can either pass an ID or a name as the `image` argument. Passing a name only works for `system` Images since the other Image types do not have a name set."},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"rebuild_server","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.624Z","status":"running"},"root_password":null},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.624Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.624Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"},"root_password":{"description":"New root password when not using SSH keys","nullable":true,"type":"string"}},"type":"object"}}},"description":"The `action` key in the reply contains an Action object with this structure"}},"summary":"Rebuild a Server from an Image","tags":["Server Actions"]}},"/servers/{id}/actions/remove_from_placement_group":{"post":{"description":"Removes a Server from a Placement Group.\n","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"remove_from_placement_group","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.624Z","id":13,"progress":100,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.624Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.624Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.624Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key in the reply contains an Action object with this structure"}},"summary":"Remove from Placement Group","tags":["Server Actions"]}},"/servers/{id}/actions/request_console":{"post":{"description":"Requests credentials for remote access via VNC over websocket to keyboard, monitor, and mouse for a Server. The provided URL is valid for 1 minute, after this period a new url needs to be created to connect to the Server. How long the connection is open after the initial connect is not subject to this timeout.","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"request_console","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.624Z","id":13,"progress":100,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.624Z","status":"success"},"password":"9MQaTg2VAGI0FIpc10k3UpRXcHj2wQ6x","wss_url":"wss://console.hetzner.cloud/?server_id=1&token=3db32d15-af2f-459c-8bf8-dee1fd05f49c"},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.624Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.624Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"},"password":{"description":"VNC password to use for this connection (this password only works in combination with a wss_url with valid token)","example":"9MQaTg2VAGI0FIpc10k3UpRXcHj2wQ6x","type":"string"},"wss_url":{"description":"URL of websocket proxy to use; this includes a token which is valid for a limited time only","example":"wss://console.hetzner.cloud/?server_id=1&token=3db32d15-af2f-459c-8bf8-dee1fd05f49c","type":"string"}},"required":["wss_url","password","action"],"type":"object"}}},"description":"The `action` key in the reply contains an Action object with this structure"}},"summary":"Request Console for a Server","tags":["Server Actions"]}},"/servers/{id}/actions/reset":{"post":{"description":"Cuts power to a Server and starts it again. This forcefully stops it without giving the Server operating system time to gracefully stop. This may lead to data loss, it’s equivalent to pulling the power cord and plugging it in again. Reset should only be used when reboot does not work.","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"reset_server","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.624Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.624Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.624Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key in the reply contains an Action object with this structure"}},"summary":"Reset a Server","tags":["Server Actions"]}},"/servers/{id}/actions/reset_password":{"post":{"description":"Resets the root password. Only works for Linux systems that are running the qemu guest agent. Server must be powered on (status `running`) in order for this operation to succeed.\n\nThis will generate a new password for this Server and return it.\n\nIf this does not succeed you can use the rescue system to netboot the Server and manually change your Server password by hand.\n","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"reset_password","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.624Z","status":"running"},"root_password":"zCWbFhnu950dUTko5f40"},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.624Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.624Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"},"root_password":{"description":"Password that will be set for this Server once the Action succeeds","example":"zCWbFhnu950dUTko5f40","type":"string"}},"type":"object"}}},"description":"The `root_password` key in the reply contains the new root password that will be active if the Action succeeds.\n\nThe `action` key in the reply contains an Action object with this structure:\n"}},"summary":"Reset root Password of a Server","tags":["Server Actions"]}},"/servers/{id}/actions/shutdown":{"post":{"description":"Shuts down a Server gracefully by sending an ACPI shutdown request. The Server operating system must support ACPI and react to the request, otherwise the Server will not shut down.","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"shutdown_server","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.624Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.624Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.624Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key in the reply contains an Action object with this structure"}},"summary":"Shutdown a Server","tags":["Server Actions"]}},"/servers/{id}/actions/{action_id}":{"get":{"description":"Returns a specific Action object for a Server.","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}},{"description":"ID of the Action","in":"path","name":"action_id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"example":{"action":{"command":"start_server","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.624Z","id":13,"progress":100,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.624Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.624Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.624Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key in the reply has this structure"}},"summary":"Get an Action for a Server","tags":["Server Actions"]}},"/servers/{id}/metrics":{"get":{"description":"Get Metrics for specified Server.\n\nYou must specify the type of metric to get: cpu, disk or network. You can also specify more than one type by comma separation, e.g. cpu,disk.\n\nDepending on the type you will get different time series data\n\n| Type    | Timeseries              | Unit      | Description                                          |\n|---------|-------------------------|-----------|------------------------------------------------------|\n| cpu     | cpu                     | percent   | Percent CPU usage                                    |\n| disk    | disk.0.iops.read        | iop/s     | Number of read IO operations per second              |\n|         | disk.0.iops.write       | iop/s     | Number of write IO operations per second             |\n|         | disk.0.bandwidth.read   | bytes/s   | Bytes read per second                                |\n|         | disk.0.bandwidth.write  | bytes/s   | Bytes written per second                             |\n| network | network.0.pps.in        | packets/s | Public Network interface packets per second received |\n|         | network.0.pps.out       | packets/s | Public Network interface packets per second sent     |\n|         | network.0.bandwidth.in  | bytes/s   | Public Network interface bytes/s received            |\n|         | network.0.bandwidth.out | bytes/s   | Public Network interface bytes/s sent                |\n\nMetrics are available for the last 30 days only.\n\nIf you do not provide the step argument we will automatically adjust it so that a maximum of 200 samples are returned.\n\nWe limit the number of samples returned to a maximum of 500 and will adjust the step parameter accordingly.\n","parameters":[{"description":"ID of the Server","in":"path","name":"id","required":true,"schema":{"type":"integer"}},{"description":"Type of metrics to get","in":"query","name":"type","required":true,"schema":{"enum":["cpu","disk","network"],"type":"string"}},{"description":"Start of period to get Metrics for (in ISO-8601 format)","in":"query","name":"start","required":true,"schema":{"type":"string"}},{"description":"End of period to get Metrics for (in ISO-8601 format)","in":"query","name":"end","required":true,"schema":{"type":"string"}},{"description":"Resolution of results in seconds","in":"query","name":"step","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"metrics":{"properties":{"end":{"description":"End of period of metrics reported (in ISO-8601 format)","example":"2025-08-15T13:52:16.624Z","type":"string"},"start":{"description":"Start of period of metrics reported (in ISO-8601 format)","example":"2025-08-15T13:52:16.624Z","type":"string"},"step":{"description":"Resolution of results in seconds.","example":60,"type":"number"},"time_series":{"additionalProperties":{"properties":{"values":{"description":"Metrics Timestamps with values","items":{"items":{"oneOf":[{"type":"number"},{"type":"string"}]},"type":"array"},"type":"array"}},"required":["values"],"type":"object"},"description":"Hash with timeseries information, containing the name of timeseries as key","example":{"name_of_timeseries":{"values":[[1435781470.622,"42"],[1435781471.622,"43"]]}},"type":"object"}},"required":["start","end","step","time_series"],"type":"object"}},"required":["metrics"],"type":"object"}}},"description":"The `metrics` key in the reply contains a metrics object with this structure"}},"summary":"Get Metrics for a Server","tags":["Servers"]}},"/ssh_keys":{"get":{"description":"Returns all SSH key objects.","parameters":[{"description":"Can be used multiple times.","in":"query","name":"sort","required":false,"schema":{"enum":["id","id:asc","id:desc","name","name:asc","name:desc"],"type":"string"}},{"description":"Can be used to filter resources by their name. The response will only contain the resources matching the specified name","in":"query","name":"name","required":false,"schema":{"type":"string"}},{"description":"Can be used to filter SSH keys by their fingerprint. The response will only contain the SSH key matching the specified fingerprint.","in":"query","name":"fingerprint","required":false,"schema":{"type":"string"}},{"description":"Can be used to filter resources by labels. The response will only contain resources matching the label selector.","in":"query","name":"label_selector","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"meta":{"properties":{"pagination":{"properties":{"last_page":{"description":"ID of the last page available. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"next_page":{"description":"ID of the next page. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"page":{"description":"Current page number","example":3,"type":"number"},"per_page":{"description":"Maximum number of items shown per page in the response","example":25,"type":"number"},"previous_page":{"description":"ID of the previous page. Can be null if the current page is the first one.","example":2,"nullable":true,"type":"number"},"total_entries":{"description":"The total number of entries that exist in the database for this query. Nullable if unknown.","example":100,"nullable":true,"type":"number"}},"required":["page","per_page","previous_page","next_page","last_page","total_entries"],"type":"object"}},"required":["pagination"],"type":"object"},"ssh_keys":{"items":{"properties":{"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.624Z","type":"string"},"fingerprint":{"description":"Fingerprint of public key","example":"b7:2f:30:a0:2f:6c:58:6c:21:04:58:61:ba:06:3b:2f","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"public_key":{"description":"Public key","example":"ssh-rsa AAAjjk76kgf...Xt","type":"string"}},"required":["id","name","fingerprint","public_key","labels","created"],"type":"object"},"type":"array"}},"required":["ssh_keys"],"type":"object"}}},"description":"The `ssh_keys` key in the reply contains an array of SSH key objects with this structure"}},"summary":"Get all SSH keys","tags":["SSH Keys"]},"post":{"description":"Creates a new SSH key with the given `name` and `public_key`. Once an SSH key is created, it can be used in other calls such as creating Servers.","requestBody":{"content":{"application/json":{"schema":{"properties":{"labels":{"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the SSH key","example":"My ssh key","type":"string"},"public_key":{"description":"Public key","example":"ssh-rsa AAAjjk76kgf...Xt","type":"string"}},"required":["name","public_key"],"type":"object"}}}},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"ssh_key":{"properties":{"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.624Z","type":"string"},"fingerprint":{"description":"Fingerprint of public key","example":"b7:2f:30:a0:2f:6c:58:6c:21:04:58:61:ba:06:3b:2f","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"public_key":{"description":"Public key","example":"ssh-rsa AAAjjk76kgf...Xt","type":"string"}},"required":["id","name","fingerprint","public_key","labels","created"],"type":"object"}},"required":["ssh_key"],"type":"object"}}},"description":"The `ssh_key` key in the reply contains the object that was just created"}},"summary":"Create an SSH key","tags":["SSH Keys"]}},"/ssh_keys/{id}":{"delete":{"description":"Deletes an SSH key. It cannot be used anymore.","parameters":[{"description":"ID of the SSH key","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"SSH key deleted"}},"summary":"Delete an SSH key","tags":["SSH Keys"]},"get":{"description":"Returns a specific SSH key object.","parameters":[{"description":"ID of the SSH key","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"ssh_key":{"properties":{"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.624Z","type":"string"},"fingerprint":{"description":"Fingerprint of public key","example":"b7:2f:30:a0:2f:6c:58:6c:21:04:58:61:ba:06:3b:2f","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"public_key":{"description":"Public key","example":"ssh-rsa AAAjjk76kgf...Xt","type":"string"}},"required":["id","name","fingerprint","public_key","labels","created"],"type":"object"}},"required":["ssh_key"],"type":"object"}}},"description":"The `ssh_key` key in the reply contains an SSH key object with this structure"}},"summary":"Get a SSH key","tags":["SSH Keys"]},"put":{"description":"Updates an SSH key. You can update an SSH key name and an SSH key labels.\n\nPlease note that when updating labels, the SSH key current set of labels will be replaced with the labels provided in the request body. So, for example, if you want to add a new label, you have to provide all existing labels plus the new label in the request body.\n","parameters":[{"description":"ID of the SSH key","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"labels":{"description":"User-defined labels (key-value pairs)","example":{"labelkey":"value"},"type":"object"},"name":{"description":"New name Name to set","example":"My ssh key","type":"string"}},"type":"object"}}}},"responses":{"200":{"content":{"application/json":{"example":{"ssh_key":{"created":"2025-08-15T13:52:16.624Z","fingerprint":"b7:2f:30:a0:2f:6c:58:6c:21:04:58:61:ba:06:3b:2f","id":2323,"labels":{"labelkey":"value"},"name":"My ssh key","public_key":"ssh-rsa AAAjjk76kgf...Xt"}},"schema":{"properties":{"ssh_key":{"properties":{"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.624Z","type":"string"},"fingerprint":{"description":"Fingerprint of public key","example":"b7:2f:30:a0:2f:6c:58:6c:21:04:58:61:ba:06:3b:2f","type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"public_key":{"description":"Public key","example":"ssh-rsa AAAjjk76kgf...Xt","type":"string"}},"required":["id","name","fingerprint","public_key","labels","created"],"type":"object"}},"required":["ssh_key"],"type":"object"}}},"description":"The `ssh_key` key in the reply contains the modified SSH key object with the new description"}},"summary":"Update an SSH key","tags":["SSH Keys"]}},"/volumes":{"get":{"description":"Gets all existing Volumes that you have available.","parameters":[{"description":"Can be used multiple times. The response will only contain Volumes matching the status.","in":"query","name":"status","required":false,"schema":{"enum":["available","creating"],"type":"string"}},{"description":"Can be used multiple times.","in":"query","name":"sort","required":false,"schema":{"enum":["id","id:asc","id:desc","name","name:asc","name:desc","created","created:asc","created:desc"],"type":"string"}},{"description":"Can be used to filter resources by their name. The response will only contain the resources matching the specified name","in":"query","name":"name","required":false,"schema":{"type":"string"}},{"description":"Can be used to filter resources by labels. The response will only contain resources matching the label selector.","in":"query","name":"label_selector","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"meta":{"properties":{"pagination":{"properties":{"last_page":{"description":"ID of the last page available. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"next_page":{"description":"ID of the next page. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"page":{"description":"Current page number","example":3,"type":"number"},"per_page":{"description":"Maximum number of items shown per page in the response","example":25,"type":"number"},"previous_page":{"description":"ID of the previous page. Can be null if the current page is the first one.","example":2,"nullable":true,"type":"number"},"total_entries":{"description":"The total number of entries that exist in the database for this query. Nullable if unknown.","example":100,"nullable":true,"type":"number"}},"required":["page","per_page","previous_page","next_page","last_page","total_entries"],"type":"object"}},"required":["pagination"],"type":"object"},"volumes":{"items":{"properties":{"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.624Z","type":"string"},"format":{"description":"Filesystem of the Volume if formatted on creation, null if not formatted on creation","example":"xfs","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"linux_device":{"description":"Device path on the file system for the Volume","example":"/dev/disk/by-id/scsi-0HC_Volume_4711","type":"string"},"location":{"description":"Location of the Volume. Volume can only be attached to Servers in the same Location.","properties":{"city":{"description":"City the Location is closest to","example":"Falkenstein","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 code of the country the Location resides in","example":"DE","type":"string"},"description":{"description":"Description of the Location","example":"Falkenstein DC Park 1","type":"string"},"id":{"description":"ID of the Location","example":1,"type":"number"},"latitude":{"description":"Latitude of the city closest to the Location","example":50.47612,"type":"number"},"longitude":{"description":"Longitude of the city closest to the Location","example":12.370071,"type":"number"},"name":{"description":"Unique identifier of the Location","example":"fsn1","type":"string"},"network_zone":{"description":"Name of network zone this Location resides in","example":"eu-central","type":"string"}},"required":["id","name","description","country","city","latitude","longitude","network_zone"],"type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"protection":{"description":"Protection configuration for the Resource","properties":{"delete":{"description":"If true, prevents the Resource from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"server":{"description":"ID of the Server the Volume is attached to, null if it is not attached at all","example":12,"nullable":true,"type":"integer"},"size":{"description":"Size in GB of the Volume","example":42,"type":"number"},"status":{"description":"Current status of the Volume","enum":["creating","available"],"example":"available","type":"string"}},"required":["id","created","name","server","location","size","linux_device","protection","labels","status","format"],"type":"object"},"type":"array"}},"required":["volumes"],"type":"object"}}},"description":"The `volumes` key contains a list of volumes"}},"summary":"Get all Volumes","tags":["Volumes"]},"post":{"description":"Creates a new Volume attached to a Server. If you want to create a Volume that is not attached to a Server, you need to provide the `location` key instead of `server`. This can be either the ID or the name of the Location this Volume will be created in. Note that a Volume can be attached to a Server only in the same Location as the Volume itself.\n\nSpecifying the Server during Volume creation will automatically attach the Volume to that Server after it has been initialized. In that case, the `next_actions` key in the response is an array which contains a single `attach_volume` action.\n\nThe minimum Volume size is 10GB and the maximum size is 10TB (10240GB).\n\nA volume’s name can consist of alphanumeric characters, dashes, underscores, and dots, but has to start and end with an alphanumeric character. The total length is limited to 64 characters. Volume names must be unique per Project.\n\n#### Call specific error codes\n\n| Code                                | Description                                         |\n|-------------------------------------|-----------------------------------------------------|\n| `no_space_left_in_location`         | There is no volume space left in the given location |\n","requestBody":{"content":{"application/json":{"example":{"automount":false,"format":"xfs","labels":{"labelkey":"value"},"location":"nbg1","name":"test-database","size":42},"schema":{"properties":{"automount":{"description":"Auto-mount Volume after attach. `server` must be provided.","example":false,"type":"boolean"},"format":{"description":"Format Volume after creation. One of: `xfs`, `ext4`","example":"xfs","type":"string"},"labels":{"description":"User-defined labels (key-value pairs)","example":{"labelkey":"value"},"type":"object"},"location":{"description":"Location to create the Volume in (can be omitted if Server is specified)","example":"nbg1","type":"string"},"name":{"description":"Name of the volume","example":"databases-storage","type":"string"},"server":{"description":"Server to which to attach the Volume once it's created (Volume will be created in the same Location as the server)","type":"integer"},"size":{"description":"Size of the Volume in GB","example":42,"type":"integer"}},"required":["size","name"],"title":"CreateVolumeRequest","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"create_volume","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"server"},{"id":554,"type":"volume"}],"started":"2025-08-15T13:52:16.625Z","status":"running"},"next_actions":[{"command":"attach_volume","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"server"},{"id":554,"type":"volume"}],"started":"2025-08-15T13:52:16.625Z","status":"running"}],"volume":{"created":"2025-08-15T13:52:16.625Z","format":"xfs","id":4711,"labels":{"env":"dev"},"linux_device":"/dev/disk/by-id/scsi-0HC_Volume_4711","location":{"city":"Falkenstein","country":"DE","description":"Falkenstein DC Park 1","id":1,"latitude":50.47612,"longitude":12.370071,"name":"fsn1","network_zone":"eu-central"},"name":"database-storage","protection":{"delete":false},"server":12,"size":42,"status":"available"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.625Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.625Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"},"next_actions":{"items":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.625Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.625Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"},"type":"array"},"volume":{"properties":{"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.625Z","type":"string"},"format":{"description":"Filesystem of the Volume if formatted on creation, null if not formatted on creation","example":"xfs","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"linux_device":{"description":"Device path on the file system for the Volume","example":"/dev/disk/by-id/scsi-0HC_Volume_4711","type":"string"},"location":{"description":"Location of the Volume. Volume can only be attached to Servers in the same Location.","properties":{"city":{"description":"City the Location is closest to","example":"Falkenstein","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 code of the country the Location resides in","example":"DE","type":"string"},"description":{"description":"Description of the Location","example":"Falkenstein DC Park 1","type":"string"},"id":{"description":"ID of the Location","example":1,"type":"number"},"latitude":{"description":"Latitude of the city closest to the Location","example":50.47612,"type":"number"},"longitude":{"description":"Longitude of the city closest to the Location","example":12.370071,"type":"number"},"name":{"description":"Unique identifier of the Location","example":"fsn1","type":"string"},"network_zone":{"description":"Name of network zone this Location resides in","example":"eu-central","type":"string"}},"required":["id","name","description","country","city","latitude","longitude","network_zone"],"type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"protection":{"description":"Protection configuration for the Resource","properties":{"delete":{"description":"If true, prevents the Resource from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"server":{"description":"ID of the Server the Volume is attached to, null if it is not attached at all","example":12,"nullable":true,"type":"integer"},"size":{"description":"Size in GB of the Volume","example":42,"type":"number"},"status":{"description":"Current status of the Volume","enum":["creating","available"],"example":"available","type":"string"}},"required":["id","created","name","server","location","size","linux_device","protection","labels","status","format"],"type":"object"}},"required":["volume","action","next_actions"],"type":"object"}}},"description":"The `volume` key contains the Volume that was just created\n\nThe `action` key contains the Action tracking Volume creation\n"}},"summary":"Create a Volume","tags":["Volumes"]}},"/volumes/{id}":{"delete":{"description":"Deletes a volume. All Volume data is irreversibly destroyed. The Volume must not be attached to a Server and it must not have delete protection enabled.","parameters":[{"description":"ID of the Volume","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Volume deleted"}},"summary":"Delete a Volume","tags":["Volumes"]},"get":{"description":"Gets a specific Volume object.","parameters":[{"description":"ID of the Volume","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"volume":{"properties":{"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.625Z","type":"string"},"format":{"description":"Filesystem of the Volume if formatted on creation, null if not formatted on creation","example":"xfs","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"linux_device":{"description":"Device path on the file system for the Volume","example":"/dev/disk/by-id/scsi-0HC_Volume_4711","type":"string"},"location":{"description":"Location of the Volume. Volume can only be attached to Servers in the same Location.","properties":{"city":{"description":"City the Location is closest to","example":"Falkenstein","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 code of the country the Location resides in","example":"DE","type":"string"},"description":{"description":"Description of the Location","example":"Falkenstein DC Park 1","type":"string"},"id":{"description":"ID of the Location","example":1,"type":"number"},"latitude":{"description":"Latitude of the city closest to the Location","example":50.47612,"type":"number"},"longitude":{"description":"Longitude of the city closest to the Location","example":12.370071,"type":"number"},"name":{"description":"Unique identifier of the Location","example":"fsn1","type":"string"},"network_zone":{"description":"Name of network zone this Location resides in","example":"eu-central","type":"string"}},"required":["id","name","description","country","city","latitude","longitude","network_zone"],"type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"protection":{"description":"Protection configuration for the Resource","properties":{"delete":{"description":"If true, prevents the Resource from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"server":{"description":"ID of the Server the Volume is attached to, null if it is not attached at all","example":12,"nullable":true,"type":"integer"},"size":{"description":"Size in GB of the Volume","example":42,"type":"number"},"status":{"description":"Current status of the Volume","enum":["creating","available"],"example":"available","type":"string"}},"required":["id","created","name","server","location","size","linux_device","protection","labels","status","format"],"type":"object"}},"required":["volume"],"type":"object"}}},"description":"The `volume` key contains the volume"}},"summary":"Get a Volume","tags":["Volumes"]},"put":{"description":"Updates the Volume properties.\n\nNote that when updating labels, the volume’s current set of labels will be replaced with the labels provided in the request body. So, for example, if you want to add a new label, you have to provide all existing labels plus the new label in the request body.\n","parameters":[{"description":"ID of the Volume to update","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"labels":{"description":"User-defined labels (key-value pairs)","properties":{"labelkey":{"example":"value","type":"string"}},"type":"object"},"name":{"description":"New Volume name","example":"database-storage","type":"string"}},"required":["name"],"title":"UpdateVolumeRequest","type":"object"}}}},"responses":{"200":{"content":{"application/json":{"example":{"volume":{"created":"2025-08-15T13:52:16.625Z","format":"xfs","id":4711,"labels":{"labelkey":"value"},"linux_device":"/dev/disk/by-id/scsi-0HC_Volume_4711","location":{"city":"Falkenstein","country":"DE","description":"Falkenstein DC Park 1","id":1,"latitude":50.47612,"longitude":12.370071,"name":"fsn1","network_zone":"eu-central"},"name":"database-storage","protection":{"delete":false},"server":12,"size":42,"status":"available"}},"schema":{"properties":{"volume":{"properties":{"created":{"description":"Point in time when the Resource was created (in ISO-8601 format)","example":"2025-08-15T13:52:16.625Z","type":"string"},"format":{"description":"Filesystem of the Volume if formatted on creation, null if not formatted on creation","example":"xfs","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"User-defined labels (key-value pairs)","type":"object"},"linux_device":{"description":"Device path on the file system for the Volume","example":"/dev/disk/by-id/scsi-0HC_Volume_4711","type":"string"},"location":{"description":"Location of the Volume. Volume can only be attached to Servers in the same Location.","properties":{"city":{"description":"City the Location is closest to","example":"Falkenstein","type":"string"},"country":{"description":"ISO 3166-1 alpha-2 code of the country the Location resides in","example":"DE","type":"string"},"description":{"description":"Description of the Location","example":"Falkenstein DC Park 1","type":"string"},"id":{"description":"ID of the Location","example":1,"type":"number"},"latitude":{"description":"Latitude of the city closest to the Location","example":50.47612,"type":"number"},"longitude":{"description":"Longitude of the city closest to the Location","example":12.370071,"type":"number"},"name":{"description":"Unique identifier of the Location","example":"fsn1","type":"string"},"network_zone":{"description":"Name of network zone this Location resides in","example":"eu-central","type":"string"}},"required":["id","name","description","country","city","latitude","longitude","network_zone"],"type":"object"},"name":{"description":"Name of the Resource. Must be unique per Project.","example":"my-resource","type":"string"},"protection":{"description":"Protection configuration for the Resource","properties":{"delete":{"description":"If true, prevents the Resource from being deleted","example":false,"type":"boolean"}},"required":["delete"],"type":"object"},"server":{"description":"ID of the Server the Volume is attached to, null if it is not attached at all","example":12,"nullable":true,"type":"integer"},"size":{"description":"Size in GB of the Volume","example":42,"type":"number"},"status":{"description":"Current status of the Volume","enum":["creating","available"],"example":"available","type":"string"}},"required":["id","created","name","server","location","size","linux_device","protection","labels","status","format"],"type":"object"}},"required":["volume"],"type":"object"}}},"description":"The `volume` key contains the updated volume"}},"summary":"Update a Volume","tags":["Volumes"]}},"/volumes/{id}/actions":{"get":{"description":"Returns all Action objects for a Volume. You can `sort` the results by using the sort URI parameter, and filter them with the `status` parameter.","parameters":[{"description":"ID of the Volume","in":"path","name":"id","required":true,"schema":{"type":"integer"}},{"description":"Can be used multiple times.","in":"query","name":"sort","required":false,"schema":{"enum":["id","id:asc","id:desc","command","command:asc","command:desc","status","status:asc","status:desc","progress","progress:asc","progress:desc","started","started:asc","started:desc","finished","finished:asc","finished:desc"],"title":"ParameterSort","type":"string"}},{"description":"Can be used multiple times, the response will contain only Actions with specified statuses","in":"query","name":"status","required":false,"schema":{"enum":["running","success","error"],"title":"ParameterStatus","type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"actions":[{"command":"attach_volume","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.625Z","id":13,"progress":100,"resources":[{"id":42,"type":"server"},{"id":13,"type":"volume"}],"started":"2025-08-15T13:52:16.625Z","status":"success"}]},"schema":{"properties":{"actions":{"items":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.625Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.625Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"},"type":"array"},"meta":{"properties":{"pagination":{"properties":{"last_page":{"description":"ID of the last page available. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"next_page":{"description":"ID of the next page. Can be null if the current page is the last one.","example":4,"nullable":true,"type":"number"},"page":{"description":"Current page number","example":3,"type":"number"},"per_page":{"description":"Maximum number of items shown per page in the response","example":25,"type":"number"},"previous_page":{"description":"ID of the previous page. Can be null if the current page is the first one.","example":2,"nullable":true,"type":"number"},"total_entries":{"description":"The total number of entries that exist in the database for this query. Nullable if unknown.","example":100,"nullable":true,"type":"number"}},"required":["page","per_page","previous_page","next_page","last_page","total_entries"],"type":"object"}},"required":["pagination"],"type":"object"}},"required":["actions"],"title":"ActionsResponse","type":"object"}}},"description":"The `actions` key contains a list of Actions"}},"summary":"Get all Actions for a Volume","tags":["Volume Actions"]}},"/volumes/{id}/actions/attach":{"post":{"description":"Attaches a Volume to a Server. Works only if the Server is in the same Location as the Volume.","parameters":[{"description":"ID of the Volume","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"automount":{"description":"Auto-mount the Volume after attaching it","example":false,"type":"boolean"},"server":{"description":"ID of the Server the Volume will be attached to","example":43,"type":"integer"}},"required":["server"],"title":"AttachVolumeRequest","type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"attach_volume","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":43,"type":"server"},{"id":554,"type":"volume"}],"started":"2025-08-15T13:52:16.625Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.625Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.625Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `attach_volume` Action"}},"summary":"Attach Volume to a Server","tags":["Volume Actions"]}},"/volumes/{id}/actions/change_protection":{"post":{"description":"Changes the protection configuration of a Volume.","parameters":[{"description":"ID of the Volume","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"delete":{"description":"If true, prevents the Volume from being deleted","example":true,"type":"boolean"}},"type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"change_protection","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.625Z","id":13,"progress":100,"resources":[{"id":42,"type":"server"},{"id":554,"type":"volume"}],"started":"2025-08-15T13:52:16.625Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.625Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.625Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `change_protection` Action"}},"summary":"Change Volume Protection","tags":["Volume Actions"]}},"/volumes/{id}/actions/detach":{"post":{"description":"Detaches a Volume from the Server it’s attached to. You may attach it to a Server again at a later time.","parameters":[{"description":"ID of the Volume","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"detach_volume","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.625Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.625Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.625Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `detach_volume` Action"}},"summary":"Detach Volume","tags":["Volume Actions"]}},"/volumes/{id}/actions/resize":{"post":{"description":"Changes the size of a Volume. Note that downsizing a Volume is not possible.","parameters":[{"description":"ID of the Volume","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"size":{"description":"New Volume size in GB (must be greater than current size)","example":50,"type":"number"}},"required":["size"],"type":"object"}}}},"responses":{"201":{"content":{"application/json":{"example":{"action":{"command":"resize_volume","error":{"code":"action_failed","message":"Action failed"},"finished":null,"id":13,"progress":0,"resources":[{"id":554,"type":"volume"}],"started":"2025-08-15T13:52:16.625Z","status":"running"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.625Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.625Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the `resize_volume` Action"}},"summary":"Resize Volume","tags":["Volume Actions"]}},"/volumes/{id}/actions/{action_id}":{"get":{"description":"Returns a specific Action for a Volume.","parameters":[{"description":"ID of the Volume","in":"path","name":"id","required":true,"schema":{"type":"integer"}},{"description":"ID of the Action","in":"path","name":"action_id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"example":{"action":{"command":"attach_volume","error":{"code":"action_failed","message":"Action failed"},"finished":"2025-08-15T13:52:16.625Z","id":13,"progress":100,"resources":[{"id":42,"type":"server"}],"started":"2025-08-15T13:52:16.625Z","status":"success"}},"schema":{"properties":{"action":{"properties":{"command":{"description":"Command executed in the Action","example":"start_server","type":"string"},"error":{"description":"Error message for the Action if error occurred, otherwise null","nullable":true,"properties":{"code":{"description":"Fixed machine readable code","example":"action_failed","type":"string"},"message":{"description":"Humanized error message","example":"Action failed","type":"string"}},"required":["code","message"],"type":"object"},"finished":{"description":"Point in time when the Action was finished (in ISO-8601 format). Only set if the Action is finished otherwise null.","example":"2025-08-15T13:52:16.625Z","nullable":true,"type":"string"},"id":{"description":"ID of the Resource","example":42,"type":"integer"},"progress":{"description":"Progress of Action in percent","example":100,"type":"number"},"resources":{"description":"Resources the Action relates to","items":{"properties":{"id":{"description":"ID of the Resource","example":42,"type":"integer"},"type":{"description":"Type of resource referenced","example":"server","type":"string"}},"required":["id","type"],"type":"object"},"type":"array"},"started":{"description":"Point in time when the Action was started (in ISO-8601 format)","example":"2025-08-15T13:52:16.625Z","type":"string"},"status":{"description":"Status of the Action","enum":["success","running","error"],"type":"string"}},"required":["id","command","status","progress","started","finished","resources","error"],"title":"Action","type":"object"}},"required":["action"],"title":"ActionResponse","type":"object"}}},"description":"The `action` key contains the Volume Action"}},"summary":"Get an Action for a Volume","tags":["Volume Actions"]}}}}