diff --git a/packages/clients/src/api/vpc/v2/api.gen.ts b/packages/clients/src/api/vpc/v2/api.gen.ts index 26d98328e..5e4fa293f 100644 --- a/packages/clients/src/api/vpc/v2/api.gen.ts +++ b/packages/clients/src/api/vpc/v2/api.gen.ts @@ -10,11 +10,13 @@ import type { Region } from '../../../bridge' import { marshalAddSubnetsRequest, marshalCreatePrivateNetworkRequest, + marshalCreateRouteRequest, marshalCreateVPCRequest, marshalDeleteSubnetsRequest, marshalMigrateZonalPrivateNetworksRequest, marshalSetSubnetsRequest, marshalUpdatePrivateNetworkRequest, + marshalUpdateRouteRequest, marshalUpdateVPCRequest, unmarshalAddSubnetsResponse, unmarshalDeleteSubnetsResponse, @@ -22,6 +24,7 @@ import { unmarshalListSubnetsResponse, unmarshalListVPCsResponse, unmarshalPrivateNetwork, + unmarshalRoute, unmarshalSetSubnetsResponse, unmarshalVPC, } from './marshalling.gen' @@ -29,14 +32,17 @@ import type { AddSubnetsRequest, AddSubnetsResponse, CreatePrivateNetworkRequest, + CreateRouteRequest, CreateVPCRequest, DeletePrivateNetworkRequest, + DeleteRouteRequest, DeleteSubnetsRequest, DeleteSubnetsResponse, DeleteVPCRequest, EnableDHCPRequest, EnableRoutingRequest, GetPrivateNetworkRequest, + GetRouteRequest, GetVPCRequest, ListPrivateNetworksRequest, ListPrivateNetworksResponse, @@ -46,9 +52,11 @@ import type { ListVPCsResponse, MigrateZonalPrivateNetworksRequest, PrivateNetwork, + Route, SetSubnetsRequest, SetSubnetsResponse, UpdatePrivateNetworkRequest, + UpdateRouteRequest, UpdateVPCRequest, VPC, } from './types.gen' @@ -428,4 +436,69 @@ export class API extends ParentAPI { }, unmarshalDeleteSubnetsResponse, ) + + /** + * Create a Route. Create a new custom Route. + * + * @param request - The request {@link CreateRouteRequest} + * @returns A Promise of Route + */ + createRoute = (request: Readonly) => + this.client.fetch( + { + body: JSON.stringify( + marshalCreateRouteRequest(request, this.client.settings), + ), + headers: jsonContentHeaders, + method: 'POST', + path: `/vpc/v2/regions/${validatePathParam('region', request.region ?? this.client.settings.defaultRegion)}/routes`, + }, + unmarshalRoute, + ) + + /** + * Get a Route. Retrieve details of an existing Route, specified by its Route + * ID. + * + * @param request - The request {@link GetRouteRequest} + * @returns A Promise of Route + */ + getRoute = (request: Readonly) => + this.client.fetch( + { + method: 'GET', + path: `/vpc/v2/regions/${validatePathParam('region', request.region ?? this.client.settings.defaultRegion)}/routes/${validatePathParam('routeId', request.routeId)}`, + }, + unmarshalRoute, + ) + + /** + * Update Route. Update parameters of the specified Route. + * + * @param request - The request {@link UpdateRouteRequest} + * @returns A Promise of Route + */ + updateRoute = (request: Readonly) => + this.client.fetch( + { + body: JSON.stringify( + marshalUpdateRouteRequest(request, this.client.settings), + ), + headers: jsonContentHeaders, + method: 'PATCH', + path: `/vpc/v2/regions/${validatePathParam('region', request.region ?? this.client.settings.defaultRegion)}/routes/${validatePathParam('routeId', request.routeId)}`, + }, + unmarshalRoute, + ) + + /** + * Delete a Route. Delete a Route specified by its Route ID. + * + * @param request - The request {@link DeleteRouteRequest} + */ + deleteRoute = (request: Readonly) => + this.client.fetch({ + method: 'DELETE', + path: `/vpc/v2/regions/${validatePathParam('region', request.region ?? this.client.settings.defaultRegion)}/routes/${validatePathParam('routeId', request.routeId)}`, + }) } diff --git a/packages/clients/src/api/vpc/v2/index.gen.ts b/packages/clients/src/api/vpc/v2/index.gen.ts index cdb6fbbaa..2a0001ca7 100644 --- a/packages/clients/src/api/vpc/v2/index.gen.ts +++ b/packages/clients/src/api/vpc/v2/index.gen.ts @@ -5,14 +5,17 @@ export type { AddSubnetsRequest, AddSubnetsResponse, CreatePrivateNetworkRequest, + CreateRouteRequest, CreateVPCRequest, DeletePrivateNetworkRequest, + DeleteRouteRequest, DeleteSubnetsRequest, DeleteSubnetsResponse, DeleteVPCRequest, EnableDHCPRequest, EnableRoutingRequest, GetPrivateNetworkRequest, + GetRouteRequest, GetVPCRequest, ListPrivateNetworksRequest, ListPrivateNetworksRequestOrderBy, @@ -25,10 +28,13 @@ export type { ListVPCsResponse, MigrateZonalPrivateNetworksRequest, PrivateNetwork, + Route, SetSubnetsRequest, SetSubnetsResponse, Subnet, UpdatePrivateNetworkRequest, + UpdateRouteRequest, UpdateVPCRequest, VPC, } from './types.gen' +export * as ValidationRules from './validation-rules.gen' diff --git a/packages/clients/src/api/vpc/v2/marshalling.gen.ts b/packages/clients/src/api/vpc/v2/marshalling.gen.ts index a0b584e3a..ca5b2a640 100644 --- a/packages/clients/src/api/vpc/v2/marshalling.gen.ts +++ b/packages/clients/src/api/vpc/v2/marshalling.gen.ts @@ -12,6 +12,7 @@ import type { AddSubnetsRequest, AddSubnetsResponse, CreatePrivateNetworkRequest, + CreateRouteRequest, CreateVPCRequest, DeleteSubnetsRequest, DeleteSubnetsResponse, @@ -20,10 +21,12 @@ import type { ListVPCsResponse, MigrateZonalPrivateNetworksRequest, PrivateNetwork, + Route, SetSubnetsRequest, SetSubnetsResponse, Subnet, UpdatePrivateNetworkRequest, + UpdateRouteRequest, UpdateVPCRequest, VPC, } from './types.gen' @@ -68,6 +71,27 @@ export const unmarshalPrivateNetwork = (data: unknown): PrivateNetwork => { } as PrivateNetwork } +export const unmarshalRoute = (data: unknown): Route => { + if (!isJSONObject(data)) { + throw new TypeError( + `Unmarshalling the type 'Route' failed as data isn't a dictionary.`, + ) + } + + return { + createdAt: unmarshalDate(data.created_at), + description: data.description, + destination: data.destination, + id: data.id, + nexthopPrivateNetworkId: data.nexthop_private_network_id, + nexthopResourceId: data.nexthop_resource_id, + region: data.region, + tags: data.tags, + updatedAt: unmarshalDate(data.updated_at), + vpcId: data.vpc_id, + } as Route +} + export const unmarshalVPC = (data: unknown): VPC => { if (!isJSONObject(data)) { throw new TypeError( @@ -196,6 +220,18 @@ export const marshalCreatePrivateNetworkRequest = ( vpc_id: request.vpcId, }) +export const marshalCreateRouteRequest = ( + request: CreateRouteRequest, + defaults: DefaultValues, +): Record => ({ + description: request.description, + destination: request.destination, + nexthop_private_network_id: request.nexthopPrivateNetworkId, + nexthop_resource_id: request.nexthopResourceId, + tags: request.tags, + vpc_id: request.vpcId, +}) + export const marshalCreateVPCRequest = ( request: CreateVPCRequest, defaults: DefaultValues, @@ -247,6 +283,17 @@ export const marshalUpdatePrivateNetworkRequest = ( tags: request.tags, }) +export const marshalUpdateRouteRequest = ( + request: UpdateRouteRequest, + defaults: DefaultValues, +): Record => ({ + description: request.description, + destination: request.destination, + nexthop_private_network_id: request.nexthopPrivateNetworkId, + nexthop_resource_id: request.nexthopResourceId, + tags: request.tags, +}) + export const marshalUpdateVPCRequest = ( request: UpdateVPCRequest, defaults: DefaultValues, diff --git a/packages/clients/src/api/vpc/v2/types.gen.ts b/packages/clients/src/api/vpc/v2/types.gen.ts index adeac2543..6ceb955c3 100644 --- a/packages/clients/src/api/vpc/v2/types.gen.ts +++ b/packages/clients/src/api/vpc/v2/types.gen.ts @@ -58,6 +58,29 @@ export interface PrivateNetwork { dhcpEnabled: boolean } +export interface Route { + /** Route ID. */ + id: string + /** Route description. */ + description: string + /** Tags of the Route. */ + tags: string[] + /** VPC the Route belongs to. */ + vpcId: string + /** Destination of the Route. */ + destination: string + /** ID of the nexthop resource. */ + nexthopResourceId?: string + /** ID of the nexthop private network. */ + nexthopPrivateNetworkId?: string + /** Date the Route was created. */ + createdAt?: Date + /** Date the Route was last modified. */ + updatedAt?: Date + /** Region of the Route. */ + region: Region +} + export interface VPC { /** VPC ID. */ id: string @@ -117,6 +140,26 @@ export type CreatePrivateNetworkRequest = { vpcId?: string } +export type CreateRouteRequest = { + /** + * Region to target. If none is passed will use default region from the + * config. + */ + region?: Region + /** Route description. */ + description: string + /** Tags of the Route. */ + tags?: string[] + /** VPC the Route belongs to. */ + vpcId: string + /** Destination of the Route. */ + destination: string + /** ID of the nexthop resource. */ + nexthopResourceId?: string + /** ID of the nexthop private network. */ + nexthopPrivateNetworkId?: string +} + export type CreateVPCRequest = { /** * Region to target. If none is passed will use default region from the @@ -143,6 +186,16 @@ export type DeletePrivateNetworkRequest = { privateNetworkId: string } +export type DeleteRouteRequest = { + /** + * Region to target. If none is passed will use default region from the + * config. + */ + region?: Region + /** Route ID. */ + routeId: string +} + export type DeleteSubnetsRequest = { /** * Region to target. If none is passed will use default region from the @@ -198,6 +251,16 @@ export type GetPrivateNetworkRequest = { privateNetworkId: string } +export type GetRouteRequest = { + /** + * Region to target. If none is passed will use default region from the + * config. + */ + region?: Region + /** Route ID. */ + routeId: string +} + export type GetVPCRequest = { /** * Region to target. If none is passed will use default region from the @@ -403,6 +466,26 @@ export type UpdatePrivateNetworkRequest = { tags?: string[] } +export type UpdateRouteRequest = { + /** + * Region to target. If none is passed will use default region from the + * config. + */ + region?: Region + /** Route ID. */ + routeId: string + /** Route description. */ + description?: string + /** Tags of the Route. */ + tags?: string[] + /** Destination of the Route. */ + destination?: string + /** ID of the nexthop resource. */ + nexthopResourceId?: string + /** ID of the nexthop private network. */ + nexthopPrivateNetworkId?: string +} + export type UpdateVPCRequest = { /** * Region to target. If none is passed will use default region from the diff --git a/packages/clients/src/api/vpc/v2/validation-rules.gen.ts b/packages/clients/src/api/vpc/v2/validation-rules.gen.ts new file mode 100644 index 000000000..86c30e5f9 --- /dev/null +++ b/packages/clients/src/api/vpc/v2/validation-rules.gen.ts @@ -0,0 +1,8 @@ +// This file was automatically generated. DO NOT EDIT. +// If you have any remark or suggestion do not hesitate to open an issue. + +export const Route = { + description: { + maxLength: 200, + }, +}