openapi: 3.0.0
servers:
  - url: https://api.hetzner.cloud/v1
info:
  description: |
    This is the official API documentation for the Public Hetzner Cloud.

    ## Introduction

    The 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.

    As an alternative to working directly with our API you may also consider to use:
    * Our CLI program [hcloud](https://github.com/hetznercloud/cli)
    * Our [library for Go](https://github.com/hetznercloud/hcloud-go)
    * Our [library for Python](https://github.com/hetznercloud/hcloud-python)

    Also you can find a [list of libraries, tools, and integrations on GitHub](https://github.com/hetznercloud/awesome-hcloud).

    If 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:
    * The type of integration you would like to develop
    * Link to the GitHub repo you will use for the Project
    * Link to some other Open Source work you have already done (if you have done so)

    ## Getting Started
    To 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`.

    You’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/).

    Make 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).

    **Example Request**
    ```bash
    curl -H "Authorization: Bearer jEheVytlAoFl7F8MqUQ7jAo2hOXASztX" \
        https://api.hetzner.cloud/v1/servers
    ```

    **Example Response**
    ```json
    {
        "servers": [],
        "meta": {
            "pagination": {
                "page": 1,
                "per_page": 25,
                "previous_page": null,
                "next_page": null,
                "last_page": 1,
                "total_entries": 0
            }
        }
    }
    ```

    ## Authentication
    All 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.

    To 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.

    **Example Authorization header**
    ```html
    Authorization: Bearer LRK9DAWQ1ZAEFSrCNEEzLCUwhYX1U3g7wMg4dTlkkDC96fyDuyJ39nVbVjCKSDfj
    ```

    ## Errors
    Errors 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.

    The error response contains the following keys:

    | Keys      | Meaning                                                               |
    |-----------|-----------------------------------------------------------------------|
    | `code`    | Short string indicating the type of error (machine-parsable)          |
    | `message` | Textual description on what has gone wrong                            |
    | `details` | An object providing for details on the error (schema depends on code) |

    **Example response**
    ```json
    {
      "error": {
        "code": "invalid_input",
        "message": "invalid input in field 'broken_field': is too long",
        "details": {
          "fields": [
            {
              "name": "broken_field",
              "messages": ["is too long"]
            }
          ]
        }
      }
    }
    ```

    ### Error Codes

    | Code                      | Description                                                                      |
    |---------------------------|----------------------------------------------------------------------------------|
    | `forbidden`               | Insufficient permissions for this request                                        |
    | `invalid_input`           | Error while parsing or processing the input                                      |
    | `json_error`              | Invalid JSON input in your request                                               |
    | `locked`                  | The item you are trying to access is locked (there is already an Action running) |
    | `not_found`               | Entity not found                                                                 |
    | `rate_limit_exceeded`     | Error when sending too many requests                                             |
    | `resource_limit_exceeded` | Error when exceeding the maximum quantity of a resource for an account           |
    | `resource_unavailable`    | The requested resource is currently unavailable                                  |
    | `service_error`           | Error within a service                                                           |
    | `uniqueness_error`        | One or more of the objects fields must be unique                                 |
    | `protected`               | The Action you are trying to start is protected for this resource                |
    | `maintenance`             | Cannot perform operation due to maintenance                                      |
    | `conflict`                | The resource has changed during the request, please retry                        |
    | `unsupported_error`       | The corresponding resource does not support the Action                           |
    | `token_readonly`          | The token is only allowed to perform GET requests                                |
    | `unavailable`             | A service or product is currently not available                                  |

    **invalid_input**
    ```json
    {
      "error": {
        "code": "invalid_input",
        "message": "invalid input in field 'broken_field': is too long",
        "details": {
          "fields": [
            {
              "name": "broken_field",
              "messages": ["is too long"]
            }
          ]
        }
      }
    }
    ```

    **uniqueness_error**
    ```json
    {
      "error": {
        "code": "uniqueness_error",
        "message": "SSH key with the same fingerprint already exists",
        "details": {
          "fields": [
            {
              "name": "public_key"
            }
          ]
        }
      }
    }
    ```

    **resource_limit_exceeded**
    ```json
    {
      "error": {
        "code": "resource_limit_exceeded",
        "message": "project limit exceeded",
        "details": {
          "limits": [
            {
              "name": "project_limit"
            }
          ]
        }
      }
    }
    ```

    ## Labels
    Labels are `key/value` pairs that can be attached to all resources.

    Valid 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 (`/`).

    Valid 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.

    The `hetzner.cloud/` prefix is reserved and cannot be used.

    **Example Labels**
    ```json
    {
      "labels": {
        "environment":"development",
        "service":"backend",
        "example.com/my":"label",
        "just-a-key":""
      }
    }
    ```

    ## Label Selector
    For resources with labels, you can filter resources by their labels using the label selector query language.

    | Expression           | Meaning                                                             |
    |----------------------|---------------------------------------------------------------------|
    | `k==v` / `k=v`       | Value of key `k` does equal value `v`                               |
    | `k!=v`               | Value of key `k` does not equal value `v`                           |
    | `k`                  | Key `k` is present                                                  |
    | `!k`                 | Key `k` is not present                                              |
    | `k in (v1,v2,v3)`    | Value of key `k` is `v1`, `v2`, or `v3`                             |
    | `k notin (v1,v2,v3)` | Value of key `k` is neither `v1`, nor `v2`, nor `v3`                |
    | `k1==v,!k2`          | Value of key `k1` is `v` and key `k2` is not present                |

    ### Examples
    * Returns all resources that have a `env=production` label and that don't have a `type=database` label:

      `env=production,type!=database`
    * Returns all resources that have a `env=testing` or `env=staging` label:

        `env in (testing,staging)`
    * Returns all resources that don't have a `type` label:

        `!type`

    ## Pagination
    Responses which return multiple items support pagination. If they do support pagination, it can be controlled with following query string parameters:

    * A `page` parameter specifies the page to fetch. The number of the first page is 1.
    * 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.

    Responses contain a `Link` header with pagination information.

    Additionally, 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:

    **Example Pagination**
    ```json
    {
        "servers": [...],
        "meta": {
            "pagination": {
                "page": 2,
                "per_page": 25,
                "previous_page": 1,
                "next_page": 3,
                "last_page": 4,
                "total_entries": 100
            }
        }
    }
    ```

    The 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.

    **Example Pagination Link header**
    ```bash
    Link: <https://api.hetzner.cloud/v1/actions?page=2&per_page=5>; rel="prev",
          <https://api.hetzner.cloud/v1/actions?page=4&per_page=5>; rel="next",
          <https://api.hetzner.cloud/v1/actions?page=6&per_page=5>; rel="last"
    ```

    Line breaks have been added for display purposes only and responses may only contain some of the above `rel` values.

    ## Rate Limiting
    All 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.

    * The `RateLimit-Limit` header contains the total number of requests you can perform per hour.
    * The `RateLimit-Remaining` header contains the number of requests remaining in the current rate limit time frame.
    * 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.

    The 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.

    ## Server Metadata
    Your Server can discover metadata about itself by doing a HTTP request to specific URLs. The following data is available:

    | Data              | Format | Contents                                                     |
    |-------------------|--------|--------------------------------------------------------------|
    | hostname          | text   | Name of the Server as set in the api                         |
    | instance-id       | number | ID of the server                                             |
    | public-ipv4       | text   | Primary public IPv4 address                                  |
    | private-networks  | yaml   | Details about the private networks the Server is attached to |
    | availability-zone | text   | Name of the availability zone that Server runs in            |
    | region            | text   | Network zone, e.g. eu-central                                |

    **Example: Summary**
    ```bash
    $ curl http://169.254.169.254/hetzner/v1/metadata
    ```

    ```yaml
    availability-zone: hel1-dc2
    hostname: my-server
    instance-id: 42
    public-ipv4: 1.2.3.4
    region: eu-central
    ```

    **Example: Hostname**
    ```bash
    $ curl http://169.254.169.254/hetzner/v1/metadata/hostname
    my-server
    ```

    **Example: Instance ID**
    ```bash
    $ curl http://169.254.169.254/hetzner/v1/metadata/instance-id
    42
    ```

    **Example: Public IPv4**
    ```bash
    $ curl http://169.254.169.254/hetzner/v1/metadata/public-ipv4
    1.2.3.4
    ```

    **Example: Private Networks**
    ```bash
    $ curl http://169.254.169.254/hetzner/v1/metadata/private-networks
    ```

    ```json
    - ip: 10.0.0.2
      alias_ips: [10.0.0.3, 10.0.0.4]
      interface_num: 1
      mac_address: 86:00:00:2a:7d:e0
      network_id: 1234
      network_name: nw-test1
      network: 10.0.0.0/8
      subnet: 10.0.0.0/24
      gateway: 10.0.0.1
    - ip: 192.168.0.2
      alias_ips: []
      interface_num: 2
      mac_address: 86:00:00:2a:7d:e1
      network_id: 4321
      network_name: nw-test2
      network: 192.168.0.0/16
      subnet: 192.168.0.0/24
      gateway: 192.168.0.1
    ```

    **Example: Availability Zone**
    ```bash
    $ curl http://169.254.169.254/hetzner/v1/metadata/availability-zone
    hel1-dc2
    ```

    **Example: Region**
    ```bash
    $ curl http://169.254.169.254/hetzner/v1/metadata/region
    eu-central
    ```

    ## Sorting
    Some 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.

    **Example: Sorting**
    ```bash
    https://api.hetzner.cloud/v1/actions?sort=status
    https://api.hetzner.cloud/v1/actions?sort=status:asc
    https://api.hetzner.cloud/v1/actions?sort=status:desc
    https://api.hetzner.cloud/v1/actions?sort=status:asc&sort=command:desc
    ```
  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.

      Datacenter names are composed from their Location and virtual Datacenter number, for example `fsn1-dc14` means virtual Datacenter `14` in Location `fsn1`.

      Right 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.
    name: Datacenters
  - description: |
      Firewalls can limit the network access to or from your resources.

      * When applying a firewall with no `in` rule all inbound traffic will be dropped. The default for `in` is `DROP`.
      * When applying a firewall with no `out` rule all outbound traffic will be accepted. The default for `out` is `ACCEPT`.
    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.

      Floating 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.

      For Floating IPs to work with your Server, you must configure them inside your operation system.

      Floating 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.

      Floating IPs are billed on a monthly basis.
    name: Floating IPs
  - name: Floating IP Actions
  - description: |
      Images are blueprints for your VM disks. They can be of different types:

      ### System Images
      Distribution Images maintained by us, e.g. “Ubuntu 20.04”

      ### Snapshot Images
      Maintained by you, for example “Ubuntu 20.04 with my own settings”. These are billed per GB per month.

      ### Backup Images
      Daily Backups of your Server. Will automatically be created for Servers which have backups enabled (`POST /servers/{id}/actions/enable_backup`)

      Bound 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.

      These are billed at 20% of your instance price for 7 backup slots.

      ### App Images
      Prebuild images with specific software configurations, e.g. “Wordpress”. All app images are created by us.
    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.

      On request our support uploads a private ISO just for you. These are marked with type `private` and only visible in your Project.

      To attach an ISO to your Server use `POST /servers/{id}/actions/attach_iso`.
    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.

      Currency for all amounts is €. All prices exclude VAT.
    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.

      You 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.

      Primary 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.

      If your Server's operating system supports cloud-init there is no further configuration needed to make Primary IPs work.

      Primary 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.

      Primary IPs are billed on an hourly basis.
    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.

      They allow Servers to talk to each other over a dedicated network interface using private IP addresses not available publicly.

      The 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.

      Each network has a user selected `ip_range` which defines all available IP addresses which can be used for Subnets within the Network.

      To assign individual IPs to Servers you will need to create Network Subnets, described below.

      Currently Networks support IPv4 only.

      ### Subnets
      Subnets divide the `ip_range` from the parent Network object into multiple Subnetworks that you can use for different specific purposes.

      For 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.

      Currently there are three types of subnet:
      * type `cloud` is used to connect cloud Resources into your Network.
      * type `server` was used to connect only cloud Servers into your Network. This type is deprecated and is replaced by type cloud.
      * 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

      Subnets of type `vswitch` must set a `vswitch_id` which is the ID of the existing vSwitch in Hetzner Robot that should be coupled.

      ### Network Zones
      Network 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:

      |Network Zone|Contains Locations|
      |------------|------------------|
      |eu-central  | nbg1, fsn1, hel1 |
      |us-east     | ash              |

      ### IP address management
      When 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.

      A 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).

      The following IP addresses are reserved in networks and can not be used:
        * the first IP of the network `ip_range` as it will be used as a default gateway for the private Network interface.
        * `172.31.1.1` as it is being used as default gateway for our public Network interfaces.

      ### Coupling Dedicated Servers

      By 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
      talk to each other over the Network.
      In 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.

      ### Routes
      Networks 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`.
    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.

      In `spread` placement groups, all virtual servers will run on different physical servers. This decreases the probability that some instances might fail together.
    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.

      Currency for all amounts is €. All prices exclude VAT.
    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.

      Pricing for Volumes depends on the Volume size and Location, not the actual used storage.

      Please see [Hetzner Docs](https://docs.hetzner.com/cloud/#Volumes) for more details about Volumes.
    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: 2016-01-30T23:55:00+00:00
                          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: 2016-01-30T23:55:00+00:00
                          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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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-----
                      ...
                    created: 2019-01-08T12:10:00+00:00
                    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: 2019-07-08T09:59:59+00:00
                    not_valid_before: 2019-01-08T10:00:00+00:00
                    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-----
                            ...
                          nullable: true
                          type: string
                        created:
                          description: Point in time when the Resource was created (in ISO-8601 format)
                          example: 2016-01-30T23:55:00+00:00
                          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: 2019-07-08T09:59:59+00:00
                          nullable: true
                          type: string
                        not_valid_before:
                          description: Point in time when the Certificate becomes valid (in ISO-8601 format)
                          example: 2019-01-08T10:00:00+00:00
                          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.

        The 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.

        In 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.

        For 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.
      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-----
                    ...
                  name: my website cert
                  private_key: |-
                    -----BEGIN PRIVATE KEY-----
                    ...
                  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-----
                    ...
                  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-----
                    ...
                  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: 2019-01-08T12:10:00+00:00
                      status: running
                    certificate:
                      certificate: null
                      created: 2019-01-08T12:10:00+00:00
                      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-----
                        ...
                      created: 2019-01-08T12:10:00+00:00
                      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: 2019-07-08T09:59:59+00:00
                      not_valid_before: 2019-01-08T10:00:00+00:00
                      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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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-----
                          ...
                        nullable: true
                        type: string
                      created:
                        description: Point in time when the Resource was created (in ISO-8601 format)
                        example: 2016-01-30T23:55:00+00:00
                        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: 2019-07-08T09:59:59+00:00
                        nullable: true
                        type: string
                      not_valid_before:
                        description: Point in time when the Certificate becomes valid (in ISO-8601 format)
                        example: 2019-01-08T10:00:00+00:00
                        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-----
                    ...
                  created: 2019-01-08T12:10:00+00:00
                  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: 2019-07-08T09:59:59+00:00
                  not_valid_before: 2019-01-08T10:00:00+00:00
                  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-----
                          ...
                        nullable: true
                        type: string
                      created:
                        description: Point in time when the Resource was created (in ISO-8601 format)
                        example: 2016-01-30T23:55:00+00:00
                        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: 2019-07-08T09:59:59+00:00
                        nullable: true
                        type: string
                      not_valid_before:
                        description: Point in time when the Certificate becomes valid (in ISO-8601 format)
                        example: 2019-01-08T10:00:00+00:00
                        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.

        Note 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.

        Note: if the Certificate object changes during the request, the response will be a “conflict” error.
      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-----
                    ...
                  created: 2019-01-08T12:10:00+00:00
                  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: 2019-07-08T09:59:59+00:00
                  not_valid_before: 2019-01-08T10:00:00+00:00
                  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-----
                          ...
                        nullable: true
                        type: string
                      created:
                        description: Point in time when the Resource was created (in ISO-8601 format)
                        example: 2016-01-30T23:55:00+00:00
                        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: 2019-07-08T09:59:59+00:00
                        nullable: true
                        type: string
                      not_valid_before:
                        description: Point in time when the Certificate becomes valid (in ISO-8601 format)
                        example: 2019-01-08T10:00:00+00:00
                        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.

        Only type `managed` Certificates can have Actions. For type `uploaded` Certificates the `actions` key will always contain an empty array.
      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: 2021-01-30T23:57:00+00:00
                    id: 14
                    progress: 100
                    resources:
                      - id: 896
                        type: certificate
                    started: 2021-01-30T23:55:00+00:00
                    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: 2016-01-30T23:55:00+00:00
                          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: 2016-01-30T23:55:00+00:00
                          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.

        Only applicable if the type of the Certificate is `managed` and the issuance or renewal status is `failed`.

        #### Call specific error codes

        | Code                                                    | Description                                                               |
        |---------------------------------------------------------|---------------------------------------------------------------------------|
        | `caa_record_does_not_allow_ca`                          | CAA record does not allow certificate authority                           |
        | `ca_dns_validation_failed`                              | Certificate Authority: DNS validation failed                              |
        | `ca_too_many_authorizations_failed_recently`            | Certificate Authority: Too many authorizations failed recently            |
        | `ca_too_many_certificates_issued_for_registered_domain` | Certificate Authority: Too many certificates issued for registered domain |
        | `ca_too_many_duplicate_certificates`                    | Certificate Authority: Too many duplicate certificates                    |
        | `could_not_verify_domain_delegated_to_zone`             | Could not verify domain delegated to zone                                 |
        | `dns_zone_not_found`                                    | DNS zone not found                                                        |
        | `dns_zone_is_secondary_zone`                            | DNS zone is a secondary zone                                              |
      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: 2021-01-30T23:57:00+00:00
                  id: 14
                  progress: 100
                  resources:
                    - id: 896
                      type: certificate
                  started: 2021-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2021-01-30T23:57:00+00:00
                  id: 14
                  progress: 100
                  resources:
                    - id: 896
                      type: certificate
                  started: 2021-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                          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.

        #### Call specific error codes

        | Code                          | Description                                                   |
        |------------------------------ |-------------------------------------------------------------- |
        | `server_already_added`        | Server added more than one time to resource                   |
        | `incompatible_network_type`   | The Network type is incompatible for the given resource       |
        | `firewall_resource_not_found` | The resource the Firewall should be attached to was not found |
      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: 2016-01-30T23:56:00+00:00
                        id: 13
                        progress: 100
                        resources:
                          - id: 38
                            type: firewall
                        started: 2016-01-30T23:55:00+00:00
                        status: success
                      - command: apply_firewall
                        error:
                          code: action_failed
                          message: Action failed
                        finished: 2016-01-30T23:56:00+00:00
                        id: 14
                        progress: 100
                        resources:
                          - id: 42
                            type: server
                          - id: 38
                            type: firewall
                        started: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                          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: 2016-01-30T23:55:00+00:00
                          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: 2016-01-30T23:55:00+00:00
                        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.

        #### Call specific error codes

        | Code                 | Description                               |
        |--------------------- |-------------------------------------------|
        | `resource_in_use`    | Firewall must not be in use to be deleted |
      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: 2016-01-30T23:55:00+00:00
                        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.

        Note 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.

        Note: if the Firewall object changes during the request, the response will be a “conflict” error.
      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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:56:00+00:00
                    id: 13
                    progress: 100
                    resources:
                      - id: 38
                        type: firewall
                    started: 2016-01-30T23:55:00+00:00
                    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: 2016-01-30T23:55:00+00:00
                          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: 2016-01-30T23:55:00+00:00
                          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.

        Currently servers (public network interface) and label selectors are supported.

        #### Call specific error codes

        | Code                          | Description                                                   |
        |-------------------------------|---------------------------------------------------------------|
        | `firewall_already_applied`    | Firewall was already applied on resource                      |
        | `incompatible_network_type`   | The Network type is incompatible for the given resource       |
        | `firewall_resource_not_found` | The resource the Firewall should be attached to was not found |
      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: 2016-01-30T23:56:00+00:00
                    id: 14
                    progress: 100
                    resources:
                      - id: 42
                        type: server
                      - id: 38
                        type: firewall
                    started: 2016-01-30T23:55:00+00:00
                    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: 2016-01-30T23:55:00+00:00
                          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: 2016-01-30T23:55:00+00:00
                          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.

        Currently only Servers (and their public network interfaces) are supported.

        #### Call specific error codes

        | Code                                  | Description                                                            |
        |---------------------------------------|------------------------------------------------------------------------|
        | `firewall_already_removed`            | Firewall was already removed from the resource                         |
        | `firewall_resource_not_found`         | The resource the Firewall should be attached to was not found          |
        | `firewall_managed_by_label_selector`  | Firewall was applied via label selector and cannot be removed manually |
      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: 2016-01-30T23:56:00+00:00
                    id: 14
                    progress: 100
                    resources:
                      - id: 42
                        type: server
                      - id: 38
                        type: firewall
                    started: 2016-01-30T23:55:00+00:00
                    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: 2016-01-30T23:55:00+00:00
                          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: 2016-01-30T23:55:00+00:00
                          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.

        All existing rules will be overwritten. Pass an empty `rules` array to remove all rules.
        The maximum amount of rules that can be defined is 50.

        #### Call specific error codes

        | Code                          | Description                                                   |
        |-------------------------------|---------------------------------------------------------------|
        | `firewall_resource_not_found` | The resource the Firewall should be attached to was not found |
      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: 2016-01-30T23:56:00+00:00
                    id: 13
                    progress: 100
                    resources:
                      - id: 38
                        type: firewall
                    started: 2016-01-30T23:55:00+00:00
                    status: success
                  - command: apply_firewall
                    error:
                      code: action_failed
                      message: Action failed
                    finished: 2016-01-30T23:56:00+00:00
                    id: 14
                    progress: 100
                    resources:
                      - id: 38
                        type: firewall
                      - id: 42
                        type: server
                    started: 2016-01-30T23:55:00+00:00
                    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: 2016-01-30T23:55:00+00:00
                          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: 2016-01-30T23:55:00+00:00
                          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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 38
                      type: firewall
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                          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: 2016-01-30T23:50:00+00:00
                  status: running
                floating_ip:
                  blocked: false
                  created: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.
        Also 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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:56:00+00:00
                    id: 13
                    progress: 100
                    resources:
                      - id: 4711
                        type: server
                      - id: 4712
                        type: floating_ip
                    started: 2016-01-30T23:55:00+00:00
                    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: 2016-01-30T23:55:00+00:00
                          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: 2016-01-30T23:55:00+00:00
                          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

                | Code                          | Description                                                   |
                |------------------------------ |-------------------------------------------------------------- |
                | `floating_ip_assigned`        | The floating IP is already assigned                           |
              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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 42
                      type: server
                    - id: 4711
                      type: floating_ip
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

          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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 4711
                      type: floating_ip
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 4711
                      type: floating_ip
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 42
                      type: server
                    - id: 4711
                      type: floating_ip
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 42
                      type: server
                    - id: 4711
                      type: floating_ip
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                          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: 2018-02-28T00:00:00+00:00
                          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: 2016-01-30T23:55:00+00:00
                        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: 2018-02-28T00:00:00+00:00
                        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.

        Note 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.
      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: 2016-01-30T23:50:00+00:00
                  created_from:
                    id: 1
                    name: Server
                  deleted: null
                  deprecated: 2018-02-28T00:00:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2018-02-28T00:00:00+00:00
                        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: 2016-01-30T23:56:00+00:00
                    id: 13
                    progress: 100
                    resources:
                      - id: 4711
                        type: image
                    started: 2016-01-30T23:55:00+00:00
                    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: 2016-01-30T23:55:00+00:00
                          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: 2016-01-30T23:55:00+00:00
                          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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 4711
                      type: image
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 4711
                      type: image
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2018-02-28T00:00:00+00:00
                          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: 2018-02-28T00:00:00+00:00
                        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: 2016-01-30T23:50:00+00:00
                          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: 2016-01-30T23:50:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                          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: 2016-01-30T23:50:00+00:00
                              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.

        #### Call specific error codes

        | Code                                    | Description                                                                                           |
        |-----------------------------------------|-------------------------------------------------------------------------------------------------------|
        | `cloud_resource_ip_not_allowed`         | The IP you are trying to add as a target belongs to a Hetzner Cloud resource                          |
        | `ip_not_owned`                          | The IP is not owned by the owner of the project of the Load Balancer                                  |
        | `load_balancer_not_attached_to_network` | The Load Balancer is not attached to a network                                                        |
        | `robot_unavailable`                     | Robot was not available. The caller may retry the operation after a short delay.                      |
        | `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 |
        | `source_port_already_used`              | The source port you are trying to add is already in use                                               |
        | `target_already_defined`                | The Load Balancer target you are trying to define is already defined                                  |
      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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 4711
                      type: load_balancer
                  started: 2016-01-30T23:55:00+00:00
                  status: success
                load_balancer:
                  algorithm:
                    type: round_robin
                  created: 2016-01-30T23:50:00+00:00
                  id: 4711
                  included_traffic: 654321
                  ingoing_traffic: 123456
                  labels:
                    env: dev
                  load_balancer_type:
                    deprecated: 2016-01-30T23:50:00+00:00
                    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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:50:00+00:00
                            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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:50:00+00:00
                            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.

        Note 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.

        Note: if the Load Balancer object changes during the request, the response will be a “conflict” error.
      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: 2016-01-30T23:50:00+00:00
                  id: 4711
                  included_traffic: 654321
                  ingoing_traffic: 123456
                  labels:
                    labelkey: value
                  load_balancer_type:
                    deprecated: 2016-01-30T23:50:00+00:00
                    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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:50:00+00:00
                            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: 2016-01-30T23:56:00+00:00
                    id: 13
                    progress: 100
                    resources:
                      - id: 4711
                        type: load_balancer
                    started: 2016-01-30T23:55:00+00:00
                    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: 2016-01-30T23:55:00+00:00
                          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: 2016-01-30T23:55:00+00:00
                          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.

        #### Call specific error codes

        | Code                       | Description                                             |
        |----------------------------|---------------------------------------------------------|
        | `source_port_already_used` | The source port you are trying to add is already in use |
      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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 4711
                      type: load_balancer
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

        #### Call specific error codes

        | Code                                    | Description                                                                                           |
        |-----------------------------------------|-------------------------------------------------------------------------------------------------------|
        | `cloud_resource_ip_not_allowed`         | The IP you are trying to add as a target belongs to a Hetzner Cloud resource                          |
        | `ip_not_owned`                          | The IP you are trying to add as a target is not owned by the Project owner                            |
        | `load_balancer_not_attached_to_network` | The Load Balancer is not attached to a network                                                        |
        | `robot_unavailable`                     | Robot was not available. The caller may retry the operation after a short delay.                      |
        | `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 |
        | `target_already_defined`                | The Load Balancer target you are trying to define is already defined                                  |
      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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 4711
                      type: load_balancer
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

        **Call specific error codes**

        | Code                             | Description                                                           |
        |----------------------------------|-----------------------------------------------------------------------|
        | `load_balancer_already_attached` | The Load Balancer is already attached to a network                    |
        | `ip_not_available`               | The provided Network IP is not available                              |
        | `no_subnet_available`            | No Subnet or IP is available for the Load Balancer within the network |
      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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 4711
                      type: load_balancer
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 4711
                      type: load_balancer
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

        Floating IPs assigned to the Server are not affected by this.
      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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 4711
                      type: load_balancer
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

        **Call specific error codes**

        | Code                         | Description                                                     |
        |------------------------------|-----------------------------------------------------------------|
        | `invalid_load_balancer_type` | The Load Balancer type does not fit for the given Load Balancer |
      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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 4711
                      type: load_balancer
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

        #### Call specific error codes

        | Code                                      | Description                                                                    |
        |-------------------------------------------|--------------------------------------------------------------------------------|
        | `load_balancer_not_attached_to_network`   |  The Load Balancer is not attached to a network                                |
        | `targets_without_use_private_ip`          | The Load Balancer has targets that use the public IP instead of the private IP |
      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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 4711
                      type: load_balancer
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

        #### Call specific error codes

        | Code                       | Description                                             |
        |----------------------------|---------------------------------------------------------|
        | `source_port_already_used` | The source port you are trying to add is already in use |
      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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 4711
                      type: load_balancer
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 4711
                      type: load_balancer
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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`.

        Depending on the type you will get different time series data:

        |Type | Timeseries | Unit | Description |
        |---- |------------|------|-------------|
        | open_connections | open_connections | number | Open connections |
        | connections_per_second | connections_per_second | connections/s | Connections per second |
        | requests_per_second | requests_per_second | requests/s | Requests per second |
        | bandwidth | bandwidth.in | bytes/s | Ingress bandwidth |
        || bandwidth.out | bytes/s | Egress bandwidth |

        Metrics are available for the last 30 days only.

        If you do not provide the step argument we will automatically adjust it so that 200 samples are returned.

        We limit the number of samples to a maximum of 500 and will adjust the step parameter accordingly.
      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: 2017-01-01T23:00:00+00:00
                        type: string
                      start:
                        description: Start of period of metrics reported (in ISO-8601 format)
                        example: 2017-01-01T00:00:00+00:00
                        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: 2016-01-30T23:50:00+00:00
                          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`.

        You 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.

        You 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).
      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: 2016-01-30T23:50:00+00:00
                        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.

        Note: if the network object changes during the request, the response will be a “conflict” error.
      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: 2016-01-30T23:50:00+00:00
                        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.

        Note 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.

        Note: if the network object changes during the request, the response will be a “conflict” error.
      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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:50:00+00:00
                        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: 2016-01-30T23:56:00+00:00
                    id: 13
                    progress: 100
                    resources:
                      - id: 42
                        type: server
                    started: 2016-01-30T23:55:00+00:00
                    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: 2016-01-30T23:55:00+00:00
                          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: 2016-01-30T23:55:00+00:00
                          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.

        Note: if the Network object changes during the request, the response will be a “conflict” error.
      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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

        Note: if the parent Network object changes during the request, the response will be a “conflict” error.
      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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

        For 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.

        After 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.

        Note: if the Network object changes during the request, the response will be a “conflict” error.
      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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 4711
                      type: network
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

        Note: if the Network object changes during the request, the response will be a “conflict” error.
      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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 4711
                      type: network
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

        Note: if the Network object changes during the request, the response will be a “conflict” error.
      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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

        Note: if the Network object changes during the request, the response will be a “conflict” error.
      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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 4711
                      type: network
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2019-01-08T12:10:00+00:00
                    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: 2016-01-30T23:55:00+00:00
                          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.
      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: 2019-01-08T12:10:00+00:00
                      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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2019-01-08T12:10:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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.

        Note 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.

        Note: if the PlacementGroup object changes during the request, the response will be a “conflict” error.
      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: 2019-01-08T12:10:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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.

        Both net and gross prices are included in the response.
      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: 2016-01-30T23:55:00+00:00
                          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.

        If 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.

        Note that a Primary IP can only be assigned to a Server in the same Datacenter later on.

        #### Call specific error codes

        | Code                          | Description                                                   |
        |------------------------------ |-------------------------------------------------------------- |
        | `server_not_stopped`          | The specified server is running, but needs to be powered off  |
        | `server_has_ipv4`             | The server already has an ipv4 address                        |
        | `server_has_ipv6`             | The server already has an ipv6 address                        |
      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: 2016-01-30T23:50:00+00:00
                  status: running
                primary_ip:
                  assignee_id: 17
                  assignee_type: server
                  auto_delete: true
                  blocked: false
                  created: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

        The 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.
      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: 2016-01-30T23:55:00+00:00
                        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.

        Note 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.

        If the Primary IP object changes during the request, the response will be a “conflict” error.
      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: 2016-01-30T23:55:00+00:00
                        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.

        A Server can only have one Primary IP of type `ipv4` and one of type `ipv6` assigned. If you need more IPs use Floating IPs.

        The Server must be powered off (status `off`) in order for this operation to succeed.

        #### Call specific error codes

        | Code                          | Description                                                   |
        |------------------------------ |-------------------------------------------------------------- |
        | `server_not_stopped`          | The server is running, but needs to be powered off            |
        | `primary_ip_already_assigned` | Primary ip is already assigned to a different server          |
        | `server_has_ipv4`             | The server already has an ipv4 address                        |
        | `server_has_ipv6`             | The server already has an ipv6 address                        |
      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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

          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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 4711
                      type: primary_ip
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

        A Primary IP can only be delete protected if its `auto_delete` property is set to `false`.
      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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 4711
                      type: primary_ip
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

        The Server must be powered off (status `off`) in order for this operation to succeed.

        Note that only Servers that have at least one network interface (public or private) attached can be powered on.

        #### Call specific error codes

        | Code                              | Description                                                   |
        |---------------------------------- |-------------------------------------------------------------- |
        | `server_not_stopped`              | The server is running, but needs to be powered off            |
        | `server_is_load_balancer_target`  | The server ipv4 address is a loadbalancer target              |
      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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                          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: 2016-01-30T23:55:00+00:00
                              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: 2018-02-28T00:00:00+00:00
                              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: 2018-02-28T00:00:00+00:00
                              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: 2016-01-30T23:55:00+00:00
                              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
                    runcmd:
                    - [touch, /root/cloud-init-worked]
                  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).

          For `server_type` you can either use the ID as listed in `/server_types` or its name.

          For `image` you can either use the ID as listed in `/images` or its name.

          If 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.

          Some 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.

          For 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.

          Please 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.

          #### Call specific error codes

          | Code                             | Description                                                |
          |----------------------------------|------------------------------------------------------------|
          | `placement_error`                | An error during the placement occurred                     |
          | `primary_ip_assigned`            | The specified Primary IP is already assigned to a server   |
          | `primary_ip_datacenter_mismatch` | The specified Primary IP is in a different datacenter      |
          | `primary_ip_version_mismatch`    | The specified Primary IP has the wrong IP Version          |
      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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:50:00+00:00
                    status: running
                root_password: YItygq1v3GYjjMomLaKc
                server:
                  backup_window: 22-02
                  created: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:50:00+00:00
                    created_from:
                      id: 1
                      name: Server
                    deleted: null
                    deprecated: 2018-02-28T00:00:00+00:00
                    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: 2018-02-28T00:00:00+00:00
                    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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                          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: 2016-01-30T23:55:00+00:00
                          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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                            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: 2018-02-28T00:00:00+00:00
                            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: 2018-02-28T00:00:00+00:00
                            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: 2016-01-30T23:55:00+00:00
                            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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                            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: 2018-02-28T00:00:00+00:00
                            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: 2018-02-28T00:00:00+00:00
                            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: 2016-01-30T23:55:00+00:00
                            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.
        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).
        Also 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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                            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: 2018-02-28T00:00:00+00:00
                            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: 2018-02-28T00:00:00+00:00
                            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: 2016-01-30T23:55:00+00:00
                            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: 2016-01-30T23:56:00+00:00
                    id: 13
                    progress: 100
                    resources:
                      - id: 42
                        type: server
                    started: 2016-01-30T23:55:00+00:00
                    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: 2016-01-30T23:55:00+00:00
                          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: 2016-01-30T23:55:00+00:00
                          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.

        Server must be powered off for this command to succeed.

        #### Call specific error codes

        | Code                          | Description                                                          |
        |-------------------------------|----------------------------------------------------------------------|
        | `server_not_stopped`          | The action requires a stopped server                                 |
      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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

        Servers with attached ISOs have a modified boot order: They will try to boot from the ISO first before falling back to hard disk.
      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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

        The Server will get an IP auto assigned from a subnet of type `server` in the same `network_zone`.

        Using 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.

        **Call specific error codes**

        | Code                             | Description                                                           |
        |----------------------------------|-----------------------------------------------------------------------|
        | `server_already_attached`        | The server is already attached to the network                         |
        | `ip_not_available`               | The provided Network IP is not available                              |
        | `no_subnet_available`            | No Subnet or IP is available for the Server within the network        |
        | `networks_overlap`               | The network IP range overlaps with one of the server networks         |
      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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

        Floating IPs assigned to the Server are not affected by this.
      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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 42
                      type: server
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

        Server must be powered off for this command to succeed.

        This copies the content of its disk, and starts it again.

        You 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.

        If 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`.

        #### Call specific error codes

        | Code                          | Description                                                          |
        |-------------------------------|----------------------------------------------------------------------|
        | `invalid_server_type`         | The server type does not fit for the given server or is deprecated   |
        | `server_not_stopped`          | The action requires a stopped server                                 |
      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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

        To make sure disk content is consistent, we recommend to shut down the Server prior to creating an Image.

        You 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.
      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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 42
                      type: server
                  started: 2016-01-30T23:55:00+00:00
                  status: success
                image:
                  bound_to: null
                  created: 2016-01-30T23:50:00+00:00
                  created_from:
                    id: 1
                    name: Server
                  deleted: null
                  deprecated: 2018-02-28T00:00:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2018-02-28T00:00:00+00:00
                        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

            The `action` key in the reply contains an Action object with this structure
      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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

        Caution: This immediately removes all existing backups for the Server!
      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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 42
                      type: server
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

        Rescue Mode is automatically disabled when you first boot into it or if you do not use it for 60 minutes.

        Disabling rescue mode will not reboot your Server — you will have to do this yourself.
      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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

        Backups are automatically created daily.
      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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 42
                      type: server
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

        In case a Server cannot boot on its own you can use this to access a Server’s disks.

        Rescue Mode is automatically disabled when you first boot into it or if you do not use it for 60 minutes.

        Enabling rescue mode will not [reboot](https://docs.hetzner.cloud/#server-actions-soft-reboot-a-server) your Server — you will have to do this yourself.
      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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 42
                      type: server
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

            The `action` key in the reply contains an Action object with this structure
      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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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

        The 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`.

        Your Server will automatically be powered off before the rebuild command executes.
      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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.
      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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 42
                      type: server
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 42
                      type: server
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

        This will generate a new password for this Server and return it.

        If this does not succeed you can use the rescue system to netboot the Server and manually change your Server password by hand.
      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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

            The `action` key in the reply contains an Action object with this structure:
      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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 42
                      type: server
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

        You 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.

        Depending on the type you will get different time series data

        | Type    | Timeseries              | Unit      | Description                                          |
        |---------|-------------------------|-----------|------------------------------------------------------|
        | cpu     | cpu                     | percent   | Percent CPU usage                                    |
        | disk    | disk.0.iops.read        | iop/s     | Number of read IO operations per second              |
        |         | disk.0.iops.write       | iop/s     | Number of write IO operations per second             |
        |         | disk.0.bandwidth.read   | bytes/s   | Bytes read per second                                |
        |         | disk.0.bandwidth.write  | bytes/s   | Bytes written per second                             |
        | network | network.0.pps.in        | packets/s | Public Network interface packets per second received |
        |         | network.0.pps.out       | packets/s | Public Network interface packets per second sent     |
        |         | network.0.bandwidth.in  | bytes/s   | Public Network interface bytes/s received            |
        |         | network.0.bandwidth.out | bytes/s   | Public Network interface bytes/s sent                |

        Metrics are available for the last 30 days only.

        If you do not provide the step argument we will automatically adjust it so that a maximum of 200 samples are returned.

        We limit the number of samples returned to a maximum of 500 and will adjust the step parameter accordingly.
      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: 2017-01-01T23:00:00+00:00
                        type: string
                      start:
                        description: Start of period of metrics reported (in ISO-8601 format)
                        example: 2017-01-01T00:00:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                          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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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.

        Please 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.
      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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                          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.

        Specifying 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.

        The minimum Volume size is 10GB and the maximum size is 10TB (10240GB).

        A 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.

        #### Call specific error codes

        | Code                                | Description                                         |
        |-------------------------------------|-----------------------------------------------------|
        | `no_space_left_in_location`         | There is no volume space left in the given location |
      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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:50:00+00:00
                    status: running
                volume:
                  created: 2016-01-30T23:50:11+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                          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: 2016-01-30T23:55:00+00:00
                          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: 2016-01-30T23:55:00+00:00
                        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

            The `action` key contains the Action tracking Volume creation
      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: 2016-01-30T23:55:00+00:00
                        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.

        Note 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.
      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: 2016-01-30T23:50:11+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:56:00+00:00
                    id: 13
                    progress: 100
                    resources:
                      - id: 42
                        type: server
                      - id: 13
                        type: volume
                    started: 2016-01-30T23:55:00+00:00
                    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: 2016-01-30T23:55:00+00:00
                          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: 2016-01-30T23:55:00+00:00
                          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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 42
                      type: server
                    - id: 554
                      type: volume
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:50:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:56:00+00:00
                  id: 13
                  progress: 100
                  resources:
                    - id: 42
                      type: server
                  started: 2016-01-30T23:55:00+00:00
                  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: 2016-01-30T23:55:00+00:00
                        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: 2016-01-30T23:55:00+00:00
                        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
