VPC

API for VPC operations

Version: 0.1.0

Server

  • URL: https://api.kopernik.us/v0
    • Kopernik.us API server

Paths

/resource/vpc/{providerUid}

GET

List VPCs

List VPCs for the specified provider

Parameters:

Name In Type Required Description
providerUid path ProviderId ✅ Unique identifier of the provider
regionUid query string ✅ Unique identifier of the region the resource belongs to
nextToken query string ❌ Token for the next page of VPCs, if there are more items to fetch
maxResults query integer ❌ Maximum number of VPCs to fetch
jq query string ❌ JQ filter expression to filter the results. Only resources where the expression evaluates to a truthy value are included. The expression is applied to each resource’s JSON representation. Uses jq 1.7 syntax.

Responses:

POST

Create VPC

Initiate creation of a new VPC for the specified provider, and return an Action representing the create operation.

The operation starts the action immediately, and then waits a configurable amount of time for the action to complete. If the action completes within the wait time, then the operation returns 200 OK with the Action object in completed state. If the action does not complete within the wait time, then the operation returns 202 Accepted with the Action object in initiated state. Action status and result can be checked later using the Action API.

Note that this operation’s result represents Action, not the created resource, i.e. returns successful HTTP response (200 or 202) even if the underlying Create resource operation fails. If the action cannot be initiated, then an error response is returned.

Parameters:

Name In Type Required Description
providerUid path ProviderId ✅ Unique identifier of the provider
regionUid query string ❌ Unique identifier of the region to create the resource in. Must be provided either as this query parameter or in the request body; when both are given, they must be equal.
waitTime query number ❌ Maximum time to wait for the action to complete with 200 OK before returning 202 Accepted; in seconds

Request Body:

Content Type: application/json

Schema: VpcCreate

Responses:

  • 200: VPC created

  • 202: VPC create initiated

  • 400: Argument validation error

/resource/vpc/{providerUid}/{resourceUid}

GET

Get VPC

Get VPC details

Parameters:

Name In Type Required Description
providerUid path ProviderId ✅ Unique identifier of the provider
regionUid query string ✅ Unique identifier of the region the resource belongs to
resourceUid path string ✅ Unique identifier of the VPC

Responses:

  • 200: VPC details

  • 400: Argument validation error

  • 404: VPC not found

DELETE

Delete VPC

Initiate deletion of a VPC, and return an Action representing the delete operation. Note that this operation returns successful HTTP response (200 or 202) even if the Delete action fails. Error response is returned if the Action cannot be initiated. Resource deletion status and result are available in the returned Action object, or via the Action API later.

Parameters:

Name In Type Required Description
providerUid path ProviderId ✅ Unique identifier of the provider
regionUid query string ✅ Unique identifier of the region the resource belongs to
resourceUid path string ✅ Unique identifier of the VPC to delete
forceDelete query boolean ❌ If true, delete all dependencies before deleting the VPC, such as subnets, internet gateways, route tables, VPC endpoints, etc.
waitTime query number ❌ Maximum time to wait for the action to complete with 200 OK before returning 202 Accepted; in seconds

Responses:

  • 200: VPC deletion completed

  • 202: VPC deletion initiated

  • 400: Argument validation error

  • 404: VPC not found

Schemas

Vpc

VPC

Composition: allOf

Type: object

Properties:

Name Type Required Description
name string ✅ Name of the VPC
description string Description of the VPC
cidrBlock string ✅ CIDR block of the VPC; for providers that do not support CIDR blocks at VPC level, this field is set to the address with least possible scope to include all VPC subnets
subnets array<Subnet> ✅ Subnets of the VPC
default boolean Whether the VPC is the default VPC in its region
tags array Tags of the VPC. kopernik.us stores tags itself for every provider, so they are not visible in the provider’s own console, and they are deleted along with the VPC.

Subnet

Subnet

Type: object

Properties:

Name Type Required Description
uid string ✅ Unique identifier of the subnet
address string ✅ Address of the subnet (CIDR block)
name string Name of the subnet
availabilityZone string Availability zone for the subnet, if applicable
access string enum Internet connectivity of the subnet, as observed from the provider’s routing; it is derived on every read rather than stored, so it reflects changes made outside this service. - public — instances may hold a public address and are reachable from the internet. - private — not reachable from the internet; outbound internet access through provider NAT. - isolated — no internet access in either direction; traffic stays within the VPC. - custom — routing that this service cannot classify, such as a default route to an instance or an appliance managed by the user. - unsupported — the provider does not model connectivity at subnet level; see enforcement.
enforcement string enum Who guarantees the subnet’s access. - network — the provider’s routing enforces it; instances in the subnet cannot escape it. - none — the provider has no subnet-level boundary, so access is not enforced and connectivity is configured per instance instead.

VpcCreate

Request to create a new VPC

Type: object

Properties:

Name Type Required Description
regionUid string ✅ Region identifier where the VPC will be created
subnets array ✅ Subnets to create within the VPC
cidrBlock string CIDR block for the VPC; for providers that do not support CIDR blocks at VPC level, this field is set to the address with least possible scope to include all VPC subnets
name string Name of the VPC
description string Description of the VPC
tags array Tags for the VPC. kopernik.us stores tags itself rather than sending any to the provider, so they are not visible in the provider’s own console, and they are deleted along with the VPC. A tag is either key or key=value, holds no control characters and at most 256 characters, and one VPC carries at most 100; one tag is kept per key, so a repeated key keeps the value given last. Tags are set when the VPC is created, and replaced afterwards through /resource/tags.

VpcResourceResponse

Response with VPC

Composition: allOf

Type: object

Properties:

Name Type Required Description
resource Vpc ✅

VpcPagedResourceResponse

Response with paged VPCs

Composition: allOf

Type: object

Properties:

Name Type Required Description
resources array<Vpc> ✅

Last updated October 30, 2026Send feedback