diff --git a/packages/clients/src/api/baremetal/v1/api.gen.ts b/packages/clients/src/api/baremetal/v1/api.gen.ts index f54ade44a..08bbc6af3 100644 --- a/packages/clients/src/api/baremetal/v1/api.gen.ts +++ b/packages/clients/src/api/baremetal/v1/api.gen.ts @@ -70,6 +70,7 @@ import type { ListServersResponse, ListSettingsRequest, ListSettingsResponse, + MigrateServerToMonthlyOfferRequest, OS, Offer, Option, @@ -517,6 +518,23 @@ export class API extends ParentAPI { unmarshalServer, ) + /** + * Migrate server offer. Migrate server with hourly offer to monthly offer. + * + * @param request - The request {@link MigrateServerToMonthlyOfferRequest} + * @returns A Promise of Server + */ + migrateServerToMonthlyOffer = ( + request: Readonly, + ) => + this.client.fetch( + { + method: 'POST', + path: `/baremetal/v1/zones/${validatePathParam('zone', request.zone ?? this.client.settings.defaultZone)}/servers/${validatePathParam('serverId', request.serverId)}/migrate-offer-monthly`, + }, + unmarshalServer, + ) + protected pageOfListOffers = (request: Readonly = {}) => this.client.fetch( { diff --git a/packages/clients/src/api/baremetal/v1/content.gen.ts b/packages/clients/src/api/baremetal/v1/content.gen.ts index 7d2b0d1af..18e62b262 100644 --- a/packages/clients/src/api/baremetal/v1/content.gen.ts +++ b/packages/clients/src/api/baremetal/v1/content.gen.ts @@ -24,4 +24,5 @@ export const SERVER_TRANSIENT_STATUSES: ServerStatus[] = [ 'deleting', 'ordered', 'resetting', + 'migrating', ] diff --git a/packages/clients/src/api/baremetal/v1/index.gen.ts b/packages/clients/src/api/baremetal/v1/index.gen.ts index b5ee15ba8..fff7d779f 100644 --- a/packages/clients/src/api/baremetal/v1/index.gen.ts +++ b/packages/clients/src/api/baremetal/v1/index.gen.ts @@ -44,6 +44,7 @@ export type { ListSettingsRequestOrderBy, ListSettingsResponse, Memory, + MigrateServerToMonthlyOfferRequest, OS, OSOSField, Offer, diff --git a/packages/clients/src/api/baremetal/v1/marshalling.gen.ts b/packages/clients/src/api/baremetal/v1/marshalling.gen.ts index 104cd871b..0e49cde62 100644 --- a/packages/clients/src/api/baremetal/v1/marshalling.gen.ts +++ b/packages/clients/src/api/baremetal/v1/marshalling.gen.ts @@ -421,6 +421,7 @@ export const unmarshalOffer = (data: unknown): Offer => { incompatibleOsIds: data.incompatible_os_ids, maxBandwidth: data.max_bandwidth, memories: unmarshalArrayOfObject(data.memories, unmarshalMemory), + monthlyOfferId: data.monthly_offer_id, name: data.name, operationPath: data.operation_path, options: unmarshalArrayOfObject(data.options, unmarshalOfferOptionOffer), diff --git a/packages/clients/src/api/baremetal/v1/types.gen.ts b/packages/clients/src/api/baremetal/v1/types.gen.ts index a9c7aa9e2..0132e970e 100644 --- a/packages/clients/src/api/baremetal/v1/types.gen.ts +++ b/packages/clients/src/api/baremetal/v1/types.gen.ts @@ -104,6 +104,7 @@ export type ServerStatus = | 'out_of_stock' | 'ordered' | 'resetting' + | 'migrating' export type SettingType = 'unknown' | 'smtp' @@ -479,6 +480,8 @@ export interface Offer { tags: string[] /** GPU specifications of the offer. */ gpus: GPU[] + /** Exist only for hourly offers, to migrate to the monthly offer. */ + monthlyOfferId?: string } export interface Option { @@ -900,6 +903,13 @@ export interface ListSettingsResponse { settings: Setting[] } +export type MigrateServerToMonthlyOfferRequest = { + /** Zone to target. If none is passed will use default zone from the config. */ + zone?: ScwZone + /** ID of the server. */ + serverId: string +} + export type PrivateNetworkApiAddServerPrivateNetworkRequest = { /** Zone to target. If none is passed will use default zone from the config. */ zone?: ScwZone