From d4945338825a5721beb9cea88f34aaf048097045 Mon Sep 17 00:00:00 2001 From: scaleway-bot Date: Wed, 29 Mar 2023 14:59:16 +0000 Subject: [PATCH] feat: update generated APIs --- .../src/api/cockpit/v1beta1/api.gen.ts | 52 ++++++++++++++++++ .../src/api/cockpit/v1beta1/index.gen.ts | 7 +++ .../api/cockpit/v1beta1/marshalling.gen.ts | 54 +++++++++++++++++++ .../src/api/cockpit/v1beta1/types.gen.ts | 44 +++++++++++++++ 4 files changed, 157 insertions(+) diff --git a/packages/clients/src/api/cockpit/v1beta1/api.gen.ts b/packages/clients/src/api/cockpit/v1beta1/api.gen.ts index 33fd019f9..3b005a6e9 100644 --- a/packages/clients/src/api/cockpit/v1beta1/api.gen.ts +++ b/packages/clients/src/api/cockpit/v1beta1/api.gen.ts @@ -21,6 +21,7 @@ import { marshalEnableManagedAlertsRequest, marshalResetCockpitGrafanaRequest, marshalResetGrafanaUserPasswordRequest, + marshalSelectPlanRequest, marshalTriggerTestAlertRequest, unmarshalCockpit, unmarshalCockpitMetrics, @@ -28,7 +29,9 @@ import { unmarshalGrafanaUser, unmarshalListContactPointsResponse, unmarshalListGrafanaUsersResponse, + unmarshalListPlansResponse, unmarshalListTokensResponse, + unmarshalSelectPlanResponse, unmarshalToken, } from './marshalling.gen' import type { @@ -53,10 +56,14 @@ import type { ListContactPointsResponse, ListGrafanaUsersRequest, ListGrafanaUsersResponse, + ListPlansRequest, + ListPlansResponse, ListTokensRequest, ListTokensResponse, ResetCockpitGrafanaRequest, ResetGrafanaUserPasswordRequest, + SelectPlanRequest, + SelectPlanResponse, Token, TriggerTestAlertRequest, } from './types.gen' @@ -484,4 +491,49 @@ export class API extends ParentAPI { }, unmarshalGrafanaUser, ) + + protected pageOfListPlans = (request: Readonly = {}) => + this.client.fetch( + { + method: 'GET', + path: `/cockpit/v1beta1/plans`, + urlParams: urlParams( + ['order_by', request.orderBy ?? 'name_asc'], + ['page', request.page], + [ + 'page_size', + request.pageSize ?? this.client.settings.defaultPageSize, + ], + ), + }, + unmarshalListPlansResponse, + ) + + /** + * List plans. List all pricing plans. + * + * @param request - The request {@link ListPlansRequest} + * @returns A Promise of ListPlansResponse + */ + listPlans = (request: Readonly = {}) => + enrichForPagination('plans', this.pageOfListPlans, request) + + /** + * Select pricing plan. Select the wanted pricing plan. + * + * @param request - The request {@link SelectPlanRequest} + * @returns A Promise of SelectPlanResponse + */ + selectPlan = (request: Readonly) => + this.client.fetch( + { + body: JSON.stringify( + marshalSelectPlanRequest(request, this.client.settings), + ), + headers: jsonContentHeaders, + method: 'POST', + path: `/cockpit/v1beta1/select-plan`, + }, + unmarshalSelectPlanResponse, + ) } diff --git a/packages/clients/src/api/cockpit/v1beta1/index.gen.ts b/packages/clients/src/api/cockpit/v1beta1/index.gen.ts index 8729c6922..b2460205b 100644 --- a/packages/clients/src/api/cockpit/v1beta1/index.gen.ts +++ b/packages/clients/src/api/cockpit/v1beta1/index.gen.ts @@ -29,11 +29,18 @@ export type { ListGrafanaUsersRequest, ListGrafanaUsersRequestOrderBy, ListGrafanaUsersResponse, + ListPlansRequest, + ListPlansRequestOrderBy, + ListPlansResponse, ListTokensRequest, ListTokensRequestOrderBy, ListTokensResponse, + Plan, + PlanName, ResetCockpitGrafanaRequest, ResetGrafanaUserPasswordRequest, + SelectPlanRequest, + SelectPlanResponse, Token, TokenScopes, TriggerTestAlertRequest, diff --git a/packages/clients/src/api/cockpit/v1beta1/marshalling.gen.ts b/packages/clients/src/api/cockpit/v1beta1/marshalling.gen.ts index 68bd041c9..5d2192792 100644 --- a/packages/clients/src/api/cockpit/v1beta1/marshalling.gen.ts +++ b/packages/clients/src/api/cockpit/v1beta1/marshalling.gen.ts @@ -27,9 +27,13 @@ import type { GrafanaUser, ListContactPointsResponse, ListGrafanaUsersResponse, + ListPlansResponse, ListTokensResponse, + Plan, ResetCockpitGrafanaRequest, ResetGrafanaUserPasswordRequest, + SelectPlanRequest, + SelectPlanResponse, Token, TokenScopes, TriggerTestAlertRequest, @@ -105,6 +109,24 @@ export const unmarshalGrafanaUser = (data: unknown) => { } as GrafanaUser } +const unmarshalPlan = (data: unknown) => { + if (!isJSONObject(data)) { + throw new TypeError( + `Unmarshalling the type 'Plan' failed as data isn't a dictionary.`, + ) + } + + return { + id: data.id, + logsIngestionPrice: data.logs_ingestion_price, + name: data.name, + retentionLogsInterval: data.retention_logs_interval, + retentionMetricsInterval: data.retention_metrics_interval, + retentionPrice: data.retention_price, + sampleIngestionPrice: data.sample_ingestion_price, + } as Plan +} + export const unmarshalToken = (data: unknown) => { if (!isJSONObject(data)) { throw new TypeError( @@ -136,6 +158,7 @@ export const unmarshalCockpit = (data: unknown) => { ? unmarshalCockpitEndpoints(data.endpoints) : undefined, managedAlertsEnabled: data.managed_alerts_enabled, + plan: data.plan ? unmarshalPlan(data.plan) : undefined, projectId: data.project_id, status: data.status, updatedAt: unmarshalDate(data.updated_at), @@ -188,6 +211,19 @@ export const unmarshalListGrafanaUsersResponse = (data: unknown) => { } as ListGrafanaUsersResponse } +export const unmarshalListPlansResponse = (data: unknown) => { + if (!isJSONObject(data)) { + throw new TypeError( + `Unmarshalling the type 'ListPlansResponse' failed as data isn't a dictionary.`, + ) + } + + return { + plans: unmarshalArrayOfObject(data.plans, unmarshalPlan), + totalCount: data.total_count, + } as ListPlansResponse +} + export const unmarshalListTokensResponse = (data: unknown) => { if (!isJSONObject(data)) { throw new TypeError( @@ -201,6 +237,16 @@ export const unmarshalListTokensResponse = (data: unknown) => { } as ListTokensResponse } +export const unmarshalSelectPlanResponse = (data: unknown) => { + if (!isJSONObject(data)) { + throw new TypeError( + `Unmarshalling the type 'SelectPlanResponse' failed as data isn't a dictionary.`, + ) + } + + return {} as SelectPlanResponse +} + const marshalContactPointEmail = ( request: ContactPointEmail, defaults: DefaultValues, @@ -324,6 +370,14 @@ export const marshalResetGrafanaUserPasswordRequest = ( project_id: request.projectId ?? defaults.defaultProjectId, }) +export const marshalSelectPlanRequest = ( + request: SelectPlanRequest, + defaults: DefaultValues, +): Record => ({ + plan_id: request.planId, + project_id: request.projectId ?? defaults.defaultProjectId, +}) + export const marshalTriggerTestAlertRequest = ( request: TriggerTestAlertRequest, defaults: DefaultValues, diff --git a/packages/clients/src/api/cockpit/v1beta1/types.gen.ts b/packages/clients/src/api/cockpit/v1beta1/types.gen.ts index d446773a8..a8e9a83e5 100644 --- a/packages/clients/src/api/cockpit/v1beta1/types.gen.ts +++ b/packages/clients/src/api/cockpit/v1beta1/types.gen.ts @@ -14,12 +14,16 @@ export type GrafanaUserRole = 'unknown_role' | 'editor' | 'viewer' export type ListGrafanaUsersRequestOrderBy = 'login_asc' | 'login_desc' +export type ListPlansRequestOrderBy = 'name_asc' | 'name_desc' + export type ListTokensRequestOrderBy = | 'created_at_asc' | 'created_at_desc' | 'name_asc' | 'name_desc' +export type PlanName = 'unknown_name' | 'free' | 'premium' | 'custom' + /** Cockpit. */ export interface Cockpit { /** Project ID. */ @@ -34,6 +38,8 @@ export interface Cockpit { status: CockpitStatus /** Managed alerts enabled. */ managedAlertsEnabled: boolean + /** Pricing plan. */ + plan?: Plan } /** Cockpit. endpoints. */ @@ -90,12 +96,39 @@ export interface ListGrafanaUsersResponse { grafanaUsers: GrafanaUser[] } +/** List all pricing plans response. List plans response. */ +export interface ListPlansResponse { + totalCount: number + plans: Plan[] +} + /** List tokens response. */ export interface ListTokensResponse { totalCount: number tokens: Token[] } +/** Plan. */ +export interface Plan { + /** Plan id. */ + id: string + /** Plan name. */ + name: PlanName + /** Retention for metrics. */ + retentionMetricsInterval?: string + /** Retention for logs. */ + retentionLogsInterval?: string + /** Ingestion price for 1million samples in cents. */ + sampleIngestionPrice: number + /** Ingestion price in cents for 1 Go of logs. */ + logsIngestionPrice: number + /** Retention price in euros per month. */ + retentionPrice: number +} + +/** Select pricing plan response. Select plan response. */ +export interface SelectPlanResponse {} + /** Token. */ export interface Token { id: string @@ -222,3 +255,14 @@ export type ResetGrafanaUserPasswordRequest = { grafanaUserId: number projectId?: string } + +export type ListPlansRequest = { + page?: number + pageSize?: number + orderBy?: ListPlansRequestOrderBy +} + +export type SelectPlanRequest = { + projectId?: string + planId: string +}