openapi: 3.2.0 info: title: Oxide Region Ip Pools 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: ip-pools description: IP pools are collections of external IPs that can be allocated and attached to instances. externalDocs: url: http://docs.oxide.computer/api/ip-pools paths: /v1/ip-pools: get: tags: - ip-pools summary: List IP pools operationId: ip_pool_list parameters: - in: query name: ip_version schema: $ref: '#/components/schemas/IpVersion' - 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: pool_type schema: $ref: '#/components/schemas/IpPoolType' - in: query name: sort_by schema: $ref: '#/components/schemas/NameOrIdSortMode' responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/SiloIpPoolResultsPage' 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' x-dropshot-pagination: required: [] /v1/ip-pools/{pool}: get: tags: - ip-pools summary: Fetch IP pool operationId: ip_pool_view parameters: - in: path name: pool description: Name or ID of the IP pool required: true schema: $ref: '#/components/schemas/NameOrId' responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/SiloIpPool' 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' components: schemas: IpPoolType: description: Type of IP pool. oneOf: - description: Unicast IP pool for standard IP allocations. type: string enum: - unicast - description: 'Multicast IP pool for multicast group allocations. All ranges in a multicast pool must be either ASM or SSM (not mixed).' type: string enum: - multicast SiloIpPoolResultsPage: description: A single page of results type: object properties: items: description: list of items on this page of results type: array items: $ref: '#/components/schemas/SiloIpPool' next_page: description: token used to fetch the next page of results (if any) type: - string - 'null' required: - items NameOrId: oneOf: - title: id allOf: - type: string format: uuid - title: name allOf: - $ref: '#/components/schemas/Name' Error: description: Error information from a response. type: object properties: error_code: type: string message: type: string request_id: type: string required: - message - request_id IpVersion: description: The IP address version. type: string enum: - v4 - v6 Name: title: A name unique within the parent collection description: Names must begin with a lower case ASCII letter, be composed exclusively of lowercase ASCII, uppercase ASCII, numbers, and '-', and may not end with a '-'. Names cannot be a UUID, but they may contain a UUID. They can be at most 63 characters long. type: string pattern: ^(?![0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$)^[a-z]([a-zA-Z0-9-]*[a-zA-Z0-9]+)?$ minLength: 1 maxLength: 63 SiloIpPool: description: An IP pool in the context of a silo type: object properties: description: description: Human-readable free-form text about a resource type: string id: description: Unique, immutable, system-controlled identifier for each resource type: string format: uuid ip_version: description: The IP version for the pool. allOf: - $ref: '#/components/schemas/IpVersion' is_default: description: 'When a pool is the default for a silo, floating IPs and instance ephemeral IPs will come from that pool when no other pool is specified. A silo can have at most one default pool per combination of pool type (unicast or multicast) and IP version (IPv4 or IPv6), allowing up to 4 default pools total.' type: boolean name: description: Unique, mutable, user-controlled identifier for each resource allOf: - $ref: '#/components/schemas/Name' pool_type: description: Type of IP pool (unicast or multicast). allOf: - $ref: '#/components/schemas/IpPoolType' time_created: description: Timestamp when this resource was created type: string format: date-time time_modified: description: Timestamp when this resource was last modified type: string format: date-time required: - description - id - ip_version - is_default - name - pool_type - time_created - time_modified NameOrIdSortMode: description: Supported set of sort modes for scanning by name or id oneOf: - description: Sort in increasing order of "name" type: string enum: - name_ascending - description: Sort in decreasing order of "name" type: string enum: - name_descending - description: Sort in increasing order of "id" type: string enum: - id_ascending responses: Error: description: Error content: application/json: schema: $ref: '#/components/schemas/Error'