diff --git a/packages/clients/src/api/function/v1beta1/api.gen.ts b/packages/clients/src/api/function/v1beta1/api.gen.ts index 9f5d3bf08..2ce36715d 100644 --- a/packages/clients/src/api/function/v1beta1/api.gen.ts +++ b/packages/clients/src/api/function/v1beta1/api.gen.ts @@ -15,6 +15,8 @@ import { FUNCTION_TRANSIENT_STATUSES, NAMESPACE_TRANSIENT_STATUSES, TOKEN_TRANSIENT_STATUSES, + TRIGGER_INPUT_TRANSIENT_STATUSES, + TRIGGER_TRANSIENT_STATUSES, } from './content.gen' import { marshalCreateCronRequest, @@ -22,9 +24,14 @@ import { marshalCreateFunctionRequest, marshalCreateNamespaceRequest, marshalCreateTokenRequest, + marshalCreateTriggerInputRequest, + marshalCreateTriggerRequest, + marshalSetTriggerInputsRequest, marshalUpdateCronRequest, marshalUpdateFunctionRequest, marshalUpdateNamespaceRequest, + marshalUpdateTriggerInputRequest, + marshalUpdateTriggerRequest, unmarshalCron, unmarshalDomain, unmarshalDownloadURL, @@ -36,8 +43,13 @@ import { unmarshalListLogsResponse, unmarshalListNamespacesResponse, unmarshalListTokensResponse, + unmarshalListTriggerInputsResponse, + unmarshalListTriggersResponse, unmarshalNamespace, + unmarshalSetTriggerInputsResponse, unmarshalToken, + unmarshalTrigger, + unmarshalTriggerInput, unmarshalUploadURL, } from './marshalling.gen' import type { @@ -46,12 +58,16 @@ import type { CreateFunctionRequest, CreateNamespaceRequest, CreateTokenRequest, + CreateTriggerInputRequest, + CreateTriggerRequest, Cron, DeleteCronRequest, DeleteDomainRequest, DeleteFunctionRequest, DeleteNamespaceRequest, DeleteTokenRequest, + DeleteTriggerInputRequest, + DeleteTriggerRequest, DeployFunctionRequest, Domain, DownloadURL, @@ -63,6 +79,8 @@ import type { GetFunctionUploadURLRequest, GetNamespaceRequest, GetTokenRequest, + GetTriggerInputRequest, + GetTriggerRequest, IssueJWTRequest, ListCronsRequest, ListCronsResponse, @@ -78,11 +96,21 @@ import type { ListNamespacesResponse, ListTokensRequest, ListTokensResponse, + ListTriggerInputsRequest, + ListTriggerInputsResponse, + ListTriggersRequest, + ListTriggersResponse, Namespace, + SetTriggerInputsRequest, + SetTriggerInputsResponse, Token, + Trigger, + TriggerInput, UpdateCronRequest, UpdateFunctionRequest, UpdateNamespaceRequest, + UpdateTriggerInputRequest, + UpdateTriggerRequest, UploadURL, } from './types.gen' @@ -871,4 +899,233 @@ export class FunctionV1Beta1GenAPI extends API { }, unmarshalToken, ) + + createTrigger = (request: Readonly) => + this.client.fetch( + { + body: JSON.stringify( + marshalCreateTriggerRequest(request, this.client.settings), + ), + headers: jsonContentHeaders, + method: 'POST', + path: `/functions/v1beta1/regions/${validatePathParam( + 'region', + request.region ?? this.client.settings.defaultRegion, + )}/triggers`, + }, + unmarshalTrigger, + ) + + getTrigger = (request: Readonly) => + this.client.fetch( + { + method: 'GET', + path: `/functions/v1beta1/regions/${validatePathParam( + 'region', + request.region ?? this.client.settings.defaultRegion, + )}/triggers/${validatePathParam('triggerId', request.triggerId)}`, + }, + unmarshalTrigger, + ) + + /** + * Waits for {@link Trigger} to be in a final state. + * + * @param request - The request {@link GetTriggerRequest} + * @param options - The waiting options + * @returns A Promise of Trigger + */ + waitForTrigger = ( + request: Readonly, + options?: Readonly>, + ) => + waitForResource( + options?.stop ?? + (res => + Promise.resolve(!TRIGGER_TRANSIENT_STATUSES.includes(res.status))), + this.getTrigger, + request, + options, + ) + + protected pageOfListTriggers = (request: Readonly) => + this.client.fetch( + { + method: 'GET', + path: `/functions/v1beta1/regions/${validatePathParam( + 'region', + request.region ?? this.client.settings.defaultRegion, + )}/triggers`, + urlParams: urlParams( + ['function_id', request.functionId], + ['order_by', request.orderBy ?? 'created_at_asc'], + ['page', request.page], + [ + 'page_size', + request.pageSize ?? this.client.settings.defaultPageSize, + ], + ), + }, + unmarshalListTriggersResponse, + ) + + listTriggers = (request: Readonly) => + enrichForPagination('triggers', this.pageOfListTriggers, request) + + updateTrigger = (request: Readonly) => + this.client.fetch( + { + body: JSON.stringify( + marshalUpdateTriggerRequest(request, this.client.settings), + ), + headers: jsonContentHeaders, + method: 'PATCH', + path: `/functions/v1beta1/regions/${validatePathParam( + 'region', + request.region ?? this.client.settings.defaultRegion, + )}/triggers/${validatePathParam('triggerId', request.triggerId)}`, + }, + unmarshalTrigger, + ) + + deleteTrigger = (request: Readonly) => + this.client.fetch( + { + method: 'DELETE', + path: `/functions/v1beta1/regions/${validatePathParam( + 'region', + request.region ?? this.client.settings.defaultRegion, + )}/triggers/${validatePathParam('triggerId', request.triggerId)}`, + }, + unmarshalTrigger, + ) + + createTriggerInput = (request: Readonly) => + this.client.fetch( + { + body: JSON.stringify( + marshalCreateTriggerInputRequest(request, this.client.settings), + ), + headers: jsonContentHeaders, + method: 'POST', + path: `/functions/v1beta1/regions/${validatePathParam( + 'region', + request.region ?? this.client.settings.defaultRegion, + )}/trigger-inputs`, + }, + unmarshalTriggerInput, + ) + + getTriggerInput = (request: Readonly) => + this.client.fetch( + { + method: 'GET', + path: `/functions/v1beta1/regions/${validatePathParam( + 'region', + request.region ?? this.client.settings.defaultRegion, + )}/trigger-inputs/${validatePathParam( + 'triggerInputId', + request.triggerInputId, + )}`, + }, + unmarshalTriggerInput, + ) + + /** + * Waits for {@link TriggerInput} to be in a final state. + * + * @param request - The request {@link GetTriggerInputRequest} + * @param options - The waiting options + * @returns A Promise of TriggerInput + */ + waitForTriggerInput = ( + request: Readonly, + options?: Readonly>, + ) => + waitForResource( + options?.stop ?? + (res => + Promise.resolve( + !TRIGGER_INPUT_TRANSIENT_STATUSES.includes(res.status), + )), + this.getTriggerInput, + request, + options, + ) + + protected pageOfListTriggerInputs = ( + request: Readonly, + ) => + this.client.fetch( + { + method: 'GET', + path: `/functions/v1beta1/regions/${validatePathParam( + 'region', + request.region ?? this.client.settings.defaultRegion, + )}/trigger-inputs`, + urlParams: urlParams( + ['order_by', request.orderBy ?? 'created_at_asc'], + ['page', request.page], + [ + 'page_size', + request.pageSize ?? this.client.settings.defaultPageSize, + ], + ['trigger_id', request.triggerId], + ), + }, + unmarshalListTriggerInputsResponse, + ) + + listTriggerInputs = (request: Readonly) => + enrichForPagination('inputs', this.pageOfListTriggerInputs, request) + + setTriggerInputs = (request: Readonly) => + this.client.fetch( + { + body: JSON.stringify( + marshalSetTriggerInputsRequest(request, this.client.settings), + ), + headers: jsonContentHeaders, + method: 'PUT', + path: `/functions/v1beta1/regions/${validatePathParam( + 'region', + request.region ?? this.client.settings.defaultRegion, + )}/trigger-inputs`, + }, + unmarshalSetTriggerInputsResponse, + ) + + updateTriggerInput = (request: Readonly) => + this.client.fetch( + { + body: JSON.stringify( + marshalUpdateTriggerInputRequest(request, this.client.settings), + ), + headers: jsonContentHeaders, + method: 'PATCH', + path: `/functions/v1beta1/regions/${validatePathParam( + 'region', + request.region ?? this.client.settings.defaultRegion, + )}/trigger-inputs/${validatePathParam( + 'triggerInputId', + request.triggerInputId, + )}`, + }, + unmarshalTriggerInput, + ) + + deleteTriggerInput = (request: Readonly) => + this.client.fetch( + { + method: 'DELETE', + path: `/functions/v1beta1/regions/${validatePathParam( + 'region', + request.region ?? this.client.settings.defaultRegion, + )}/trigger-inputs/${validatePathParam( + 'triggerInputId', + request.triggerInputId, + )}`, + }, + unmarshalTriggerInput, + ) } diff --git a/packages/clients/src/api/function/v1beta1/content.gen.ts b/packages/clients/src/api/function/v1beta1/content.gen.ts index e03e2d891..eede27a6b 100644 --- a/packages/clients/src/api/function/v1beta1/content.gen.ts +++ b/packages/clients/src/api/function/v1beta1/content.gen.ts @@ -6,6 +6,8 @@ import type { FunctionStatus, NamespaceStatus, TokenStatus, + TriggerInputStatus, + TriggerStatus, } from './types.gen' /** Lists transient statutes of the enum {@link CronStatus}. */ @@ -38,3 +40,17 @@ export const NAMESPACE_TRANSIENT_STATUSES: NamespaceStatus[] = [ /** Lists transient statutes of the enum {@link TokenStatus}. */ export const TOKEN_TRANSIENT_STATUSES: TokenStatus[] = ['deleting', 'creating'] + +/** Lists transient statutes of the enum {@link TriggerInputStatus}. */ +export const TRIGGER_INPUT_TRANSIENT_STATUSES: TriggerInputStatus[] = [ + 'deleting', + 'creating', + 'pending', +] + +/** Lists transient statutes of the enum {@link TriggerStatus}. */ +export const TRIGGER_TRANSIENT_STATUSES: TriggerStatus[] = [ + 'deleting', + 'creating', + 'pending', +] diff --git a/packages/clients/src/api/function/v1beta1/marshalling.gen.ts b/packages/clients/src/api/function/v1beta1/marshalling.gen.ts index e9dd9e753..fc311693d 100644 --- a/packages/clients/src/api/function/v1beta1/marshalling.gen.ts +++ b/packages/clients/src/api/function/v1beta1/marshalling.gen.ts @@ -14,6 +14,15 @@ import type { CreateFunctionRequest, CreateNamespaceRequest, CreateTokenRequest, + CreateTriggerInputRequest, + CreateTriggerInputRequestNatsClientConfigSpec, + CreateTriggerInputRequestSqsClientConfigSpec, + CreateTriggerRequest, + CreateTriggerRequestNatsFailureHandlingPolicy, + CreateTriggerRequestNatsFailureHandlingPolicyNatsDeadLetter, + CreateTriggerRequestNatsFailureHandlingPolicyRetryPolicy, + CreateTriggerRequestNatsFailureHandlingPolicySqsDeadLetter, + CreateTriggerRequestSqsFailureHandlingPolicy, Cron, Domain, DownloadURL, @@ -25,18 +34,76 @@ import type { ListLogsResponse, ListNamespacesResponse, ListTokensResponse, + ListTriggerInputsResponse, + ListTriggersResponse, Log, Namespace, Runtime, Secret, SecretHashedValue, + SetTriggerInputsRequest, + SetTriggerInputsRequestNatsConfigs, + SetTriggerInputsRequestSqsConfigs, + SetTriggerInputsResponse, Token, + Trigger, + TriggerInput, + TriggerInputNatsClientConfig, + TriggerInputSqsClientConfig, + TriggerNatsDeadLetter, + TriggerNatsFailureHandlingPolicy, + TriggerRetryPolicy, + TriggerSqsDeadLetter, + TriggerSqsFailureHandlingPolicy, UpdateCronRequest, UpdateFunctionRequest, UpdateNamespaceRequest, + UpdateTriggerInputRequest, + UpdateTriggerInputRequestNatsClientConfigSpec, + UpdateTriggerInputRequestSqsClientConfigSpec, + UpdateTriggerRequest, UploadURL, } from './types.gen' +const unmarshalTriggerNatsDeadLetter = (data: unknown) => { + if (!isJSONObject(data)) { + throw new TypeError( + `Unmarshalling the type 'TriggerNatsDeadLetter' failed as data isn't a dictionary.`, + ) + } + + return { + mnqNamespaceId: data.mnq_namespace_id, + subject: data.subject, + } as TriggerNatsDeadLetter +} + +const unmarshalTriggerRetryPolicy = (data: unknown) => { + if (!isJSONObject(data)) { + throw new TypeError( + `Unmarshalling the type 'TriggerRetryPolicy' failed as data isn't a dictionary.`, + ) + } + + return { + maxRetries: data.max_retries, + retryPeriod: data.retry_period, + } as TriggerRetryPolicy +} + +const unmarshalTriggerSqsDeadLetter = (data: unknown) => { + if (!isJSONObject(data)) { + throw new TypeError( + `Unmarshalling the type 'TriggerSqsDeadLetter' failed as data isn't a dictionary.`, + ) + } + + return { + mnqNamespaceId: data.mnq_namespace_id, + queue: data.queue, + } as TriggerSqsDeadLetter +} + const unmarshalSecretHashedValue = (data: unknown) => { if (!isJSONObject(data)) { throw new TypeError( @@ -47,6 +114,56 @@ const unmarshalSecretHashedValue = (data: unknown) => { return { hashedValue: data.hashed_value, key: data.key } as SecretHashedValue } +const unmarshalTriggerInputNatsClientConfig = (data: unknown) => { + if (!isJSONObject(data)) { + throw new TypeError( + `Unmarshalling the type 'TriggerInputNatsClientConfig' failed as data isn't a dictionary.`, + ) + } + + return { subject: data.subject } as TriggerInputNatsClientConfig +} + +const unmarshalTriggerInputSqsClientConfig = (data: unknown) => { + if (!isJSONObject(data)) { + throw new TypeError( + `Unmarshalling the type 'TriggerInputSqsClientConfig' failed as data isn't a dictionary.`, + ) + } + + return { queue: data.queue } as TriggerInputSqsClientConfig +} + +const unmarshalTriggerNatsFailureHandlingPolicy = (data: unknown) => { + if (!isJSONObject(data)) { + throw new TypeError( + `Unmarshalling the type 'TriggerNatsFailureHandlingPolicy' failed as data isn't a dictionary.`, + ) + } + + return { + natsDeadLetter: data.nats_dead_letter + ? unmarshalTriggerNatsDeadLetter(data.nats_dead_letter) + : undefined, + retryPolicy: data.retry_policy + ? unmarshalTriggerRetryPolicy(data.retry_policy) + : undefined, + sqsDeadLetter: data.sqs_dead_letter + ? unmarshalTriggerSqsDeadLetter(data.sqs_dead_letter) + : undefined, + } as TriggerNatsFailureHandlingPolicy +} + +const unmarshalTriggerSqsFailureHandlingPolicy = (data: unknown) => { + if (!isJSONObject(data)) { + throw new TypeError( + `Unmarshalling the type 'TriggerSqsFailureHandlingPolicy' failed as data isn't a dictionary.`, + ) + } + + return {} as TriggerSqsFailureHandlingPolicy +} + export const unmarshalCron = (data: unknown) => { if (!isJSONObject(data)) { throw new TypeError( @@ -196,6 +313,55 @@ export const unmarshalToken = (data: unknown) => { } as Token } +export const unmarshalTrigger = (data: unknown) => { + if (!isJSONObject(data)) { + throw new TypeError( + `Unmarshalling the type 'Trigger' failed as data isn't a dictionary.`, + ) + } + + return { + description: data.description, + errorMessage: data.error_message, + functionId: data.function_id, + id: data.id, + name: data.name, + natsFailureHandlingPolicy: data.nats_failure_handling_policy + ? unmarshalTriggerNatsFailureHandlingPolicy( + data.nats_failure_handling_policy, + ) + : undefined, + sqsFailureHandlingPolicy: data.sqs_failure_handling_policy + ? unmarshalTriggerSqsFailureHandlingPolicy( + data.sqs_failure_handling_policy, + ) + : undefined, + status: data.status, + type: data.type, + } as Trigger +} + +export const unmarshalTriggerInput = (data: unknown) => { + if (!isJSONObject(data)) { + throw new TypeError( + `Unmarshalling the type 'TriggerInput' failed as data isn't a dictionary.`, + ) + } + + return { + errorMessage: data.error_message, + id: data.id, + mnqNamespaceId: data.mnq_namespace_id, + natsConfig: data.nats_config + ? unmarshalTriggerInputNatsClientConfig(data.nats_config) + : undefined, + sqsConfig: data.sqs_config + ? unmarshalTriggerInputSqsClientConfig(data.sqs_config) + : undefined, + status: data.status, + } as TriggerInput +} + export const unmarshalDownloadURL = (data: unknown) => { if (!isJSONObject(data)) { throw new TypeError( @@ -297,6 +463,47 @@ export const unmarshalListTokensResponse = (data: unknown) => { } as ListTokensResponse } +export const unmarshalListTriggerInputsResponse = (data: unknown) => { + if (!isJSONObject(data)) { + throw new TypeError( + `Unmarshalling the type 'ListTriggerInputsResponse' failed as data isn't a dictionary.`, + ) + } + + return { + inputs: unmarshalArrayOfObject(data.inputs, unmarshalTriggerInput), + totalCount: data.total_count, + } as ListTriggerInputsResponse +} + +export const unmarshalListTriggersResponse = (data: unknown) => { + if (!isJSONObject(data)) { + throw new TypeError( + `Unmarshalling the type 'ListTriggersResponse' failed as data isn't a dictionary.`, + ) + } + + return { + totalCount: data.total_count, + triggers: unmarshalArrayOfObject(data.triggers, unmarshalTrigger), + } as ListTriggersResponse +} + +export const unmarshalSetTriggerInputsResponse = (data: unknown) => { + if (!isJSONObject(data)) { + throw new TypeError( + `Unmarshalling the type 'SetTriggerInputsResponse' failed as data isn't a dictionary.`, + ) + } + + return { + triggerInputs: unmarshalArrayOfObject( + data.trigger_inputs, + unmarshalTriggerInput, + ), + } as SetTriggerInputsResponse +} + export const unmarshalUploadURL = (data: unknown) => { if (!isJSONObject(data)) { throw new TypeError( @@ -307,6 +514,81 @@ export const unmarshalUploadURL = (data: unknown) => { return { headers: data.headers, url: data.url } as UploadURL } +const marshalCreateTriggerInputRequestNatsClientConfigSpec = ( + request: CreateTriggerInputRequestNatsClientConfigSpec, + defaults: DefaultValues, +): Record => ({ + subject: request.subject, +}) + +const marshalCreateTriggerInputRequestSqsClientConfigSpec = ( + request: CreateTriggerInputRequestSqsClientConfigSpec, + defaults: DefaultValues, +): Record => ({ + queue: request.queue, +}) + +const marshalCreateTriggerRequestNatsFailureHandlingPolicyNatsDeadLetter = ( + request: CreateTriggerRequestNatsFailureHandlingPolicyNatsDeadLetter, + defaults: DefaultValues, +): Record => ({ + mnq_namespace_id: request.mnqNamespaceId, + subject: request.subject, +}) + +const marshalCreateTriggerRequestNatsFailureHandlingPolicyRetryPolicy = ( + request: CreateTriggerRequestNatsFailureHandlingPolicyRetryPolicy, + defaults: DefaultValues, +): Record => ({ + max_retries: request.maxRetries, + retry_period: request.retryPeriod, +}) + +const marshalCreateTriggerRequestNatsFailureHandlingPolicySqsDeadLetter = ( + request: CreateTriggerRequestNatsFailureHandlingPolicySqsDeadLetter, + defaults: DefaultValues, +): Record => ({ + mnq_namespace_id: request.mnqNamespaceId, + queue: request.queue, +}) + +const marshalCreateTriggerRequestNatsFailureHandlingPolicy = ( + request: CreateTriggerRequestNatsFailureHandlingPolicy, + defaults: DefaultValues, +): Record => ({ + retry_policy: request.retryPolicy + ? marshalCreateTriggerRequestNatsFailureHandlingPolicyRetryPolicy( + request.retryPolicy, + defaults, + ) + : undefined, + ...resolveOneOf([ + { + param: 'nats_dead_letter', + value: request.natsDeadLetter + ? marshalCreateTriggerRequestNatsFailureHandlingPolicyNatsDeadLetter( + request.natsDeadLetter, + defaults, + ) + : undefined, + }, + { + param: 'sqs_dead_letter', + value: request.sqsDeadLetter + ? marshalCreateTriggerRequestNatsFailureHandlingPolicySqsDeadLetter( + request.sqsDeadLetter, + defaults, + ) + : undefined, + }, + ]), +}) + +const marshalCreateTriggerRequestSqsFailureHandlingPolicy = ( + request: CreateTriggerRequestSqsFailureHandlingPolicy, + defaults: DefaultValues, +): Record => ({}) + const marshalSecret = ( request: Secret, defaults: DefaultValues, @@ -315,6 +597,38 @@ const marshalSecret = ( value: request.value, }) +const marshalSetTriggerInputsRequestNatsConfigs = ( + request: SetTriggerInputsRequestNatsConfigs, + defaults: DefaultValues, +): Record => ({ + configs: request.configs.map(elt => + marshalCreateTriggerInputRequestNatsClientConfigSpec(elt, defaults), + ), +}) + +const marshalSetTriggerInputsRequestSqsConfigs = ( + request: SetTriggerInputsRequestSqsConfigs, + defaults: DefaultValues, +): Record => ({ + configs: request.configs.map(elt => + marshalCreateTriggerInputRequestSqsClientConfigSpec(elt, defaults), + ), +}) + +const marshalUpdateTriggerInputRequestNatsClientConfigSpec = ( + request: UpdateTriggerInputRequestNatsClientConfigSpec, + defaults: DefaultValues, +): Record => ({ + subject: request.subject, +}) + +const marshalUpdateTriggerInputRequestSqsClientConfigSpec = ( + request: UpdateTriggerInputRequestSqsClientConfigSpec, + defaults: DefaultValues, +): Record => ({ + queue: request.queue, +}) + export const marshalCreateCronRequest = ( request: CreateCronRequest, defaults: DefaultValues, @@ -388,6 +702,85 @@ export const marshalCreateTokenRequest = ( ]), }) +export const marshalCreateTriggerInputRequest = ( + request: CreateTriggerInputRequest, + defaults: DefaultValues, +): Record => ({ + mnq_namespace_id: request.mnqNamespaceId, + trigger_id: request.triggerId, + ...resolveOneOf([ + { + param: 'nats_config', + value: request.natsConfig + ? marshalCreateTriggerInputRequestNatsClientConfigSpec( + request.natsConfig, + defaults, + ) + : undefined, + }, + { + param: 'sqs_config', + value: request.sqsConfig + ? marshalCreateTriggerInputRequestSqsClientConfigSpec( + request.sqsConfig, + defaults, + ) + : undefined, + }, + ]), +}) + +export const marshalCreateTriggerRequest = ( + request: CreateTriggerRequest, + defaults: DefaultValues, +): Record => ({ + description: request.description, + function_id: request.functionId, + name: request.name, + type: request.type, + ...resolveOneOf([ + { + param: 'nats_failure_handling_policy', + value: request.natsFailureHandlingPolicy + ? marshalCreateTriggerRequestNatsFailureHandlingPolicy( + request.natsFailureHandlingPolicy, + defaults, + ) + : undefined, + }, + { + param: 'sqs_failure_handling_policy', + value: request.sqsFailureHandlingPolicy + ? marshalCreateTriggerRequestSqsFailureHandlingPolicy( + request.sqsFailureHandlingPolicy, + defaults, + ) + : undefined, + }, + ]), +}) + +export const marshalSetTriggerInputsRequest = ( + request: SetTriggerInputsRequest, + defaults: DefaultValues, +): Record => ({ + trigger_input_id: request.triggerInputId, + ...resolveOneOf([ + { + param: 'sqs', + value: request.sqs + ? marshalSetTriggerInputsRequestSqsConfigs(request.sqs, defaults) + : undefined, + }, + { + param: 'nats', + value: request.nats + ? marshalSetTriggerInputsRequestNatsConfigs(request.nats, defaults) + : undefined, + }, + ]), +}) + export const marshalUpdateCronRequest = ( request: UpdateCronRequest, defaults: DefaultValues, @@ -431,3 +824,57 @@ export const marshalUpdateNamespaceRequest = ( ) : undefined, }) + +export const marshalUpdateTriggerInputRequest = ( + request: UpdateTriggerInputRequest, + defaults: DefaultValues, +): Record => ({ + ...resolveOneOf([ + { + param: 'nats_config', + value: request.natsConfig + ? marshalUpdateTriggerInputRequestNatsClientConfigSpec( + request.natsConfig, + defaults, + ) + : undefined, + }, + { + param: 'sqs_config', + value: request.sqsConfig + ? marshalUpdateTriggerInputRequestSqsClientConfigSpec( + request.sqsConfig, + defaults, + ) + : undefined, + }, + ]), +}) + +export const marshalUpdateTriggerRequest = ( + request: UpdateTriggerRequest, + defaults: DefaultValues, +): Record => ({ + description: request.description, + name: request.name, + ...resolveOneOf([ + { + param: 'nats_config', + value: request.natsConfig + ? marshalCreateTriggerRequestNatsFailureHandlingPolicy( + request.natsConfig, + defaults, + ) + : undefined, + }, + { + param: 'sqs_config', + value: request.sqsConfig + ? marshalCreateTriggerRequestSqsFailureHandlingPolicy( + request.sqsConfig, + defaults, + ) + : undefined, + }, + ]), +}) diff --git a/packages/clients/src/api/function/v1beta1/types.gen.ts b/packages/clients/src/api/function/v1beta1/types.gen.ts index ba49e1a46..dc59aeee0 100644 --- a/packages/clients/src/api/function/v1beta1/types.gen.ts +++ b/packages/clients/src/api/function/v1beta1/types.gen.ts @@ -74,6 +74,12 @@ export type ListNamespacesRequestOrderBy = export type ListTokensRequestOrderBy = 'created_at_asc' | 'created_at_desc' +export type ListTriggerInputsRequestOrderBy = + | 'created_at_asc' + | 'created_at_desc' + +export type ListTriggersRequestOrderBy = 'created_at_asc' | 'created_at_desc' + export type LogStream = 'unknown' | 'stdout' | 'stderr' export type NamespaceStatus = @@ -102,6 +108,57 @@ export type TokenStatus = | 'error' | 'creating' +export type TriggerInputStatus = + | 'unknown' + | 'ready' + | 'deleting' + | 'error' + | 'creating' + | 'pending' + +export type TriggerStatus = + | 'unknown_status' + | 'ready' + | 'deleting' + | 'error' + | 'creating' + | 'pending' + +export type TriggerType = 'unknown_trigger_type' | 'nats' | 'sqs' + +export interface CreateTriggerInputRequestNatsClientConfigSpec { + subject: string +} + +export interface CreateTriggerInputRequestSqsClientConfigSpec { + queue: string +} + +export interface CreateTriggerRequestNatsFailureHandlingPolicy { + retryPolicy?: CreateTriggerRequestNatsFailureHandlingPolicyRetryPolicy + /** One-of ('deadLetter'): at most one of 'natsDeadLetter', 'sqsDeadLetter' could be set. */ + natsDeadLetter?: CreateTriggerRequestNatsFailureHandlingPolicyNatsDeadLetter + /** One-of ('deadLetter'): at most one of 'natsDeadLetter', 'sqsDeadLetter' could be set. */ + sqsDeadLetter?: CreateTriggerRequestNatsFailureHandlingPolicySqsDeadLetter +} + +export interface CreateTriggerRequestNatsFailureHandlingPolicyNatsDeadLetter { + mnqNamespaceId?: string + subject?: string +} + +export interface CreateTriggerRequestNatsFailureHandlingPolicyRetryPolicy { + maxRetries?: number + retryPeriod?: string +} + +export interface CreateTriggerRequestNatsFailureHandlingPolicySqsDeadLetter { + mnqNamespaceId?: string + queue?: string +} + +export interface CreateTriggerRequestSqsFailureHandlingPolicy {} + /** Cron */ export interface Cron { id: string @@ -198,6 +255,16 @@ export interface ListTokensResponse { totalCount: number } +export interface ListTriggerInputsResponse { + inputs: Array + totalCount: number +} + +export interface ListTriggersResponse { + triggers: Array + totalCount: number +} + /** Log */ export interface Log { message: string @@ -249,6 +316,18 @@ export interface SecretHashedValue { hashedValue: string } +export interface SetTriggerInputsRequestNatsConfigs { + configs: Array +} + +export interface SetTriggerInputsRequestSqsConfigs { + configs: Array +} + +export interface SetTriggerInputsResponse { + triggerInputs: Array +} + /** Token */ export interface Token { id: string @@ -264,6 +343,78 @@ export interface Token { expiresAt?: Date } +export interface Trigger { + id: string + name: string + description: string + type: TriggerType + status: TriggerStatus + errorMessage?: string + functionId: string + /** + * One-of ('failureHandlingPolicy'): at most one of + * 'natsFailureHandlingPolicy', 'sqsFailureHandlingPolicy' could be set. + */ + natsFailureHandlingPolicy?: TriggerNatsFailureHandlingPolicy + /** + * One-of ('failureHandlingPolicy'): at most one of + * 'natsFailureHandlingPolicy', 'sqsFailureHandlingPolicy' could be set. + */ + sqsFailureHandlingPolicy?: TriggerSqsFailureHandlingPolicy +} + +export interface TriggerInput { + id: string + mnqNamespaceId?: string + status: TriggerInputStatus + errorMessage?: string + /** One-of ('config'): at most one of 'natsConfig', 'sqsConfig' could be set. */ + natsConfig?: TriggerInputNatsClientConfig + /** One-of ('config'): at most one of 'natsConfig', 'sqsConfig' could be set. */ + sqsConfig?: TriggerInputSqsClientConfig +} + +export interface TriggerInputNatsClientConfig { + subject: string +} + +export interface TriggerInputSqsClientConfig { + queue: string +} + +export interface TriggerNatsDeadLetter { + mnqNamespaceId: string + subject: string +} + +export interface TriggerNatsFailureHandlingPolicy { + retryPolicy?: TriggerRetryPolicy + /** One-of ('deadLetter'): at most one of 'natsDeadLetter', 'sqsDeadLetter' could be set. */ + natsDeadLetter?: TriggerNatsDeadLetter + /** One-of ('deadLetter'): at most one of 'natsDeadLetter', 'sqsDeadLetter' could be set. */ + sqsDeadLetter?: TriggerSqsDeadLetter +} + +export interface TriggerRetryPolicy { + maxRetries: number + retryPeriod?: string +} + +export interface TriggerSqsDeadLetter { + mnqNamespaceId: string + queue: string +} + +export interface TriggerSqsFailureHandlingPolicy {} + +export interface UpdateTriggerInputRequestNatsClientConfigSpec { + subject?: string +} + +export interface UpdateTriggerInputRequestSqsClientConfigSpec { + queue?: string +} + /** Upload url */ export interface UploadURL { url: string @@ -527,3 +678,113 @@ export type DeleteTokenRequest = { region?: Region tokenId: string } + +export type CreateTriggerRequest = { + /** Region to target. If none is passed will use default region from the config */ + region?: Region + name: string + description: string + functionId: string + type: TriggerType + /** + * One-of ('failureHandlingPolicy'): at most one of + * 'natsFailureHandlingPolicy', 'sqsFailureHandlingPolicy' could be set. + */ + natsFailureHandlingPolicy?: CreateTriggerRequestNatsFailureHandlingPolicy + /** + * One-of ('failureHandlingPolicy'): at most one of + * 'natsFailureHandlingPolicy', 'sqsFailureHandlingPolicy' could be set. + */ + sqsFailureHandlingPolicy?: CreateTriggerRequestSqsFailureHandlingPolicy +} + +export type GetTriggerRequest = { + /** Region to target. If none is passed will use default region from the config */ + region?: Region + triggerId: string +} + +export type ListTriggersRequest = { + /** Region to target. If none is passed will use default region from the config */ + region?: Region + page?: number + pageSize?: number + orderBy?: ListTriggersRequestOrderBy + functionId: string +} + +export type UpdateTriggerRequest = { + /** Region to target. If none is passed will use default region from the config */ + region?: Region + triggerId: string + name?: string + description?: string + /** + * One-of ('failureHandlingPolicy'): at most one of 'natsConfig', 'sqsConfig' + * could be set. + */ + natsConfig?: CreateTriggerRequestNatsFailureHandlingPolicy + /** + * One-of ('failureHandlingPolicy'): at most one of 'natsConfig', 'sqsConfig' + * could be set. + */ + sqsConfig?: CreateTriggerRequestSqsFailureHandlingPolicy +} + +export type DeleteTriggerRequest = { + /** Region to target. If none is passed will use default region from the config */ + region?: Region + triggerId: string +} + +export type CreateTriggerInputRequest = { + /** Region to target. If none is passed will use default region from the config */ + region?: Region + triggerId: string + mnqNamespaceId?: string + /** One-of ('config'): at most one of 'natsConfig', 'sqsConfig' could be set. */ + natsConfig?: CreateTriggerInputRequestNatsClientConfigSpec + /** One-of ('config'): at most one of 'natsConfig', 'sqsConfig' could be set. */ + sqsConfig?: CreateTriggerInputRequestSqsClientConfigSpec +} + +export type GetTriggerInputRequest = { + /** Region to target. If none is passed will use default region from the config */ + region?: Region + triggerInputId: string +} + +export type ListTriggerInputsRequest = { + /** Region to target. If none is passed will use default region from the config */ + region?: Region + page?: number + pageSize?: number + orderBy?: ListTriggerInputsRequestOrderBy + triggerId: string +} + +export type SetTriggerInputsRequest = { + /** Region to target. If none is passed will use default region from the config */ + region?: Region + triggerInputId: string + /** One-of ('configs'): at most one of 'sqs', 'nats' could be set. */ + sqs?: SetTriggerInputsRequestSqsConfigs + /** One-of ('configs'): at most one of 'sqs', 'nats' could be set. */ + nats?: SetTriggerInputsRequestNatsConfigs +} + +export type UpdateTriggerInputRequest = { + /** Region to target. If none is passed will use default region from the config */ + region?: Region + triggerInputId: string + /** One-of ('config'): at most one of 'natsConfig', 'sqsConfig' could be set. */ + natsConfig?: UpdateTriggerInputRequestNatsClientConfigSpec + /** One-of ('config'): at most one of 'natsConfig', 'sqsConfig' could be set. */ + sqsConfig?: UpdateTriggerInputRequestSqsClientConfigSpec +} + +export type DeleteTriggerInputRequest = { + /** Region to target. If none is passed will use default region from the config */ + region?: Region + triggerInputId: string +}