Oxide Vpcs API

Virtual Private Clouds (VPCs) provide isolated network environments for managing and deploying services.

Business capability
IT Infrastructure Management BC-600.50

Operations 33

GET /v1/internet-gateway-ip-addresses List IP addresses attached to internet gateway #
POST /v1/internet-gateway-ip-addresses Attach IP address to internet gateway #
DELETE /v1/internet-gateway-ip-addresses/{address} Detach IP address from internet gateway #
GET /v1/internet-gateway-ip-pools List IP pools attached to internet gateway #
POST /v1/internet-gateway-ip-pools Attach IP pool to internet gateway #
DELETE /v1/internet-gateway-ip-pools/{pool} Detach IP pool from internet gateway #
GET /v1/internet-gateways List internet gateways #
POST /v1/internet-gateways Create VPC internet gateway #
GET /v1/internet-gateways/{gateway} Fetch internet gateway #
DELETE /v1/internet-gateways/{gateway} Delete internet gateway #
GET /v1/vpc-firewall-rules List firewall rules #
PUT /v1/vpc-firewall-rules Replace firewall rules #
GET /v1/vpc-router-routes List routes #
POST /v1/vpc-router-routes Create route #
GET /v1/vpc-router-routes/{route} Fetch route #
PUT /v1/vpc-router-routes/{route} Update route #
DELETE /v1/vpc-router-routes/{route} Delete route #
GET /v1/vpc-routers List routers #
POST /v1/vpc-routers Create VPC router #
GET /v1/vpc-routers/{router} Fetch router #
PUT /v1/vpc-routers/{router} Update router #
DELETE /v1/vpc-routers/{router} Delete router #
GET /v1/vpc-subnets List subnets #
POST /v1/vpc-subnets Create subnet #
GET /v1/vpc-subnets/{subnet} Fetch subnet #
PUT /v1/vpc-subnets/{subnet} Update subnet #
DELETE /v1/vpc-subnets/{subnet} Delete subnet #
GET /v1/vpc-subnets/{subnet}/network-interfaces List network interfaces #
GET /v1/vpcs List VPCs #
POST /v1/vpcs Create VPC #
GET /v1/vpcs/{vpc} Fetch VPC #
PUT /v1/vpcs/{vpc} Update VPC #
DELETE /v1/vpcs/{vpc} Delete VPC #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/oxide-computer-vpcs-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

oxide-computer-vpcs-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Oxide Region Vpcs API
  description: API for interacting with the Oxide control plane
  contact:
    url: https://oxide.computer
    email: api@oxide.computer
  version: 2026081901.0.0
tags:
- name: vpcs
  description: Virtual Private Clouds (VPCs) provide isolated network environments for managing and deploying services.
  externalDocs:
    url: http://docs.oxide.computer/api/vpcs
paths:
  /v1/internet-gateway-ip-addresses:
    get:
      tags:
      - vpcs
      summary: List IP addresses attached to internet gateway
      operationId: internet_gateway_ip_address_list
      parameters:
      - in: query
        name: gateway
        description: Name or ID of the internet gateway
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: limit
        description: Maximum number of items returned by a single call
        schema:
          type:
          - integer
          - 'null'
          format: uint32
          minimum: 1
      - in: query
        name: page_token
        description: Token returned by previous call to retrieve the subsequent page
        schema:
          type:
          - string
          - 'null'
      - in: query
        name: project
        description: Name or ID of the project, only required if `vpc` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: sort_by
        schema:
          $ref: '#/components/schemas/NameOrIdSortMode'
      - in: query
        name: vpc
        description: Name or ID of the VPC, only required if `gateway` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternetGatewayIpAddressResultsPage'
        4XX:
          $ref: '#/components/responses/Error'
        5XX:
          $ref: '#/components/responses/Error'
      x-dropshot-pagination:
        required:
        - gateway
    post:
      tags:
      - vpcs
      summary: Attach IP address to internet gateway
      operationId: internet_gateway_ip_address_create
      parameters:
      - in: query
        name: gateway
        description: Name or ID of the internet gateway
        required: true
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: project
        description: Name or ID of the project, only required if `vpc` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: vpc
        description: Name or ID of the VPC, only required if `gateway` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InternetGatewayIpAddressCreate'
        required: true
      responses:
        '201':
          description: successful creation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternetGatewayIpAddress'
        4XX:
          $ref: '#/components/responses/Error'
        5XX:
          $ref: '#/components/responses/Error'
  /v1/internet-gateway-ip-addresses/{address}:
    delete:
      tags:
      - vpcs
      summary: Detach IP address from internet gateway
      operationId: internet_gateway_ip_address_delete
      parameters:
      - in: path
        name: address
        description: Name or ID of the IP address
        required: true
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: cascade
        description: Detach attached IP pools/addresses and delete any routes targeting this gateway. Without `cascade`, delete fails if the gateway has any IP pools or IP addresses attached.
        schema:
          type: boolean
      - in: query
        name: gateway
        description: Name or ID of the internet gateway
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: project
        description: Name or ID of the project, only required if `vpc` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: vpc
        description: Name or ID of the VPC, only required if `gateway` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      responses:
        '204':
          description: successful deletion
        4XX:
          $ref: '#/components/responses/Error'
        5XX:
          $ref: '#/components/responses/Error'
  /v1/internet-gateway-ip-pools:
    get:
      tags:
      - vpcs
      summary: List IP pools attached to internet gateway
      operationId: internet_gateway_ip_pool_list
      parameters:
      - in: query
        name: gateway
        description: Name or ID of the internet gateway
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: limit
        description: Maximum number of items returned by a single call
        schema:
          type:
          - integer
          - 'null'
          format: uint32
          minimum: 1
      - in: query
        name: page_token
        description: Token returned by previous call to retrieve the subsequent page
        schema:
          type:
          - string
          - 'null'
      - in: query
        name: project
        description: Name or ID of the project, only required if `vpc` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: sort_by
        schema:
          $ref: '#/components/schemas/NameOrIdSortMode'
      - in: query
        name: vpc
        description: Name or ID of the VPC, only required if `gateway` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternetGatewayIpPoolResultsPage'
        4XX:
          $ref: '#/components/responses/Error'
        5XX:
          $ref: '#/components/responses/Error'
      x-dropshot-pagination:
        required:
        - gateway
    post:
      tags:
      - vpcs
      summary: Attach IP pool to internet gateway
      operationId: internet_gateway_ip_pool_create
      parameters:
      - in: query
        name: gateway
        description: Name or ID of the internet gateway
        required: true
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: project
        description: Name or ID of the project, only required if `vpc` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: vpc
        description: Name or ID of the VPC, only required if `gateway` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InternetGatewayIpPoolCreate'
        required: true
      responses:
        '201':
          description: successful creation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternetGatewayIpPool'
        4XX:
          $ref: '#/components/responses/Error'
        5XX:
          $ref: '#/components/responses/Error'
  /v1/internet-gateway-ip-pools/{pool}:
    delete:
      tags:
      - vpcs
      summary: Detach IP pool from internet gateway
      operationId: internet_gateway_ip_pool_delete
      parameters:
      - in: path
        name: pool
        description: Name or ID of the IP pool
        required: true
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: cascade
        description: Detach attached IP pools/addresses and delete any routes targeting this gateway. Without `cascade`, delete fails if the gateway has any IP pools or IP addresses attached.
        schema:
          type: boolean
      - in: query
        name: gateway
        description: Name or ID of the internet gateway
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: project
        description: Name or ID of the project, only required if `vpc` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: vpc
        description: Name or ID of the VPC, only required if `gateway` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      responses:
        '204':
          description: successful deletion
        4XX:
          $ref: '#/components/responses/Error'
        5XX:
          $ref: '#/components/responses/Error'
  /v1/internet-gateways:
    get:
      tags:
      - vpcs
      summary: List internet gateways
      operationId: internet_gateway_list
      parameters:
      - in: query
        name: limit
        description: Maximum number of items returned by a single call
        schema:
          type:
          - integer
          - 'null'
          format: uint32
          minimum: 1
      - in: query
        name: page_token
        description: Token returned by previous call to retrieve the subsequent page
        schema:
          type:
          - string
          - 'null'
      - in: query
        name: project
        description: Name or ID of the project, only required if `vpc` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: sort_by
        schema:
          $ref: '#/components/schemas/NameOrIdSortMode'
      - in: query
        name: vpc
        description: Name or ID of the VPC
        schema:
          $ref: '#/components/schemas/NameOrId'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternetGatewayResultsPage'
        4XX:
          $ref: '#/components/responses/Error'
        5XX:
          $ref: '#/components/responses/Error'
      x-dropshot-pagination:
        required:
        - vpc
    post:
      tags:
      - vpcs
      summary: Create VPC internet gateway
      operationId: internet_gateway_create
      parameters:
      - in: query
        name: project
        description: Name or ID of the project, only required if `vpc` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: vpc
        description: Name or ID of the VPC
        required: true
        schema:
          $ref: '#/components/schemas/NameOrId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InternetGatewayCreate'
        required: true
      responses:
        '201':
          description: successful creation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternetGateway'
        4XX:
          $ref: '#/components/responses/Error'
        5XX:
          $ref: '#/components/responses/Error'
  /v1/internet-gateways/{gateway}:
    get:
      tags:
      - vpcs
      summary: Fetch internet gateway
      operationId: internet_gateway_view
      parameters:
      - in: path
        name: gateway
        description: Name or ID of the gateway
        required: true
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: project
        description: Name or ID of the project, only required if `vpc` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: vpc
        description: Name or ID of the VPC
        schema:
          $ref: '#/components/schemas/NameOrId'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternetGateway'
        4XX:
          $ref: '#/components/responses/Error'
        5XX:
          $ref: '#/components/responses/Error'
    delete:
      tags:
      - vpcs
      summary: Delete internet gateway
      operationId: internet_gateway_delete
      parameters:
      - in: path
        name: gateway
        description: Name or ID of the gateway
        required: true
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: cascade
        description: Detach attached IP pools/addresses and delete any routes targeting this gateway. Without `cascade`, delete fails if the gateway has any IP pools or IP addresses attached.
        schema:
          type: boolean
      - in: query
        name: project
        description: Name or ID of the project, only required if `vpc` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: vpc
        description: Name or ID of the VPC
        schema:
          $ref: '#/components/schemas/NameOrId'
      responses:
        '204':
          description: successful deletion
        4XX:
          $ref: '#/components/responses/Error'
        5XX:
          $ref: '#/components/responses/Error'
  /v1/vpc-firewall-rules:
    get:
      tags:
      - vpcs
      summary: List firewall rules
      operationId: vpc_firewall_rules_view
      parameters:
      - in: query
        name: project
        description: Name or ID of the project, only required if `vpc` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: vpc
        description: Name or ID of the VPC
        required: true
        schema:
          $ref: '#/components/schemas/NameOrId'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VpcFirewallRules'
        4XX:
          $ref: '#/components/responses/Error'
        5XX:
          $ref: '#/components/responses/Error'
    put:
      tags:
      - vpcs
      summary: Replace firewall rules
      description: 'The maximum number of rules per VPC is 1024.


        Targets are used to specify the set of instances to which a firewall rule applies. You can target instances directly by name, or specify a VPC, VPC subnet, IP, or IP subnet, which will apply the rule to traffic going to all matching instances. Targets are additive: the rule applies to instances matching ANY target. The maximum number of targets is 256.


        Filters reduce the scope of a firewall rule. Without filters, the rule applies to all packets to the targets (or from the targets, if it''s an outbound rule). With multiple filters, the rule applies only to packets matching ALL filters. The maximum number of each type of filter is 256.'
      operationId: vpc_firewall_rules_update
      parameters:
      - in: query
        name: project
        description: Name or ID of the project, only required if `vpc` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: vpc
        description: Name or ID of the VPC
        required: true
        schema:
          $ref: '#/components/schemas/NameOrId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VpcFirewallRuleUpdateParams'
        required: true
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VpcFirewallRules'
        4XX:
          $ref: '#/components/responses/Error'
        5XX:
          $ref: '#/components/responses/Error'
  /v1/vpc-router-routes:
    get:
      tags:
      - vpcs
      summary: List routes
      description: List the routes associated with a router in a particular VPC.
      operationId: vpc_router_route_list
      parameters:
      - in: query
        name: limit
        description: Maximum number of items returned by a single call
        schema:
          type:
          - integer
          - 'null'
          format: uint32
          minimum: 1
      - in: query
        name: page_token
        description: Token returned by previous call to retrieve the subsequent page
        schema:
          type:
          - string
          - 'null'
      - in: query
        name: project
        description: Name or ID of the project, only required if `vpc` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: router
        description: Name or ID of the router
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: sort_by
        schema:
          $ref: '#/components/schemas/NameOrIdSortMode'
      - in: query
        name: vpc
        description: Name or ID of the VPC, only required if `router` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RouterRouteResultsPage'
        4XX:
          $ref: '#/components/responses/Error'
        5XX:
          $ref: '#/components/responses/Error'
      x-dropshot-pagination:
        required:
        - router
    post:
      tags:
      - vpcs
      summary: Create route
      operationId: vpc_router_route_create
      parameters:
      - in: query
        name: project
        description: Name or ID of the project, only required if `vpc` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: router
        description: Name or ID of the router
        required: true
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: vpc
        description: Name or ID of the VPC, only required if `router` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RouterRouteCreate'
        required: true
      responses:
        '201':
          description: successful creation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RouterRoute'
        4XX:
          $ref: '#/components/responses/Error'
        5XX:
          $ref: '#/components/responses/Error'
  /v1/vpc-router-routes/{route}:
    get:
      tags:
      - vpcs
      summary: Fetch route
      operationId: vpc_router_route_view
      parameters:
      - in: path
        name: route
        description: Name or ID of the route
        required: true
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: project
        description: Name or ID of the project, only required if `vpc` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: router
        description: Name or ID of the router
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: vpc
        description: Name or ID of the VPC, only required if `router` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RouterRoute'
        4XX:
          $ref: '#/components/responses/Error'
        5XX:
          $ref: '#/components/responses/Error'
    put:
      tags:
      - vpcs
      summary: Update route
      operationId: vpc_router_route_update
      parameters:
      - in: path
        name: route
        description: Name or ID of the route
        required: true
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: project
        description: Name or ID of the project, only required if `vpc` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: router
        description: Name or ID of the router
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: vpc
        description: Name or ID of the VPC, only required if `router` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RouterRouteUpdate'
        required: true
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RouterRoute'
        4XX:
          $ref: '#/components/responses/Error'
        5XX:
          $ref: '#/components/responses/Error'
    delete:
      tags:
      - vpcs
      summary: Delete route
      operationId: vpc_router_route_delete
      parameters:
      - in: path
        name: route
        description: Name or ID of the route
        required: true
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: project
        description: Name or ID of the project, only required if `vpc` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: router
        description: Name or ID of the router
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: vpc
        description: Name or ID of the VPC, only required if `router` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      responses:
        '204':
          description: successful deletion
        4XX:
          $ref: '#/components/responses/Error'
        5XX:
          $ref: '#/components/responses/Error'
  /v1/vpc-routers:
    get:
      tags:
      - vpcs
      summary: List routers
      operationId: vpc_router_list
      parameters:
      - in: query
        name: limit
        description: Maximum number of items returned by a single call
        schema:
          type:
          - integer
          - 'null'
          format: uint32
          minimum: 1
      - in: query
        name: page_token
        description: Token returned by previous call to retrieve the subsequent page
        schema:
          type:
          - string
          - 'null'
      - in: query
        name: project
        description: Name or ID of the project, only required if `vpc` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: sort_by
        schema:
          $ref: '#/components/schemas/NameOrIdSortMode'
      - in: query
        name: vpc
        description: Name or ID of the VPC
        schema:
          $ref: '#/components/schemas/NameOrId'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VpcRouterResultsPage'
        4XX:
          $ref: '#/components/responses/Error'
        5XX:
          $ref: '#/components/responses/Error'
      x-dropshot-pagination:
        required:
        - vpc
    post:
      tags:
      - vpcs
      summary: Create VPC router
      operationId: vpc_router_create
      parameters:
      - in: query
        name: project
        description: Name or ID of the project, only required if `vpc` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: vpc
        description: Name or ID of the VPC
        required: true
        schema:
          $ref: '#/components/schemas/NameOrId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VpcRouterCreate'
        required: true
      responses:
        '201':
          description: successful creation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VpcRouter'
        4XX:
          $ref: '#/components/responses/Error'
        5XX:
          $ref: '#/components/responses/Error'
  /v1/vpc-routers/{router}:
    get:
      tags:
      - vpcs
      summary: Fetch router
      operationId: vpc_router_view
      parameters:
      - in: path
        name: router
        description: Name or ID of the router
        required: true
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: project
        description: Name or ID of the project, only required if `vpc` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: vpc
        description: Name or ID of the VPC
        schema:
          $ref: '#/components/schemas/NameOrId'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VpcRouter'
        4XX:
          $ref: '#/components/responses/Error'
        5XX:
          $ref: '#/components/responses/Error'
    put:
      tags:
      - vpcs
      summary: Update router
      operationId: vpc_router_update
      parameters:
      - in: path
        name: router
        description: Name or ID of the router
        required: true
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: project
        description: Name or ID of the project, only required if `vpc` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: vpc
        description: Name or ID of the VPC
        schema:
          $ref: '#/components/schemas/NameOrId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VpcRouterUpdate'
        required: true
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VpcRouter'
        4XX:
          $ref: '#/components/responses/Error'
        5XX:
          $ref: '#/components/responses/Error'
    delete:
      tags:
      - vpcs
      summary: Delete router
      operationId: vpc_router_delete
      parameters:
      - in: path
        name: router
        description: Name or ID of the router
        required: true
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: project
        description: Name or ID of the project, only required if `vpc` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: vpc
        description: Name or ID of the VPC
        schema:
          $ref: '#/components/schemas/NameOrId'
      responses:
        '204':
          description: successful deletion
        4XX:
          $ref: '#/components/responses/Error'
        5XX:
          $ref: '#/components/responses/Error'
  /v1/vpc-subnets:
    get:
      tags:
      - vpcs
      summary: List subnets
      operationId: vpc_subnet_list
      parameters:
      - in: query
        name: limit
        description: Maximum number of items returned by a single call
        schema:
          type:
          - integer
          - 'null'
          format: uint32
          minimum: 1
      - in: query
        name: page_token
        description: Token returned by previous call to retrieve the subsequent page
        schema:
          type:
          - string
          - 'null'
      - in: query
        name: project
        description: Name or ID of the project, only required if `vpc` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: sort_by
        schema:
          $ref: '#/components/schemas/NameOrIdSortMode'
      - in: query
        name: vpc
        description: Name or ID of the VPC
        schema:
          $ref: '#/components/schemas/NameOrId'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VpcSubnetResultsPage'
        4XX:
          $ref: '#/components/responses/Error'
        5XX:
          $ref: '#/components/responses/Error'
      x-dropshot-pagination:
        required:
        - vpc
    post:
      tags:
      - vpcs
      summary: Create subnet
      operationId: vpc_subnet_create
      parameters:
      - in: query
        name: project
        description: Name or ID of the project, only required if `vpc` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: vpc
        description: Name or ID of the VPC
        required: true
        schema:
          $ref: '#/components/schemas/NameOrId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VpcSubnetCreate'
        required: true
      responses:
        '201':
          description: successful creation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VpcSubnet'
        4XX:
          $ref: '#/components/responses/Error'
        5XX:
          $ref: '#/components/responses/Error'
  /v1/vpc-subnets/{subnet}:
    get:
      tags:
      - vpcs
      summary: Fetch subnet
      operationId: vpc_subnet_view
      parameters:
      - in: path
        name: subnet
        description: Name or ID of the subnet
        required: true
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: project
        description: Name or ID of the project, only required if `vpc` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: vpc
        description: Name or ID of the VPC
        schema:
          $ref: '#/components/schemas/NameOrId'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VpcSubnet'
        4XX:
          $ref: '#/components/responses/Error'
        5XX:
          $ref: '#/components/responses/Error'
    put:
      tags:
      - vpcs
      summary: Update subnet
      operationId: vpc_subnet_update
      parameters:
      - in: path
        name: subnet
        description: Name or ID of the subnet
        required: true
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: project
        description: Name or ID of the project, only required if `vpc` is provided as a `Name`
        schema:
          $ref: '#/components/schemas/NameOrId'
      - in: query
        name: vpc
        description: Name or ID of the VPC
        schema:
          $ref: '#/components/schemas/NameOrId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VpcSubnetUpdate'
        required: true
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VpcSubnet'
        4XX:
          $ref: '#/components/responses/Error'
        5XX:
          $ref: '#/components/responses/Error'
    delete:
      tags:
      - vpcs
      summary: Delete subnet
      operationId: vpc_subnet_delete
      parameters:
      - in: path
        name: subnet
        description: Name or ID of the subnet
        required: true
        schema:
          $ref: '#/components/schemas/NameOrId'
   

# --- truncated at 32 KB (79 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/oxide-computer/refs/heads/main/openapi/oxide-computer-vpcs-api-openapi.yml