openapi: 3.0.0
info:
  title: Instance API
  description: "Scaleway Instances are virtual machines in the cloud. Different [Instance
    types](https://www.scaleway.com/en/docs/compute/instances/reference-content/choosing-instance-type/)
    offer different technical specifications in terms of vCPU, RAM, bandwidth and
    storage. Once you have created your Instance and installed your image of choice
    (e.g. an operating system), you can [connect to your Instance via SSH](https://www.scaleway.com/en/docs/compute/instances/how-to/connect-to-instance/)
    to use it as you wish. When you are done using the Instance, you can delete it
    from your account.\n\n(switchcolumn)\n<Message type=\"tip\">\nTo retrieve information
    about the different [images](#path-images) available to install on Scaleway Instances,
    check out our [Marketplace API](https://www.scaleway.com/en/developers/api/marketplace).\n</Message>\n(switchcolumn)\n\n\n##
    Concepts\n\nRefer to our [dedicated concepts page](https://www.scaleway.com/en/docs/compute/instances/concepts/)
    to find definitions of all concepts and terminology related to Instances.\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 Instances
    API. See [Availability Zones](#availability-zones) below for help choosing an
    Availability Zone. You can find your Project ID in the [Scaleway console](https://console.scaleway.com/project/settings).\n
    \   </Message>\n\n    ```bash\n    export SCW_SECRET_KEY=\"<API secret key>\"\n
    \   export SCW_DEFAULT_ZONE=\"<Scaleway Availability Zone>\"\n    export SCW_PROJECT_ID=\"<Scaleway
    Project ID>\"\n    ```\n\n2. **Create an Instance**: Run the following command
    to create an Instance. You can customize the details in the payload (name, description,
    type, 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/instance/v1/zones/$SCW_DEFAULT_ZONE/servers\"
    \\\n        -d '{\n          \"name\": \"my-new-instance\", \n          \"project\":
    \"'\"$SCW_PROJECT_ID\"'\",\n          \"commercial_type\": \"GP1-S\", \n          \"image\":
    \"ubuntu_noble\",\n          \"enable_ipv6\": true,\n          \"volumes\": {\n
    \           \"0\":{\n              \"size\": 300000000000,\n              \"volume_type\":
    \"l_ssd\"\n            }\n          }\n        }'\n    ```\n\n        | Parameter
    \      | Description                                                                                                                                              |
    Valid values                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |\n
    \   | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------
    | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    |\n    | `name`            | A name of your choice for the Instance (string)                                                                                                          |
    Any string containing only alphanumeric characters, dots, spaces and dashes, e.g.
    `\"my-new-instance\"`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |\n
    \   | `project`         | The Project in which the Instance should be created
    (string)                                                                                             |
    Any valid Scaleway Project ID (see above), e.g. `\"b4bd99e0-b389-11ed-afa1-0242ac120002\"`
    \                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |\n
    \   | `commercial-type` | The commercial Instance type to create (string)                                                                                                          |
    Any valid ID of a Scaleway commercial Instance type, e.g. `\"GP1-S\"`, `\"PRO2-M\"`.
    Use the [List Instance Types](#path-instance-types-list-instance-types) endpoint
    to get a list of all valid Instance types and their IDs.                                                                                                                                                                                                                                                                               |\n
    \   | `image`           | The image to install on the Instance, e.g. a particular
    OS (string)                                                                                      |
    Any Scaleway image label, e.g. `\"ubuntu_noble\"`, or any valid Scaleway image
    ID, e.g. `\"6fc0ade6-d6a3-4fb9-87ab-2444ac71e5c0\"` which is the ID for the `Ubuntu
    24.04 Noble Numbat` image. Use the [List Instance Images](#path-images-list-instance-images)
    endpoint to get a list of all available images with their IDs and labels, or check
    out the [Scaleway Marketplace API](https://www.scaleway.com/en/developers/api/marketplace).
    \                                                                                                                                                                                                                                                                                                    |\n
    \   | `enable_ipv6`     | Whether to enable IPv6 on the Instance (boolean)                                                                                                         |
    `true` or `false`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |\n
    \   | `volumes`         | An object that specifies the storage volumes to attach
    to the Instance. For more information, see **Creating an Instance: the volumes
    object** in the [Technical information](#technical-information) section of this
    quickstart. | A (dictionary) object with a minimum of one key (`\"0\"`) whose
    value is another object containing the parameters `\"name\"` (a name for the volume),
    `\"size\"` (the size for the volume, in bytes), and `\"volume_type\"` (`\"l_ssd\"`
    or `\"b_ssd\"`). Additional keys for additional volumes should increment by 1
    each time (the second volume would have a key of `1`.) Further parameters are
    available, and it is possible to attach existing volumes rather than creating
    a new one, or create a volume from a snapshot. |\n\n3. **List your Instances**:
    run the following command to get a list of all the Instances in your account,
    with their details:\n\n    ```bash\n    curl -X GET \\\n      -H \"Content-Type:
    application/json\" \\\n      -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n      \"https://api.scaleway.com/instance/v1/zones/$SCW_DEFAULT_ZONE/servers/\"\n
    \   ```\n\n4. **Delete an Instance**: run the following command to delete an Instance,
    specified by its Instance ID:\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/instance/v1/zones/$SCW_DEFAULT_ZONE/servers/<Instance-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 information\n\n### Availability Zones\n\nInstances can be deployed in
    the following Availability Zones:\n\n| Name      | API ID                |\n|-----------|-----------------------|\n|
    Paris     | `fr-par-1` `fr-par-2` `fr-par-3` |\n| Amsterdam | `nl-ams-1` `nl-ams-2`
    `nl-ams-3` |\n| Warsaw    | `pl-waw-1` `pl-waw-2` `pl-waw-3` |\n\n(switchcolumn)\n(switchcolumn)\n\n###
    Pagination\n\nMost listing requests receive a paginated response. Requests against
    paginated endpoints accept two `query` arguments:\n\n- `page`, a positive integer
    to choose which page to return.\n- `per_page`, an positive integer lower or equal
    to 100 to select the number of items to return per page. The default value is
    `50`.\n\nPaginated endpoints usually also accept filters to search and sort results.These
    filters are documented along each endpoint documentation.\n\nThe `X-Total-Count`
    header contains the total number of items returned.\n\n(switchcolumn)\n(switchcolumn)\n\n###
    Creating an Instance: the volumes object\n\nWhen [creating an Instance](#path-instances-create-an-instance)
    using the Scaleway API, the `volumes` object is **not strictly required**. However,
    the defaults vary depending on certain conditions:\n\n1. If an image label is
    used:\n   - The default will be an `sbs_volume` volume.\n   - The size of this
    volume will be the OS size (typically 10GB in most cases).\n\n2. If an image ID
    from the marketplace is used (or any image based on a unified snapshot):\n   -
    If the Instance supports local storage:\n     - The default will be an `l_ssd`
    volume.\n     - The size of this volume will be the instance's maximum local storage
    capacity.\n   - If the Instance does not support local storage:\n     - The default
    will be a `b_ssd` volume.\n     - The size of this volume will be the OS size.\n\nIf
    you want to customize the storage configuration or add additional volumes, you
    will need to include the volumes object in your API request. This object should
    contain at least one (dictionary) object with a minimum of one key (`\"0\"`) whose
    value is another object containing the parameters `\"name\"` (a name for the volume),
    `\"size\"` (the size for the volume, in bytes), and `\"volume_type\"` (`\"sbs_volume\"`,
    `\"l_ssd\"` or `\"b_ssd\"`). Additional keys for additional volumes should increment
    by 1 each time (the second volume would have a key of `\"1\"`.)\n\nNote that volume
    `size` must respect the volume constraints of the Instance's `commercial_type`:
    for each type of Instance, a minimum amount of storage is required, and there
    is also a maximum that cannot be exceeded. All Instance types support Block Storage
    (`sbs_volume`, `b_ssd`), some also support local storage (`l_ssd`). Read more
    about these constraints in the [List Instance types](#path-instance-types-list-instance-types)
    documentation, specifically the `volume_constraints` parameter for each type listed
    in the response\n\nYou can use the `volumes` object in different ways. The table
    below shows which parameters are required for each of the following use cases:\n\n|
    Use case                | Required params       | Optional params     | Notes
    \                                 |\n|-------------------------|-----------------------|---------------------|----------------------------------------|\n|
    Create a volume (`l_ssd`, `b_ssd`, `sbs_volume`) from a snapshot of an image  |
    \ | `volume_type`, `size`, `boot` | If the `size` parameter is not set, the size
    of the volume will equal the size of the corresponding snapshot of the image.
    The image snapshot type should be compatible with the `volume_type`. |\n| Create
    a volume (`l_ssd`, `b_ssd`) from a snapshot     | `base_snapshot`, `name`, `volume_type`
    | `boot` |  |\n| Create a volume of type `sbs_volume` from a snapshot     | `base_snapshot`,
    `name`, `volume_type` | `size`, `boot` |  |\n| Create an empty volume      | `name`,
    `volume_type`, `size` | `boot` |  |\n| Attach an existing volume (`l_ssd`, `b_ssd`)
    \ | `id` | `boot` |  |\n| Attach an existing volume of type `sbs_volume`   | `id`,
    `volume_type` | `boot` |  |\n\n(switchcolumn)\n<Message type=\"note\">\nThis information
    is designed to help you correctly configure the `volumes` object when using the
    [Create an Instance](#path-instances-create-an-instance) or [Update an Instance](#path-instances-update-an-instance)
    methods. \n</Message>\n(switchcolumn)\n\n## Going further\n\nFor more help using
    Scaleway Instances, check out the following resources:\n- Our [main documentation](https://www.scaleway.com/en/docs/compute/instances/)\n-
    The #instance 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: Instances
  description: |
    Instances are computing units providing resources to run your applications on.
    Scaleway offers various Instance types including **Virtual Instances** and **dedicated GPU Instances**.
    **Note: Instances can be referenced as "servers" in API endpoints.**
- name: Images
  description: |
    Images are backups of your Instances.
    One image will contain all the volumes of your Instance and can be used to restore your Instance and its data. You can also use it to create a series of Instances with a predefined configuration.
    To copy not all but only one specified volume of an Instance, you can use the snapshot feature instead.
- name: Security Groups
  description: |
    A security group is a set of firewall rules on a set of Instances.
    Security groups enable you to create rules that either drop or allow incoming traffic from certain ports of your Instances.

    Security groups are stateful by default which means return traffic is automatically allowed, regardless of any rules.
    As a contrary, you have to switch in a stateless mode to define explicitly allowed.
- name: User Data
  description: |
    User data is a key/value store you can use to provide your instance with introspective data.

    As an example of use, Scaleway images contain the `scw-generate-ssh-keys` script, which generates the SSH server’s host keys, then stores their fingerprints as user data under the `ssh-host-fingerprints` key.
    This way, before connecting to the instance using SSH, one can query the fingerprints to ensure that the remote host is the expected one, thus avoiding any man-in-the-middle attack.

    There are two ways of accessing user data:
     - **From within a running Instance**, by requesting the Metadata API at http://169.254.42.42/user_data (or http://[fd00:42::42]/user_data using IPv6).
       The `scaleway-ecosystem` package, installed by default on all OS images provided by Scaleway, ships with the `scw-userdata` helper command that allows you to easily query the user data from the instance.
       For security reasons, viewing and editing user data is only allowed to queries originating from a port below 1024 (by default, only the super-user can bind to ports below 1024).
       To specify the source port with cURL, use the `--local-port` option (e.g. `curl --local-port 1-1023 http://169.254.42.42/user_data`).
     - **From the Instance API** by using the methods described below.
- name: Instance Types
  description: |
    All Instance types available in a specified zone.
    Each type contains all the features of the Instance (CPU, RAM, Storage) as well as their associated pricing.
- name: Volume Types
  description: |
    All volume types available in a specified zone.
    Each of these types will contains all the capabilities and constraints of the volume (min size, max size, snapshot).
- name: IPs
  description: |
    A flexible IP address is an IP address which you hold independently of any Instance.
    You can attach it to any of your Instances and do live migration of the IP address between your Instances.

    Note that attaching a flexible IP address to an Instance removes its previous public IP and interrupts any ongoing public connection to the Instance. This does not apply if you have migrated your server to the new Network stack and have at least one flexible IP attached to the Instance.
- name: Volumes
  description: |
    A volume is where you store your data inside your Instance. It
    appears as a block device on Linux that you can use to create
    a filesystem and mount it.

    Two different types of volume (`volume_type`) are available:
      - `l_ssd` is a local block storage: your data is downloaded on
        the hypervisor and you need to power off your Instance to attach
        or detach a volume.
      - `b_ssd` is a remote block storage: your data is stored on a
        centralized cluster. You can plug and unplug a volume while
        your Instance is running.

    Minimum and maximum volume sizes for each volume types can be queried
    from the zone `/products/volumes` API endpoint. _I.e_ for:
      - `fr-par-1`  use https://api.scaleway.com/instance/v1/zones/fr-par-1/products/volumes
      - `nl-ams-1`  use https://api.scaleway.com/instance/v1/zones/nl-ams-1/products/volumes

    Each type of volume is also subject to a global quota for the sum of all the
    volumes. This quota depends of the level of support and may be
    changed on demand.

    Be wary that when terminating an Instance, if you want to keep
    your block storage volume, **you must** detach it before you
    issue the `terminate` call.

    When using multiple block devices, it's advised to mount them by
    using their UUID instead of their device name. A device name is
    subject to change depending on the volumes order. Block devices
    UUIDs can be found in `/dev/disk/by-id/`.
- name: Snapshots
  description: |
    Snapshots contain the data of a specified volume at a particular point in time.
    The data can include the Instance's operating system,
    configuration information and/or files stored on the volume.

    A snapshot can be done from a specified volume, e.g. you
    have one Instance with a volume containing the OS and another one
    containing the application data, and you want to use different
    snapshot strategies on both volumes.

    A snapshot's volume type is its original volume's type (`l_ssd` or `b_ssd`).
    Volumes can be created from snapshots of their own type.
- name: Placement Groups
  description: |
    Placement groups allow the user to express a preference regarding
    the physical position of a group of Instances. The feature lets the user
    choose to either group Instances on the same physical hardware for
    best network throughput and low latency or to spread Instances across
    physically distanced hardware to reduce the risk of physical failure.

    The operating mode is selected by a `policy_type`. Two policy
    types are available:
      - `low_latency` will group Instances on the same hypervisors
      - `max_availability` will spread Instances across physically distanced hypervisors

    The `policy_type` is set to `max_availability` by default.

    For each policy types, one of the two `policy_mode` may be selected:
      - `optional` will start your Instances even if the constraint is not respected
      - `enforced` guarantees that if the Instance starts, the constraint is respected

    The `policy_mode` is set by default to `optional`.
- name: Private NICs
  description: |
    A Private NIC is the network interface that connects an Instance to a
    Private Network. An Instance can have multiple private NICs at the same
    time, but each NIC must belong to a different Private Network.
components:
  schemas:
    google.protobuf.BoolValue:
      type: boolean
      nullable: true
    google.protobuf.Int32Value:
      type: integer
      format: int32
      nullable: true
    google.protobuf.StringValue:
      type: string
      nullable: true
    google.protobuf.UInt32Value:
      type: integer
      format: uint32
      nullable: true
    scaleway.instance.v1.Arch:
      type: string
      enum:
      - unknown_arch
      - x86_64
      - arm
      - arm64
      default: unknown_arch
    scaleway.instance.v1.AttachServerVolumeRequest.VolumeType:
      type: string
      enum:
      - unknown_volume_type
      - l_ssd
      - b_ssd
      - sbs_volume
      default: unknown_volume_type
    scaleway.instance.v1.AttachServerVolumeResponse:
      type: object
      properties:
        server:
          $ref: '#/components/schemas/scaleway.instance.v1.Server'
      x-properties-order:
      - server
    scaleway.instance.v1.BootType:
      type: string
      enum:
      - local
      - bootscript
      - rescue
      default: local
    scaleway.instance.v1.Bootscript:
      type: object
      properties:
        architecture:
          $ref: '#/components/schemas/scaleway.instance.v1.Arch'
        bootcmdargs:
          type: string
        default:
          type: boolean
        dtb:
          type: string
        id:
          type: string
        initrd:
          type: string
        kernel:
          type: string
        organization:
          type: string
        public:
          type: boolean
        title:
          type: string
        project:
          type: string
        zone:
          type: string
          description: The zone you want to target
      x-properties-order:
      - architecture
      - bootcmdargs
      - default
      - dtb
      - id
      - initrd
      - kernel
      - organization
      - public
      - title
      - project
      - zone
    scaleway.instance.v1.CreateImageResponse:
      type: object
      properties:
        image:
          $ref: '#/components/schemas/scaleway.instance.v1.Image'
      x-properties-order:
      - image
    scaleway.instance.v1.CreateIpResponse:
      type: object
      properties:
        ip:
          $ref: '#/components/schemas/scaleway.instance.v1.Ip'
      x-properties-order:
      - ip
    scaleway.instance.v1.CreatePlacementGroupResponse:
      type: object
      properties:
        placement_group:
          $ref: '#/components/schemas/scaleway.instance.v1.PlacementGroup'
      x-properties-order:
      - placement_group
    scaleway.instance.v1.CreatePrivateNICResponse:
      type: object
      properties:
        private_nic:
          $ref: '#/components/schemas/scaleway.instance.v1.PrivateNIC'
      x-properties-order:
      - private_nic
    scaleway.instance.v1.CreateSecurityGroupResponse:
      type: object
      properties:
        security_group:
          $ref: '#/components/schemas/scaleway.instance.v1.SecurityGroup'
      x-properties-order:
      - security_group
    scaleway.instance.v1.CreateSecurityGroupRuleResponse:
      type: object
      properties:
        rule:
          $ref: '#/components/schemas/scaleway.instance.v1.SecurityGroupRule'
      x-properties-order:
      - rule
    scaleway.instance.v1.CreateServerResponse:
      type: object
      properties:
        server:
          $ref: '#/components/schemas/scaleway.instance.v1.Server'
      x-properties-order:
      - server
    scaleway.instance.v1.CreateSnapshotResponse:
      type: object
      properties:
        snapshot:
          $ref: '#/components/schemas/scaleway.instance.v1.Snapshot'
        task:
          $ref: '#/components/schemas/scaleway.instance.v1.Task'
      x-properties-order:
      - snapshot
      - task
    scaleway.instance.v1.CreateVolumeResponse:
      type: object
      properties:
        volume:
          $ref: '#/components/schemas/scaleway.instance.v1.Volume'
      x-properties-order:
      - volume
    scaleway.instance.v1.Dashboard:
      type: object
      properties:
        volumes_count:
          type: integer
          format: uint32
        running_servers_count:
          type: integer
          format: uint32
        servers_by_types:
          type: object
          properties:
            <servers_by_typeKey>:
              type: integer
              format: uint32
          additionalProperties: true
        images_count:
          type: integer
          format: uint32
        snapshots_count:
          type: integer
          format: uint32
        servers_count:
          type: integer
          format: uint32
        ips_count:
          type: integer
          format: uint32
        security_groups_count:
          type: integer
          format: uint32
        ips_unused:
          type: integer
          format: uint32
        volumes_l_ssd_count:
          type: integer
          format: uint32
        volumes_b_ssd_count:
          type: integer
          deprecated: true
          format: uint32
        volumes_l_ssd_total_size:
          type: integer
          description: (in bytes)
          format: uint64
        volumes_b_ssd_total_size:
          type: integer
          description: (in bytes)
          deprecated: true
          format: uint64
        private_nics_count:
          type: integer
          format: uint32
        placement_groups_count:
          type: integer
          format: uint32
      x-properties-order:
      - volumes_count
      - running_servers_count
      - servers_by_types
      - images_count
      - snapshots_count
      - servers_count
      - ips_count
      - security_groups_count
      - ips_unused
      - volumes_l_ssd_count
      - volumes_b_ssd_count
      - volumes_l_ssd_total_size
      - volumes_b_ssd_total_size
      - private_nics_count
      - placement_groups_count
    scaleway.instance.v1.DetachServerVolumeResponse:
      type: object
      properties:
        server:
          $ref: '#/components/schemas/scaleway.instance.v1.Server'
      x-properties-order:
      - server
    scaleway.instance.v1.ExportSnapshotResponse:
      type: object
      properties:
        task:
          $ref: '#/components/schemas/scaleway.instance.v1.Task'
      x-properties-order:
      - task
    scaleway.instance.v1.GetDashboardResponse:
      type: object
      properties:
        dashboard:
          $ref: '#/components/schemas/scaleway.instance.v1.Dashboard'
      x-properties-order:
      - dashboard
    scaleway.instance.v1.GetImageResponse:
      type: object
      properties:
        image:
          $ref: '#/components/schemas/scaleway.instance.v1.Image'
      x-properties-order:
      - image
    scaleway.instance.v1.GetIpResponse:
      type: object
      properties:
        ip:
          $ref: '#/components/schemas/scaleway.instance.v1.Ip'
      x-properties-order:
      - ip
    scaleway.instance.v1.GetPlacementGroupResponse:
      type: object
      properties:
        placement_group:
          $ref: '#/components/schemas/scaleway.instance.v1.PlacementGroup'
      x-properties-order:
      - placement_group
    scaleway.instance.v1.GetPlacementGroupServersResponse:
      type: object
      properties:
        servers:
          type: array
          description: Instances attached to the placement group.
          items:
            $ref: '#/components/schemas/scaleway.instance.v1.PlacementGroupServer'
      x-properties-order:
      - servers
    scaleway.instance.v1.GetPrivateNICResponse:
      type: object
      properties:
        private_nic:
          $ref: '#/components/schemas/scaleway.instance.v1.PrivateNIC'
      x-properties-order:
      - private_nic
    scaleway.instance.v1.GetSecurityGroupResponse:
      type: object
      properties:
        security_group:
          $ref: '#/components/schemas/scaleway.instance.v1.SecurityGroup'
      x-properties-order:
      - security_group
    scaleway.instance.v1.GetSecurityGroupRuleResponse:
      type: object
      properties:
        rule:
          $ref: '#/components/schemas/scaleway.instance.v1.SecurityGroupRule'
      x-properties-order:
      - rule
    scaleway.instance.v1.GetServerResponse:
      type: object
      properties:
        server:
          $ref: '#/components/schemas/scaleway.instance.v1.Server'
      x-properties-order:
      - server
    scaleway.instance.v1.GetServerTypesAvailabilityResponse:
      type: object
      properties:
        servers:
          type: object
          description: Map of server types.
          properties:
            <serverKey>:
              $ref: '#/components/schemas/scaleway.instance.v1.GetServerTypesAvailabilityResponse.Availability'
          additionalProperties: true
      x-properties-order:
      - servers
    scaleway.instance.v1.GetServerTypesAvailabilityResponse.Availability:
      type: object
      properties:
        availability:
          $ref: '#/components/schemas/scaleway.instance.v1.ServerTypesAvailability'
      x-properties-order:
      - availability
    scaleway.instance.v1.GetSnapshotResponse:
      type: object
      properties:
        snapshot:
          $ref: '#/components/schemas/scaleway.instance.v1.Snapshot'
      x-properties-order:
      - snapshot
    scaleway.instance.v1.GetVolumeResponse:
      type: object
      properties:
        volume:
          $ref: '#/components/schemas/scaleway.instance.v1.Volume'
      x-properties-order:
      - volume
    scaleway.instance.v1.Image:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        arch:
          $ref: '#/components/schemas/scaleway.instance.v1.Arch'
        creation_date:
          type: string
          description: (RFC 3339 format)
          format: date-time
          example: "2022-03-22T12:34:56.123456Z"
          nullable: true
        modification_date:
          type: string
          description: (RFC 3339 format)
          format: date-time
          example: "2022-03-22T12:34:56.123456Z"
          nullable: true
        default_bootscript:
          deprecated: true
          $ref: '#/components/schemas/scaleway.instance.v1.Bootscript'
        extra_volumes:
          type: object
          properties:
            <extra_volumeKey>:
              $ref: '#/components/schemas/scaleway.instance.v1.Volume'
          additionalProperties: true
        from_server:
          type: string
        organization:
          type: string
        public:
          type: boolean
        root_volume:
          $ref: '#/components/schemas/scaleway.instance.v1.VolumeSummary'
        state:
          $ref: '#/components/schemas/scaleway.instance.v1.Image.State'
        project:
          type: string
        tags:
          type: array
          items:
            type: string
        zone:
          type: string
          description: The zone you want to target
      x-properties-order:
      - id
      - name
      - arch
      - creation_date
      - modification_date
      - default_bootscript
      - extra_volumes
      - from_server
      - organization
      - public
      - root_volume
      - state
      - project
      - tags
      - zone
    scaleway.instance.v1.Image.State:
      type: string
      enum:
      - available
      - creating
      - error
      default: available
    scaleway.instance.v1.Ip:
      type: object
      properties:
        id:
          type: string
        address:
          type: string
          description: (IP address)
          example: 1.2.3.4
        reverse:
          $ref: '#/components/schemas/google.protobuf.StringValue'
        server:
          $ref: '#/components/schemas/scaleway.instance.v1.ServerSummary'
        organization:
          type: string
        tags:
          type: array
          items:
            type: string
        project:
          type: string
        type:
          $ref: '#/components/schemas/scaleway.instance.v1.IpType'
        state:
          $ref: '#/components/schemas/scaleway.instance.v1.Ip.State'
        prefix:
          type: string
          description: (IP network)
          example: 1.2.3.4/32
        ipam_id:
          type: string
          description: (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
        zone:
          type: string
          description: The zone you want to target
      x-properties-order:
      - id
      - address
      - reverse
      - server
      - organization
      - tags
      - project
      - type
      - state
      - prefix
      - ipam_id
      - zone
    scaleway.instance.v1.Ip.State:
      type: string
      enum:
      - unknown_state
      - detached
      - attached
      - pending
      - error
      default: unknown_state
    scaleway.instance.v1.IpType:
      type: string
      enum:
      - unknown_iptype
      - routed_ipv4
      - routed_ipv6
      default: unknown_iptype
    scaleway.instance.v1.ListImagesResponse:
      type: object
      properties:
        images:
          type: array
          description: List of images.
          items:
            $ref: '#/components/schemas/scaleway.instance.v1.Image'
      x-properties-order:
      - images
    scaleway.instance.v1.ListIpsResponse:
      type: object
      properties:
        ips:
          type: array
          description: List of ips.
          items:
            $ref: '#/components/schemas/scaleway.instance.v1.Ip'
      x-properties-order:
      - ips
    scaleway.instance.v1.ListPlacementGroupsResponse:
      type: object
      properties:
        placement_groups:
          type: array
          description: List of placement groups.
          items:
            $ref: '#/components/schemas/scaleway.instance.v1.PlacementGroup'
      x-properties-order:
      - placement_groups
    scaleway.instance.v1.ListPrivateNICsResponse:
      type: object
      properties:
        private_nics:
          type: array
          items:
            $ref: '#/components/schemas/scaleway.instance.v1.PrivateNIC'
        total_count:
          type: integer
          format: uint64
      x-properties-order:
      - private_nics
      - total_count
    scaleway.instance.v1.ListSecurityGroupRulesResponse:
      type: object
      properties:
        rules:
          type: array
          description: List of security rules.
          items:
            $ref: '#/components/schemas/scaleway.instance.v1.SecurityGroupRule'
      x-properties-order:
      - rules
    scaleway.instance.v1.ListSecurityGroupsResponse:
      type: object
      properties:
        security_groups:
          type: array
          description: List of security groups.
          items:
            $ref: '#/components/schemas/scaleway.instance.v1.SecurityGroup'
      x-properties-order:
      - security_groups
    scaleway.instance.v1.ListServerActionsResponse:
      type: object
      properties:
        actions:
          type: array
          items:
            $ref: '#/components/schemas/scaleway.instance.v1.Server.Action'
      x-properties-order:
      - actions
    scaleway.instance.v1.ListServerUserDataResponse:
      type: object
      properties:
        user_data:
          type: array
          items:
            type: string
      x-properties-order:
      - user_data
    scaleway.instance.v1.ListServersResponse:
      type: object
      properties:
        servers:
          type: array
          description: List of Instances.
          items:
            $ref: '#/components/schemas/scaleway.instance.v1.Server'
      x-properties-order:
      - servers
    scaleway.instance.v1.ListServersTypesResponse:
      type: object
      properties:
        servers:
          type: object
          description: List of Instance types.
          properties:
            <serverKey>:
              $ref: '#/components/schemas/scaleway.instance.v1.ServerType'
          additionalProperties: true
      x-properties-order:
      - servers
    scaleway.instance.v1.ListSnapshotsResponse:
      type: object
      properties:
        snapshots:
          type: array
          description: List of snapshots.
          items:
            $ref: '#/components/schemas/scaleway.instance.v1.Snapshot'
      x-properties-order:
      - snapshots
    scaleway.instance.v1.ListVolumesResponse:
      type: object
      properties:
        volumes:
          type: array
          description: List of volumes.
          items:
            $ref: '#/components/schemas/scaleway.instance.v1.Volume'
      x-properties-order:
      - volumes
    scaleway.instance.v1.ListVolumesTypesResponse:
      type: object
      properties:
        volumes:
          type: object
          description: Map of volume types.
          properties:
            <volumeKey>:
              $ref: '#/components/schemas/scaleway.instance.v1.VolumeType'
          additionalProperties: true
      x-properties-order:
      - volumes
    scaleway.instance.v1.MigrationPlan:
      type: object
      properties:
        volume:
          type: object
          description: A volume which will be migrated to SBS together with the snapshots,
            if present.
          properties:
            id:
              type: string
              description: Volume unique ID.
            name:
              type: string
              description: Volume name.
            export_uri:
              type: string
              description: Show the volume NBD export URI.
              deprecated: true
            size:
              type: integer
              description: Volume disk size. (in bytes)
              format: uint64
            volume_type:
              type: string
              description: Volume type.
              enum:
              - l_ssd
              - b_ssd
              - unified
              - scratch
              - sbs_volume
              - sbs_snapshot
              default: l_ssd
            creation_date:
              type: string
              description: Volume creation date. (RFC 3339 format)
              format: date-time
              example: "2022-03-22T12:34:56.123456Z"
              nullable: true
            modification_date:
              type: string
              description: Volume modification date. (RFC 3339 format)
              format: date-time
              example: "2022-03-22T12:34:56.123456Z"
              nullable: true
            organization:
              type: string
              description: Volume Organization ID.
            project:
              type: string
              description: Volume Project ID.
            tags:
              type: array
              description: Volume tags.
              items:
                type: string
            server:
              type: object
              description: Instance attached to the volume.
              properties:
                id:
                  type: string
                name:
                  type: string
              x-properties-order:
              - id
              - name
            state:
              type: string
              description: Volume state.
              enum:
              - available
              - snapshotting
              - fetching
              - resizing
              - saving
              - hotsyncing
              - error
              default: available
            zone:
              type: string
              description: Zone in which the volume is located.
          x-properties-order:
          - id
          - name
          - export_uri
          - size
          - volume_type
          - creation_date
          - modification_date
          - organization
          - project
          - tags
          - server
          - state
          - zone
        snapshots:
          type: array
          description: A list of snapshots which will be migrated to SBS together
            and with the volume, if present.
          items:
            $ref: '#/components/schemas/scaleway.instance.v1.Snapshot'
        validation_key:
          type: string
          description: A value to be passed to the call to the [Migrate a volume and/or
            snapshots to SBS](#path-volumes-migrate-a-volume-andor-snapshots-to-sbs-scaleway-block-storage)
            endpoint, to confirm that the execution of the plan is being requested.
      x-properties-order:
      - volume
      - snapshots
      - validation_key
    scaleway.instance.v1.NullableStringValue:
      type: string
      nullable: true
    scaleway.instance.v1.PlacementGroup:
      type: object
      properties:
        id:
          type: string
          description: Placement group unique ID.
        name:
          type: string
          description: Placement group name.
        organization:
          type: string
          description: Placement group Organization ID.
        project:
          type: string
          description: Placement group Project ID.
        tags:
          type: array
          description: Placement group tags.
          items:
            type: string
        policy_mode:
          type: string
          description: Select the failure mode when the placement cannot be respected,
            either optional or enforced.
          enum:
          - optional
          - enforced
          default: optional
        policy_type:
          type: string
          description: Select the behavior of the placement group, either low_latency
            (group) or max_availability (spread).
          enum:
          - max_availability
          - low_latency
          default: max_availability
        policy_respected:
          type: boolean
          description: |-
            True if the policy is respected, false otherwise.
            In the server endpoints the value is always false as it is deprecated.
            In the placement group endpoints the value is correct.
        zone:
          type: string
          description: Zone in which the placement group is located.
      x-properties-order:
      - id
      - name
      - organization
      - project
      - tags
      - policy_mode
      - policy_type
      - policy_respected
      - zone
    scaleway.instance.v1.PlacementGroup.PolicyMode:
      type: string
      enum:
      - optional
      - enforced
      default: optional
    scaleway.instance.v1.PlacementGroup.PolicyType:
      type: string
      enum:
      - max_availability
      - low_latency
      default: max_availability
    scaleway.instance.v1.PlacementGroupServer:
      type: object
      properties:
        id:
          type: string
          description: Instance UUID.
        name:
          type: string
          description: Instance name.
        policy_respected:
          type: boolean
          description: Defines whether the placement group policy is respected (either
            1 or 0).
      x-properties-order:
      - id
      - name
      - policy_respected
    scaleway.instance.v1.PrivateNIC:
      type: object
      properties:
        id:
          type: string
          description: Private NIC unique ID.
        server_id:
          type: string
          description: Instance to which the private NIC is attached.
        private_network_id:
          type: string
          description: Private Network the private NIC is attached to.
        mac_address:
          type: string
          description: Private NIC MAC address.
        state:
          type: string
          description: Private NIC state.
          enum:
          - available
          - syncing
          - syncing_error
          default: available
        tags:
          type: array
          description: Private NIC tags.
          items:
            type: string
      x-properties-order:
      - id
      - server_id
      - private_network_id
      - mac_address
      - state
      - tags
    scaleway.instance.v1.SecurityGroup:
      type: object
      properties:
        id:
          type: string
          description: Security group unique ID.
        name:
          type: string
          description: Security group name.
        description:
          type: string
          description: Security group description.
        enable_default_security:
          type: boolean
          description: True if SMTP is blocked on IPv4 and IPv6. This feature is read
            only, please open a support ticket if you need to make it configurable.
        inbound_default_policy:
          type: string
          description: Default inbound policy.
          enum:
          - unknown_policy
          - accept
          - drop
          default: unknown_policy
        outbound_default_policy:
          type: string
          description: Default outbound policy.
          enum:
          - unknown_policy
          - accept
          - drop
          default: unknown_policy
        organization:
          type: string
          description: Security group Organization ID.
        project:
          type: string
          description: Security group Project ID.
        tags:
          type: array
          description: Security group tags.
          items:
            type: string
        organization_default:
          type: boolean
          description: True if it is your default security group for this Organization
            ID.
          deprecated: true
        project_default:
          type: boolean
          description: True if it is your default security group for this Project
            ID.
        creation_date:
          type: string
          description: Security group creation date. (RFC 3339 format)
          format: date-time
          example: "2022-03-22T12:34:56.123456Z"
          nullable: true
        modification_date:
          type: string
          description: Security group modification date. (RFC 3339 format)
          format: date-time
          example: "2022-03-22T12:34:56.123456Z"
          nullable: true
        servers:
          type: array
          description: List of Instances attached to this security group.
          items:
            $ref: '#/components/schemas/scaleway.instance.v1.ServerSummary'
        stateful:
          type: boolean
          description: Defines whether the security group is stateful.
        state:
          type: string
          description: Security group state.
          enum:
          - available
          - syncing
          - syncing_error
          default: available
        zone:
          type: string
          description: Zone in which the security group is located.
      x-properties-order:
      - id
      - name
      - description
      - enable_default_security
      - inbound_default_policy
      - outbound_default_policy
      - organization
      - project
      - tags
      - organization_default
      - project_default
      - creation_date
      - modification_date
      - servers
      - stateful
      - state
      - zone
    scaleway.instance.v1.SecurityGroupRule:
      type: object
      properties:
        id:
          type: string
        protocol:
          $ref: '#/components/schemas/scaleway.instance.v1.SecurityGroupRule.Protocol'
        direction:
          $ref: '#/components/schemas/scaleway.instance.v1.SecurityGroupRule.Direction'
        action:
          $ref: '#/components/schemas/scaleway.instance.v1.SecurityGroupRule.Action'
        ip_range:
          type: string
          description: (IP network)
          example: 1.2.3.4/32
        dest_port_from:
          $ref: '#/components/schemas/google.protobuf.UInt32Value'
        dest_port_to:
          $ref: '#/components/schemas/google.protobuf.UInt32Value'
        position:
          type: integer
          format: uint32
        editable:
          type: boolean
        zone:
          type: string
          description: The zone you want to target
      x-properties-order:
      - id
      - protocol
      - direction
      - action
      - ip_range
      - dest_port_from
      - dest_port_to
      - position
      - editable
      - zone
    scaleway.instance.v1.SecurityGroupRule.Action:
      type: string
      enum:
      - unknown_action
      - accept
      - drop
      default: unknown_action
    scaleway.instance.v1.SecurityGroupRule.Direction:
      type: string
      enum:
      - unknown_direction
      - inbound
      - outbound
      default: unknown_direction
    scaleway.instance.v1.SecurityGroupRule.Protocol:
      type: string
      enum:
      - unknown_protocol
      - TCP
      - UDP
      - ICMP
      - ANY
      default: unknown_protocol
    scaleway.instance.v1.SecurityGroupTemplate:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
      x-properties-order:
      - id
      - name
    scaleway.instance.v1.Server:
      type: object
      properties:
        id:
          type: string
          description: Instance unique ID.
        name:
          type: string
          description: Instance name.
        organization:
          type: string
          description: Instance Organization ID.
        project:
          type: string
          description: Instance Project ID.
        allowed_actions:
          type: array
          description: List of allowed actions on the Instance.
          items:
            $ref: '#/components/schemas/scaleway.instance.v1.Server.Action'
        tags:
          type: array
          description: Tags associated with the Instance.
          items:
            type: string
        commercial_type:
          type: string
          description: Instance commercial type (eg. GP1-M).
        creation_date:
          type: string
          description: Instance creation date. (RFC 3339 format)
          format: date-time
          example: "2022-03-22T12:34:56.123456Z"
          nullable: true
        dynamic_ip_required:
          type: boolean
          description: True if a dynamic IPv4 is required.
        routed_ip_enabled:
          type: boolean
          description: True to configure the instance so it uses the routed IP mode.
            Use of `routed_ip_enabled` as `False` is deprecated.
          deprecated: true
        enable_ipv6:
          type: boolean
          description: True if IPv6 is enabled (deprecated and always `False` when
            `routed_ip_enabled` is `True`).
          deprecated: true
        hostname:
          type: string
          description: Instance host name.
        image:
          type: object
          description: Information about the Instance image.
          properties:
            id:
              type: string
            name:
              type: string
            arch:
              $ref: '#/components/schemas/scaleway.instance.v1.Arch'
            creation_date:
              type: string
              description: (RFC 3339 format)
              format: date-time
              example: "2022-03-22T12:34:56.123456Z"
              nullable: true
            modification_date:
              type: string
              description: (RFC 3339 format)
              format: date-time
              example: "2022-03-22T12:34:56.123456Z"
              nullable: true
            default_bootscript:
              deprecated: true
              $ref: '#/components/schemas/scaleway.instance.v1.Bootscript'
            extra_volumes:
              type: object
              properties:
                <extra_volumeKey>:
                  $ref: '#/components/schemas/scaleway.instance.v1.Volume'
              additionalProperties: true
            from_server:
              type: string
            organization:
              type: string
            public:
              type: boolean
            root_volume:
              $ref: '#/components/schemas/scaleway.instance.v1.VolumeSummary'
            state:
              $ref: '#/components/schemas/scaleway.instance.v1.Image.State'
            project:
              type: string
            tags:
              type: array
              items:
                type: string
            zone:
              type: string
              description: The zone you want to target
          x-properties-order:
          - id
          - name
          - arch
          - creation_date
          - modification_date
          - default_bootscript
          - extra_volumes
          - from_server
          - organization
          - public
          - root_volume
          - state
          - project
          - tags
          - zone
        protected:
          type: boolean
          description: Defines whether the Instance protection option is activated.
        private_ip:
          type: string
          description: Private IP address of the Instance (deprecated and always `null`
            when `routed_ip_enabled` is `True`).
          nullable: true
        public_ip:
          type: object
          description: Information about the public IP (deprecated in favor of `public_ips`).
          deprecated: true
          properties:
            id:
              type: string
              description: Unique ID of the IP address.
            address:
              type: string
              description: Instance's public IP-Address. (IP address)
              example: 1.2.3.4
            gateway:
              type: string
              description: Gateway's IP address. (IP address)
              example: 1.2.3.4
            netmask:
              type: string
              description: CIDR netmask.
            family:
              type: string
              description: IP address family (inet or inet6).
              enum:
              - inet
              - inet6
              default: inet
            dynamic:
              type: boolean
              description: True if the IP address is dynamic.
            provisioning_mode:
              type: string
              description: Information about this address provisioning mode.
              enum:
              - manual
              - dhcp
              - slaac
              default: manual
            tags:
              type: array
              description: Tags associated with the IP.
              items:
                type: string
            ipam_id:
              type: string
              description: The ip_id of an IPAM ip if the ip is created from IPAM,
                null if not. (UUID format)
              example: 6170692e-7363-616c-6577-61792e636f6d
            state:
              type: string
              description: IP address state.
              enum:
              - unknown_state
              - detached
              - attached
              - pending
              - error
              default: unknown_state
          x-properties-order:
          - id
          - address
          - gateway
          - netmask
          - family
          - dynamic
          - provisioning_mode
          - tags
          - ipam_id
          - state
        public_ips:
          type: array
          description: Information about all the public IPs attached to the server.
          items:
            $ref: '#/components/schemas/scaleway.instance.v1.Server.Ip'
        mac_address:
          type: string
          description: The server's MAC address.
        modification_date:
          type: string
          description: Instance modification date. (RFC 3339 format)
          format: date-time
          example: "2022-03-22T12:34:56.123456Z"
          nullable: true
        state:
          type: string
          description: Instance state.
          enum:
          - running
          - stopped
          - stopped in place
          - starting
          - stopping
          - locked
          default: running
        location:
          type: object
          description: Instance location.
          properties:
            cluster_id:
              type: string
            hypervisor_id:
              type: string
            node_id:
              type: string
            platform_id:
              type: string
            zone_id:
              type: string
          x-properties-order:
          - cluster_id
          - hypervisor_id
          - node_id
          - platform_id
          - zone_id
        ipv6:
          type: object
          description: Instance IPv6 address (deprecated when `routed_ip_enabled`
            is `True`).
          deprecated: true
          properties:
            address:
              type: string
              description: Instance IPv6 IP-Address. (IPv6 address)
              example: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
            gateway:
              type: string
              description: IPv6 IP-addresses gateway. (IPv6 address)
              example: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
            netmask:
              type: string
              description: IPv6 IP-addresses CIDR netmask.
          x-properties-order:
          - address
          - gateway
          - netmask
        boot_type:
          type: string
          description: Instance boot type.
          enum:
          - local
          - bootscript
          - rescue
          default: local
        volumes:
          type: object
          description: Instance volumes.
          properties:
            <volumeKey>:
              $ref: '#/components/schemas/scaleway.instance.v1.VolumeServer'
          additionalProperties: true
        security_group:
          type: object
          description: Instance security group.
          properties:
            id:
              type: string
            name:
              type: string
          x-properties-order:
          - id
          - name
        maintenances:
          type: array
          description: Instance planned maintenance.
          items:
            $ref: '#/components/schemas/scaleway.instance.v1.Server.Maintenance'
        state_detail:
          type: string
          description: Detailed information about the Instance state.
        arch:
          type: string
          description: Instance architecture.
          enum:
          - unknown_arch
          - x86_64
          - arm
          - arm64
          default: unknown_arch
        placement_group:
          type: object
          description: Instance placement group.
          properties:
            id:
              type: string
              description: Placement group unique ID.
            name:
              type: string
              description: Placement group name.
            organization:
              type: string
              description: Placement group Organization ID.
            project:
              type: string
              description: Placement group Project ID.
            tags:
              type: array
              description: Placement group tags.
              items:
                type: string
            policy_mode:
              type: string
              description: Select the failure mode when the placement cannot be respected,
                either optional or enforced.
              enum:
              - optional
              - enforced
              default: optional
            policy_type:
              type: string
              description: Select the behavior of the placement group, either low_latency
                (group) or max_availability (spread).
              enum:
              - max_availability
              - low_latency
              default: max_availability
            policy_respected:
              type: boolean
              description: |-
                True if the policy is respected, false otherwise.
                In the server endpoints the value is always false as it is deprecated.
                In the placement group endpoints the value is correct.
            zone:
              type: string
              description: Zone in which the placement group is located.
          x-properties-order:
          - id
          - name
          - organization
          - project
          - tags
          - policy_mode
          - policy_type
          - policy_respected
          - zone
        private_nics:
          type: array
          description: Instance private NICs.
          items:
            $ref: '#/components/schemas/scaleway.instance.v1.PrivateNIC'
        zone:
          type: string
          description: Zone in which the Instance is located.
        admin_password_encryption_ssh_key_id:
          type: string
          description: |-
            UUID of the SSH RSA key that will be used to encrypt the initial admin password for OS requiring it. Mandatory for Windows OS.
            The public_key value of this key is used to encrypt the admin password. When set to an empty string, reset this value and admin_password_encrypted_value to an empty string so a new password may be generated.
          nullable: true
        admin_password_encrypted_value:
          type: string
          description: |-
            A base64 encoded string containing the admin password encrypted with the public key pointed to by admin_password_encryption_ssh_key_id.
            This value is reset when admin_password_encryption_ssh_key_id is set to an empty string.
          nullable: true
        end_of_service:
          type: boolean
          description: True if the Instance type has reached end of service.
      x-properties-order:
      - id
      - name
      - organization
      - project
      - allowed_actions
      - tags
      - commercial_type
      - creation_date
      - dynamic_ip_required
      - routed_ip_enabled
      - enable_ipv6
      - hostname
      - image
      - protected
      - private_ip
      - public_ip
      - public_ips
      - mac_address
      - modification_date
      - state
      - location
      - ipv6
      - boot_type
      - volumes
      - security_group
      - maintenances
      - state_detail
      - arch
      - placement_group
      - private_nics
      - zone
      - admin_password_encryption_ssh_key_id
      - admin_password_encrypted_value
      - end_of_service
    scaleway.instance.v1.Server.Action:
      type: string
      enum:
      - poweron
      - backup
      - stop_in_place
      - poweroff
      - terminate
      - reboot
      - enable_routed_ip
      default: poweron
    scaleway.instance.v1.Server.Ip:
      type: object
      properties:
        id:
          type: string
          description: Unique ID of the IP address.
        address:
          type: string
          description: Instance's public IP-Address. (IP address)
          example: 1.2.3.4
        gateway:
          type: string
          description: Gateway's IP address. (IP address)
          example: 1.2.3.4
        netmask:
          type: string
          description: CIDR netmask.
        family:
          type: string
          description: IP address family (inet or inet6).
          enum:
          - inet
          - inet6
          default: inet
        dynamic:
          type: boolean
          description: True if the IP address is dynamic.
        provisioning_mode:
          type: string
          description: Information about this address provisioning mode.
          enum:
          - manual
          - dhcp
          - slaac
          default: manual
        tags:
          type: array
          description: Tags associated with the IP.
          items:
            type: string
        ipam_id:
          type: string
          description: The ip_id of an IPAM ip if the ip is created from IPAM, null
            if not. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
        state:
          type: string
          description: IP address state.
          enum:
          - unknown_state
          - detached
          - attached
          - pending
          - error
          default: unknown_state
      x-properties-order:
      - id
      - address
      - gateway
      - netmask
      - family
      - dynamic
      - provisioning_mode
      - tags
      - ipam_id
      - state
    scaleway.instance.v1.Server.Maintenance:
      type: object
      properties:
        reason:
          type: string
        start_date:
          type: string
          description: (RFC 3339 format)
          format: date-time
          example: "2022-03-22T12:34:56.123456Z"
          nullable: true
      x-properties-order:
      - reason
      - start_date
    scaleway.instance.v1.ServerActionRequest.VolumeBackupTemplate:
      type: object
      properties:
        volume_type:
          type: string
          description: |-
            Snapshot's volume type.
            Overrides the `volume_type` of the snapshot for this volume.
            If omitted, the volume type of the original volume will be used.
          enum:
          - unknown_volume_type
          - l_ssd
          - b_ssd
          - unified
          default: unknown_volume_type
      x-properties-order:
      - volume_type
    scaleway.instance.v1.ServerActionResponse:
      type: object
      properties:
        task:
          $ref: '#/components/schemas/scaleway.instance.v1.Task'
      x-properties-order:
      - task
    scaleway.instance.v1.ServerCompatibleTypes:
      type: object
      properties:
        compatible_types:
          type: array
          description: Instance compatible types.
          items:
            type: string
      x-properties-order:
      - compatible_types
    scaleway.instance.v1.ServerSummary:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
      x-properties-order:
      - id
      - name
    scaleway.instance.v1.ServerType:
      type: object
      properties:
        monthly_price:
          type: number
          description: Estimated monthly price, for a 30 days month, in Euro.
          deprecated: true
          format: float
        hourly_price:
          type: number
          description: Hourly price in Euro.
          format: float
        alt_names:
          type: array
          description: Alternative Instance name, if any.
          items:
            type: string
        per_volume_constraint:
          type: object
          description: Additional volume constraints.
          properties:
            l_ssd:
              type: object
              description: Local SSD volumes.
              properties:
                min_size:
                  type: integer
                  description: Minimum volume size in bytes. (in bytes)
                  format: uint64
                max_size:
                  type: integer
                  description: Maximum volume size in bytes. (in bytes)
                  format: uint64
              x-properties-order:
              - min_size
              - max_size
          x-properties-order:
          - l_ssd
        volumes_constraint:
          type: object
          description: Initial volume constraints.
          properties:
            min_size:
              type: integer
              description: Minimum volume size in bytes. (in bytes)
              format: uint64
            max_size:
              type: integer
              description: Maximum volume size in bytes. (in bytes)
              format: uint64
          x-properties-order:
          - min_size
          - max_size
        ncpus:
          type: integer
          description: Number of CPU.
          format: uint32
        gpu:
          type: integer
          description: Number of GPU.
          format: uint64
          nullable: true
        ram:
          type: integer
          description: Available RAM in bytes.
          format: uint64
        gpu_info:
          type: object
          description: GPU information.
          properties:
            gpu_manufacturer:
              type: string
              description: GPU manufacturer.
            gpu_name:
              type: string
              description: GPU model name.
            gpu_memory:
              type: integer
              description: RAM of a single GPU, in bytes. (in bytes)
              format: uint64
          x-properties-order:
          - gpu_manufacturer
          - gpu_name
          - gpu_memory
        arch:
          type: string
          description: CPU architecture.
          enum:
          - unknown_arch
          - x86_64
          - arm
          - arm64
          default: unknown_arch
        network:
          type: object
          description: Network available for the Instance.
          properties:
            interfaces:
              type: array
              description: List of available network interfaces.
              items:
                $ref: '#/components/schemas/scaleway.instance.v1.ServerType.Network.Interface'
            sum_internal_bandwidth:
              type: integer
              description: Total maximum internal bandwidth in bits per seconds.
              format: uint64
              nullable: true
            sum_internet_bandwidth:
              type: integer
              description: Total maximum internet bandwidth in bits per seconds.
              format: uint64
              nullable: true
            ipv6_support:
              type: boolean
              description: True if IPv6 is enabled.
          x-properties-order:
          - interfaces
          - sum_internal_bandwidth
          - sum_internet_bandwidth
          - ipv6_support
        capabilities:
          type: object
          description: Capabilities.
          properties:
            block_storage:
              type: boolean
              description: Defines whether the Instance supports block storage.
              nullable: true
            boot_types:
              type: array
              description: List of supported boot types.
              items:
                $ref: '#/components/schemas/scaleway.instance.v1.BootType'
            max_file_systems:
              type: integer
              description: Max number of SFS (Scaleway File Systems) that can be attached
                to the Instance.
              format: uint32
          x-properties-order:
          - block_storage
          - boot_types
          - max_file_systems
        scratch_storage_max_size:
          type: integer
          description: Maximum available scratch storage. (in bytes)
          format: uint64
          nullable: true
        block_bandwidth:
          type: integer
          description: The maximum bandwidth allocated to block storage access (in
            bytes per second).
          format: uint64
          nullable: true
        end_of_service:
          type: boolean
          description: True if this Instance type has reached end of service.
      x-properties-order:
      - monthly_price
      - hourly_price
      - alt_names
      - per_volume_constraint
      - volumes_constraint
      - ncpus
      - gpu
      - ram
      - gpu_info
      - arch
      - network
      - capabilities
      - scratch_storage_max_size
      - block_bandwidth
      - end_of_service
    scaleway.instance.v1.ServerType.Network.Interface:
      type: object
      properties:
        internal_bandwidth:
          type: integer
          description: Maximum internal bandwidth in bits per seconds.
          format: uint64
          nullable: true
        internet_bandwidth:
          type: integer
          description: Maximum internet bandwidth in bits per seconds.
          format: uint64
          nullable: true
      x-properties-order:
      - internal_bandwidth
      - internet_bandwidth
    scaleway.instance.v1.ServerTypesAvailability:
      type: string
      enum:
      - available
      - scarce
      - shortage
      default: available
    scaleway.instance.v1.SetImageResponse:
      type: object
      properties:
        image:
          $ref: '#/components/schemas/scaleway.instance.v1.Image'
      x-properties-order:
      - image
    scaleway.instance.v1.SetPlacementGroupResponse:
      type: object
      properties:
        placement_group:
          $ref: '#/components/schemas/scaleway.instance.v1.PlacementGroup'
      x-properties-order:
      - placement_group
    scaleway.instance.v1.SetPlacementGroupServersResponse:
      type: object
      properties:
        servers:
          type: array
          description: Instances attached to the placement group.
          items:
            $ref: '#/components/schemas/scaleway.instance.v1.PlacementGroupServer'
      x-properties-order:
      - servers
    scaleway.instance.v1.SetSecurityGroupResponse:
      type: object
      properties:
        security_group:
          $ref: '#/components/schemas/scaleway.instance.v1.SecurityGroup'
      x-properties-order:
      - security_group
    scaleway.instance.v1.SetSecurityGroupRuleResponse:
      type: object
      properties:
        rule:
          $ref: '#/components/schemas/scaleway.instance.v1.SecurityGroupRule'
      x-properties-order:
      - rule
    scaleway.instance.v1.SetSecurityGroupRulesRequest.Rule:
      type: object
      properties:
        id:
          type: string
          description: UUID of the security rule to update. If no value is provided,
            a new rule will be created.
          nullable: true
        action:
          type: string
          description: Action to apply when the rule matches a packet.
          enum:
          - unknown_action
          - accept
          - drop
          default: unknown_action
        protocol:
          type: string
          description: Protocol family this rule applies to.
          enum:
          - unknown_protocol
          - TCP
          - UDP
          - ICMP
          - ANY
          default: unknown_protocol
        direction:
          type: string
          description: Direction the rule applies to.
          enum:
          - unknown_direction
          - inbound
          - outbound
          default: unknown_direction
        ip_range:
          type: string
          description: Range of IP addresses these rules apply to. (IP network)
          example: 1.2.3.4/32
        dest_port_from:
          type: integer
          description: Beginning of the range of ports this rule applies to (inclusive).
            This value will be set to null if protocol is ICMP or ANY.
          format: uint32
          nullable: true
        dest_port_to:
          type: integer
          description: End of the range of ports this rule applies to (inclusive).
            This value will be set to null if protocol is ICMP or ANY, or if it is
            equal to dest_port_from.
          format: uint32
          nullable: true
        position:
          type: integer
          description: Position of this rule in the security group rules list. If
            several rules are passed with the same position, the resulting order is
            undefined.
          format: uint32
        editable:
          type: boolean
          description: Indicates if this rule is editable. Rules with the value false
            will be ignored.
          nullable: true
        zone:
          type: string
          description: Zone of the rule. This field is ignored.
      x-properties-order:
      - id
      - action
      - protocol
      - direction
      - ip_range
      - dest_port_from
      - dest_port_to
      - position
      - editable
      - zone
    scaleway.instance.v1.SetSecurityGroupRulesResponse:
      type: object
      properties:
        rules:
          type: array
          items:
            $ref: '#/components/schemas/scaleway.instance.v1.SecurityGroupRule'
      x-properties-order:
      - rules
    scaleway.instance.v1.SetSnapshotResponse:
      type: object
      properties:
        snapshot:
          $ref: '#/components/schemas/scaleway.instance.v1.Snapshot'
      x-properties-order:
      - snapshot
    scaleway.instance.v1.SetVolumeResponse:
      type: object
      properties:
        volume:
          $ref: '#/components/schemas/scaleway.instance.v1.Volume'
      x-properties-order:
      - volume
    scaleway.instance.v1.Snapshot:
      type: object
      properties:
        id:
          type: string
          description: Snapshot ID.
        name:
          type: string
          description: Snapshot name.
        organization:
          type: string
          description: Snapshot Organization ID.
        project:
          type: string
          description: Snapshot Project ID.
        tags:
          type: array
          description: Snapshot tags.
          items:
            type: string
        volume_type:
          type: string
          description: Snapshot volume type.
          enum:
          - l_ssd
          - b_ssd
          - unified
          - scratch
          - sbs_volume
          - sbs_snapshot
          default: l_ssd
        size:
          type: integer
          description: Snapshot size. (in bytes)
          format: uint64
        state:
          type: string
          description: Snapshot state.
          enum:
          - available
          - snapshotting
          - error
          - invalid_data
          - importing
          - exporting
          default: available
        base_volume:
          type: object
          description: Volume on which the snapshot is based on.
          properties:
            id:
              type: string
              description: Volume ID on which the snapshot is based.
            name:
              type: string
              description: Volume name on which the snapshot is based on.
          x-properties-order:
          - id
          - name
        creation_date:
          type: string
          description: Snapshot creation date. (RFC 3339 format)
          format: date-time
          example: "2022-03-22T12:34:56.123456Z"
          nullable: true
        modification_date:
          type: string
          description: Snapshot modification date. (RFC 3339 format)
          format: date-time
          example: "2022-03-22T12:34:56.123456Z"
          nullable: true
        zone:
          type: string
          description: Snapshot zone.
        error_reason:
          type: string
          description: Reason for the failed snapshot import.
          nullable: true
      x-properties-order:
      - id
      - name
      - organization
      - project
      - tags
      - volume_type
      - size
      - state
      - base_volume
      - creation_date
      - modification_date
      - zone
      - error_reason
    scaleway.instance.v1.Snapshot.BaseVolume:
      type: object
      properties:
        id:
          type: string
          description: Volume ID on which the snapshot is based.
        name:
          type: string
          description: Volume name on which the snapshot is based on.
      x-properties-order:
      - id
      - name
    scaleway.instance.v1.Snapshot.State:
      type: string
      enum:
      - available
      - snapshotting
      - error
      - invalid_data
      - importing
      - exporting
      default: available
    scaleway.instance.v1.Task:
      type: object
      properties:
        id:
          type: string
          description: Unique ID of the task.
        description:
          type: string
          description: Description of the task.
        progress:
          type: integer
          description: Progress of the task in percent.
          format: int32
        started_at:
          type: string
          description: Task start date. (RFC 3339 format)
          format: date-time
          example: "2022-03-22T12:34:56.123456Z"
          nullable: true
        terminated_at:
          type: string
          description: Task end date. (RFC 3339 format)
          format: date-time
          example: "2022-03-22T12:34:56.123456Z"
          nullable: true
        status:
          type: string
          description: Task status.
          enum:
          - pending
          - started
          - success
          - failure
          - retry
          default: pending
        href_from:
          type: string
        href_result:
          type: string
        zone:
          type: string
          description: Zone in which the task is executed.
      x-properties-order:
      - id
      - description
      - progress
      - started_at
      - terminated_at
      - status
      - href_from
      - href_result
      - zone
    scaleway.instance.v1.UpdateImageResponse:
      type: object
      properties:
        image:
          $ref: '#/components/schemas/scaleway.instance.v1.Image'
      x-properties-order:
      - image
    scaleway.instance.v1.UpdateIpResponse:
      type: object
      properties:
        ip:
          $ref: '#/components/schemas/scaleway.instance.v1.Ip'
      x-properties-order:
      - ip
    scaleway.instance.v1.UpdatePlacementGroupResponse:
      type: object
      properties:
        placement_group:
          $ref: '#/components/schemas/scaleway.instance.v1.PlacementGroup'
      x-properties-order:
      - placement_group
    scaleway.instance.v1.UpdatePlacementGroupServersResponse:
      type: object
      properties:
        servers:
          type: array
          description: Instances attached to the placement group.
          items:
            $ref: '#/components/schemas/scaleway.instance.v1.PlacementGroupServer'
      x-properties-order:
      - servers
    scaleway.instance.v1.UpdateSecurityGroupResponse:
      type: object
      properties:
        security_group:
          $ref: '#/components/schemas/scaleway.instance.v1.SecurityGroup'
      x-properties-order:
      - security_group
    scaleway.instance.v1.UpdateSecurityGroupRuleResponse:
      type: object
      properties:
        rule:
          $ref: '#/components/schemas/scaleway.instance.v1.SecurityGroupRule'
      x-properties-order:
      - rule
    scaleway.instance.v1.UpdateServerResponse:
      type: object
      properties:
        server:
          $ref: '#/components/schemas/scaleway.instance.v1.Server'
      x-properties-order:
      - server
    scaleway.instance.v1.UpdateSnapshotResponse:
      type: object
      properties:
        snapshot:
          $ref: '#/components/schemas/scaleway.instance.v1.Snapshot'
      x-properties-order:
      - snapshot
    scaleway.instance.v1.UpdateVolumeResponse:
      type: object
      properties:
        volume:
          $ref: '#/components/schemas/scaleway.instance.v1.Volume'
      x-properties-order:
      - volume
    scaleway.instance.v1.Volume:
      type: object
      properties:
        id:
          type: string
          description: Volume unique ID.
        name:
          type: string
          description: Volume name.
        export_uri:
          type: string
          description: Show the volume NBD export URI.
          deprecated: true
        size:
          type: integer
          description: Volume disk size. (in bytes)
          format: uint64
        volume_type:
          type: string
          description: Volume type.
          enum:
          - l_ssd
          - b_ssd
          - unified
          - scratch
          - sbs_volume
          - sbs_snapshot
          default: l_ssd
        creation_date:
          type: string
          description: Volume creation date. (RFC 3339 format)
          format: date-time
          example: "2022-03-22T12:34:56.123456Z"
          nullable: true
        modification_date:
          type: string
          description: Volume modification date. (RFC 3339 format)
          format: date-time
          example: "2022-03-22T12:34:56.123456Z"
          nullable: true
        organization:
          type: string
          description: Volume Organization ID.
        project:
          type: string
          description: Volume Project ID.
        tags:
          type: array
          description: Volume tags.
          items:
            type: string
        server:
          type: object
          description: Instance attached to the volume.
          properties:
            id:
              type: string
            name:
              type: string
          x-properties-order:
          - id
          - name
        state:
          type: string
          description: Volume state.
          enum:
          - available
          - snapshotting
          - fetching
          - resizing
          - saving
          - hotsyncing
          - error
          default: available
        zone:
          type: string
          description: Zone in which the volume is located.
      x-properties-order:
      - id
      - name
      - export_uri
      - size
      - volume_type
      - creation_date
      - modification_date
      - organization
      - project
      - tags
      - server
      - state
      - zone
    scaleway.instance.v1.Volume.VolumeType:
      type: string
      enum:
      - l_ssd
      - b_ssd
      - unified
      - scratch
      - sbs_volume
      - sbs_snapshot
      default: l_ssd
    scaleway.instance.v1.VolumeImageUpdateTemplate:
      type: object
      properties:
        id:
          type: string
          description: UUID of the snapshot. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      required:
      - id
      x-properties-order:
      - id
    scaleway.instance.v1.VolumeServer:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        export_uri:
          type: string
          deprecated: true
        organization:
          type: string
        server:
          $ref: '#/components/schemas/scaleway.instance.v1.ServerSummary'
        size:
          type: integer
          description: (in bytes)
          format: uint64
        volume_type:
          $ref: '#/components/schemas/scaleway.instance.v1.VolumeServer.VolumeType'
        creation_date:
          type: string
          description: (RFC 3339 format)
          format: date-time
          example: "2022-03-22T12:34:56.123456Z"
          nullable: true
        modification_date:
          type: string
          description: (RFC 3339 format)
          format: date-time
          example: "2022-03-22T12:34:56.123456Z"
          nullable: true
        state:
          $ref: '#/components/schemas/scaleway.instance.v1.VolumeServer.State'
        project:
          type: string
        boot:
          type: boolean
        zone:
          type: string
          description: The zone you want to target
      x-properties-order:
      - id
      - name
      - export_uri
      - organization
      - server
      - size
      - volume_type
      - creation_date
      - modification_date
      - state
      - project
      - boot
      - zone
    scaleway.instance.v1.VolumeServer.State:
      type: string
      enum:
      - available
      - snapshotting
      - fetching
      - resizing
      - saving
      - hotsyncing
      - error
      default: available
    scaleway.instance.v1.VolumeServer.VolumeType:
      type: string
      enum:
      - l_ssd
      - b_ssd
      - sbs_volume
      - scratch
      default: l_ssd
    scaleway.instance.v1.VolumeServerTemplate:
      type: object
      properties:
        id:
          type: string
          description: UUID of the volume.
          nullable: true
        boot:
          type: boolean
          description: Force the Instance to boot on this volume.
          nullable: true
          default: "false"
        name:
          type: string
          description: Name of the volume.
          nullable: true
        size:
          type: integer
          description: Disk size of the volume, must be a multiple of 512. (in bytes)
          format: uint64
          nullable: true
        volume_type:
          type: string
          description: Type of the volume.
          enum:
          - l_ssd
          - b_ssd
          - unified
          - scratch
          - sbs_volume
          - sbs_snapshot
          default: l_ssd
        base_snapshot:
          type: string
          description: ID of the snapshot on which this volume will be based.
          nullable: true
        organization:
          type: string
          description: Organization ID of the volume.
          nullable: true
        project:
          type: string
          description: Project ID of the volume.
          nullable: true
      x-properties-order:
      - id
      - boot
      - name
      - size
      - volume_type
      - base_snapshot
      - organization
      - project
    scaleway.instance.v1.VolumeSummary:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        size:
          type: integer
          description: (in bytes)
          format: uint64
        volume_type:
          $ref: '#/components/schemas/scaleway.instance.v1.Volume.VolumeType'
      x-properties-order:
      - id
      - name
      - size
      - volume_type
    scaleway.instance.v1.VolumeTemplate:
      type: object
      properties:
        id:
          type: string
          description: UUID of the volume.
        name:
          type: string
          description: Name of the volume.
        size:
          type: integer
          description: Disk size of the volume, must be a multiple of 512. (in bytes)
          format: uint64
        volume_type:
          type: string
          description: Type of the volume.
          enum:
          - l_ssd
          - b_ssd
          - unified
          - scratch
          - sbs_volume
          - sbs_snapshot
          default: l_ssd
        organization:
          type: string
          description: Organization ID of the volume.
          deprecated: true
          nullable: true
          x-one-of: ProjectIdentifier
        project:
          type: string
          description: Project ID of the volume.
          nullable: true
          x-one-of: ProjectIdentifier
      x-properties-order:
      - id
      - name
      - size
      - volume_type
      - organization
      - project
    scaleway.instance.v1.VolumeType:
      type: object
      properties:
        display_name:
          type: string
        capabilities:
          $ref: '#/components/schemas/scaleway.instance.v1.VolumeType.Capabilities'
        constraints:
          $ref: '#/components/schemas/scaleway.instance.v1.VolumeType.Constraints'
      x-properties-order:
      - display_name
      - capabilities
      - constraints
    scaleway.instance.v1.VolumeType.Capabilities:
      type: object
      properties:
        snapshot:
          type: boolean
      x-properties-order:
      - snapshot
    scaleway.instance.v1.VolumeType.Constraints:
      type: object
      properties:
        min:
          type: integer
          description: (in bytes)
          format: uint64
        max:
          type: integer
          description: (in bytes)
          format: uint64
      x-properties-order:
      - min
      - max
    scaleway.std.File:
      type: object
      properties:
        name:
          type: string
        content_type:
          type: string
        content:
          type: string
      x-properties-order:
      - name
      - content_type
      - content
    scaleway.std.StringsValue:
      type: array
      nullable: true
      items:
        type: string
  securitySchemes:
    scaleway:
      in: header
      name: X-Auth-Token
      type: apiKey
paths:
  /instance/v1/zones/{zone}/block-migration/apply:
    post:
      tags:
      - Volumes
      operationId: ApplyBlockMigration
      summary: Migrate a volume and/or snapshots to SBS (Scaleway Block Storage)
      description: To be used, the call to this endpoint must be preceded by a call
        to the [Get a volume or snapshot's migration plan](#path-volumes-get-a-volume-or-snapshots-migration-plan)
        endpoint. To migrate all resources mentioned in the migration plan, the validation_key
        returned in the plan must be provided.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      responses:
        "204":
          description: ""
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                volume_id:
                  type: string
                  description: The volume to migrate, along with potentially other
                    resources, according to the migration plan generated with a call
                    to the [Get a volume or snapshot's migration plan](#path-volumes-get-a-volume-or-snapshots-migration-plan)
                    endpoint.
                  nullable: true
                  x-one-of: resource
                snapshot_id:
                  type: string
                  description: The snapshot to migrate, along with potentially other
                    resources, according to the migration plan generated with a call
                    to the [Get a volume or snapshot's migration plan](#path-volumes-get-a-volume-or-snapshots-migration-plan)
                    endpoint.
                  nullable: true
                  x-one-of: resource
                validation_key:
                  type: string
                  description: A value to be retrieved from a call to the [Get a volume
                    or snapshot's migration plan](#path-volumes-get-a-volume-or-snapshots-migration-plan)
                    endpoint, to confirm that the volume and/or snapshots specified
                    in said plan should be migrated.
              required:
              - validation_key
              x-properties-order:
              - volume_id
              - snapshot_id
              - validation_key
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X POST \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{"validation_key":"string"}' \
            "https://api.scaleway.com/instance/v1/zones/{zone}/block-migration/apply"
      - lang: HTTPie
        source: |-
          http POST "https://api.scaleway.com/instance/v1/zones/{zone}/block-migration/apply" \
            X-Auth-Token:$SCW_SECRET_KEY \
            validation_key="string"
  /instance/v1/zones/{zone}/block-migration/check-organization-quotas:
    post:
      operationId: CheckBlockMigrationOrganizationQuotas
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      responses:
        "204":
          description: ""
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                organization:
                  type: string
              x-properties-order:
              - organization
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X POST \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{"organization":"string"}' \
            "https://api.scaleway.com/instance/v1/zones/{zone}/block-migration/check-organization-quotas"
      - lang: HTTPie
        source: |-
          http POST "https://api.scaleway.com/instance/v1/zones/{zone}/block-migration/check-organization-quotas" \
            X-Auth-Token:$SCW_SECRET_KEY \
            organization="string"
  /instance/v1/zones/{zone}/block-migration/plan:
    post:
      tags:
      - Volumes
      operationId: PlanBlockMigration
      summary: Get a volume or snapshot's migration plan
      description: |-
        Given a volume or snapshot, returns the migration plan but does not perform the actual migration. To perform the migration, you have to call the [Migrate a volume and/or snapshots to SBS](#path-volumes-migrate-a-volume-andor-snapshots-to-sbs-scaleway-block-storage) endpoint afterward.
        The endpoint returns the resources that should be migrated together:
        - the volume and any snapshots created from the volume, if the call was made to plan a volume migration.
        - the base volume of the snapshot (if the volume is not deleted) and its related snapshots, if the call was made to plan a snapshot migration.
        The endpoint also returns the validation_key, which must be provided to the [Migrate a volume and/or snapshots to SBS](#path-volumes-migrate-a-volume-andor-snapshots-to-sbs-scaleway-block-storage) endpoint to confirm that all resources listed in the plan should be migrated.
      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
          - fr-par-3
          - 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.instance.v1.MigrationPlan'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                volume_id:
                  type: string
                  description: The volume for which the migration plan will be generated.
                  nullable: true
                  x-one-of: resource
                snapshot_id:
                  type: string
                  description: The snapshot for which the migration plan will be generated.
                  nullable: true
                  x-one-of: resource
              x-properties-order:
              - volume_id
              - snapshot_id
      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/instance/v1/zones/{zone}/block-migration/plan"
      - lang: HTTPie
        source: |-
          http POST "https://api.scaleway.com/instance/v1/zones/{zone}/block-migration/plan" \
            X-Auth-Token:$SCW_SECRET_KEY
  /instance/v1/zones/{zone}/dashboard:
    get:
      operationId: GetDashboard
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: query
        name: organization
        schema:
          $ref: '#/components/schemas/google.protobuf.StringValue'
      - in: query
        name: project
        schema:
          $ref: '#/components/schemas/google.protobuf.StringValue'
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.GetDashboardResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/dashboard"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/dashboard" \
            X-Auth-Token:$SCW_SECRET_KEY
  /instance/v1/zones/{zone}/images:
    get:
      tags:
      - Images
      operationId: ListImages
      summary: List Instance images
      description: List all existing Instance images.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: query
        name: organization
        schema:
          $ref: '#/components/schemas/google.protobuf.StringValue'
      - in: query
        name: per_page
        schema:
          type: integer
          format: uint32
      - in: query
        name: page
        schema:
          $ref: '#/components/schemas/google.protobuf.Int32Value'
      - in: query
        name: name
        schema:
          $ref: '#/components/schemas/google.protobuf.StringValue'
      - in: query
        name: public
        schema:
          $ref: '#/components/schemas/google.protobuf.BoolValue'
      - in: query
        name: arch
        schema:
          $ref: '#/components/schemas/google.protobuf.StringValue'
      - in: query
        name: project
        schema:
          $ref: '#/components/schemas/google.protobuf.StringValue'
      - in: query
        name: tags
        schema:
          $ref: '#/components/schemas/google.protobuf.StringValue'
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.ListImagesResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/images"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/images" \
            X-Auth-Token:$SCW_SECRET_KEY
    post:
      tags:
      - Images
      operationId: CreateImage
      summary: Create an Instance image
      description: Create an Instance image from the specified snapshot 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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      responses:
        "201":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.CreateImageResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Name of the image.
                root_volume:
                  type: string
                  description: UUID of the snapshot.
                arch:
                  type: string
                  description: Architecture of the image.
                  enum:
                  - unknown_arch
                  - x86_64
                  - arm
                  - arm64
                  default: unknown_arch
                extra_volumes:
                  type: object
                  description: Additional volumes of the image.
                  properties:
                    <extra_volumeKey>:
                      $ref: '#/components/schemas/scaleway.instance.v1.VolumeTemplate'
                  additionalProperties: true
                organization:
                  type: string
                  description: Organization ID of the image.
                  deprecated: true
                  nullable: true
                  x-one-of: ProjectIdentifier
                project:
                  type: string
                  description: Project ID of the image.
                  nullable: true
                  x-one-of: ProjectIdentifier
                tags:
                  type: array
                  description: Tags of the image.
                  items:
                    type: string
                public:
                  type: boolean
                  description: True to create a public image.
                  nullable: true
              required:
              - root_volume
              - arch
              x-properties-order:
              - name
              - root_volume
              - arch
              - extra_volumes
              - organization
              - project
              - tags
              - public
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X POST \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{
              "arch": "unknown_arch",
              "extra_volumes": {
                  "\u003cextra_volumeKey\u003e": ""
              },
              "name": "string",
              "root_volume": "string"
            }' \
            "https://api.scaleway.com/instance/v1/zones/{zone}/images"
      - lang: HTTPie
        source: |-
          http POST "https://api.scaleway.com/instance/v1/zones/{zone}/images" \
            X-Auth-Token:$SCW_SECRET_KEY \
            arch="unknown_arch" \
            extra_volumes:='{
              "\u003cextra_volumeKey\u003e": ""
            }' \
            name="string" \
            root_volume="string"
  /instance/v1/zones/{zone}/images/{id}:
    put:
      tags:
      - Images
      operationId: SetImage
      summary: Update image
      description: Replace all image properties with an image message.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: id
        required: true
        schema:
          type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.SetImageResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                arch:
                  $ref: '#/components/schemas/scaleway.instance.v1.Arch'
                creation_date:
                  type: string
                  description: (RFC 3339 format)
                  format: date-time
                  example: "2022-03-22T12:34:56.123456Z"
                  nullable: true
                modification_date:
                  type: string
                  description: (RFC 3339 format)
                  format: date-time
                  example: "2022-03-22T12:34:56.123456Z"
                  nullable: true
                default_bootscript:
                  deprecated: true
                  $ref: '#/components/schemas/scaleway.instance.v1.Bootscript'
                extra_volumes:
                  type: object
                  properties:
                    <extra_volumeKey>:
                      $ref: '#/components/schemas/scaleway.instance.v1.Volume'
                  additionalProperties: true
                from_server:
                  type: string
                organization:
                  type: string
                public:
                  type: boolean
                root_volume:
                  $ref: '#/components/schemas/scaleway.instance.v1.VolumeSummary'
                state:
                  $ref: '#/components/schemas/scaleway.instance.v1.Image.State'
                project:
                  type: string
                tags:
                  $ref: '#/components/schemas/scaleway.std.StringsValue'
              x-properties-order:
              - name
              - arch
              - creation_date
              - modification_date
              - default_bootscript
              - extra_volumes
              - from_server
              - organization
              - public
              - root_volume
              - state
              - project
              - tags
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X PUT \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{
              "extra_volumes": {
                  "\u003cextra_volumeKey\u003e": ""
              },
              "from_server": "string",
              "name": "string",
              "organization": "string",
              "project": "string",
              "public": false
            }' \
            "https://api.scaleway.com/instance/v1/zones/{zone}/images/{id}"
      - lang: HTTPie
        source: |-
          http PUT "https://api.scaleway.com/instance/v1/zones/{zone}/images/{id}" \
            X-Auth-Token:$SCW_SECRET_KEY \
            extra_volumes:='{
              "\u003cextra_volumeKey\u003e": ""
            }' \
            from_server="string" \
            name="string" \
            organization="string" \
            project="string" \
            public:=false
  /instance/v1/zones/{zone}/images/{image_id}:
    get:
      tags:
      - Images
      operationId: GetImage
      summary: Get an Instance image
      description: Get details of an image with the specified 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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: image_id
        description: UUID of the image you want to get.
        required: true
        schema:
          type: string
          description: UUID of the image you want to get.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.GetImageResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/images/{image_id}"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/images/{image_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
    patch:
      tags:
      - Images
      operationId: UpdateImage
      summary: Update image
      description: Update the properties of an image.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: image_id
        description: UUID of the image. (UUID format)
        required: true
        schema:
          type: string
          description: UUID of the image. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.UpdateImageResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Name of the image.
                  nullable: true
                arch:
                  type: string
                  description: Architecture of the image.
                  enum:
                  - unknown_arch
                  - x86_64
                  - arm
                  - arm64
                  default: unknown_arch
                extra_volumes:
                  type: object
                  description: Additional snapshots of the image, with extra_volumeKey
                    being the position of the snapshot in the image.
                  properties:
                    <extra_volumeKey>:
                      $ref: '#/components/schemas/scaleway.instance.v1.VolumeImageUpdateTemplate'
                  additionalProperties: true
                tags:
                  type: array
                  description: Tags of the image.
                  nullable: true
                  items:
                    type: string
                public:
                  type: boolean
                  description: True to set the image as public.
                  nullable: true
              x-properties-order:
              - name
              - arch
              - extra_volumes
              - tags
              - public
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X PATCH \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{"extra_volumes":{"\u003cextra_volumeKey\u003e":""}}' \
            "https://api.scaleway.com/instance/v1/zones/{zone}/images/{image_id}"
      - lang: HTTPie
        source: |-
          http PATCH "https://api.scaleway.com/instance/v1/zones/{zone}/images/{image_id}" \
            X-Auth-Token:$SCW_SECRET_KEY \
            extra_volumes:='{"\u003cextra_volumeKey\u003e":""}'
    delete:
      tags:
      - Images
      operationId: DeleteImage
      summary: Delete an Instance image
      description: Delete the image with the specified 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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: image_id
        description: UUID of the image you want to delete.
        required: true
        schema:
          type: string
          description: UUID of the image you want to delete.
      responses:
        "204":
          description: ""
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X DELETE \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/images/{image_id}"
      - lang: HTTPie
        source: |-
          http DELETE "https://api.scaleway.com/instance/v1/zones/{zone}/images/{image_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
  /instance/v1/zones/{zone}/ips:
    get:
      tags:
      - IPs
      operationId: ListIps
      summary: List all flexible IPs
      description: List all flexible IPs in a specified zone.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: query
        name: project
        description: Project ID in which the IPs are reserved.
        schema:
          type: string
          description: Project ID in which the IPs are reserved.
      - in: query
        name: organization
        description: Organization ID in which the IPs are reserved.
        schema:
          type: string
          description: Organization ID in which the IPs are reserved.
      - in: query
        name: tags
        description: Filter IPs with these exact tags (to filter with several tags,
          use commas to separate them).
        schema:
          type: string
          description: Filter IPs with these exact tags (to filter with several tags,
            use commas to separate them).
      - in: query
        name: name
        description: Filter on the IP address (Works as a LIKE operation on the IP
          address).
        schema:
          type: string
          description: Filter on the IP address (Works as a LIKE operation on the
            IP address).
      - in: query
        name: per_page
        description: A positive integer lower or equal to 100 to select the number
          of items to return.
        schema:
          type: integer
          description: A positive integer lower or equal to 100 to select the number
            of items to return.
          format: uint32
          default: "50"
      - in: query
        name: page
        description: A positive integer to choose the page to return.
        schema:
          type: integer
          description: A positive integer to choose the page to return.
          format: int32
      - in: query
        name: type
        description: Filter on the IP Mobility IP type (whose value should be either
          'routed_ipv4' or 'routed_ipv6').
        schema:
          type: string
          description: Filter on the IP Mobility IP type (whose value should be either
            'routed_ipv4' or 'routed_ipv6').
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.ListIpsResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/ips"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/ips" \
            X-Auth-Token:$SCW_SECRET_KEY
    post:
      tags:
      - IPs
      operationId: CreateIp
      summary: Reserve a flexible IP
      description: Reserve a flexible IP and attach it to the specified Instance.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      responses:
        "201":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.CreateIpResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                organization:
                  type: string
                  description: Organization ID in which the IP is reserved.
                  deprecated: true
                  nullable: true
                  x-one-of: ProjectIdentifier
                project:
                  type: string
                  description: Project ID in which the IP is reserved.
                  nullable: true
                  x-one-of: ProjectIdentifier
                tags:
                  type: array
                  description: Tags of the IP.
                  items:
                    type: string
                server:
                  type: string
                  description: UUID of the Instance you want to attach the IP to.
                  nullable: true
                type:
                  type: string
                  description: IP type to reserve (either 'routed_ipv4' or 'routed_ipv6').
                  enum:
                  - unknown_iptype
                  - routed_ipv4
                  - routed_ipv6
                  default: unknown_iptype
              x-properties-order:
              - organization
              - project
              - tags
              - server
              - 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/instance/v1/zones/{zone}/ips"
      - lang: HTTPie
        source: |-
          http POST "https://api.scaleway.com/instance/v1/zones/{zone}/ips" \
            X-Auth-Token:$SCW_SECRET_KEY
  /instance/v1/zones/{zone}/ips/{ip}:
    get:
      tags:
      - IPs
      operationId: GetIp
      summary: Get a flexible IP
      description: Get details of an IP with the specified ID or address.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: ip
        description: IP ID or address to get.
        required: true
        schema:
          type: string
          description: IP ID or address to get.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.GetIpResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/ips/{ip}"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/ips/{ip}" \
            X-Auth-Token:$SCW_SECRET_KEY
    patch:
      tags:
      - IPs
      operationId: UpdateIp
      summary: Update a flexible IP
      description: Update a flexible IP in the specified zone with the specified 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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: ip
        description: IP ID or IP address.
        required: true
        schema:
          type: string
          description: IP ID or IP address.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.UpdateIpResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                reverse:
                  type: string
                  description: Reverse domain name.
                  nullable: true
                type:
                  type: string
                  description: Should have no effect.
                  enum:
                  - unknown_iptype
                  - routed_ipv4
                  - routed_ipv6
                  default: unknown_iptype
                tags:
                  type: array
                  description: An array of keywords you want to tag this IP with.
                  nullable: true
                  items:
                    type: string
                server:
                  $ref: '#/components/schemas/scaleway.instance.v1.NullableStringValue'
              x-properties-order:
              - reverse
              - type
              - tags
              - server
      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/instance/v1/zones/{zone}/ips/{ip}"
      - lang: HTTPie
        source: |-
          http PATCH "https://api.scaleway.com/instance/v1/zones/{zone}/ips/{ip}" \
            X-Auth-Token:$SCW_SECRET_KEY
    delete:
      tags:
      - IPs
      operationId: DeleteIp
      summary: Delete a flexible IP
      description: Delete the IP with the specified 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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: ip
        description: ID or address of the IP to delete.
        required: true
        schema:
          type: string
          description: ID or address of the IP to delete.
      responses:
        "204":
          description: ""
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X DELETE \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/ips/{ip}"
      - lang: HTTPie
        source: |-
          http DELETE "https://api.scaleway.com/instance/v1/zones/{zone}/ips/{ip}" \
            X-Auth-Token:$SCW_SECRET_KEY
  /instance/v1/zones/{zone}/placement_groups:
    get:
      tags:
      - Placement Groups
      operationId: ListPlacementGroups
      summary: List placement groups
      description: List all placement groups in a specified Availability Zone.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: query
        name: per_page
        description: A positive integer lower or equal to 100 to select the number
          of items to return.
        schema:
          type: integer
          description: A positive integer lower or equal to 100 to select the number
            of items to return.
          format: uint32
          default: "50"
      - in: query
        name: page
        description: A positive integer to choose the page to return.
        schema:
          type: integer
          description: A positive integer to choose the page to return.
          format: int32
      - in: query
        name: organization
        description: List only placement groups of this Organization ID.
        schema:
          type: string
          description: List only placement groups of this Organization ID.
      - in: query
        name: project
        description: List only placement groups of this Project ID.
        schema:
          type: string
          description: List only placement groups of this Project ID.
      - in: query
        name: tags
        description: List placement groups with these exact tags (to filter with several
          tags, use commas to separate them).
        schema:
          type: string
          description: List placement groups with these exact tags (to filter with
            several tags, use commas to separate them).
      - in: query
        name: name
        description: Filter placement groups by name (for eg. "cluster1" will return
          "cluster100" and "cluster1" but not "foo").
        schema:
          type: string
          description: Filter placement groups by name (for eg. "cluster1" will return
            "cluster100" and "cluster1" but not "foo").
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.ListPlacementGroupsResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/placement_groups"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/placement_groups" \
            X-Auth-Token:$SCW_SECRET_KEY
    post:
      tags:
      - Placement Groups
      operationId: CreatePlacementGroup
      summary: Create a placement group
      description: Create a new placement group in a specified Availability Zone.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      responses:
        "201":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.CreatePlacementGroupResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Name of the placement group.
                organization:
                  type: string
                  description: Organization ID of the placement group.
                  deprecated: true
                  nullable: true
                  x-one-of: ProjectIdentifier
                project:
                  type: string
                  description: Project ID of the placement group.
                  nullable: true
                  x-one-of: ProjectIdentifier
                tags:
                  type: array
                  description: Tags of the placement group.
                  items:
                    type: string
                policy_mode:
                  type: string
                  description: Operating mode of the placement group.
                  enum:
                  - optional
                  - enforced
                  default: optional
                policy_type:
                  type: string
                  description: Policy type of the placement group.
                  enum:
                  - max_availability
                  - low_latency
                  default: max_availability
              x-properties-order:
              - name
              - organization
              - project
              - tags
              - policy_mode
              - policy_type
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X POST \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{"name":"string"}' \
            "https://api.scaleway.com/instance/v1/zones/{zone}/placement_groups"
      - lang: HTTPie
        source: |-
          http POST "https://api.scaleway.com/instance/v1/zones/{zone}/placement_groups" \
            X-Auth-Token:$SCW_SECRET_KEY \
            name="string"
  /instance/v1/zones/{zone}/placement_groups/{placement_group_id}:
    get:
      tags:
      - Placement Groups
      operationId: GetPlacementGroup
      summary: Get a placement group
      description: Get the specified placement group.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: placement_group_id
        description: UUID of the placement group you want to get.
        required: true
        schema:
          type: string
          description: UUID of the placement group you want to get.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.GetPlacementGroupResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/placement_groups/{placement_group_id}"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/placement_groups/{placement_group_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
    put:
      tags:
      - Placement Groups
      operationId: SetPlacementGroup
      summary: Set placement group
      description: Set all parameters of the specified placement group.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: placement_group_id
        required: true
        schema:
          type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.SetPlacementGroupResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                organization:
                  type: string
                policy_mode:
                  $ref: '#/components/schemas/scaleway.instance.v1.PlacementGroup.PolicyMode'
                policy_type:
                  $ref: '#/components/schemas/scaleway.instance.v1.PlacementGroup.PolicyType'
                project:
                  type: string
                tags:
                  $ref: '#/components/schemas/scaleway.std.StringsValue'
              x-properties-order:
              - name
              - organization
              - policy_mode
              - policy_type
              - project
              - tags
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X PUT \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{
              "name": "string",
              "organization": "string",
              "project": "string"
            }' \
            "https://api.scaleway.com/instance/v1/zones/{zone}/placement_groups/{placement_group_id}"
      - lang: HTTPie
        source: |-
          http PUT "https://api.scaleway.com/instance/v1/zones/{zone}/placement_groups/{placement_group_id}" \
            X-Auth-Token:$SCW_SECRET_KEY \
            name="string" \
            organization="string" \
            project="string"
    patch:
      tags:
      - Placement Groups
      operationId: UpdatePlacementGroup
      summary: Update a placement group
      description: Update one or more parameter of the specified placement group.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: placement_group_id
        description: UUID of the placement group.
        required: true
        schema:
          type: string
          description: UUID of the placement group.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.UpdatePlacementGroupResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Name of the placement group.
                  nullable: true
                tags:
                  type: array
                  description: Tags of the placement group.
                  nullable: true
                  items:
                    type: string
                policy_mode:
                  type: string
                  description: Operating mode of the placement group.
                  enum:
                  - optional
                  - enforced
                  default: optional
                policy_type:
                  type: string
                  description: Policy type of the placement group.
                  enum:
                  - max_availability
                  - low_latency
                  default: max_availability
              x-properties-order:
              - name
              - tags
              - policy_mode
              - policy_type
      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/instance/v1/zones/{zone}/placement_groups/{placement_group_id}"
      - lang: HTTPie
        source: |-
          http PATCH "https://api.scaleway.com/instance/v1/zones/{zone}/placement_groups/{placement_group_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
    delete:
      tags:
      - Placement Groups
      operationId: DeletePlacementGroup
      summary: Delete the specified placement group
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: placement_group_id
        description: UUID of the placement group you want to delete.
        required: true
        schema:
          type: string
          description: UUID of the placement group you want to delete.
      responses:
        "204":
          description: ""
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X DELETE \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/placement_groups/{placement_group_id}"
      - lang: HTTPie
        source: |-
          http DELETE "https://api.scaleway.com/instance/v1/zones/{zone}/placement_groups/{placement_group_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
  /instance/v1/zones/{zone}/placement_groups/{placement_group_id}/servers:
    get:
      tags:
      - Placement Groups
      operationId: GetPlacementGroupServers
      summary: Get placement group servers
      description: Get all Instances belonging to the specified placement group.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: placement_group_id
        description: UUID of the placement group you want to get.
        required: true
        schema:
          type: string
          description: UUID of the placement group you want to get.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.GetPlacementGroupServersResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/placement_groups/{placement_group_id}/servers"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/placement_groups/{placement_group_id}/servers" \
            X-Auth-Token:$SCW_SECRET_KEY
    put:
      tags:
      - Placement Groups
      operationId: SetPlacementGroupServers
      summary: Set placement group servers
      description: Set all Instances belonging to the specified placement group.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: placement_group_id
        description: UUID of the placement group you want to set.
        required: true
        schema:
          type: string
          description: UUID of the placement group you want to set.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.SetPlacementGroupServersResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                servers:
                  type: array
                  description: An array of the Instances' UUIDs you want to configure.
                  items:
                    type: string
              required:
              - servers
              x-properties-order:
              - servers
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X PUT \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{"servers":["string"]}' \
            "https://api.scaleway.com/instance/v1/zones/{zone}/placement_groups/{placement_group_id}/servers"
      - lang: HTTPie
        source: |-
          http PUT "https://api.scaleway.com/instance/v1/zones/{zone}/placement_groups/{placement_group_id}/servers" \
            X-Auth-Token:$SCW_SECRET_KEY \
            servers:='["string"]'
    patch:
      tags:
      - Placement Groups
      operationId: UpdatePlacementGroupServers
      summary: Update placement group servers
      description: Update all Instances belonging to the specified placement group.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: placement_group_id
        description: UUID of the placement group you want to update.
        required: true
        schema:
          type: string
          description: UUID of the placement group you want to update.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.UpdatePlacementGroupServersResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                servers:
                  type: array
                  description: An array of the Instances' UUIDs you want to configure.
                  items:
                    type: string
              required:
              - servers
              x-properties-order:
              - servers
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X PATCH \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{"servers":["string"]}' \
            "https://api.scaleway.com/instance/v1/zones/{zone}/placement_groups/{placement_group_id}/servers"
      - lang: HTTPie
        source: |-
          http PATCH "https://api.scaleway.com/instance/v1/zones/{zone}/placement_groups/{placement_group_id}/servers" \
            X-Auth-Token:$SCW_SECRET_KEY \
            servers:='["string"]'
  /instance/v1/zones/{zone}/products/servers:
    get:
      tags:
      - Instance Types
      operationId: ListServersTypes
      summary: List Instance types
      description: List available Instance types and their technical details.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: query
        name: per_page
        schema:
          type: integer
          format: uint32
      - in: query
        name: page
        schema:
          $ref: '#/components/schemas/google.protobuf.Int32Value'
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.ListServersTypesResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/products/servers"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/products/servers" \
            X-Auth-Token:$SCW_SECRET_KEY
  /instance/v1/zones/{zone}/products/servers/availability:
    get:
      tags:
      - Instance Types
      operationId: GetServerTypesAvailability
      summary: Get availability
      description: Get availability for all Instance types.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: query
        name: per_page
        description: A positive integer lower or equal to 100 to select the number
          of items to return.
        schema:
          type: integer
          description: A positive integer lower or equal to 100 to select the number
            of items to return.
          format: uint32
          default: "50"
      - in: query
        name: page
        description: A positive integer to choose the page to return.
        schema:
          type: integer
          description: A positive integer to choose the page to return.
          format: int32
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.GetServerTypesAvailabilityResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/products/servers/availability"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/products/servers/availability" \
            X-Auth-Token:$SCW_SECRET_KEY
  /instance/v1/zones/{zone}/products/volumes:
    get:
      tags:
      - Volume Types
      operationId: ListVolumesTypes
      summary: List volume types
      description: List all volume types and their technical details.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: query
        name: per_page
        schema:
          type: integer
          format: uint32
      - in: query
        name: page
        schema:
          $ref: '#/components/schemas/google.protobuf.Int32Value'
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.ListVolumesTypesResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/products/volumes"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/products/volumes" \
            X-Auth-Token:$SCW_SECRET_KEY
  /instance/v1/zones/{zone}/security_groups:
    get:
      tags:
      - Security Groups
      operationId: ListSecurityGroups
      summary: List security groups
      description: List all existing security groups.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: query
        name: name
        description: Name of the security group.
        schema:
          type: string
          description: Name of the security group.
      - in: query
        name: organization
        description: Security group Organization ID.
        schema:
          type: string
          description: Security group Organization ID.
      - in: query
        name: project
        description: Security group Project ID.
        schema:
          type: string
          description: Security group Project ID.
      - in: query
        name: tags
        description: List security groups with these exact tags (to filter with several
          tags, use commas to separate them).
        schema:
          type: string
          description: List security groups with these exact tags (to filter with
            several tags, use commas to separate them).
      - in: query
        name: project_default
        description: Filter security groups with this value for project_default.
        schema:
          type: boolean
          description: Filter security groups with this value for project_default.
      - in: query
        name: per_page
        description: A positive integer lower or equal to 100 to select the number
          of items to return.
        schema:
          type: integer
          description: A positive integer lower or equal to 100 to select the number
            of items to return.
          format: uint32
          default: "50"
      - in: query
        name: page
        description: A positive integer to choose the page to return.
        schema:
          type: integer
          description: A positive integer to choose the page to return.
          format: int32
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.ListSecurityGroupsResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups" \
            X-Auth-Token:$SCW_SECRET_KEY
    post:
      tags:
      - Security Groups
      operationId: CreateSecurityGroup
      summary: Create a security group
      description: Create a security group with a specified name and description.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      responses:
        "201":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.CreateSecurityGroupResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Name of the security group.
                description:
                  type: string
                  description: Description of the security group.
                organization:
                  type: string
                  description: Organization ID the security group belongs to.
                  deprecated: true
                  nullable: true
                  x-one-of: ProjectIdentifier
                project:
                  type: string
                  description: Project ID the security group belong to.
                  nullable: true
                  x-one-of: ProjectIdentifier
                tags:
                  type: array
                  description: Tags of the security group.
                  items:
                    type: string
                organization_default:
                  type: boolean
                  description: Defines whether this security group becomes the default
                    security group for new Instances.
                  deprecated: true
                  nullable: true
                  x-one-of: DefaultIdentifier
                project_default:
                  type: boolean
                  description: Whether this security group becomes the default security
                    group for new Instances.
                  nullable: true
                  x-one-of: DefaultIdentifier
                stateful:
                  type: boolean
                  description: Whether the security group is stateful or not.
                  default: "false"
                inbound_default_policy:
                  type: string
                  description: Default policy for inbound rules.
                  enum:
                  - unknown_policy
                  - accept
                  - drop
                  default: accept
                outbound_default_policy:
                  type: string
                  description: Default policy for outbound rules.
                  enum:
                  - unknown_policy
                  - accept
                  - drop
                  default: accept
                enable_default_security:
                  type: boolean
                  description: True to block SMTP on IPv4 and IPv6. This feature is
                    read only, please open a support ticket if you need to make it
                    configurable.
                  nullable: true
              required:
              - name
              x-properties-order:
              - name
              - description
              - organization
              - project
              - tags
              - organization_default
              - project_default
              - stateful
              - inbound_default_policy
              - outbound_default_policy
              - enable_default_security
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X POST \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{"description":"string","name":"string"}' \
            "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups"
      - lang: HTTPie
        source: |-
          http POST "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups" \
            X-Auth-Token:$SCW_SECRET_KEY \
            description="string" \
            name="string"
  /instance/v1/zones/{zone}/security_groups/{id}:
    put:
      tags:
      - Security Groups
      operationId: SetSecurityGroup
      summary: Update a security group
      description: Replace all security group properties with a security group message.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: id
        description: UUID of the security group.
        required: true
        schema:
          type: string
          description: UUID of the security group.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.SetSecurityGroupResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Name of the security group.
                tags:
                  type: array
                  description: Tags of the security group.
                  nullable: true
                  items:
                    type: string
                creation_date:
                  type: string
                  description: Creation date of the security group (will be ignored).
                    (RFC 3339 format)
                  format: date-time
                  example: "2022-03-22T12:34:56.123456Z"
                  nullable: true
                modification_date:
                  type: string
                  description: Modification date of the security group (will be ignored).
                    (RFC 3339 format)
                  format: date-time
                  example: "2022-03-22T12:34:56.123456Z"
                  nullable: true
                description:
                  type: string
                  description: Description of the security group.
                enable_default_security:
                  type: boolean
                  description: True to block SMTP on IPv4 and IPv6. This feature is
                    read only, please open a support ticket if you need to make it
                    configurable.
                inbound_default_policy:
                  type: string
                  description: Default inbound policy.
                  enum:
                  - unknown_policy
                  - accept
                  - drop
                  default: unknown_policy
                outbound_default_policy:
                  type: string
                  description: Default outbound policy.
                  enum:
                  - unknown_policy
                  - accept
                  - drop
                  default: unknown_policy
                organization:
                  type: string
                  description: Security groups Organization ID.
                project:
                  type: string
                  description: Security group Project ID.
                organization_default:
                  type: boolean
                  description: Please use project_default instead.
                  deprecated: true
                project_default:
                  type: boolean
                  description: True use this security group for future Instances created
                    in this project.
                servers:
                  type: array
                  description: Instances attached to this security group.
                  items:
                    $ref: '#/components/schemas/scaleway.instance.v1.ServerSummary'
                stateful:
                  type: boolean
                  description: True to set the security group as stateful.
              x-properties-order:
              - name
              - tags
              - creation_date
              - modification_date
              - description
              - enable_default_security
              - inbound_default_policy
              - outbound_default_policy
              - organization
              - project
              - organization_default
              - project_default
              - servers
              - stateful
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X PUT \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{
              "description": "string",
              "enable_default_security": false,
              "name": "string",
              "organization": "string",
              "project": "string",
              "project_default": false,
              "stateful": false
            }' \
            "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups/{id}"
      - lang: HTTPie
        source: |-
          http PUT "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups/{id}" \
            X-Auth-Token:$SCW_SECRET_KEY \
            description="string" \
            enable_default_security:=false \
            name="string" \
            organization="string" \
            project="string" \
            project_default:=false \
            stateful:=false
  /instance/v1/zones/{zone}/security_groups/{security_group_id}:
    get:
      tags:
      - Security Groups
      operationId: GetSecurityGroup
      summary: Get a security group
      description: Get the details of a security group with the specified 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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: security_group_id
        description: UUID of the security group you want to get.
        required: true
        schema:
          type: string
          description: UUID of the security group you want to get.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.GetSecurityGroupResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups/{security_group_id}"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups/{security_group_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
    patch:
      tags:
      - Security Groups
      operationId: UpdateSecurityGroup
      summary: Update a security group
      description: Update the properties of security group.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: security_group_id
        description: UUID of the security group. (UUID format)
        required: true
        schema:
          type: string
          description: UUID of the security group. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.UpdateSecurityGroupResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Name of the security group.
                  nullable: true
                description:
                  type: string
                  description: Description of the security group.
                  nullable: true
                enable_default_security:
                  type: boolean
                  description: True to block SMTP on IPv4 and IPv6. This feature is
                    read only, please open a support ticket if you need to make it
                    configurable.
                  nullable: true
                inbound_default_policy:
                  type: string
                  description: Default inbound policy.
                  enum:
                  - unknown_policy
                  - accept
                  - drop
                  default: unknown_policy
                tags:
                  type: array
                  description: Tags of the security group.
                  nullable: true
                  items:
                    type: string
                organization_default:
                  type: boolean
                  description: Please use project_default instead.
                  deprecated: true
                  nullable: true
                project_default:
                  type: boolean
                  description: True use this security group for future Instances created
                    in this project.
                  nullable: true
                outbound_default_policy:
                  type: string
                  description: Default outbound policy.
                  enum:
                  - unknown_policy
                  - accept
                  - drop
                  default: unknown_policy
                stateful:
                  type: boolean
                  description: True to set the security group as stateful.
                  nullable: true
              x-properties-order:
              - name
              - description
              - enable_default_security
              - inbound_default_policy
              - tags
              - organization_default
              - project_default
              - outbound_default_policy
              - stateful
      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/instance/v1/zones/{zone}/security_groups/{security_group_id}"
      - lang: HTTPie
        source: |-
          http PATCH "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups/{security_group_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
    delete:
      tags:
      - Security Groups
      operationId: DeleteSecurityGroup
      summary: Delete a security group
      description: Delete a security group with the specified 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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: security_group_id
        description: UUID of the security group you want to delete.
        required: true
        schema:
          type: string
          description: UUID of the security group you want to delete.
      responses:
        "204":
          description: ""
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X DELETE \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups/{security_group_id}"
      - lang: HTTPie
        source: |-
          http DELETE "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups/{security_group_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
  /instance/v1/zones/{zone}/security_groups/{security_group_id}/rules:
    get:
      tags:
      - Security Groups
      operationId: ListSecurityGroupRules
      summary: List rules
      description: List the rules of the a specified security group 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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: security_group_id
        description: UUID of the security group.
        required: true
        schema:
          type: string
          description: UUID of the security group.
      - in: query
        name: per_page
        description: A positive integer lower or equal to 100 to select the number
          of items to return.
        schema:
          type: integer
          description: A positive integer lower or equal to 100 to select the number
            of items to return.
          format: uint32
          default: "50"
      - in: query
        name: page
        description: A positive integer to choose the page to return.
        schema:
          type: integer
          description: A positive integer to choose the page to return.
          format: int32
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.ListSecurityGroupRulesResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups/{security_group_id}/rules"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups/{security_group_id}/rules" \
            X-Auth-Token:$SCW_SECRET_KEY
    post:
      tags:
      - Security Groups
      operationId: CreateSecurityGroupRule
      summary: Create rule
      description: Create a rule in the specified security group 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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: security_group_id
        description: UUID of the security group.
        required: true
        schema:
          type: string
          description: UUID of the security group.
      responses:
        "201":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.CreateSecurityGroupRuleResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                protocol:
                  $ref: '#/components/schemas/scaleway.instance.v1.SecurityGroupRule.Protocol'
                direction:
                  $ref: '#/components/schemas/scaleway.instance.v1.SecurityGroupRule.Direction'
                action:
                  $ref: '#/components/schemas/scaleway.instance.v1.SecurityGroupRule.Action'
                ip_range:
                  type: string
                  description: (IP network)
                  example: 1.2.3.4/32
                dest_port_from:
                  type: integer
                  description: Beginning of the range of ports to apply this rule
                    to (inclusive).
                  format: uint32
                  nullable: true
                dest_port_to:
                  type: integer
                  description: End of the range of ports to apply this rule to (inclusive).
                  format: uint32
                  nullable: true
                position:
                  type: integer
                  description: Position of this rule in the security group rules list.
                  format: uint32
                editable:
                  type: boolean
                  description: Indicates if this rule is editable (will be ignored).
              required:
              - protocol
              - direction
              - action
              - ip_range
              x-properties-order:
              - protocol
              - direction
              - action
              - ip_range
              - dest_port_from
              - dest_port_to
              - position
              - editable
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X POST \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{
              "action": "unknown_action",
              "direction": "unknown_direction",
              "editable": false,
              "ip_range": "1.2.3.4/32",
              "position": 42,
              "protocol": "unknown_protocol"
            }' \
            "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups/{security_group_id}/rules"
      - lang: HTTPie
        source: |-
          http POST "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups/{security_group_id}/rules" \
            X-Auth-Token:$SCW_SECRET_KEY \
            action="unknown_action" \
            direction="unknown_direction" \
            editable:=false \
            ip_range="1.2.3.4/32" \
            position:=42 \
            protocol="unknown_protocol"
    put:
      tags:
      - Security Groups
      operationId: SetSecurityGroupRules
      summary: Update all the rules of a security group
      description: Replaces the existing rules of the security group with the rules
        provided. This endpoint supports the update of existing rules, creation of
        new rules and deletion of existing rules when they are not passed in the request.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: security_group_id
        description: UUID of the security group to update the rules on.
        required: true
        schema:
          type: string
          description: UUID of the security group to update the rules on.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.SetSecurityGroupRulesResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                rules:
                  type: array
                  description: List of rules to update in the security group.
                  items:
                    $ref: '#/components/schemas/scaleway.instance.v1.SetSecurityGroupRulesRequest.Rule'
              x-properties-order:
              - rules
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X PUT \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{}' \
            "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups/{security_group_id}/rules"
      - lang: HTTPie
        source: |-
          http PUT "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups/{security_group_id}/rules" \
            X-Auth-Token:$SCW_SECRET_KEY
  /instance/v1/zones/{zone}/security_groups/{security_group_id}/rules/{security_group_rule_id}:
    get:
      tags:
      - Security Groups
      operationId: GetSecurityGroupRule
      summary: Get rule
      description: Get details of a security group rule with the specified 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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: security_group_id
        required: true
        schema:
          type: string
      - in: path
        name: security_group_rule_id
        required: true
        schema:
          type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.GetSecurityGroupRuleResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups/{security_group_id}/rules/{security_group_rule_id}"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups/{security_group_id}/rules/{security_group_rule_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
    put:
      tags:
      - Security Groups
      operationId: SetSecurityGroupRule
      summary: Set security group rule
      description: Replace all the properties of a rule from a specified security
        group.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: security_group_id
        required: true
        schema:
          type: string
      - in: path
        name: security_group_rule_id
        required: true
        schema:
          type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.SetSecurityGroupRuleResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                protocol:
                  $ref: '#/components/schemas/scaleway.instance.v1.SecurityGroupRule.Protocol'
                direction:
                  $ref: '#/components/schemas/scaleway.instance.v1.SecurityGroupRule.Direction'
                action:
                  $ref: '#/components/schemas/scaleway.instance.v1.SecurityGroupRule.Action'
                ip_range:
                  type: string
                  description: (IP network)
                  example: 1.2.3.4/32
                dest_port_from:
                  $ref: '#/components/schemas/google.protobuf.UInt32Value'
                dest_port_to:
                  $ref: '#/components/schemas/google.protobuf.UInt32Value'
                position:
                  type: integer
                  format: uint32
                editable:
                  type: boolean
              x-properties-order:
              - id
              - protocol
              - direction
              - action
              - ip_range
              - dest_port_from
              - dest_port_to
              - position
              - editable
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X PUT \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{
              "editable": false,
              "id": "string",
              "ip_range": "1.2.3.4/32",
              "position": 42
            }' \
            "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups/{security_group_id}/rules/{security_group_rule_id}"
      - lang: HTTPie
        source: |-
          http PUT "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups/{security_group_id}/rules/{security_group_rule_id}" \
            X-Auth-Token:$SCW_SECRET_KEY \
            editable:=false \
            id="string" \
            ip_range="1.2.3.4/32" \
            position:=42
    patch:
      tags:
      - Security Groups
      operationId: UpdateSecurityGroupRule
      summary: Update security group rule
      description: Update the properties of a rule from a specified security group.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: security_group_id
        description: UUID of the security group. (UUID format)
        required: true
        schema:
          type: string
          description: UUID of the security group. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      - in: path
        name: security_group_rule_id
        description: UUID of the rule. (UUID format)
        required: true
        schema:
          type: string
          description: UUID of the rule. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.UpdateSecurityGroupRuleResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                protocol:
                  type: string
                  description: Protocol family this rule applies to.
                  enum:
                  - unknown_protocol
                  - TCP
                  - UDP
                  - ICMP
                  - ANY
                  default: unknown_protocol
                direction:
                  type: string
                  description: Direction the rule applies to.
                  enum:
                  - unknown_direction
                  - inbound
                  - outbound
                  default: unknown_direction
                action:
                  type: string
                  description: Action to apply when the rule matches a packet.
                  enum:
                  - unknown_action
                  - accept
                  - drop
                  default: unknown_action
                ip_range:
                  type: string
                  description: Range of IP addresses these rules apply to. (IP network)
                  example: 1.2.3.4/32
                  nullable: true
                dest_port_from:
                  type: integer
                  description: Beginning of the range of ports this rule applies to
                    (inclusive). If 0 is provided, unset the parameter.
                  format: uint32
                  nullable: true
                dest_port_to:
                  type: integer
                  description: End of the range of ports this rule applies to (inclusive).
                    If 0 is provided, unset the parameter.
                  format: uint32
                  nullable: true
                position:
                  type: integer
                  description: Position of this rule in the security group rules list.
                  format: uint32
                  nullable: true
              x-properties-order:
              - protocol
              - direction
              - action
              - ip_range
              - dest_port_from
              - dest_port_to
              - position
      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/instance/v1/zones/{zone}/security_groups/{security_group_id}/rules/{security_group_rule_id}"
      - lang: HTTPie
        source: |-
          http PATCH "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups/{security_group_id}/rules/{security_group_rule_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
    delete:
      tags:
      - Security Groups
      operationId: DeleteSecurityGroupRule
      summary: Delete rule
      description: Delete a security group rule with the specified 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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: security_group_id
        required: true
        schema:
          type: string
      - in: path
        name: security_group_rule_id
        required: true
        schema:
          type: string
      responses:
        "204":
          description: ""
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X DELETE \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups/{security_group_id}/rules/{security_group_rule_id}"
      - lang: HTTPie
        source: |-
          http DELETE "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups/{security_group_id}/rules/{security_group_rule_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
  /instance/v1/zones/{zone}/security_groups/default/rules:
    get:
      tags:
      - Security Groups
      operationId: ListDefaultSecurityGroupRules
      summary: Get default rules
      description: Lists the default rules applied to all the security groups.
      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
          - fr-par-3
          - 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.instance.v1.ListSecurityGroupRulesResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups/default/rules"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups/default/rules" \
            X-Auth-Token:$SCW_SECRET_KEY
  /instance/v1/zones/{zone}/servers:
    get:
      tags:
      - Instances
      operationId: ListServers
      summary: List all Instances
      description: List all Instances in a specified Availability Zone, e.g. `fr-par-1`.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: query
        name: per_page
        description: A positive integer lower or equal to 100 to select the number
          of items to return.
        schema:
          type: integer
          description: A positive integer lower or equal to 100 to select the number
            of items to return.
          format: uint32
          default: "50"
      - in: query
        name: page
        description: A positive integer to choose the page to return.
        schema:
          type: integer
          description: A positive integer to choose the page to return.
          format: int32
      - in: query
        name: organization
        description: List only Instances of this Organization ID.
        schema:
          type: string
          description: List only Instances of this Organization ID.
      - in: query
        name: project
        description: List only Instances of this Project ID.
        schema:
          type: string
          description: List only Instances of this Project ID.
      - in: query
        name: name
        description: Filter Instances by name (eg. "server1" will return "server100"
          and "server1" but not "foo").
        schema:
          type: string
          description: Filter Instances by name (eg. "server1" will return "server100"
            and "server1" but not "foo").
      - in: query
        name: private_ip
        description: List Instances by private_ip. (IP address)
        schema:
          type: string
          description: List Instances by private_ip. (IP address)
          deprecated: true
          example: 1.2.3.4
      - in: query
        name: without_ip
        description: List Instances that are not attached to a public IP.
        schema:
          type: boolean
          description: List Instances that are not attached to a public IP.
      - in: query
        name: with_ip
        description: List Instances by IP (both private_ip and public_ip are supported).
          (IP address)
        schema:
          type: string
          description: List Instances by IP (both private_ip and public_ip are supported).
            (IP address)
          example: 1.2.3.4
      - in: query
        name: commercial_type
        description: List Instances of this commercial type.
        schema:
          type: string
          description: List Instances of this commercial type.
      - in: query
        name: state
        description: List Instances in this state.
        schema:
          type: string
          description: List Instances in this state.
          enum:
          - running
          - stopped
          - stopped in place
          - starting
          - stopping
          - locked
          default: running
      - in: query
        name: tags
        description: List Instances with these exact tags (to filter with several
          tags, use commas to separate them).
        schema:
          type: string
          description: List Instances with these exact tags (to filter with several
            tags, use commas to separate them).
      - in: query
        name: private_network
        description: List Instances in this Private Network.
        schema:
          type: string
          description: List Instances in this Private Network.
      - in: query
        name: order
        description: Define the order of the returned servers.
        schema:
          type: string
          description: Define the order of the returned servers.
          enum:
          - creation_date_desc
          - creation_date_asc
          - modification_date_desc
          - modification_date_asc
          default: creation_date_desc
      - in: query
        name: private_networks
        description: List Instances from the given Private Networks (use commas to
          separate them).
        schema:
          type: string
          description: List Instances from the given Private Networks (use commas
            to separate them).
      - in: query
        name: private_nic_mac_address
        description: List Instances associated with the given private NIC MAC address.
        schema:
          type: string
          description: List Instances associated with the given private NIC MAC address.
      - in: query
        name: servers
        description: List Instances from these server ids (use commas to separate
          them).
        schema:
          type: string
          description: List Instances from these server ids (use commas to separate
            them).
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.ListServersResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/servers"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/servers" \
            X-Auth-Token:$SCW_SECRET_KEY
    post:
      tags:
      - Instances
      operationId: CreateServer
      summary: Create an Instance
      description: |-
        Create a new Instance of the specified commercial type in the specified zone. Pay attention to the volumes parameter, which takes an object which can be used in different ways to achieve different behaviors.
        Get more information in the [Technical Information](#technical-information) section of the introduction.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      responses:
        "201":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.CreateServerResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Instance name.
                dynamic_ip_required:
                  type: boolean
                  description: Define if a dynamic IPv4 is required for the Instance.
                  nullable: true
                routed_ip_enabled:
                  type: boolean
                  description: If true, configure the Instance so it uses the new
                    routed IP mode.
                  deprecated: true
                  nullable: true
                commercial_type:
                  type: string
                  description: Define the Instance commercial type (i.e. GP1-S).
                image:
                  type: string
                  description: |-
                    Instance image ID or label.
                    When an image label is used, it will be converted to the latest image available on the Marketplace.
                    By default, the selected local image will be the instance_sbs local image.
                    If an l_ssd or b_ssd volume is specified in the volumes argument, an instance_local local image will be selected instead.
                volumes:
                  type: object
                  description: Volumes attached to the server.
                  properties:
                    <volumeKey>:
                      $ref: '#/components/schemas/scaleway.instance.v1.VolumeServerTemplate'
                  additionalProperties: true
                enable_ipv6:
                  type: boolean
                  description: True if IPv6 is enabled on the server (deprecated and
                    always `False` when `routed_ip_enabled` is `True`).
                  deprecated: true
                public_ip:
                  type: string
                  description: ID of the reserved IP to attach to the Instance.
                  deprecated: true
                  nullable: true
                public_ips:
                  type: array
                  description: A list of reserved IP IDs to attach to the Instance.
                  nullable: true
                  items:
                    type: string
                boot_type:
                  type: string
                  description: Boot type to use.
                  enum:
                  - local
                  - bootscript
                  - rescue
                  default: local
                organization:
                  type: string
                  description: Instance Organization ID.
                  deprecated: true
                  nullable: true
                  x-one-of: ProjectIdentifier
                project:
                  type: string
                  description: Instance Project ID.
                  nullable: true
                  x-one-of: ProjectIdentifier
                tags:
                  type: array
                  description: Instance tags.
                  items:
                    type: string
                security_group:
                  type: string
                  description: Security group ID.
                  nullable: true
                placement_group:
                  type: string
                  description: Placement group ID if Instance must be part of a placement
                    group.
                  nullable: true
                admin_password_encryption_ssh_key_id:
                  type: string
                  description: |-
                    UUID of the SSH RSA key that will be used to encrypt the initial admin password for OS requiring it. Mandatory for Windows OS.
                    The public_key value of this key is used to encrypt the admin password.
                  nullable: true
                protected:
                  type: boolean
                  description: True to activate server protection option.
              required:
              - name
              - commercial_type
              x-properties-order:
              - name
              - dynamic_ip_required
              - routed_ip_enabled
              - commercial_type
              - image
              - volumes
              - enable_ipv6
              - public_ip
              - public_ips
              - boot_type
              - organization
              - project
              - tags
              - security_group
              - placement_group
              - admin_password_encryption_ssh_key_id
              - protected
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X POST \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{
              "commercial_type": "string",
              "name": "string",
              "protected": false,
              "volumes": {
                  "\u003cvolumeKey\u003e": ""
              }
            }' \
            "https://api.scaleway.com/instance/v1/zones/{zone}/servers"
      - lang: HTTPie
        source: |-
          http POST "https://api.scaleway.com/instance/v1/zones/{zone}/servers" \
            X-Auth-Token:$SCW_SECRET_KEY \
            commercial_type="string" \
            name="string" \
            protected:=false \
            volumes:='{
              "\u003cvolumeKey\u003e": ""
            }'
  /instance/v1/zones/{zone}/servers/{server_id}:
    get:
      tags:
      - Instances
      operationId: GetServer
      summary: Get an Instance
      description: Get the details of a specified Instance.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: server_id
        description: UUID of the Instance you want to get.
        required: true
        schema:
          type: string
          description: UUID of the Instance you want to get.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.GetServerResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
    patch:
      tags:
      - Instances
      operationId: UpdateServer
      summary: Update an Instance
      description: Update the Instance information, such as name, boot mode, or tags.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: server_id
        description: UUID of the Instance.
        required: true
        schema:
          type: string
          description: UUID of the Instance.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.UpdateServerResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Name of the Instance.
                  nullable: true
                boot_type:
                  $ref: '#/components/schemas/scaleway.instance.v1.BootType'
                tags:
                  type: array
                  description: Tags of the Instance.
                  nullable: true
                  items:
                    type: string
                volumes:
                  type: object
                  properties:
                    <volumeKey>:
                      $ref: '#/components/schemas/scaleway.instance.v1.VolumeServerTemplate'
                  additionalProperties: true
                dynamic_ip_required:
                  $ref: '#/components/schemas/google.protobuf.BoolValue'
                routed_ip_enabled:
                  type: boolean
                  description: True to configure the instance so it uses the new routed
                    IP mode (once this is set to True you cannot set it back to False).
                  deprecated: true
                  nullable: true
                public_ips:
                  type: array
                  description: A list of reserved IP IDs to attach to the Instance.
                  nullable: true
                  items:
                    type: string
                enable_ipv6:
                  deprecated: true
                  $ref: '#/components/schemas/google.protobuf.BoolValue'
                protected:
                  type: boolean
                  description: True to activate server protection option.
                  nullable: true
                security_group:
                  $ref: '#/components/schemas/scaleway.instance.v1.SecurityGroupTemplate'
                placement_group:
                  type: string
                  description: Placement group ID if Instance must be part of a placement
                    group.
                  nullable: true
                private_nics:
                  type: array
                  description: Instance private NICs.
                  nullable: true
                  items:
                    type: string
                commercial_type:
                  type: string
                  description: |-
                    Set the commercial_type for this Instance.
                    Warning: This field has some restrictions:
                    - Cannot be changed if the Instance is not in `stopped` state.
                    - Cannot be changed if the Instance is in a placement group.
                    - Cannot be changed from/to a Windows offer to/from a Linux offer.
                    - Local storage requirements of the target commercial_types must be fulfilled (i.e. if an Instance has 80GB of local storage, it can be changed into a GP1-XS, which has a maximum of 150GB, but it cannot be changed into a DEV1-S, which has only 20GB).
                  nullable: true
                admin_password_encryption_ssh_key_id:
                  type: string
                  description: |-
                    UUID of the SSH RSA key that will be used to encrypt the initial admin password for OS requiring it. Mandatory for Windows OS.
                    The public_key value of this key is used to encrypt the admin password. When set to an empty string, reset this value and admin_password_encrypted_value to an empty string so a new password may be generated.
                  nullable: true
              x-properties-order:
              - name
              - boot_type
              - tags
              - volumes
              - dynamic_ip_required
              - routed_ip_enabled
              - public_ips
              - enable_ipv6
              - protected
              - security_group
              - placement_group
              - private_nics
              - commercial_type
              - admin_password_encryption_ssh_key_id
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X PATCH \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{"volumes":{"\u003cvolumeKey\u003e":""}}' \
            "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}"
      - lang: HTTPie
        source: |-
          http PATCH "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}" \
            X-Auth-Token:$SCW_SECRET_KEY \
            volumes:='{"\u003cvolumeKey\u003e":""}'
    delete:
      tags:
      - Instances
      operationId: DeleteServer
      summary: Delete an Instance
      description: Delete the Instance with the specified 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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: server_id
        required: true
        schema:
          type: string
      responses:
        "204":
          description: ""
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X DELETE \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}"
      - lang: HTTPie
        source: |-
          http DELETE "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
  /instance/v1/zones/{zone}/servers/{server_id}/action:
    get:
      tags:
      - Instances
      operationId: ListServerActions
      summary: List Instance actions
      description: List all actions (e.g. power on, power off, reboot) that can currently
        be performed on an Instance.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: server_id
        required: true
        schema:
          type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.ListServerActionsResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}/action"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}/action" \
            X-Auth-Token:$SCW_SECRET_KEY
    post:
      tags:
      - Instances
      operationId: ServerAction
      summary: Perform action
      description: |-
        Perform an action on an Instance.
        Available actions are:
        * `poweron`: Start a stopped Instance.
        * `poweroff`: Fully stop the Instance and release the hypervisor slot.
        * `stop_in_place`: Stop the Instance, but keep the slot on the hypervisor.
        * `reboot`: Stop the instance and restart it.
        * `backup`:  Create an image with all the volumes of an Instance.
        * `terminate`: Delete the Instance along with its attached volumes, except for SBS volumes.
        * `enable_routed_ip`: Migrate the Instance to the new network stack.

        The `terminate` action will result in the deletion of `l_ssd`, `b_ssd` and `scratch` volumes types, `sbs_volume` volumes type will only be detached.
        If you want to preserve your volumes, you should detach them before the Instance deletion or `terminate` action.

        The `backup` action can be done with:
        * No `volumes` key in the body: an image is created with snapshots of all the server volumes, except for the `scratch` volumes types.
        * `volumes` key in the body with a dictionary as value, in this dictionary volumes UUID as keys and empty dictionaries as values : an image is created with the snapshots of the volumes in `volumes` key. `scratch` volumes types can't be shapshotted.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: server_id
        description: UUID of the Instance.
        required: true
        schema:
          type: string
          description: UUID of the Instance.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.ServerActionResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                action:
                  type: string
                  description: Action to perform on the Instance.
                  enum:
                  - poweron
                  - backup
                  - stop_in_place
                  - poweroff
                  - terminate
                  - reboot
                  - enable_routed_ip
                  default: poweron
                name:
                  type: string
                  description: |-
                    Name of the backup you want to create.
                    Name of the backup you want to create.
                    This field should only be specified when performing a backup action.
                  nullable: true
                volumes:
                  type: object
                  description: |-
                    For each volume UUID, the snapshot parameters of the volume.
                    For each volume UUID, the snapshot parameters of the volume.
                    This field should only be specified when performing a backup action.
                  properties:
                    <volumeKey>:
                      $ref: '#/components/schemas/scaleway.instance.v1.ServerActionRequest.VolumeBackupTemplate'
                  additionalProperties: true
                disable_ipv6:
                  type: boolean
                  description: |-
                    Disable IPv6 on the Instance (true by default).
                    Disable IPv6 on the Instance while performing migration to routed IPs.
                    This field should only be specified when performing a enable_routed_ip action.
              x-properties-order:
              - action
              - name
              - volumes
              - disable_ipv6
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X POST \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{"volumes":{"\u003cvolumeKey\u003e":""}}' \
            "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}/action"
      - lang: HTTPie
        source: |-
          http POST "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}/action" \
            X-Auth-Token:$SCW_SECRET_KEY \
            volumes:='{"\u003cvolumeKey\u003e":""}'
  /instance/v1/zones/{zone}/servers/{server_id}/attach-volume:
    post:
      operationId: AttachServerVolume
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: server_id
        required: true
        schema:
          type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.AttachServerVolumeResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                volume_id:
                  type: string
                volume_type:
                  $ref: '#/components/schemas/scaleway.instance.v1.AttachServerVolumeRequest.VolumeType'
                boot:
                  $ref: '#/components/schemas/google.protobuf.BoolValue'
              x-properties-order:
              - volume_id
              - volume_type
              - boot
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X POST \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{"volume_id":"string"}' \
            "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}/attach-volume"
      - lang: HTTPie
        source: |-
          http POST "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}/attach-volume" \
            X-Auth-Token:$SCW_SECRET_KEY \
            volume_id="string"
  /instance/v1/zones/{zone}/servers/{server_id}/compatible-types:
    get:
      tags:
      - Instances
      operationId: GetServerCompatibleTypes
      summary: Get Instance compatible types
      description: |-
        Get compatible commercial types that can be used to update the Instance. The compatibility of an Instance offer is based on:
        * the CPU architecture
        * the OS type
        * the required l_ssd storage size
        * the required scratch storage size
        If the specified Instance offer is flagged as end of service, the best compatible offer is the first returned.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: server_id
        description: UUID of the Instance you want to get.
        required: true
        schema:
          type: string
          description: UUID of the Instance you want to get.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.ServerCompatibleTypes'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}/compatible-types"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}/compatible-types" \
            X-Auth-Token:$SCW_SECRET_KEY
  /instance/v1/zones/{zone}/servers/{server_id}/detach-volume:
    post:
      operationId: DetachServerVolume
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: server_id
        required: true
        schema:
          type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.DetachServerVolumeResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                volume_id:
                  type: string
              x-properties-order:
              - volume_id
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X POST \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{"volume_id":"string"}' \
            "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}/detach-volume"
      - lang: HTTPie
        source: |-
          http POST "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}/detach-volume" \
            X-Auth-Token:$SCW_SECRET_KEY \
            volume_id="string"
  /instance/v1/zones/{zone}/servers/{server_id}/private_nics:
    get:
      tags:
      - Private NICs
      operationId: ListPrivateNICs
      summary: List all private NICs
      description: List all private NICs of a specified Instance.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: server_id
        description: Instance to which the private NIC is attached.
        required: true
        schema:
          type: string
          description: Instance to which the private NIC is attached.
      - in: query
        name: tags
        description: Private NIC tags.
        schema:
          type: string
          description: Private NIC tags.
      - in: query
        name: per_page
        description: A positive integer lower or equal to 100 to select the number
          of items to return.
        schema:
          type: integer
          description: A positive integer lower or equal to 100 to select the number
            of items to return.
          format: uint32
          default: "50"
      - in: query
        name: page
        description: A positive integer to choose the page to return.
        schema:
          type: integer
          description: A positive integer to choose the page to return.
          format: int32
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.ListPrivateNICsResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}/private_nics"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}/private_nics" \
            X-Auth-Token:$SCW_SECRET_KEY
    post:
      tags:
      - Private NICs
      operationId: CreatePrivateNIC
      summary: Create a private NIC connecting an Instance to a 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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: server_id
        description: UUID of the Instance the private NIC will be attached to.
        required: true
        schema:
          type: string
          description: UUID of the Instance the private NIC will be attached to.
      responses:
        "201":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.CreatePrivateNICResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                private_network_id:
                  type: string
                  description: UUID of the private network where the private NIC will
                    be attached.
                tags:
                  type: array
                  description: Private NIC tags.
                  items:
                    type: string
                ipam_ip_ids:
                  type: array
                  description: UUID of IPAM ips, to be attached to the instance in
                    the requested private network. (UUID format)
                  example:
                  - 6170692e-7363-616c-6577-61792e636f6d
                  items:
                    type: string
              required:
              - private_network_id
              x-properties-order:
              - private_network_id
              - tags
              - ipam_ip_ids
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X POST \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{"private_network_id":"string"}' \
            "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}/private_nics"
      - lang: HTTPie
        source: |-
          http POST "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}/private_nics" \
            X-Auth-Token:$SCW_SECRET_KEY \
            private_network_id="string"
  /instance/v1/zones/{zone}/servers/{server_id}/private_nics/{private_nic_id}:
    get:
      tags:
      - Private NICs
      operationId: GetPrivateNIC
      summary: Get a private NIC
      description: Get private NIC properties.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: server_id
        description: Instance to which the private NIC is attached.
        required: true
        schema:
          type: string
          description: Instance to which the private NIC is attached.
      - in: path
        name: private_nic_id
        description: Private NIC unique ID.
        required: true
        schema:
          type: string
          description: Private NIC unique ID.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.GetPrivateNICResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}/private_nics/{private_nic_id}"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}/private_nics/{private_nic_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
    patch:
      tags:
      - Private NICs
      operationId: UpdatePrivateNIC
      summary: Update a private NIC
      description: Update one or more parameter(s) of a specified private NIC.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: server_id
        description: UUID of the Instance the private NIC will be attached to.
        required: true
        schema:
          type: string
          description: UUID of the Instance the private NIC will be attached to.
      - in: path
        name: private_nic_id
        description: Private NIC unique ID.
        required: true
        schema:
          type: string
          description: Private NIC unique ID.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.PrivateNIC'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                tags:
                  type: array
                  description: Tags used to select private NIC/s.
                  nullable: true
                  items:
                    type: string
              x-properties-order:
              - tags
      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/instance/v1/zones/{zone}/servers/{server_id}/private_nics/{private_nic_id}"
      - lang: HTTPie
        source: |-
          http PATCH "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}/private_nics/{private_nic_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
    delete:
      tags:
      - Private NICs
      operationId: DeletePrivateNIC
      summary: Delete a private NIC
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: server_id
        description: Instance to which the private NIC is attached.
        required: true
        schema:
          type: string
          description: Instance to which the private NIC is attached.
      - in: path
        name: private_nic_id
        description: Private NIC unique ID.
        required: true
        schema:
          type: string
          description: Private NIC unique ID.
      responses:
        "204":
          description: ""
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X DELETE \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}/private_nics/{private_nic_id}"
      - lang: HTTPie
        source: |-
          http DELETE "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}/private_nics/{private_nic_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
  /instance/v1/zones/{zone}/servers/{server_id}/user_data:
    get:
      tags:
      - User Data
      operationId: ListServerUserData
      summary: List user data
      description: List all user data keys registered on a specified Instance.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: server_id
        description: UUID of the Instance.
        required: true
        schema:
          type: string
          description: UUID of the Instance.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.ListServerUserDataResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}/user_data"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}/user_data" \
            X-Auth-Token:$SCW_SECRET_KEY
  /instance/v1/zones/{zone}/servers/{server_id}/user_data/{key}:
    get:
      tags:
      - User Data
      operationId: GetServerUserData
      summary: Get user data
      description: Get the content of a user data with the specified key on an Instance.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: server_id
        description: UUID of the Instance.
        required: true
        schema:
          type: string
          description: UUID of the Instance.
      - in: path
        name: key
        description: Key of the user data to get.
        required: true
        schema:
          type: string
          description: Key of the user data to get.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.std.File'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}/user_data/{key}"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}/user_data/{key}" \
            X-Auth-Token:$SCW_SECRET_KEY
    patch:
      tags:
      - User Data
      operationId: SetServerUserData
      summary: Add/set user data
      description: Add or update a user data with the specified key on an Instance.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: server_id
        description: UUID of the Instance.
        required: true
        schema:
          type: string
          description: UUID of the Instance.
      - in: path
        name: key
        description: Key of the user data to set.
        required: true
        schema:
          type: string
          description: Key of the user data to set.
      responses:
        "204":
          description: ""
      requestBody:
        required: true
        content:
          '*/*':
            schema:
              type: string
              format: binary
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X PATCH \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}/user_data/{key}"
      - lang: HTTPie
        source: |-
          http PATCH "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}/user_data/{key}" \
            X-Auth-Token:$SCW_SECRET_KEY
    delete:
      tags:
      - User Data
      operationId: DeleteServerUserData
      summary: Delete user data
      description: Delete the specified key from an Instance's user data.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: server_id
        description: UUID of the Instance.
        required: true
        schema:
          type: string
          description: UUID of the Instance.
      - in: path
        name: key
        description: Key of the user data to delete.
        required: true
        schema:
          type: string
          description: Key of the user data to delete.
      responses:
        "204":
          description: ""
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X DELETE \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}/user_data/{key}"
      - lang: HTTPie
        source: |-
          http DELETE "https://api.scaleway.com/instance/v1/zones/{zone}/servers/{server_id}/user_data/{key}" \
            X-Auth-Token:$SCW_SECRET_KEY
  /instance/v1/zones/{zone}/snapshots:
    get:
      tags:
      - Snapshots
      operationId: ListSnapshots
      summary: List snapshots
      description: List all snapshots of an Organization in a specified Availability
        Zone.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: query
        name: organization
        description: List snapshots only for this Organization ID.
        schema:
          type: string
          description: List snapshots only for this Organization ID.
      - in: query
        name: project
        description: List snapshots only for this Project ID.
        schema:
          type: string
          description: List snapshots only for this Project ID.
      - in: query
        name: per_page
        description: Number of snapshots returned per page (positive integer lower
          or equal to 100).
        schema:
          type: integer
          description: Number of snapshots returned per page (positive integer lower
            or equal to 100).
          format: uint32
      - in: query
        name: page
        description: Page to be returned.
        schema:
          type: integer
          description: Page to be returned.
          format: int32
      - in: query
        name: name
        description: List snapshots of the requested name.
        schema:
          type: string
          description: List snapshots of the requested name.
      - in: query
        name: tags
        description: List snapshots that have the requested tag.
        schema:
          type: string
          description: List snapshots that have the requested tag.
      - in: query
        name: base_volume_id
        description: List snapshots originating only from this volume.
        schema:
          type: string
          description: List snapshots originating only from this volume.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.ListSnapshotsResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/snapshots"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/snapshots" \
            X-Auth-Token:$SCW_SECRET_KEY
    post:
      tags:
      - Snapshots
      operationId: CreateSnapshot
      summary: Create a snapshot from a specified volume or from a QCOW2 file
      description: Create a snapshot from a specified volume or from a QCOW2 file
        in a specified Availability Zone.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      responses:
        "201":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.CreateSnapshotResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Name of the snapshot.
                volume_id:
                  type: string
                  description: UUID of the volume.
                  nullable: true
                tags:
                  type: array
                  description: Tags of the snapshot.
                  nullable: true
                  items:
                    type: string
                organization:
                  type: string
                  description: Organization ID of the snapshot.
                  deprecated: true
                  nullable: true
                  x-one-of: ProjectIdentifier
                project:
                  type: string
                  description: Project ID of the snapshot.
                  nullable: true
                  x-one-of: ProjectIdentifier
                volume_type:
                  type: string
                  description: |-
                    Volume type of the snapshot.
                    Overrides the volume_type of the snapshot.
                    If omitted, the volume type of the original volume will be used.
                  enum:
                  - unknown_volume_type
                  - l_ssd
                  - b_ssd
                  - unified
                  default: unknown_volume_type
                bucket:
                  type: string
                  description: Bucket name for snapshot imports.
                  nullable: true
                key:
                  type: string
                  description: Object key for snapshot imports.
                  nullable: true
                size:
                  type: integer
                  description: Imported snapshot size, must be a multiple of 512.
                    (in bytes)
                  format: uint64
                  nullable: true
              x-properties-order:
              - name
              - volume_id
              - tags
              - organization
              - project
              - volume_type
              - bucket
              - key
              - size
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X POST \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{"name":"string"}' \
            "https://api.scaleway.com/instance/v1/zones/{zone}/snapshots"
      - lang: HTTPie
        source: |-
          http POST "https://api.scaleway.com/instance/v1/zones/{zone}/snapshots" \
            X-Auth-Token:$SCW_SECRET_KEY \
            name="string"
  /instance/v1/zones/{zone}/snapshots/{snapshot_id}:
    get:
      tags:
      - Snapshots
      operationId: GetSnapshot
      summary: Get a snapshot
      description: Get details of a snapshot with the specified 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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: snapshot_id
        description: UUID of the snapshot you want to get.
        required: true
        schema:
          type: string
          description: UUID of the snapshot you want to get.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.GetSnapshotResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/snapshots/{snapshot_id}"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/snapshots/{snapshot_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
    put:
      tags:
      - Snapshots
      operationId: SetSnapshot
      summary: Set snapshot
      description: Replace all the properties of a snapshot.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: snapshot_id
        required: true
        schema:
          type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.SetSnapshotResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                organization:
                  type: string
                volume_type:
                  $ref: '#/components/schemas/scaleway.instance.v1.Volume.VolumeType'
                size:
                  type: integer
                  description: (in bytes)
                  format: uint64
                state:
                  $ref: '#/components/schemas/scaleway.instance.v1.Snapshot.State'
                base_volume:
                  $ref: '#/components/schemas/scaleway.instance.v1.Snapshot.BaseVolume'
                creation_date:
                  type: string
                  description: (RFC 3339 format)
                  format: date-time
                  example: "2022-03-22T12:34:56.123456Z"
                  nullable: true
                modification_date:
                  type: string
                  description: (RFC 3339 format)
                  format: date-time
                  example: "2022-03-22T12:34:56.123456Z"
                  nullable: true
                project:
                  type: string
                tags:
                  $ref: '#/components/schemas/scaleway.std.StringsValue'
              x-properties-order:
              - id
              - name
              - organization
              - volume_type
              - size
              - state
              - base_volume
              - creation_date
              - modification_date
              - project
              - tags
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X PUT \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{
              "id": "string",
              "name": "string",
              "organization": "string",
              "project": "string",
              "size": 42
            }' \
            "https://api.scaleway.com/instance/v1/zones/{zone}/snapshots/{snapshot_id}"
      - lang: HTTPie
        source: |-
          http PUT "https://api.scaleway.com/instance/v1/zones/{zone}/snapshots/{snapshot_id}" \
            X-Auth-Token:$SCW_SECRET_KEY \
            id="string" \
            name="string" \
            organization="string" \
            project="string" \
            size:=42
    patch:
      tags:
      - Snapshots
      operationId: UpdateSnapshot
      summary: Update a snapshot
      description: Update the properties of a snapshot.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: snapshot_id
        description: UUID of the snapshot. (UUID format)
        required: true
        schema:
          type: string
          description: UUID of the snapshot. (UUID format)
          example: 6170692e-7363-616c-6577-61792e636f6d
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.UpdateSnapshotResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Name of the snapshot.
                  nullable: true
                tags:
                  type: array
                  description: Tags of the snapshot.
                  nullable: true
                  items:
                    type: string
              x-properties-order:
              - name
              - tags
      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/instance/v1/zones/{zone}/snapshots/{snapshot_id}"
      - lang: HTTPie
        source: |-
          http PATCH "https://api.scaleway.com/instance/v1/zones/{zone}/snapshots/{snapshot_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
    delete:
      tags:
      - Snapshots
      operationId: DeleteSnapshot
      summary: Delete a snapshot
      description: Delete the snapshot with the specified 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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: snapshot_id
        description: UUID of the snapshot you want to delete.
        required: true
        schema:
          type: string
          description: UUID of the snapshot you want to delete.
      responses:
        "204":
          description: ""
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X DELETE \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/snapshots/{snapshot_id}"
      - lang: HTTPie
        source: |-
          http DELETE "https://api.scaleway.com/instance/v1/zones/{zone}/snapshots/{snapshot_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
  /instance/v1/zones/{zone}/snapshots/{snapshot_id}/export:
    post:
      tags:
      - Snapshots
      operationId: ExportSnapshot
      summary: Export a snapshot
      description: Export a snapshot to a specified Object Storage bucket in the same
        region.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: snapshot_id
        description: Snapshot ID.
        required: true
        schema:
          type: string
          description: Snapshot ID.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.ExportSnapshotResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                bucket:
                  type: string
                  description: Object Storage bucket name.
                key:
                  type: string
                  description: Object key.
              x-properties-order:
              - bucket
              - key
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X POST \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{"bucket":"string","key":"string"}' \
            "https://api.scaleway.com/instance/v1/zones/{zone}/snapshots/{snapshot_id}/export"
      - lang: HTTPie
        source: |-
          http POST "https://api.scaleway.com/instance/v1/zones/{zone}/snapshots/{snapshot_id}/export" \
            X-Auth-Token:$SCW_SECRET_KEY \
            bucket="string" \
            key="string"
  /instance/v1/zones/{zone}/volumes:
    get:
      tags:
      - Volumes
      operationId: ListVolumes
      summary: List volumes
      description: List volumes in the specified Availability Zone. You can filter
        the output by volume 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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: query
        name: volume_type
        description: Filter by volume type.
        schema:
          type: string
          description: Filter by volume type.
          enum:
          - l_ssd
          - b_ssd
          - unified
          - scratch
          - sbs_volume
          - sbs_snapshot
          default: l_ssd
      - in: query
        name: per_page
        description: A positive integer lower or equal to 100 to select the number
          of items to return.
        schema:
          type: integer
          description: A positive integer lower or equal to 100 to select the number
            of items to return.
          format: uint32
          default: "50"
      - in: query
        name: page
        description: A positive integer to choose the page to return.
        schema:
          type: integer
          description: A positive integer to choose the page to return.
          format: int32
      - in: query
        name: organization
        description: Filter volume by Organization ID.
        schema:
          type: string
          description: Filter volume by Organization ID.
      - in: query
        name: project
        description: Filter volume by Project ID.
        schema:
          type: string
          description: Filter volume by Project ID.
      - in: query
        name: tags
        description: Filter volumes with these exact tags (to filter with several
          tags, use commas to separate them).
        schema:
          type: string
          description: Filter volumes with these exact tags (to filter with several
            tags, use commas to separate them).
      - in: query
        name: name
        description: Filter volume by name (for eg. "vol" will return "myvolume" but
          not "data").
        schema:
          type: string
          description: Filter volume by name (for eg. "vol" will return "myvolume"
            but not "data").
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.ListVolumesResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/volumes"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/volumes" \
            X-Auth-Token:$SCW_SECRET_KEY
    post:
      tags:
      - Volumes
      operationId: CreateVolume
      summary: Create a volume
      description: Create a volume of a specified type in an Availability Zone.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      responses:
        "201":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.CreateVolumeResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Volume name.
                organization:
                  type: string
                  description: Volume Organization ID.
                  deprecated: true
                  nullable: true
                  x-one-of: ProjectIdentifier
                project:
                  type: string
                  description: Volume Project ID.
                  nullable: true
                  x-one-of: ProjectIdentifier
                tags:
                  type: array
                  description: Volume tags.
                  items:
                    type: string
                volume_type:
                  type: string
                  description: Volume type.
                  enum:
                  - l_ssd
                  - b_ssd
                  - unified
                  - scratch
                  - sbs_volume
                  - sbs_snapshot
                  default: l_ssd
                size:
                  type: integer
                  description: Volume disk size, must be a multiple of 512. (in bytes)
                  format: uint64
                  nullable: true
                  x-one-of: from
                base_snapshot:
                  type: string
                  description: ID of the snapshot on which this volume will be based.
                  nullable: true
                  x-one-of: from
              x-properties-order:
              - name
              - organization
              - project
              - tags
              - volume_type
              - size
              - base_snapshot
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X POST \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{"name":"string"}' \
            "https://api.scaleway.com/instance/v1/zones/{zone}/volumes"
      - lang: HTTPie
        source: |-
          http POST "https://api.scaleway.com/instance/v1/zones/{zone}/volumes" \
            X-Auth-Token:$SCW_SECRET_KEY \
            name="string"
  /instance/v1/zones/{zone}/volumes/{id}:
    put:
      tags:
      - Volumes
      operationId: SetVolume
      summary: Update volume
      description: Replace all volume properties with a volume message.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: id
        description: Unique ID of the volume.
        required: true
        schema:
          type: string
          description: Unique ID of the volume.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.SetVolumeResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Name of the volume.
                tags:
                  type: array
                  description: Tags of the volume.
                  nullable: true
                  items:
                    type: string
                export_uri:
                  type: string
                  description: Show the volumes NBD export URI, this field is ignored.
                  deprecated: true
                size:
                  type: integer
                  description: Volume's disk size, must be a multiple of 512. (in
                    bytes)
                  format: uint64
                volume_type:
                  type: string
                  description: Volume type.
                  enum:
                  - l_ssd
                  - b_ssd
                  - unified
                  - scratch
                  - sbs_volume
                  - sbs_snapshot
                  default: l_ssd
                creation_date:
                  type: string
                  description: Volume creation date. (RFC 3339 format)
                  format: date-time
                  example: "2022-03-22T12:34:56.123456Z"
                  nullable: true
                modification_date:
                  type: string
                  description: Volume modification date. (RFC 3339 format)
                  format: date-time
                  example: "2022-03-22T12:34:56.123456Z"
                  nullable: true
                organization:
                  type: string
                  description: Volume Organization ID.
                project:
                  type: string
                  description: Volume Project ID.
                server:
                  type: object
                  description: Instance attached to the volume.
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                  x-properties-order:
                  - id
                  - name
                state:
                  type: string
                  description: Volume state.
                  enum:
                  - available
                  - snapshotting
                  - fetching
                  - resizing
                  - saving
                  - hotsyncing
                  - error
                  default: available
              x-properties-order:
              - name
              - tags
              - export_uri
              - size
              - volume_type
              - creation_date
              - modification_date
              - organization
              - project
              - server
              - state
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X PUT \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            -H "Content-Type: application/json" \
            -d '{
              "name": "string",
              "organization": "string",
              "project": "string",
              "size": 42
            }' \
            "https://api.scaleway.com/instance/v1/zones/{zone}/volumes/{id}"
      - lang: HTTPie
        source: |-
          http PUT "https://api.scaleway.com/instance/v1/zones/{zone}/volumes/{id}" \
            X-Auth-Token:$SCW_SECRET_KEY \
            name="string" \
            organization="string" \
            project="string" \
            size:=42
  /instance/v1/zones/{zone}/volumes/{volume_id}:
    get:
      tags:
      - Volumes
      operationId: GetVolume
      summary: Get a volume
      description: Get details of a volume with the specified 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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: volume_id
        description: UUID of the volume you want to get.
        required: true
        schema:
          type: string
          description: UUID of the volume you want to get.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.GetVolumeResponse'
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X GET \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/volumes/{volume_id}"
      - lang: HTTPie
        source: |-
          http GET "https://api.scaleway.com/instance/v1/zones/{zone}/volumes/{volume_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
    patch:
      tags:
      - Volumes
      operationId: UpdateVolume
      summary: Update a volume
      description: Replace the name and/or size properties of a volume specified by
        its ID, with the specified value(s). Any volume name can be changed, however
        only `b_ssd` volumes can currently be increased in size.
      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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: volume_id
        description: UUID of the volume.
        required: true
        schema:
          type: string
          description: UUID of the volume.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/scaleway.instance.v1.UpdateVolumeResponse'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Volume name.
                  nullable: true
                tags:
                  type: array
                  description: Tags of the volume.
                  nullable: true
                  items:
                    type: string
                size:
                  type: integer
                  description: Volume disk size, must be a multiple of 512. (in bytes)
                  format: uint64
                  nullable: true
              x-properties-order:
              - name
              - tags
              - size
      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/instance/v1/zones/{zone}/volumes/{volume_id}"
      - lang: HTTPie
        source: |-
          http PATCH "https://api.scaleway.com/instance/v1/zones/{zone}/volumes/{volume_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
    delete:
      tags:
      - Volumes
      operationId: DeleteVolume
      summary: Delete a volume
      description: Delete the volume with the specified 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
          - fr-par-3
          - nl-ams-1
          - nl-ams-2
          - nl-ams-3
          - pl-waw-1
          - pl-waw-2
          - pl-waw-3
      - in: path
        name: volume_id
        description: UUID of the volume you want to delete.
        required: true
        schema:
          type: string
          description: UUID of the volume you want to delete.
      responses:
        "204":
          description: ""
      security:
      - scaleway: []
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -X DELETE \
            -H "X-Auth-Token: $SCW_SECRET_KEY" \
            "https://api.scaleway.com/instance/v1/zones/{zone}/volumes/{volume_id}"
      - lang: HTTPie
        source: |-
          http DELETE "https://api.scaleway.com/instance/v1/zones/{zone}/volumes/{volume_id}" \
            X-Auth-Token:$SCW_SECRET_KEY
