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:
-
200: VPCs list
- Content Type:
application/json- Schema: VpcPagedResourceResponse
- Content Type:
-
400: Argument validation error
- Content Type:
application/json- Schema: ErrorResponse
- Content Type:
-
404: Provider not found
- Content Type:
application/json- Schema: ErrorResponse
- Content Type:
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
- Content Type:
application/json- Schema: ActionResponse
- Content Type:
-
202: VPC create initiated
- Content Type:
application/json- Schema: ActionResponse
- Content Type:
-
400: Argument validation error
- Content Type:
application/json- Schema: ErrorResponse
- Content Type:
/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
- Content Type:
application/json- Schema: ActionResponse
- Content Type:
-
400: Argument validation error
- Content Type:
application/json- Schema: ErrorResponse
- Content Type:
-
404: VPC not found
- Content Type:
application/json- Schema: ErrorResponse
- Content Type:
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
- Content Type:
application/json- Schema: ActionResponse
- Content Type:
-
202: VPC deletion initiated
- Content Type:
application/json- Schema: ActionResponse
- Content Type:
-
400: Argument validation error
- Content Type:
application/json- Schema: ErrorResponse
- Content Type:
-
404: VPC not found
- Content Type:
application/json- Schema: ErrorResponse
- Content Type:
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> | ✅ |