openapi: 3.0.0
info:
  title: Public Gateways API
  description: "Scaleway Public Gateways are building blocks for your infrastructure
    on Scaleway's public\ncloud. They sit at the border of Private Networks and provide
    access to/from other networks or the Internet. As well as this, Public Gateways
    offer a host of managed features and services to facilitate the management of
    resources in your Private Network, including DHCP to dynamically assign IP addresses,
    and NAT to map private IP addresses in the Private Network to the public IP address
    of the Public Gateway.\n\n(switchcolumn)\n<Message type=\"tip\">\nTo create and
    manage your Private Networks, check out our [Private Networks API](https://www.scaleway.com/en/developers/api/vpc).\n</Message>\n(switchcolumn)\n\n##
    Concepts\n\nRefer to our [dedicated concepts page](https://www.scaleway.com/en/docs/network/public-gateways/concepts/)
    to find definitions of all terminology related to Public Gateways, including DHCP,
    NAT, SSH bastion and more.\n\n(switchcolumn)\n(switchcolumn)\n\n## Quickstart\n\n1.
    Configure your environment variables.\n\n    <Message type=\"note\">\n    This
    is an optional step that seeks to simplify your usage of the Public Gateways API.\n
    \   </Message> \n\n    ```bash\n    export SCW_SECRET_KEY=\"<API secret key>\"\n
    \   export SCW_DEFAULT_ZONE=\"<Scaleway default Availability Zone>\"\n    export
    SCW_PROJECT_ID=\"<Scaleway Project ID>\"\n    ```\n\n2. **Choose a Public Gateway
    type**: Public Gateways come in different shapes and sizes, with different network
    capabilities and pricing. When you create your Public Gateway, you need to include
    the required Public Gateway type in the request. Use the following call to get
    a list of available Public Gateway offer types and their details:\n\n    ```bash\n
    \   curl -X GET \\\n        -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n        -H
    \"Content-Type: application/json\" \\\n        \"https://api.scaleway.com/vpc-gw/v1/zones/$SCW_DEFAULT_ZONE/gateway-types\"
    \  \n    ```\n\n3. **Create a Public Gateway**: run the following command to create
    a Public Gateway. You can customize the details in the payload (name, description,
    tags, etc) to your needs: use the information below to adjust the payload as necessary.\n\n
    \   ```bash\n    curl -X POST \\\n        -H \"X-Auth-Token: $SCW_SECRET_KEY\"
    \\\n        -H \"Content-Type: application/json\" \\\n        \"https://api.scaleway.com/vpc-gw/v1/zones/$SCW_DEFAULT_ZONE/gateways\"
    \\\n        -d '{\n            \"type\": \"VPC-GW-S\", \n            \"name\":
    \"my-new-gateway\",\n            \"tags\": [\"my-first-tag\", \"my-second-tag\"],
    \n            \"project_id\": \"'\"$SCW_PROJECT_ID\"'\"\n            }'\n    ```\n\n
    \   | Parameter       | Description                                         |
    Valid values                  | \n    |-----------------|-----------------------------------------------------|-------------------------------|\n
    \   | type            | The type of Public Gateway (commercial offer type) to
    create. Use the Gateway Types endpoint to get a list of offer types. | Any valid
    offer type string, e.g. `VPC-GW-S` |\n    | name            | A name of your choice
    for the Public Gateway        | Any string containing only alphanumeric characters
    and dashes, e.g. `my-new-gateway`. |\n    | tags            | A list of tags to
    describe your Public Gateway. These can help you manage and filter your gateways.
    | A list of alphanumeric strings, e.g. `[\"my-first-tag`, `my-second-tag` |\n
    \   | project_id      | The Scaleway Project ID to create the Public Gateway in.
    | A valid Scaleway Project ID, e.g. `f5fe13a0-b9c7-11ed-afa1-0242ac120002` |\n\n
    \   **Note**: Further parameters are available, but for the purposes of this quickstart
    we have included only the essentials. See the `Create a Public Gateway` endpoint
    documentation below for full details of all possible parameters.\n\n4. **Get a
    list of your Public Gateways**: run the following command to get a list of all
    your Public Gateways.\n\n    ```bash\n    curl -X GET \\\n        -H \"X-Auth-Token:
    $SCW_SECRET_KEY\" \\\n        -H \"Content-Type: application/json\" \\\n        \"https://api.scaleway.com/vpc-gw/v1/zones/$SCW_DEFAULT_ZONE/gateways\"\n
    \   ```\n\n5. **Attach a Private Network to a Public Gateway**: run the following
    command to attach a Private Network to your Public Gateway, and make all the Gateway's
    services such as DHCP and NAT available to the Private Network. You can customize
    the details in the payload to your needs: use the information below to adjust
    the payload as necessary.\n\n   <Message type=\"tip\">\n   If you haven't created
    a Private Network yet, see the [Private Networks](https://www/scaleway.com/en/developers/api/vpc/)
    documentation to learn how to do so. Ensure you retain the ID of the Private Network.\n
    \  </Message>\n\n    ```bash\n    curl -X POST \\\n        -H \"X-Auth-Token:
    $SCW_SECRET_KEY\" \\\n        -H \"Content-Type: application/json\" \\\n        \"https://api.scaleway.com/vpc-gw/v1/zones/$SCW_DEFAULT_ZONE/gateway-networks\"
    \\\n        -d '{\n            \"gateway_id\": \"b1b2edda-9364-422d-93f2-ad04e6a054dc\",
    \n            \"private_network_id\": \"548dbcc3-8b78-486f-a79a-c3f5a17642f9\",\n
    \           \"enable_masquerade\": true,\n            \"dhcp\": {\n            \"project_id\":
    \"'\"$SCW_PROJECT_ID\"'\",\n            \"subnet\": \"192.168.1.0/24\"\n            }\n
    \       }'\n    ```\n\n    This configuration will set up the Public Gateway as
    a NAT gateway, masquerading traffic sent to it to the\n    outer internet to provide
    internet access to resources in the Private Network, and serving\n    IP addresses
    through DHCP to said instances, in the subnet `192.168.1.0/24`.\n\n    | Parameter
    \      | Description                                         | Valid values                  |
    \n    |-----------------|-----------------------------------------------------|-------------------------------|\n
    \   | gateway_id      | The Public Gateway ID of an existing Public Gateway |
    Any valid Public Gateway ID, e.g. `b1b2edda-9364-422d-93f2-ad04e6a054dc` |\n    |
    private_network_id    | The Private Network ID of an existing Private Network
    \ | Any valid Private Network ID in the same Availability Zone as the Public Gateway,
    e.g. `548dbcc3-8b78-486f-a79a-c3f5a17642f9` |\n    | enable_masquerade     | Defines
    whether the gateway should masquerade traffic for the attached Private Network
    (i.e. whether to enable dynamic NAT) | A boolean value, e.g. `true` |\n    | dhcp
    \           | An DHCP object (see object definition in the `DHCP` endpoint documentation
    below), which defines DHCP configuration. | An object which includes the Scaleway
    Project ID of the Public Gateway/Private Network, and the subnet to use for the
    Private Network e.g. `{\"project_id\": \"'$SCW_PROJECT_ID'\", \"subnet\": \"192.168.1.0/24\"}`
    |\n\n    <Message type=\"note\">\n    Further parameters are available, but for
    the purposes of this quickstart we have included only the essentials. See the
    [Attach a gateway to a Private Network](#path-gateway-networks-attach-a-public-gateway-to-a-private-network)
    documentation below for full details of all possible parameters.\n    </Message>\n\n6.
    **Delete a Public Gateway**: run the following call to delete your Public Gateway.
    Ensure that you replace `<PUBLIC-GATEWAY-ID>` in the URL with the ID of the Public
    Gateway you want to delete.\n\n    ```bash\n    curl -X DELETE \\\n        -H
    \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n        -H \"Content-Type: application/json\"
    \\\n        \"https://api.scaleway.com/vpc-gw/v1/zones/$SCW_DEFAULT_ZONE/gateways/<PUBLIC-GATEWAY-ID>\"\n
    \   ```\n\n    The expected successful response is empty.\n\n    (switchcolumn)\n
    \   <Message type=\"requirement\">\n    - You have a [Scaleway account](https://console.scaleway.com/)\n
    \   - You have [created an API key](https://www.scaleway.com/en/docs/identity-and-access-management/iam/how-to/create-api-keys/)
    and that the API key has sufficient [IAM permissions](https://www.scaleway.com/en/docs/identity-and-access-management/iam/reference-content/permission-sets/)
    to perform the actions described on this page\n    - You have [installed `curl`](https://curl.se/download.html)\n
    \   </Message>\n    (switchcolumn)\n\n## Technical limitations\n\nThe following
    limitations apply to Public Gateways:\n\n- A maximum of eight (8) Private Networks
    can be plugged into a single Public Gateway\n- Note that the Public Gateway takes
    some time to start up, and actions on it are\nimpossible unless it is in the `running`
    state. To check the current state of a Public Gateway, use the [Get a Public Gateway](#path-gateways-get-a-public-gateway)
    endpoint to get information for your gateway: the `status` field of the response
    will tell you if it is running or in another state.\n- For further information
    about Public Gateway limitations see our [dedicated documentation](https://www.scaleway.com/en/docs/network/public-gateways/troubleshooting/gw-limitations/).\n\n\n##
    Technical information\n\n### Availability Zones\n\nPublic Gateways can be deployed
    in the following Availability Zones:\n\n| Name      | API ID                |\n|-----------|-----------------------|\n|
    Paris     | `fr-par-1` `fr-par-2` |\n| Amsterdam | `nl-ams-1` `nl-ams-2` |\n|
    Warsaw    | `pl-waw-1` `pl-waw-2` |\n\nThe Scaleway Public Gateways API is a **zoned**
    API, meaning that each call must specify in its path parameters the Availability
    Zone for the resources concerned by the call.\n\n\n## Going further\n\nFor more
    help using Scaleway Public Gateways, check out the following resources:\n- Our
    [main documentation](https://www.scaleway.com/en/docs/network/public-gateways/)\n-
    The #public-gateway channel on our [Slack Community](https://www.scaleway.com/en/docs/tutorials/scaleway-slack-community/)\n-
    Our [support ticketing system](https://www.scaleway.com/en/docs/console/my-account/how-to/open-a-support-ticket/)."
  version: v1
servers:
- url: https://api.scaleway.com
tags:
- name: Gateways
  description: |
    Public Gateways are building blocks for your infrastructure on Scaleway's shared public cloud. They provide a set of managed network services and features for Scaleway's Private Networks such as DHCP, NAT and routing.
- name: Gateway Networks
  description: |
    A Gateway Network represents the connection of a Private Network to a Public Gateway. It holds configuration options relative to this specific connection, such as the DHCP configuration.
- name: DHCP
  description: |
    These objects define a DHCP configuration, i.e. how IP addresses should be assigned to devices on a Private Network attached to a Public Gateway. Definable parameters include the subnet for the DHCP server, the validity  period for DHCP entries, whether to use dynamic pooling, and more. A DHCP configuration object has a DHCP ID, which can then be used as part of a  call to create or update a Gateway Network. This lets you attach an existing DHCP configuration to a Public Gateway attached to a Private Network. Similarly, you can use a DHCP ID as a query parameter to list Gateway Networks which use this DHCP configuration object.
- name: DHCP Entries
  description: |
    DHCP entries belong to a specified Gateway Network (Public Gateway / Private Network connection). A DHCP entry can hold either a dynamic DHCP lease (an IP address dynamically assigned by the Public Gateway to a device) or a static, user-created DHCP reservation.
- name: PAT Rules
  description: |
    PAT (Port Address Translation) rules, aka static NAT rules, belong to a specified Public Gateway.  They define the forwarding of a public port to a specific device on a Private Network, enabling enables ingress traffic from the public Internet  to reach the correct device in the Private Network.
- name: IPs
  description: |
    Public, flexible IP addresses for Public Gateways, allowing the gateway to reach the public internet, as well as forward (masquerade) traffic from member devices of attached Private Networks.
- name: Gateway Types
  description: |
    Public Gateways come in various shapes, sizes and prices, which are  described by gateway types. They represent the different commercial  offer types for Public Gateways available at Scaleway.
components:
  schemas:
    scaleway.vpc_gw.v1.DHCP:
      type: object
      properties:
        id:
          type: string
          description: ID of the DHCP config. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
        organization_id:
          type: string
          description: Owning Organization. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
        project_id:
          type: string
          description: Owning Project. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
        created_at:
          type: string
          description: Date the DHCP configuration was created. (RFC 3339 format)
          format: date-time
          example: "2022-03-22T12:34:56.123456Z"
          nullable: true
        updated_at:
          type: string
          description: Configuration last modification date. (RFC 3339 format)
          format: date-time
          example: "2022-03-22T12:34:56.123456Z"
          nullable: true
        subnet:
          type: string
          description: Subnet for the DHCP server. (IP network)
          example: 1.2.3.4/32
        address:
          type: string
          description: IP address of the DHCP server. This will be the Public Gateway's
            address in the Private Network. It must be part of config's subnet. (IP
            address)
          example: 1.2.3.4
        pool_low:
          type: string
          description: Low IP (inclusive) of the dynamic address pool. Must be in
            the config's subnet. (IP address)
          example: 1.2.3.4
        pool_high:
          type: string
          description: High IP (inclusive) of the dynamic address pool. Must be in
            the config's subnet. (IP address)
          example: 1.2.3.4
        enable_dynamic:
          type: boolean
          description: Defines whether to enable dynamic pooling of IPs. When false,
            only pre-existing DHCP reservations will be handed out.
        valid_lifetime:
          type: string
          description: How long DHCP entries will be valid for. (in seconds)
          example: 2.5s
          nullable: true
        renew_timer:
          type: string
          description: After how long a renew will be attempted. Must be 30s lower
            than `rebind_timer`. (in seconds)
          example: 2.5s
          nullable: true
        rebind_timer:
          type: string
          description: After how long a DHCP client will query for a new lease if
            previous renews fail. Must be 30s lower than `valid_lifetime`. (in seconds)
          example: 2.5s
          nullable: true
        push_default_route:
          type: boolean
          description: Defines whether the gateway should push a default route to
            DHCP clients, or only hand out IPs.
        push_dns_server:
          type: boolean
          description: Defines whether the gateway should push custom DNS servers
            to clients. This allows for instance hostname -> IP resolution.
        dns_servers_override:
          type: array
          description: Array of DNS server IP addresses used to override the DNS server
            list pushed to DHCP clients, instead of the gateway itself.
          items:
            type: string
        dns_search:
          type: array
          description: Array of search paths in addition to the pushed DNS configuration.
          items:
            type: string
        dns_local_name:
          type: string
          description: TLD given to hostnames in the Private Networks. If an Instance
            with hostname `foo` gets a lease, and this is set to `bar`, `foo.bar`
            will resolve.
        zone:
          type: string
          description: Zone of this DHCP configuration.
      x-properties-order:
      - id
      - organization_id
      - project_id
      - created_at
      - updated_at
      - subnet
      - address
      - pool_low
      - pool_high
      - enable_dynamic
      - valid_lifetime
      - renew_timer
      - rebind_timer
      - push_default_route
      - push_dns_server
      - dns_servers_override
      - dns_search
      - dns_local_name
      - zone
    scaleway.vpc_gw.v1.DHCPEntry:
      type: object
      properties:
        id:
          type: string
          description: DHCP entry ID. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
        created_at:
          type: string
          description: DHCP entry creation date. (RFC 3339 format)
          format: date-time
          example: "2022-03-22T12:34:56.123456Z"
          nullable: true
        updated_at:
          type: string
          description: DHCP entry last modification date. (RFC 3339 format)
          format: date-time
          example: "2022-03-22T12:34:56.123456Z"
          nullable: true
        gateway_network_id:
          type: string
          description: Owning GatewayNetwork. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
        mac_address:
          type: string
          description: MAC address of the client device.
        ip_address:
          type: string
          description: Assigned IP address. (IP address)
          example: 1.2.3.4
        hostname:
          type: string
          description: Hostname of the client device.
        type:
          type: string
          description: Entry type, either static (DHCP reservation) or dynamic (DHCP
            lease).
          enum:
          - unknown
          - reservation
          - lease
          default: unknown
        zone:
          type: string
          description: Zone of this DHCP entry.
      x-properties-order:
      - id
      - created_at
      - updated_at
      - gateway_network_id
      - mac_address
      - ip_address
      - hostname
      - type
      - zone
    scaleway.vpc_gw.v1.Gateway:
      type: object
      properties:
        id:
          type: string
          description: ID of the gateway. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
        organization_id:
          type: string
          description: Owning Organization. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
        project_id:
          type: string
          description: Owning Project. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
        created_at:
          type: string
          description: Gateway creation date. (RFC 3339 format)
          format: date-time
          example: "2022-03-22T12:34:56.123456Z"
          nullable: true
        updated_at:
          type: string
          description: Gateway last modification date. (RFC 3339 format)
          format: date-time
          example: "2022-03-22T12:34:56.123456Z"
          nullable: true
        type:
          type: object
          description: Gateway type (commercial offer).
          properties:
            name:
              type: string
              description: Public Gateway type name.
            bandwidth:
              type: integer
              description: Bandwidth, in bps, of the Public Gateway. This is the public
                bandwidth to the outer Internet, and the internal bandwidth to each
                connected Private Networks.
              format: uint64
            zone:
              type: string
              description: Zone the Public Gateway type is available in.
          x-properties-order:
          - name
          - bandwidth
          - zone
        status:
          type: string
          description: Current status of the gateway.
          enum:
          - unknown
          - stopped
          - allocating
          - configuring
          - running
          - stopping
          - failed
          - deleting
          - deleted
          - locked
          default: unknown
        name:
          type: string
          description: Name of the gateway.
        tags:
          type: array
          description: Tags associated with the gateway.
          items:
            type: string
        ip:
          type: object
          description: Public IP address of the gateway.
          properties:
            id:
              type: string
              description: IP address ID. (UUID format)
              example: 6170692e-7363-616c-6577-61792e636f6d
            organization_id:
              type: string
              description: Owning Organization. (UUID format)
              example: 6170692e-7363-616c-6577-61792e636f6d
            project_id:
              type: string
              description: Owning Project. (UUID format)
              example: 6170692e-7363-616c-6577-61792e636f6d
            created_at:
              type: string
              description: IP address creation date. (RFC 3339 format)
              format: date-time
              example: "2022-03-22T12:34:56.123456Z"
              nullable: true
            updated_at:
              type: string
              description: IP address last modification date. (RFC 3339 format)
              format: date-time
              example: "2022-03-22T12:34:56.123456Z"
              nullable: true
            tags:
              type: array
              description: Tags associated with the IP address.
              items:
                type: string
            address:
              type: string
              description: The IP address itself. (IP address)
              example: 1.2.3.4
            reverse:
              type: string
              description: Reverse domain name for the IP address.
              nullable: true
            gateway_id:
              type: string
              description: Public Gateway associated with the IP address. (UUID format)
              example: 6170692e-7363-616c-6577-61792e636f6d
              nullable: true
            zone:
              type: string
              description: Zone of the IP address.
          x-properties-order:
          - id
          - organization_id
          - project_id
          - created_at
          - updated_at
          - tags
          - address
          - reverse
          - gateway_id
          - zone
        gateway_networks:
          type: array
          description: GatewayNetwork objects attached to the gateway (each one represents
            a connection to a Private Network).
          items:
            $ref: '#/components/schemas/scaleway.vpc_gw.v1.GatewayNetwork'
        upstream_dns_servers:
          type: array
          description: Array of DNS server IP addresses to override the gateway's
            default recursive DNS servers.
          items:
            type: string
        version:
          type: string
          description: Version of the running gateway software.
          nullable: true
        can_upgrade_to:
          type: string
          description: Newly available gateway software version that can be updated
            to.
          nullable: true
        bastion_enabled:
          type: boolean
          description: Defines whether SSH bastion is enabled on the gateway.
        bastion_port:
          type: integer
          description: Port of the SSH bastion.
          format: uint32
        smtp_enabled:
          type: boolean
          description: Defines whether SMTP traffic is allowed to pass through the
            gateway.
        is_legacy:
          type: boolean
          description: Defines whether the gateway uses non-IPAM IP configurations.
        ip_mobility_enabled:
          type: boolean
          description: Defines whether the gateway uses routed IPs (IP mobility) instead
            of NAT IPs.
        zone:
          type: string
          description: Zone of the gateway.
      x-properties-order:
      - id
      - organization_id
      - project_id
      - created_at
      - updated_at
      - type
      - status
      - name
      - tags
      - ip
      - gateway_networks
      - upstream_dns_servers
      - version
      - can_upgrade_to
      - bastion_enabled
      - bastion_port
      - smtp_enabled
      - is_legacy
      - ip_mobility_enabled
      - zone
    scaleway.vpc_gw.v1.GatewayNetwork:
      type: object
      properties:
        id:
          type: string
          description: ID of the Public Gateway-Private Network connection. (UUID
            format)
          example: 6170692e-7363-616c-6577-61792e636f6d
        created_at:
          type: string
          description: Connection creation date. (RFC 3339 format)
          format: date-time
          example: "2022-03-22T12:34:56.123456Z"
          nullable: true
        updated_at:
          type: string
          description: Connection last modification date. (RFC 3339 format)
          format: date-time
          example: "2022-03-22T12:34:56.123456Z"
          nullable: true
        gateway_id:
          type: string
          description: ID of the connected Public Gateway. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
        private_network_id:
          type: string
          description: ID of the connected Private Network. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
        mac_address:
          type: string
          description: MAC address of the gateway in the Private Network (if the gateway
            is up and running).
          nullable: true
        enable_masquerade:
          type: boolean
          description: Defines whether the gateway masquerades traffic for this Private
            Network (Dynamic NAT).
        status:
          type: string
          description: Current status of the Public Gateway's connection to the Private
            Network.
          enum:
          - unknown
          - created
          - attaching
          - configuring
          - ready
          - detaching
          - deleted
          default: unknown
        dhcp:
          type: object
          description: DHCP configuration for the connected Private Network.
          properties:
            id:
              type: string
              description: ID of the DHCP config. (UUID format)
              example: 6170692e-7363-616c-6577-61792e636f6d
            organization_id:
              type: string
              description: Owning Organization. (UUID format)
              example: 6170692e-7363-616c-6577-61792e636f6d
            project_id:
              type: string
              description: Owning Project. (UUID format)
              example: 6170692e-7363-616c-6577-61792e636f6d
            created_at:
              type: string
              description: Date the DHCP configuration was created. (RFC 3339 format)
              format: date-time
              example: "2022-03-22T12:34:56.123456Z"
              nullable: true
            updated_at:
              type: string
              description: Configuration last modification date. (RFC 3339 format)
              format: date-time
              example: "2022-03-22T12:34:56.123456Z"
              nullable: true
            subnet:
              type: string
              description: Subnet for the DHCP server. (IP network)
              example: 1.2.3.4/32
            address:
              type: string
              description: IP address of the DHCP server. This will be the Public
                Gateway's address in the Private Network. It must be part of config's
                subnet. (IP address)
              example: 1.2.3.4
            pool_low:
              type: string
              description: Low IP (inclusive) of the dynamic address pool. Must be
                in the config's subnet. (IP address)
              example: 1.2.3.4
            pool_high:
              type: string
              description: High IP (inclusive) of the dynamic address pool. Must be
                in the config's subnet. (IP address)
              example: 1.2.3.4
            enable_dynamic:
              type: boolean
              description: Defines whether to enable dynamic pooling of IPs. When
                false, only pre-existing DHCP reservations will be handed out.
            valid_lifetime:
              type: string
              description: How long DHCP entries will be valid for. (in seconds)
              example: 2.5s
              nullable: true
            renew_timer:
              type: string
              description: After how long a renew will be attempted. Must be 30s lower
                than `rebind_timer`. (in seconds)
              example: 2.5s
              nullable: true
            rebind_timer:
              type: string
              description: After how long a DHCP client will query for a new lease
                if previous renews fail. Must be 30s lower than `valid_lifetime`.
                (in seconds)
              example: 2.5s
              nullable: true
            push_default_route:
              type: boolean
              description: Defines whether the gateway should push a default route
                to DHCP clients, or only hand out IPs.
            push_dns_server:
              type: boolean
              description: Defines whether the gateway should push custom DNS servers
                to clients. This allows for instance hostname -> IP resolution.
            dns_servers_override:
              type: array
              description: Array of DNS server IP addresses used to override the DNS
                server list pushed to DHCP clients, instead of the gateway itself.
              items:
                type: string
            dns_search:
              type: array
              description: Array of search paths in addition to the pushed DNS configuration.
              items:
                type: string
            dns_local_name:
              type: string
              description: TLD given to hostnames in the Private Networks. If an Instance
                with hostname `foo` gets a lease, and this is set to `bar`, `foo.bar`
                will resolve.
            zone:
              type: string
              description: Zone of this DHCP configuration.
          x-properties-order:
          - id
          - organization_id
          - project_id
          - created_at
          - updated_at
          - subnet
          - address
          - pool_low
          - pool_high
          - enable_dynamic
          - valid_lifetime
          - renew_timer
          - rebind_timer
          - push_default_route
          - push_dns_server
          - dns_servers_override
          - dns_search
          - dns_local_name
          - zone
        enable_dhcp:
          type: boolean
          description: Defines whether DHCP is enabled on the connected Private Network.
        address:
          type: string
          description: Address of the Gateway (in CIDR form) to use when DHCP is not
            used. (IP network)
          example: 1.2.3.4/32
          nullable: true
        ipam_config:
          type: object
          description: IPAM IP configuration used.
          properties:
            push_default_route:
              type: boolean
              description: Defines whether the default route is enabled on that Gateway
                Network.
            ipam_ip_id:
              type: string
              description: IPAM-booked IP ID as the Gateway's IP in this Private Network.
                (UUID format)
              example: 6170692e-7363-616c-6577-61792e636f6d
          x-properties-order:
          - push_default_route
          - ipam_ip_id
        zone:
          type: string
          description: Zone of the GatewayNetwork connection.
      x-properties-order:
      - id
      - created_at
      - updated_at
      - gateway_id
      - private_network_id
      - mac_address
      - enable_masquerade
      - status
      - dhcp
      - enable_dhcp
      - address
      - ipam_config
      - zone
    scaleway.vpc_gw.v1.GatewayType:
      type: object
      properties:
        name:
          type: string
          description: Public Gateway type name.
        bandwidth:
          type: integer
          description: Bandwidth, in bps, of the Public Gateway. This is the public
            bandwidth to the outer Internet, and the internal bandwidth to each connected
            Private Networks.
          format: uint64
        zone:
          type: string
          description: Zone the Public Gateway type is available in.
      x-properties-order:
      - name
      - bandwidth
      - zone
    scaleway.vpc_gw.v1.IP:
      type: object
      properties:
        id:
          type: string
          description: IP address ID. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
        organization_id:
          type: string
          description: Owning Organization. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
        project_id:
          type: string
          description: Owning Project. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
        created_at:
          type: string
          description: IP address creation date. (RFC 3339 format)
          format: date-time
          example: "2022-03-22T12:34:56.123456Z"
          nullable: true
        updated_at:
          type: string
          description: IP address last modification date. (RFC 3339 format)
          format: date-time
          example: "2022-03-22T12:34:56.123456Z"
          nullable: true
        tags:
          type: array
          description: Tags associated with the IP address.
          items:
            type: string
        address:
          type: string
          description: The IP address itself. (IP address)
          example: 1.2.3.4
        reverse:
          type: string
          description: Reverse domain name for the IP address.
          nullable: true
        gateway_id:
          type: string
          description: Public Gateway associated with the IP address. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
          nullable: true
        zone:
          type: string
          description: Zone of the IP address.
      x-properties-order:
      - id
      - organization_id
      - project_id
      - created_at
      - updated_at
      - tags
      - address
      - reverse
      - gateway_id
      - zone
    scaleway.vpc_gw.v1.ListDHCPEntriesResponse:
      type: object
      properties:
        dhcp_entries:
          type: array
          description: DHCP entries in this page.
          items:
            $ref: '#/components/schemas/scaleway.vpc_gw.v1.DHCPEntry'
        total_count:
          type: integer
          description: Total count of DHCP entries matching the filter.
          format: uint32
      x-properties-order:
      - dhcp_entries
      - total_count
    scaleway.vpc_gw.v1.ListDHCPsResponse:
      type: object
      properties:
        dhcps:
          type: array
          description: First page of DHCP configuration objects.
          items:
            $ref: '#/components/schemas/scaleway.vpc_gw.v1.DHCP'
        total_count:
          type: integer
          description: Total count of DHCP configuration objects matching the filter.
          format: uint32
      x-properties-order:
      - dhcps
      - total_count
    scaleway.vpc_gw.v1.ListGatewayNetworksResponse:
      type: object
      properties:
        gateway_networks:
          type: array
          description: GatewayNetworks on this page.
          items:
            $ref: '#/components/schemas/scaleway.vpc_gw.v1.GatewayNetwork'
        total_count:
          type: integer
          description: Total GatewayNetworks count matching the filter.
          format: uint32
      x-properties-order:
      - gateway_networks
      - total_count
    scaleway.vpc_gw.v1.ListGatewayTypesResponse:
      type: object
      properties:
        types:
          type: array
          description: Available types of Public Gateway.
          items:
            $ref: '#/components/schemas/scaleway.vpc_gw.v1.GatewayType'
      x-properties-order:
      - types
    scaleway.vpc_gw.v1.ListGatewaysResponse:
      type: object
      properties:
        gateways:
          type: array
          description: Gateways on this page.
          items:
            $ref: '#/components/schemas/scaleway.vpc_gw.v1.Gateway'
        total_count:
          type: integer
          description: Total count of gateways matching the filter.
          format: uint32
      x-properties-order:
      - gateways
      - total_count
    scaleway.vpc_gw.v1.ListIPsResponse:
      type: object
      properties:
        ips:
          type: array
          description: IP addresses on this page.
          items:
            $ref: '#/components/schemas/scaleway.vpc_gw.v1.IP'
        total_count:
          type: integer
          description: Total count of IP addresses matching the filter.
          format: uint32
      x-properties-order:
      - ips
      - total_count
    scaleway.vpc_gw.v1.ListPATRulesResponse:
      type: object
      properties:
        pat_rules:
          type: array
          description: Array of PAT rules matching the filter.
          items:
            $ref: '#/components/schemas/scaleway.vpc_gw.v1.PATRule'
        total_count:
          type: integer
          description: Total count of PAT rules matching the filter.
          format: uint32
      x-properties-order:
      - pat_rules
      - total_count
    scaleway.vpc_gw.v1.PATRule:
      type: object
      properties:
        id:
          type: string
          description: PAT rule ID. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
        gateway_id:
          type: string
          description: Gateway the PAT rule applies to. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
        created_at:
          type: string
          description: PAT rule creation date. (RFC 3339 format)
          format: date-time
          example: "2022-03-22T12:34:56.123456Z"
          nullable: true
        updated_at:
          type: string
          description: PAT rule last modification date. (RFC 3339 format)
          format: date-time
          example: "2022-03-22T12:34:56.123456Z"
          nullable: true
        public_port:
          type: integer
          description: Public port to listen on.
          format: uint32
        private_ip:
          type: string
          description: Private IP address to forward data to. (IP address)
          example: 1.2.3.4
        private_port:
          type: integer
          description: Private port to translate to.
          format: uint32
        protocol:
          type: string
          description: Protocol the rule applies to.
          enum:
          - unknown
          - both
          - tcp
          - udp
          default: unknown
        zone:
          type: string
          description: Zone of the PAT rule.
      x-properties-order:
      - id
      - gateway_id
      - created_at
      - updated_at
      - public_port
      - private_ip
      - private_port
      - protocol
      - zone
    scaleway.vpc_gw.v1.SetDHCPEntriesRequest.Entry:
      type: object
      properties:
        mac_address:
          type: string
          description: |-
            MAC address to give a static entry to.
            MAC address to give a static entry to. A matching entry will be upgraded to a reservation, and a matching reservation will be updated.
        ip_address:
          type: string
          description: IP address to give to the device. (IP address)
          example: 1.2.3.4
      x-properties-order:
      - mac_address
      - ip_address
    scaleway.vpc_gw.v1.SetDHCPEntriesResponse:
      type: object
      properties:
        dhcp_entries:
          type: array
          description: List of DHCP entries.
          items:
            $ref: '#/components/schemas/scaleway.vpc_gw.v1.DHCPEntry'
      x-properties-order:
      - dhcp_entries
    scaleway.vpc_gw.v1.SetPATRulesRequest.Rule:
      type: object
      properties:
        public_port:
          type: integer
          description: |-
            Public port to listen on.
            Public port to listen on. Uniquely identifies the rule, and a matching rule will be updated with the new parameters.
          format: uint32
        private_ip:
          type: string
          description: Private IP to forward data to. (IP address)
          example: 1.2.3.4
        private_port:
          type: integer
          description: Private port to translate to.
          format: uint32
        protocol:
          type: string
          description: Protocol the rule should apply to.
          enum:
          - unknown
          - both
          - tcp
          - udp
          default: unknown
      x-properties-order:
      - public_port
      - private_ip
      - private_port
      - protocol
    scaleway.vpc_gw.v1.SetPATRulesResponse:
      type: object
      properties:
        pat_rules:
          type: array
          description: List of PAT rules.
          items:
            $ref: '#/components/schemas/scaleway.vpc_gw.v1.PATRule'
      x-properties-order:
      - pat_rules
  securitySchemes:
    scaleway:
      in: header
      name: X-Auth-Token
      type: apiKey
paths:
  /vpc-gw/v1/zones/{zone}/dhcp-entries:
    get:
      tags:
      - DHCP Entries
      operationId: ListDHCPEntries
      summary: List DHCP entries
      description: List DHCP entries, whether dynamically assigned and/or statically
        reserved. DHCP entries can be filtered by the Gateway Network they are on,
        their MAC address, IP address, type or hostname.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: query
        name: order_by
        description: Order in which to return results.
        schema:
          type: string
          description: Order in which to return results.
          enum:
          - created_at_asc
          - created_at_desc
          - ip_address_asc
          - ip_address_desc
          - hostname_asc
          - hostname_desc
          default: created_at_asc
      - in: query
        name: page
        description: Page number.
        schema:
          type: integer
          description: Page number.
          format: int32
      - in: query
        name: page_size
        description: DHCP entries per page.
        schema:
          type: integer
          description: DHCP entries per page.
          format: uint32
      - in: query
        name: gateway_network_id
        description: Filter for entries on this GatewayNetwork. (UUID format)
        schema:
          type: string
          description: Filter for entries on this GatewayNetwork. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      - in: query
        name: mac_address
        description: Filter for entries with this MAC address.
        schema:
          type: string
          description: Filter for entries with this MAC address.
      - in: query
        name: ip_address
        description: Filter for entries with this IP address. (IP address)
        schema:
          type: string
          description: Filter for entries with this IP address. (IP address)
          example: 1.2.3.4
      - in: query
        name: hostname
        description: Filter for entries with this hostname substring.
        schema:
          type: string
          description: Filter for entries with this hostname substring.
      - in: query
        name: type
        description: Filter for entries of this type.
        schema:
          type: string
          description: Filter for entries of this type.
          enum:
          - unknown
          - reservation
          - lease
          default: unknown
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.ListDHCPEntriesResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/dhcp-entries"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/dhcp-entries" \
            X-Auth-Token:$SCW_SECRET_KEY
    post:
      tags:
      - DHCP Entries
      operationId: CreateDHCPEntry
      summary: Create a DHCP entry
      description: Create a static DHCP reservation, specifying the Gateway Network
        for the reservation, the MAC address of the target device and the IP address
        to assign this device. The response is a DHCP entry object, confirming the
        ID and configuration details of the static DHCP reservation.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.DHCPEntry'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                gateway_network_id:
                  type: string
                  description: GatewayNetwork on which to create a DHCP reservation.
                    (UUID format)
                  example: 6170692e-7363-616c-6577-61792e636f6d
                mac_address:
                  type: string
                  description: MAC address to give a static entry to.
                ip_address:
                  type: string
                  description: IP address to give to the device. (IP address)
                  example: 1.2.3.4
              x-properties-order:
              - gateway_network_id
              - mac_address
              - ip_address
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X POST \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{
              "gateway_network_id": "6170692e-7363-616c-6577-61792e636f6d",
              "ip_address": "1.2.3.4",
              "mac_address": "string"
            }' \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/dhcp-entries"
      - lang: HTTPie
        source: |-
          http POST "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/dhcp-entries" \
            X-Auth-Token:$SCW_SECRET_KEY \
            gateway_network_id="6170692e-7363-616c-6577-61792e636f6d" \
            ip_address="1.2.3.4" \
            mac_address="string"
    put:
      tags:
      - DHCP Entries
      operationId: SetDHCPEntries
      summary: Set all DHCP reservations on a Gateway Network
      description: Set the list of DHCP reservations attached to a Gateway Network.
        Reservations are identified by their MAC address, and will sync the current
        DHCP entry list to the given list, creating, updating or deleting DHCP entries
        accordingly.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.SetDHCPEntriesResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                gateway_network_id:
                  type: string
                  description: ID of the Gateway Network on which to set DHCP reservation
                    list. (UUID format)
                  example: 6170692e-7363-616c-6577-61792e636f6d
                dhcp_entries:
                  type: array
                  description: New list of DHCP reservations.
                  items:
                    $ref: '#/components/schemas/scaleway.vpc_gw.v1.SetDHCPEntriesRequest.Entry'
              x-properties-order:
              - gateway_network_id
              - dhcp_entries
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X PUT \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{"gateway_network_id":"6170692e-7363-616c-6577-61792e636f6d"}' \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/dhcp-entries"
      - lang: HTTPie
        source: |-
          http PUT "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/dhcp-entries" \
            X-Auth-Token:$SCW_SECRET_KEY \
            gateway_network_id="6170692e-7363-616c-6577-61792e636f6d"
  /vpc-gw/v1/zones/{zone}/dhcp-entries/{dhcp_entry_id}:
    get:
      tags:
      - DHCP Entries
      operationId: GetDHCPEntry
      summary: Get a DHCP entry
      description: Get a DHCP entry, specified by its DHCP entry ID.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: dhcp_entry_id
        description: ID of the DHCP entry to fetch. (UUID format)
        required: true
        schema:
          type: string
          description: ID of the DHCP entry to fetch. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.DHCPEntry'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/dhcp-entries/{dhcp_entry_id}"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/dhcp-entries/{dhcp_entry_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
    patch:
      tags:
      - DHCP Entries
      operationId: UpdateDHCPEntry
      summary: Update a DHCP entry
      description: Update the IP address for a DHCP entry, specified by its DHCP entry
        ID. You can update an existing DHCP entry of any type (`reservation` (static),
        `lease` (dynamic) or `unknown`), but in manually updating the IP address the
        entry will necessarily be of type `reservation` after the update.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: dhcp_entry_id
        description: ID of the DHCP entry to update. (UUID format)
        required: true
        schema:
          type: string
          description: ID of the DHCP entry to update. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.DHCPEntry'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                ip_address:
                  type: string
                  description: New IP address to give to the device. (IP address)
                  example: 1.2.3.4
                  nullable: true
              x-properties-order:
              - ip_address
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X PATCH \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{}' \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/dhcp-entries/{dhcp_entry_id}"
      - lang: HTTPie
        source: |-
          http PATCH "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/dhcp-entries/{dhcp_entry_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
    delete:
      tags:
      - DHCP Entries
      operationId: DeleteDHCPEntry
      summary: Delete a DHCP entry
      description: Delete a static DHCP reservation, identified by its DHCP entry
        ID. Note that you cannot delete DHCP entries of type `lease`, these are deleted
        automatically when their time-to-live expires.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: dhcp_entry_id
        description: ID of the DHCP entry to delete. (UUID format)
        required: true
        schema:
          type: string
          description: ID of the DHCP entry to delete. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      responses:
        "204":
          description: ""
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X DELETE \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/dhcp-entries/{dhcp_entry_id}"
      - lang: HTTPie
        source: |-
          http DELETE "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/dhcp-entries/{dhcp_entry_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
  /vpc-gw/v1/zones/{zone}/dhcps:
    get:
      tags:
      - DHCP
      operationId: ListDHCPs
      summary: List DHCP configurations
      description: List DHCP configurations, optionally filtering by Organization,
        Project, Public Gateway IP address or more. The response is an array of DHCP
        configuration objects, each identified by a DHCP ID and containing configuration
        settings for the assignment of IP addresses to devices on a Private Network
        attached to a Public Gateway. Note that the response does not contain the
        IDs of any Private Network / Public Gateway the configuration is attached
        to. Use the `List Public Gateway connections to Private Networks` method for
        that purpose, filtering on DHCP ID.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: query
        name: order_by
        description: Order in which to return results.
        schema:
          type: string
          description: Order in which to return results.
          enum:
          - created_at_asc
          - created_at_desc
          - subnet_asc
          - subnet_desc
          default: created_at_asc
      - in: query
        name: page
        description: Page number.
        schema:
          type: integer
          description: Page number.
          format: int32
      - in: query
        name: page_size
        description: DHCP configurations per page.
        schema:
          type: integer
          description: DHCP configurations per page.
          format: uint32
      - in: query
        name: organization_id
        description: Include only DHCP configuration objects in this Organization.
          (UUID format)
        schema:
          type: string
          description: Include only DHCP configuration objects in this Organization.
            (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      - in: query
        name: project_id
        description: Include only DHCP configuration objects in this Project. (UUID
          format)
        schema:
          type: string
          description: Include only DHCP configuration objects in this Project. (UUID
            format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      - in: query
        name: address
        description: Filter for DHCP configuration objects with this DHCP server IP
          address (the gateway's address in the Private Network). (IP address)
        schema:
          type: string
          description: Filter for DHCP configuration objects with this DHCP server
            IP address (the gateway's address in the Private Network). (IP address)
          example: 1.2.3.4
      - in: query
        name: has_address
        description: Filter for DHCP configuration objects with subnets containing
          this IP address. (IP address)
        schema:
          type: string
          description: Filter for DHCP configuration objects with subnets containing
            this IP address. (IP address)
          example: 1.2.3.4
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.ListDHCPsResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/dhcps"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/dhcps" \
            X-Auth-Token:$SCW_SECRET_KEY
    post:
      tags:
      - DHCP
      operationId: CreateDHCP
      summary: Create a DHCP configuration
      description: Create a new DHCP configuration object, containing settings for
        the assignment of IP addresses to devices on a Private Network attached to
        a Public Gateway. The response object includes the ID of the DHCP configuration
        object. You can use this ID as part of a call to `Create a Public Gateway
        connection to a Private Network` or `Update a Public Gateway connection to
        a Private Network` to directly apply this DHCP configuration.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.DHCP'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                project_id:
                  type: string
                  description: Project to create the DHCP configuration in. (UUID
                    format)
                  example: 6170692e-7363-616c-6577-61792e636f6d
                subnet:
                  type: string
                  description: Subnet for the DHCP server. (IP network)
                  example: 1.2.3.4/32
                address:
                  type: string
                  description: IP address of the DHCP server. This will be the gateway's
                    address in the Private Network. Defaults to the first address
                    of the subnet. (IP address)
                  example: 1.2.3.4
                  nullable: true
                pool_low:
                  type: string
                  description: Low IP (inclusive) of the dynamic address pool. Must
                    be in the config's subnet. Defaults to the second address of the
                    subnet. (IP address)
                  example: 1.2.3.4
                  nullable: true
                pool_high:
                  type: string
                  description: High IP (inclusive) of the dynamic address pool. Must
                    be in the config's subnet. Defaults to the last address of the
                    subnet. (IP address)
                  example: 1.2.3.4
                  nullable: true
                enable_dynamic:
                  type: boolean
                  description: Defines whether to enable dynamic pooling of IPs. When
                    false, only pre-existing DHCP reservations will be handed out.
                    Defaults to true.
                  nullable: true
                valid_lifetime:
                  type: string
                  description: How long DHCP entries will be valid for. Defaults to
                    1h (3600s). (in seconds)
                  example: 2.5s
                  nullable: true
                renew_timer:
                  type: string
                  description: After how long a renew will be attempted. Must be 30s
                    lower than `rebind_timer`. Defaults to 50m (3000s). (in seconds)
                  example: 2.5s
                  nullable: true
                rebind_timer:
                  type: string
                  description: After how long a DHCP client will query for a new lease
                    if previous renews fail. Must be 30s lower than `valid_lifetime`.
                    Defaults to 51m (3060s). (in seconds)
                  example: 2.5s
                  nullable: true
                push_default_route:
                  type: boolean
                  description: Defines whether the gateway should push a default route
                    to DHCP clients or only hand out IPs. Defaults to true.
                  nullable: true
                push_dns_server:
                  type: boolean
                  description: Defines whether the gateway should push custom DNS
                    servers to clients. This allows for Instance hostname -> IP resolution.
                    Defaults to true.
                  nullable: true
                dns_servers_override:
                  type: array
                  description: Array of DNS server IP addresses used to override the
                    DNS server list pushed to DHCP clients, instead of the gateway
                    itself.
                  nullable: true
                  items:
                    type: string
                dns_search:
                  type: array
                  description: Array of search paths in addition to the pushed DNS
                    configuration.
                  nullable: true
                  items:
                    type: string
                dns_local_name:
                  type: string
                  description: TLD given to hostnames in the Private Network. Allowed
                    characters are `a-z0-9-.`. Defaults to the slugified Private Network
                    name if created along a GatewayNetwork, or else to `priv`.
                  nullable: true
              required:
              - project_id
              - subnet
              x-properties-order:
              - project_id
              - subnet
              - address
              - pool_low
              - pool_high
              - enable_dynamic
              - valid_lifetime
              - renew_timer
              - rebind_timer
              - push_default_route
              - push_dns_server
              - dns_servers_override
              - dns_search
              - dns_local_name
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X POST \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{"project_id":"6170692e-7363-616c-6577-61792e636f6d","subnet":"1.2.3.4/32"}' \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/dhcps"
      - lang: HTTPie
        source: |-
          http POST "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/dhcps" \
            X-Auth-Token:$SCW_SECRET_KEY \
            project_id="6170692e-7363-616c-6577-61792e636f6d" \
            subnet="1.2.3.4/32"
  /vpc-gw/v1/zones/{zone}/dhcps/{dhcp_id}:
    get:
      tags:
      - DHCP
      operationId: GetDHCP
      summary: Get a DHCP configuration
      description: Get a DHCP configuration object, identified by its DHCP ID. The
        response object contains configuration settings for the assignment of IP addresses
        to devices on a Private Network attached to a Public Gateway. Note that the
        response does not contain the IDs of any Private Network / Public Gateway
        the configuration is attached to. Use the `List Public Gateway connections
        to Private Networks` method for that purpose, filtering on DHCP ID.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: dhcp_id
        description: ID of the DHCP configuration to fetch. (UUID format)
        required: true
        schema:
          type: string
          description: ID of the DHCP configuration to fetch. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.DHCP'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/dhcps/{dhcp_id}"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/dhcps/{dhcp_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
    patch:
      tags:
      - DHCP
      operationId: UpdateDHCP
      summary: Update a DHCP configuration
      description: Update a DHCP configuration object, identified by its DHCP ID.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: dhcp_id
        description: DHCP configuration to update. (UUID format)
        required: true
        schema:
          type: string
          description: DHCP configuration to update. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.DHCP'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                subnet:
                  type: string
                  description: Subnet for the DHCP server. (IP network)
                  example: 1.2.3.4/32
                  nullable: true
                address:
                  type: string
                  description: IP address of the DHCP server. This will be the Public
                    Gateway's address in the Private Network. It must be part of config's
                    subnet. (IP address)
                  example: 1.2.3.4
                  nullable: true
                pool_low:
                  type: string
                  description: Low IP (inclusive) of the dynamic address pool. Must
                    be in the config's subnet. (IP address)
                  example: 1.2.3.4
                  nullable: true
                pool_high:
                  type: string
                  description: High IP (inclusive) of the dynamic address pool. Must
                    be in the config's subnet. (IP address)
                  example: 1.2.3.4
                  nullable: true
                enable_dynamic:
                  type: boolean
                  description: Defines whether to enable dynamic pooling of IPs. When
                    false, only pre-existing DHCP reservations will be handed out.
                    Defaults to true.
                  nullable: true
                valid_lifetime:
                  type: string
                  description: How long DHCP entries will be valid for. (in seconds)
                  example: 2.5s
                  nullable: true
                renew_timer:
                  type: string
                  description: After how long a renew will be attempted. Must be 30s
                    lower than `rebind_timer`. (in seconds)
                  example: 2.5s
                  nullable: true
                rebind_timer:
                  type: string
                  description: After how long a DHCP client will query for a new lease
                    if previous renews fail. Must be 30s lower than `valid_lifetime`.
                    (in seconds)
                  example: 2.5s
                  nullable: true
                push_default_route:
                  type: boolean
                  description: Defines whether the gateway should push a default route
                    to DHCP clients, or only hand out IPs.
                  nullable: true
                push_dns_server:
                  type: boolean
                  description: Defines whether the gateway should push custom DNS
                    servers to clients. This allows for instance hostname -> IP resolution.
                  nullable: true
                dns_servers_override:
                  type: array
                  description: Array of DNS server IP addresses used to override the
                    DNS server list pushed to DHCP clients, instead of the gateway
                    itself.
                  nullable: true
                  items:
                    type: string
                dns_search:
                  type: array
                  description: Array of search paths in addition to the pushed DNS
                    configuration.
                  nullable: true
                  items:
                    type: string
                dns_local_name:
                  type: string
                  description: TLD given to hostnames in the Private Networks. If
                    an instance with hostname `foo` gets a lease, and this is set
                    to `bar`, `foo.bar` will resolve. Allowed characters are `a-z0-9-.`.
                  nullable: true
              x-properties-order:
              - subnet
              - address
              - pool_low
              - pool_high
              - enable_dynamic
              - valid_lifetime
              - renew_timer
              - rebind_timer
              - push_default_route
              - push_dns_server
              - dns_servers_override
              - dns_search
              - dns_local_name
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X PATCH \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{}' \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/dhcps/{dhcp_id}"
      - lang: HTTPie
        source: |-
          http PATCH "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/dhcps/{dhcp_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
    delete:
      tags:
      - DHCP
      operationId: DeleteDHCP
      summary: Delete a DHCP configuration
      description: Delete a DHCP configuration object, identified by its DHCP ID.
        Note that you cannot delete a DHCP configuration object that is currently
        being used by a Gateway Network.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: dhcp_id
        description: DHCP configuration ID to delete. (UUID format)
        required: true
        schema:
          type: string
          description: DHCP configuration ID to delete. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      responses:
        "204":
          description: ""
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X DELETE \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/dhcps/{dhcp_id}"
      - lang: HTTPie
        source: |-
          http DELETE "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/dhcps/{dhcp_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
  /vpc-gw/v1/zones/{zone}/gateway-networks:
    get:
      tags:
      - Gateway Networks
      operationId: ListGatewayNetworks
      summary: List Public Gateway connections to Private Networks
      description: List the connections between Public Gateways and Private Networks
        (a connection = a GatewayNetwork). You can choose to filter by `gateway-id`
        to list all Private Networks attached to the specified Public Gateway, or
        by `private_network_id` to list all Public Gateways attached to the specified
        Private Network. Other query parameters are also available. The result is
        an array of GatewayNetwork objects, each giving details of the connection
        between a given Public Gateway and a given Private Network.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: query
        name: order_by
        description: Order in which to return results.
        schema:
          type: string
          description: Order in which to return results.
          enum:
          - created_at_asc
          - created_at_desc
          - status_asc
          - status_desc
          default: created_at_asc
      - in: query
        name: page
        description: Page number.
        schema:
          type: integer
          description: Page number.
          format: int32
      - in: query
        name: page_size
        description: GatewayNetworks per page.
        schema:
          type: integer
          description: GatewayNetworks per page.
          format: uint32
      - in: query
        name: gateway_id
        description: Filter for GatewayNetworks connected to this gateway. (UUID format)
        schema:
          type: string
          description: Filter for GatewayNetworks connected to this gateway. (UUID
            format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      - in: query
        name: private_network_id
        description: Filter for GatewayNetworks connected to this Private Network.
          (UUID format)
        schema:
          type: string
          description: Filter for GatewayNetworks connected to this Private Network.
            (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      - in: query
        name: enable_masquerade
        description: Filter for GatewayNetworks with this `enable_masquerade` setting.
        schema:
          type: boolean
          description: Filter for GatewayNetworks with this `enable_masquerade` setting.
      - in: query
        name: dhcp_id
        description: Filter for GatewayNetworks using this DHCP configuration. (UUID
          format)
        schema:
          type: string
          description: Filter for GatewayNetworks using this DHCP configuration. (UUID
            format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      - in: query
        name: status
        description: Filter for GatewayNetworks with this current status this status.
          Use `unknown` to include all statuses.
        schema:
          type: string
          description: Filter for GatewayNetworks with this current status this status.
            Use `unknown` to include all statuses.
          enum:
          - unknown
          - created
          - attaching
          - configuring
          - ready
          - detaching
          - deleted
          default: unknown
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.ListGatewayNetworksResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateway-networks"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateway-networks" \
            X-Auth-Token:$SCW_SECRET_KEY
    post:
      tags:
      - Gateway Networks
      operationId: CreateGatewayNetwork
      summary: Attach a Public Gateway to a Private Network
      description: Attach a specific Public Gateway to a specific Private Network
        (create a GatewayNetwork). You can configure parameters for the connection
        including DHCP settings, whether to enable masquerade (dynamic NAT), and more.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.GatewayNetwork'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                gateway_id:
                  type: string
                  description: Public Gateway to connect. (UUID format)
                  example: 6170692e-7363-616c-6577-61792e636f6d
                private_network_id:
                  type: string
                  description: Private Network to connect. (UUID format)
                  example: 6170692e-7363-616c-6577-61792e636f6d
                enable_masquerade:
                  type: boolean
                  description: |-
                    Defines whether to enable masquerade (dynamic NAT) on the GatewayNetwork.
                    Note: this setting is ignored when passing `ipam_config`.
                enable_dhcp:
                  type: boolean
                  description: |-
                    Defines whether to enable DHCP on this Private Network.
                    Defaults to `true` if either `dhcp_id` or `dhcp` are present. If set to `true`, either `dhcp_id` or `dhcp` must be present.
                    Note: this setting is ignored when passing `ipam_config`.
                  nullable: true
                dhcp_id:
                  type: string
                  description: ID of an existing DHCP configuration object to use
                    for this GatewayNetwork. (UUID format)
                  example: 6170692e-7363-616c-6577-61792e636f6d
                  nullable: true
                  x-one-of: ip_config
                dhcp:
                  type: object
                  description: New DHCP configuration object to use for this GatewayNetwork.
                  properties:
                    zone:
                      type: string
                      description: The zone you want to target
                      enum:
                      - fr-par-1
                      - fr-par-2
                      - nl-ams-1
                      - nl-ams-2
                      - nl-ams-3
                      - pl-waw-1
                      - pl-waw-2
                      - pl-waw-3
                    project_id:
                      type: string
                      description: Project to create the DHCP configuration in. (UUID
                        format)
                      example: 6170692e-7363-616c-6577-61792e636f6d
                    subnet:
                      type: string
                      description: Subnet for the DHCP server. (IP network)
                      example: 1.2.3.4/32
                    address:
                      type: string
                      description: IP address of the DHCP server. This will be the
                        gateway's address in the Private Network. Defaults to the
                        first address of the subnet. (IP address)
                      example: 1.2.3.4
                      nullable: true
                    pool_low:
                      type: string
                      description: Low IP (inclusive) of the dynamic address pool.
                        Must be in the config's subnet. Defaults to the second address
                        of the subnet. (IP address)
                      example: 1.2.3.4
                      nullable: true
                    pool_high:
                      type: string
                      description: High IP (inclusive) of the dynamic address pool.
                        Must be in the config's subnet. Defaults to the last address
                        of the subnet. (IP address)
                      example: 1.2.3.4
                      nullable: true
                    enable_dynamic:
                      type: boolean
                      description: Defines whether to enable dynamic pooling of IPs.
                        When false, only pre-existing DHCP reservations will be handed
                        out. Defaults to true.
                      nullable: true
                    valid_lifetime:
                      type: string
                      description: How long DHCP entries will be valid for. Defaults
                        to 1h (3600s). (in seconds)
                      example: 2.5s
                      nullable: true
                    renew_timer:
                      type: string
                      description: After how long a renew will be attempted. Must
                        be 30s lower than `rebind_timer`. Defaults to 50m (3000s).
                        (in seconds)
                      example: 2.5s
                      nullable: true
                    rebind_timer:
                      type: string
                      description: After how long a DHCP client will query for a new
                        lease if previous renews fail. Must be 30s lower than `valid_lifetime`.
                        Defaults to 51m (3060s). (in seconds)
                      example: 2.5s
                      nullable: true
                    push_default_route:
                      type: boolean
                      description: Defines whether the gateway should push a default
                        route to DHCP clients or only hand out IPs. Defaults to true.
                      nullable: true
                    push_dns_server:
                      type: boolean
                      description: Defines whether the gateway should push custom
                        DNS servers to clients. This allows for Instance hostname
                        -> IP resolution. Defaults to true.
                      nullable: true
                    dns_servers_override:
                      type: array
                      description: Array of DNS server IP addresses used to override
                        the DNS server list pushed to DHCP clients, instead of the
                        gateway itself.
                      nullable: true
                      items:
                        type: string
                    dns_search:
                      type: array
                      description: Array of search paths in addition to the pushed
                        DNS configuration.
                      nullable: true
                      items:
                        type: string
                    dns_local_name:
                      type: string
                      description: TLD given to hostnames in the Private Network.
                        Allowed characters are `a-z0-9-.`. Defaults to the slugified
                        Private Network name if created along a GatewayNetwork, or
                        else to `priv`.
                      nullable: true
                  nullable: true
                  required:
                  - zone
                  - project_id
                  - subnet
                  x-properties-order:
                  - zone
                  - project_id
                  - subnet
                  - address
                  - pool_low
                  - pool_high
                  - enable_dynamic
                  - valid_lifetime
                  - renew_timer
                  - rebind_timer
                  - push_default_route
                  - push_dns_server
                  - dns_servers_override
                  - dns_search
                  - dns_local_name
                  x-one-of: ip_config
                address:
                  type: string
                  description: Static IP address in CIDR format to to use without
                    DHCP. (IP network)
                  example: 1.2.3.4/32
                  nullable: true
                  x-one-of: ip_config
                ipam_config:
                  type: object
                  description: |-
                    Auto-configure the GatewayNetwork using Scaleway's IPAM (IP address management service).
                    Note: all or none of the GatewayNetworks for a single gateway can use the IPAM. DHCP and IPAM configurations cannot be mixed. Some products may require that the Public Gateway uses the IPAM, to ensure correct functionality.
                  properties:
                    push_default_route:
                      type: boolean
                      description: Enabling the default route also enables masquerading.
                    ipam_ip_id:
                      type: string
                      description: Use this IPAM-booked IP ID as the Gateway's IP
                        in this Private Network. (UUID format)
                      example: 6170692e-7363-616c-6577-61792e636f6d
                      nullable: true
                  nullable: true
                  x-properties-order:
                  - push_default_route
                  - ipam_ip_id
                  x-one-of: ip_config
              x-properties-order:
              - gateway_id
              - private_network_id
              - enable_masquerade
              - enable_dhcp
              - dhcp_id
              - dhcp
              - address
              - ipam_config
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X POST \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{
              "enable_masquerade": false,
              "gateway_id": "6170692e-7363-616c-6577-61792e636f6d",
              "private_network_id": "6170692e-7363-616c-6577-61792e636f6d"
            }' \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateway-networks"
      - lang: HTTPie
        source: |-
          http POST "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateway-networks" \
            X-Auth-Token:$SCW_SECRET_KEY \
            enable_masquerade:=false \
            gateway_id="6170692e-7363-616c-6577-61792e636f6d" \
            private_network_id="6170692e-7363-616c-6577-61792e636f6d"
  /vpc-gw/v1/zones/{zone}/gateway-networks/{gateway_network_id}:
    get:
      tags:
      - Gateway Networks
      operationId: GetGatewayNetwork
      summary: Get a Public Gateway connection to a Private Network
      description: Get details of a given connection between a Public Gateway and
        a Private Network (this connection = a GatewayNetwork), specified by its `gateway_network_id`.
        The response object contains details of the connection including the IDs of
        the Public Gateway and Private Network, the dates the connection was created/updated
        and its configuration settings.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: gateway_network_id
        description: ID of the GatewayNetwork to fetch. (UUID format)
        required: true
        schema:
          type: string
          description: ID of the GatewayNetwork to fetch. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.GatewayNetwork'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateway-networks/{gateway_network_id}"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateway-networks/{gateway_network_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
    patch:
      tags:
      - Gateway Networks
      operationId: UpdateGatewayNetwork
      summary: Update a Public Gateway's connection to a Private Network
      description: Update the configuration parameters of a connection between a given
        Public Gateway and Private Network (the connection = a GatewayNetwork). Updatable
        parameters include DHCP settings and whether to enable traffic masquerade
        (dynamic NAT).
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: gateway_network_id
        description: ID of the GatewayNetwork to update. (UUID format)
        required: true
        schema:
          type: string
          description: ID of the GatewayNetwork to update. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.GatewayNetwork'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                enable_masquerade:
                  type: boolean
                  description: |-
                    Defines whether to enable masquerade (dynamic NAT) on the GatewayNetwork.
                    Note: this setting is ignored when passing `ipam_config`.
                  nullable: true
                enable_dhcp:
                  type: boolean
                  description: |-
                    Defines whether to enable DHCP on this Private Network.
                    Defaults to `true` if `dhcp_id` is present. If set to `true`, `dhcp_id` must be present.
                    Note: this setting is ignored when passing `ipam_config`.
                  nullable: true
                dhcp_id:
                  type: string
                  description: ID of the new DHCP configuration object to use with
                    this GatewayNetwork. (UUID format)
                  example: 6170692e-7363-616c-6577-61792e636f6d
                  nullable: true
                  x-one-of: ip_config
                address:
                  type: string
                  description: New static IP address. (IP network)
                  example: 1.2.3.4/32
                  nullable: true
                  x-one-of: ip_config
                ipam_config:
                  type: object
                  description: |-
                    Auto-configure the GatewayNetwork using Scaleway's IPAM (IP address management service).
                    Note: all or none of the GatewayNetworks for a single gateway can use the IPAM. DHCP and IPAM configurations cannot be mixed. Some products may require that the Public Gateway uses the IPAM, to ensure correct functionality.
                  properties:
                    push_default_route:
                      type: boolean
                      description: Enabling the default route also enables masquerading.
                      nullable: true
                    ipam_ip_id:
                      type: string
                      description: Use this IPAM-booked IP ID as the Gateway's IP
                        in this Private Network. (UUID format)
                      example: 6170692e-7363-616c-6577-61792e636f6d
                      nullable: true
                  nullable: true
                  x-properties-order:
                  - push_default_route
                  - ipam_ip_id
                  x-one-of: ip_config
              x-properties-order:
              - enable_masquerade
              - enable_dhcp
              - dhcp_id
              - address
              - ipam_config
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X PATCH \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{}' \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateway-networks/{gateway_network_id}"
      - lang: HTTPie
        source: |-
          http PATCH "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateway-networks/{gateway_network_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
    delete:
      tags:
      - Gateway Networks
      operationId: DeleteGatewayNetwork
      summary: Detach a Public Gateway from a Private Network
      description: Detach a given Public Gateway from a given Private Network, i.e.
        delete a GatewayNetwork specified by a gateway_network_id.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: gateway_network_id
        description: ID of the GatewayNetwork to delete. (UUID format)
        required: true
        schema:
          type: string
          description: ID of the GatewayNetwork to delete. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      - in: query
        name: cleanup_dhcp
        description: Defines whether to clean up attached DHCP configurations (if
          any, and if not attached to another Gateway Network).
        required: true
        schema:
          type: boolean
          description: Defines whether to clean up attached DHCP configurations (if
            any, and if not attached to another Gateway Network).
      responses:
        "204":
          description: ""
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X DELETE \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateway-networks/{gateway_network_id}?cleanup_dhcp=false"
      - lang: HTTPie
        source: |-
          http DELETE "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateway-networks/{gateway_network_id}" \
            X-Auth-Token:$SCW_SECRET_KEY \
            cleanup_dhcp==false
  /vpc-gw/v1/zones/{zone}/gateway-types:
    get:
      tags:
      - Gateway Types
      operationId: ListGatewayTypes
      summary: List Public Gateway types
      description: List the different Public Gateway commercial offer types available
        at Scaleway. The response is an array of objects describing the name and technical
        details of each available gateway type.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.ListGatewayTypesResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateway-types"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateway-types" \
            X-Auth-Token:$SCW_SECRET_KEY
  /vpc-gw/v1/zones/{zone}/gateways:
    get:
      tags:
      - Gateways
      operationId: ListGateways
      summary: List Public Gateways
      description: List Public Gateways in a given Scaleway Organization or Project.
        By default, results are displayed in ascending order of creation date.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: query
        name: order_by
        description: Order in which to return results.
        schema:
          type: string
          description: Order in which to return results.
          enum:
          - created_at_asc
          - created_at_desc
          - name_asc
          - name_desc
          - type_asc
          - type_desc
          - status_asc
          - status_desc
          default: created_at_asc
      - in: query
        name: page
        description: Page number to return.
        schema:
          type: integer
          description: Page number to return.
          format: int32
      - in: query
        name: page_size
        description: Gateways per page.
        schema:
          type: integer
          description: Gateways per page.
          format: uint32
      - in: query
        name: organization_id
        description: Include only gateways in this Organization. (UUID format)
        schema:
          type: string
          description: Include only gateways in this Organization. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      - in: query
        name: project_id
        description: Include only gateways in this Project. (UUID format)
        schema:
          type: string
          description: Include only gateways in this Project. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      - in: query
        name: name
        description: Filter for gateways which have this search term in their name.
        schema:
          type: string
          description: Filter for gateways which have this search term in their name.
      - in: query
        name: tags
        description: Filter for gateways with these tags.
        schema:
          type: array
          description: Filter for gateways with these tags.
          items:
            type: string
      - in: query
        name: type
        description: Filter for gateways of this type.
        schema:
          type: string
          description: Filter for gateways of this type.
      - in: query
        name: status
        description: Filter for gateways with this current status. Use `unknown` to
          include all statuses.
        schema:
          type: string
          description: Filter for gateways with this current status. Use `unknown`
            to include all statuses.
          enum:
          - unknown
          - stopped
          - allocating
          - configuring
          - running
          - stopping
          - failed
          - deleting
          - deleted
          - locked
          default: unknown
      - in: query
        name: private_network_id
        description: Filter for gateways attached to this Private nNetwork. (UUID
          format)
        schema:
          type: string
          description: Filter for gateways attached to this Private nNetwork. (UUID
            format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.ListGatewaysResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateways"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateways" \
            X-Auth-Token:$SCW_SECRET_KEY
    post:
      tags:
      - Gateways
      operationId: CreateGateway
      summary: Create a Public Gateway
      description: Create a new Public Gateway in the specified Scaleway Project,
        defining its **name**, **type** and other configuration details such as whether
        to enable SSH bastion.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.Gateway'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                project_id:
                  type: string
                  description: Scaleway Project to create the gateway in. (UUID format)
                  example: 6170692e-7363-616c-6577-61792e636f6d
                name:
                  type: string
                  description: Name for the gateway.
                tags:
                  type: array
                  description: Tags for the gateway.
                  items:
                    type: string
                type:
                  type: string
                  description: Gateway type (commercial offer type).
                upstream_dns_servers:
                  type: array
                  description: Array of DNS server IP addresses to override the gateway's
                    default recursive DNS servers.
                  items:
                    type: string
                ip_id:
                  type: string
                  description: Existing IP address to attach to the gateway. (UUID
                    format)
                  example: 6170692e-7363-616c-6577-61792e636f6d
                  nullable: true
                enable_smtp:
                  type: boolean
                  description: Defines whether SMTP traffic should be allowed pass
                    through the gateway.
                enable_bastion:
                  type: boolean
                  description: Defines whether SSH bastion should be enabled the gateway.
                bastion_port:
                  type: integer
                  description: Port of the SSH bastion.
                  format: uint32
                  nullable: true
              x-properties-order:
              - project_id
              - name
              - tags
              - type
              - upstream_dns_servers
              - ip_id
              - enable_smtp
              - enable_bastion
              - bastion_port
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X POST \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{
              "enable_bastion": false,
              "enable_smtp": false,
              "name": "string",
              "project_id": "6170692e-7363-616c-6577-61792e636f6d",
              "type": "string"
            }' \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateways"
      - lang: HTTPie
        source: |-
          http POST "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateways" \
            X-Auth-Token:$SCW_SECRET_KEY \
            enable_bastion:=false \
            enable_smtp:=false \
            name="string" \
            project_id="6170692e-7363-616c-6577-61792e636f6d" \
            type="string"
  /vpc-gw/v1/zones/{zone}/gateways/{gateway_id}:
    get:
      tags:
      - Gateways
      operationId: GetGateway
      summary: Get a Public Gateway
      description: Get details of a Public Gateway, specified by its gateway ID. The
        response object contains full details of the gateway, including its **name**,
        **type**, **status** and more.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: gateway_id
        description: ID of the gateway to fetch. (UUID format)
        required: true
        schema:
          type: string
          description: ID of the gateway to fetch. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.Gateway'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateways/{gateway_id}"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateways/{gateway_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
    patch:
      tags:
      - Gateways
      operationId: UpdateGateway
      summary: Update a Public Gateway
      description: Update the parameters of an existing Public Gateway, for example,
        its **name**, **tags**, **SSH bastion configuration**, and **DNS servers**.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: gateway_id
        description: ID of the gateway to update. (UUID format)
        required: true
        schema:
          type: string
          description: ID of the gateway to update. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.Gateway'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Name for the gateway.
                  nullable: true
                tags:
                  type: array
                  description: Tags for the gateway.
                  nullable: true
                  items:
                    type: string
                upstream_dns_servers:
                  type: array
                  description: Array of DNS server IP addresses to override the gateway's
                    default recursive DNS servers.
                  nullable: true
                  items:
                    type: string
                enable_bastion:
                  type: boolean
                  description: Defines whether SSH bastion should be enabled the gateway.
                  nullable: true
                bastion_port:
                  type: integer
                  description: Port of the SSH bastion.
                  format: uint32
                  nullable: true
                enable_smtp:
                  type: boolean
                  description: Defines whether SMTP traffic should be allowed to pass
                    through the gateway.
                  nullable: true
              x-properties-order:
              - name
              - tags
              - upstream_dns_servers
              - enable_bastion
              - bastion_port
              - enable_smtp
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X PATCH \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{}' \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateways/{gateway_id}"
      - lang: HTTPie
        source: |-
          http PATCH "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateways/{gateway_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
    delete:
      tags:
      - Gateways
      operationId: DeleteGateway
      summary: Delete a Public Gateway
      description: Delete an existing Public Gateway, specified by its gateway ID.
        This action is irreversible.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: gateway_id
        description: ID of the gateway to delete. (UUID format)
        required: true
        schema:
          type: string
          description: ID of the gateway to delete. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      - in: query
        name: cleanup_dhcp
        description: Defines whether to clean up attached DHCP configurations (if
          any, and if not attached to another Gateway Network).
        required: true
        schema:
          type: boolean
          description: Defines whether to clean up attached DHCP configurations (if
            any, and if not attached to another Gateway Network).
      responses:
        "204":
          description: ""
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X DELETE \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateways/{gateway_id}?cleanup_dhcp=false"
      - lang: HTTPie
        source: |-
          http DELETE "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateways/{gateway_id}" \
            X-Auth-Token:$SCW_SECRET_KEY \
            cleanup_dhcp==false
  /vpc-gw/v1/zones/{zone}/gateways/{gateway_id}/enable-ip-mobility:
    post:
      tags:
      - Gateways
      operationId: EnableIPMobility
      summary: Upgrade a Public Gateway to IP mobility
      description: 'Upgrade a Public Gateway to IP mobility (move from NAT IP to routed
        IP). This is idempotent: repeated calls after the first will return no error
        but have no effect.'
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: gateway_id
        description: ID of the gateway to upgrade to IP mobility. (UUID format)
        required: true
        schema:
          type: string
          description: ID of the gateway to upgrade to IP mobility. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      responses:
        "204":
          description: ""
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X POST \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{}' \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateways/{gateway_id}/enable-ip-mobility"
      - lang: HTTPie
        source: |-
          http POST "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateways/{gateway_id}/enable-ip-mobility" \
            X-Auth-Token:$SCW_SECRET_KEY
  /vpc-gw/v1/zones/{zone}/gateways/{gateway_id}/refresh-ssh-keys:
    post:
      tags:
      - Gateways
      operationId: RefreshSSHKeys
      summary: Refresh a Public Gateway's SSH keys
      description: Refresh the SSH keys of a given Public Gateway, specified by its
        gateway ID. This adds any new SSH keys in the gateway's Scaleway Project to
        the gateway itself.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: gateway_id
        description: ID of the gateway to refresh SSH keys on. (UUID format)
        required: true
        schema:
          type: string
          description: ID of the gateway to refresh SSH keys on. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.Gateway'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X POST \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{}' \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateways/{gateway_id}/refresh-ssh-keys"
      - lang: HTTPie
        source: |-
          http POST "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateways/{gateway_id}/refresh-ssh-keys" \
            X-Auth-Token:$SCW_SECRET_KEY
  /vpc-gw/v1/zones/{zone}/gateways/{gateway_id}/upgrade:
    post:
      tags:
      - Gateways
      operationId: UpgradeGateway
      summary: Upgrade a Public Gateway to the latest version and/or to a different
        commercial offer type
      description: Upgrade a given Public Gateway to the newest software version or
        to a different commercial offer type. This applies the latest bugfixes and
        features to your Public Gateway. Note that gateway service will be interrupted
        during the update.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: gateway_id
        description: ID of the gateway to upgrade. (UUID format)
        required: true
        schema:
          type: string
          description: ID of the gateway to upgrade. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.Gateway'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                type:
                  type: string
                  description: Gateway type (commercial offer).
              x-properties-order:
              - type
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X POST \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{}' \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateways/{gateway_id}/upgrade"
      - lang: HTTPie
        source: |-
          http POST "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/gateways/{gateway_id}/upgrade" \
            X-Auth-Token:$SCW_SECRET_KEY
  /vpc-gw/v1/zones/{zone}/ips:
    get:
      tags:
      - IPs
      operationId: ListIPs
      summary: List IPs
      description: List Public Gateway flexible IP addresses. A number of filter options
        are available for limiting results in the response.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: query
        name: order_by
        description: Order in which to return results.
        schema:
          type: string
          description: Order in which to return results.
          enum:
          - created_at_asc
          - created_at_desc
          - ip_asc
          - ip_desc
          - reverse_asc
          - reverse_desc
          default: created_at_asc
      - in: query
        name: page
        description: Page number.
        schema:
          type: integer
          description: Page number.
          format: int32
      - in: query
        name: page_size
        description: IP addresses per page.
        schema:
          type: integer
          description: IP addresses per page.
          format: uint32
      - in: query
        name: organization_id
        description: Filter for IP addresses in this Organization. (UUID format)
        schema:
          type: string
          description: Filter for IP addresses in this Organization. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      - in: query
        name: project_id
        description: Filter for IP addresses in this Project. (UUID format)
        schema:
          type: string
          description: Filter for IP addresses in this Project. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      - in: query
        name: tags
        description: Filter for IP addresses with these tags.
        schema:
          type: array
          description: Filter for IP addresses with these tags.
          items:
            type: string
      - in: query
        name: reverse
        description: Filter for IP addresses that have a reverse containing this string.
        schema:
          type: string
          description: Filter for IP addresses that have a reverse containing this
            string.
      - in: query
        name: is_free
        description: Filter based on whether the IP is attached to a gateway or not.
        schema:
          type: boolean
          description: Filter based on whether the IP is attached to a gateway or
            not.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.ListIPsResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/ips"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/ips" \
            X-Auth-Token:$SCW_SECRET_KEY
    post:
      tags:
      - IPs
      operationId: CreateIP
      summary: Reserve an IP
      description: Create (reserve) a new flexible IP address that can be used for
        a Public Gateway in a specified Scaleway Project.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.IP'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                project_id:
                  type: string
                  description: Project to create the IP address in. (UUID format)
                  example: 6170692e-7363-616c-6577-61792e636f6d
                tags:
                  type: array
                  description: Tags to give to the IP address.
                  items:
                    type: string
              x-properties-order:
              - project_id
              - tags
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X POST \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{"project_id":"6170692e-7363-616c-6577-61792e636f6d"}' \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/ips"
      - lang: HTTPie
        source: |-
          http POST "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/ips" \
            X-Auth-Token:$SCW_SECRET_KEY \
            project_id="6170692e-7363-616c-6577-61792e636f6d"
  /vpc-gw/v1/zones/{zone}/ips/{ip_id}:
    get:
      tags:
      - IPs
      operationId: GetIP
      summary: Get an IP
      description: Get details of a Public Gateway flexible IP address, identified
        by its IP ID. The response object contains information including which (if
        any) Public Gateway using this IP address, the reverse and various other metadata.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: ip_id
        description: ID of the IP address to get. (UUID format)
        required: true
        schema:
          type: string
          description: ID of the IP address to get. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.IP'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/ips/{ip_id}"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/ips/{ip_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
    patch:
      tags:
      - IPs
      operationId: UpdateIP
      summary: Update an IP
      description: Update details of an existing flexible IP address, including its
        tags, reverse and the Public Gateway it is assigned to.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: ip_id
        description: ID of the IP address to update. (UUID format)
        required: true
        schema:
          type: string
          description: ID of the IP address to update. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.IP'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                tags:
                  type: array
                  description: Tags to give to the IP address.
                  nullable: true
                  items:
                    type: string
                reverse:
                  type: string
                  description: Reverse to set on the address. Empty string to unset.
                  nullable: true
                gateway_id:
                  type: string
                  description: Gateway to attach the IP address to. Empty string to
                    detach. (UUID format)
                  example: 6170692e-7363-616c-6577-61792e636f6d
                  nullable: true
              x-properties-order:
              - tags
              - reverse
              - gateway_id
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X PATCH \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{}' \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/ips/{ip_id}"
      - lang: HTTPie
        source: |-
          http PATCH "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/ips/{ip_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
    delete:
      tags:
      - IPs
      operationId: DeleteIP
      summary: Delete an IP
      description: Delete a flexible IP address from your account. This action is
        irreversible.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: ip_id
        description: ID of the IP address to delete. (UUID format)
        required: true
        schema:
          type: string
          description: ID of the IP address to delete. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      responses:
        "204":
          description: ""
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X DELETE \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/ips/{ip_id}"
      - lang: HTTPie
        source: |-
          http DELETE "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/ips/{ip_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
  /vpc-gw/v1/zones/{zone}/pat-rules:
    get:
      tags:
      - PAT Rules
      operationId: ListPATRules
      summary: List PAT rules
      description: List PAT rules. You can filter by gateway ID to list all PAT rules
        for a particular gateway, or filter for PAT rules targeting a specific IP
        address or using a specific protocol.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: query
        name: order_by
        description: Order in which to return results.
        schema:
          type: string
          description: Order in which to return results.
          enum:
          - created_at_asc
          - created_at_desc
          - public_port_asc
          - public_port_desc
          default: created_at_asc
      - in: query
        name: page
        description: Page number.
        schema:
          type: integer
          description: Page number.
          format: int32
      - in: query
        name: page_size
        description: PAT rules per page.
        schema:
          type: integer
          description: PAT rules per page.
          format: uint32
      - in: query
        name: gateway_id
        description: Filter for PAT rules on this Gateway. (UUID format)
        schema:
          type: string
          description: Filter for PAT rules on this Gateway. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      - in: query
        name: private_ip
        description: Filter for PAT rules targeting this private ip. (IP address)
        schema:
          type: string
          description: Filter for PAT rules targeting this private ip. (IP address)
          example: 1.2.3.4
      - in: query
        name: protocol
        description: Filter for PAT rules with this protocol.
        schema:
          type: string
          description: Filter for PAT rules with this protocol.
          enum:
          - unknown
          - both
          - tcp
          - udp
          default: unknown
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.ListPATRulesResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/pat-rules"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/pat-rules" \
            X-Auth-Token:$SCW_SECRET_KEY
    post:
      tags:
      - PAT Rules
      operationId: CreatePATRule
      summary: Create a PAT rule
      description: Create a new PAT rule on a specified Public Gateway, defining the
        protocol to use, public port to listen on, and private port / IP address to
        map to.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.PATRule'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                gateway_id:
                  type: string
                  description: ID of the Gateway on which to create the rule. (UUID
                    format)
                  example: 6170692e-7363-616c-6577-61792e636f6d
                public_port:
                  type: integer
                  description: Public port to listen on.
                  format: uint32
                private_ip:
                  type: string
                  description: Private IP to forward data to. (IP address)
                  example: 1.2.3.4
                private_port:
                  type: integer
                  description: Private port to translate to.
                  format: uint32
                protocol:
                  type: string
                  description: Protocol the rule should apply to.
                  enum:
                  - unknown
                  - both
                  - tcp
                  - udp
                  default: unknown
              x-properties-order:
              - gateway_id
              - public_port
              - private_ip
              - private_port
              - protocol
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X POST \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{
              "gateway_id": "6170692e-7363-616c-6577-61792e636f6d",
              "private_ip": "1.2.3.4",
              "private_port": 42,
              "public_port": 42
            }' \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/pat-rules"
      - lang: HTTPie
        source: |-
          http POST "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/pat-rules" \
            X-Auth-Token:$SCW_SECRET_KEY \
            gateway_id="6170692e-7363-616c-6577-61792e636f6d" \
            private_ip="1.2.3.4" \
            private_port:=42 \
            public_port:=42
    put:
      tags:
      - PAT Rules
      operationId: SetPATRules
      summary: Set all PAT rules
      description: Set a definitive list of PAT rules attached to a Public Gateway.
        Each rule is identified by its public port and protocol. This will sync the
        current PAT rule list on the gateway with the new list, creating, updating
        or deleting PAT rules accordingly.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.SetPATRulesResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                gateway_id:
                  type: string
                  description: ID of the gateway on which to set the PAT rules. (UUID
                    format)
                  example: 6170692e-7363-616c-6577-61792e636f6d
                pat_rules:
                  type: array
                  description: New list of PAT rules.
                  items:
                    $ref: '#/components/schemas/scaleway.vpc_gw.v1.SetPATRulesRequest.Rule'
              required:
              - pat_rules
              x-properties-order:
              - gateway_id
              - pat_rules
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X PUT \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{"gateway_id":"6170692e-7363-616c-6577-61792e636f6d","pat_rules":[""]}' \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/pat-rules"
      - lang: HTTPie
        source: |-
          http PUT "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/pat-rules" \
            X-Auth-Token:$SCW_SECRET_KEY \
            gateway_id="6170692e-7363-616c-6577-61792e636f6d" \
            pat_rules:='[""]'
  /vpc-gw/v1/zones/{zone}/pat-rules/{pat_rule_id}:
    get:
      tags:
      - PAT Rules
      operationId: GetPATRule
      summary: Get a PAT rule
      description: Get a PAT rule, specified by its PAT rule ID. The response object
        gives full details of the PAT rule, including the Public Gateway it belongs
        to and the configuration settings in terms of public / private ports, private
        IP and protocol.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: pat_rule_id
        description: ID of the PAT rule to get. (UUID format)
        required: true
        schema:
          type: string
          description: ID of the PAT rule to get. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.PATRule'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/pat-rules/{pat_rule_id}"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/pat-rules/{pat_rule_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
    patch:
      tags:
      - PAT Rules
      operationId: UpdatePATRule
      summary: Update a PAT rule
      description: Update a PAT rule, specified by its PAT rule ID. Configuration
        settings including private/public port, private IP address and protocol can
        all be updated.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: pat_rule_id
        description: ID of the PAT rule to update. (UUID format)
        required: true
        schema:
          type: string
          description: ID of the PAT rule to update. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.vpc_gw.v1.PATRule'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                public_port:
                  type: integer
                  description: Public port to listen on.
                  format: uint32
                  nullable: true
                private_ip:
                  type: string
                  description: Private IP to forward data to. (IP address)
                  example: 1.2.3.4
                  nullable: true
                private_port:
                  type: integer
                  description: Private port to translate to.
                  format: uint32
                  nullable: true
                protocol:
                  type: string
                  description: Protocol the rule should apply to.
                  enum:
                  - unknown
                  - both
                  - tcp
                  - udp
                  default: unknown
              x-properties-order:
              - public_port
              - private_ip
              - private_port
              - protocol
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X PATCH \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{}' \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/pat-rules/{pat_rule_id}"
      - lang: HTTPie
        source: |-
          http PATCH "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/pat-rules/{pat_rule_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
    delete:
      tags:
      - PAT Rules
      operationId: DeletePATRule
      summary: Delete a PAT rule
      description: Delete a PAT rule, identified by its PAT rule ID. This action is
        irreversible.
      parameters:
      - in: path
        name: zone
        description: The zone you want to target
        required: true
        schema:
          type: string
          description: The zone you want to target
          enum:
          - fr-par-1
          - fr-par-2
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: pat_rule_id
        description: ID of the PAT rule to delete. (UUID format)
        required: true
        schema:
          type: string
          description: ID of the PAT rule to delete. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      responses:
        "204":
          description: ""
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X DELETE \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/pat-rules/{pat_rule_id}"
      - lang: HTTPie
        source: |-
          http DELETE "https://api.scaleway.com/vpc-gw/v1/zones/{zone}/pat-rules/{pat_rule_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
