import { BaseResource } from '@gitbeaker/requester-utils'; import { RequestHelper, endpoint, reformatObjectOptions } from '../infrastructure'; import type { GitlabAPIResponse, MappedOmit, PaginationRequestOptions, PaginationTypes, ShowExpanded, Sudo, } from '../infrastructure'; import type { ExpandedPipelineSchema } from './Pipelines'; import type { SimpleUserSchema } from './Users'; export interface PipelineTriggerTokenSchema extends Record { id: number; description: string; created_at: string; last_used: string | null; token: string; updated_at: string; owner: MappedOmit | null; } export class PipelineTriggerTokens extends BaseResource { all( projectId: string | number, options?: Sudo & ShowExpanded & PaginationRequestOptions

, ): Promise> { return RequestHelper.get()( this, endpoint`projects/${projectId}/triggers`, options, ); } create( projectId: string | number, description: string, options?: Sudo & ShowExpanded, ): Promise> { return RequestHelper.post()( this, endpoint`projects/${projectId}/triggers`, { description, ...options, }, ); } edit( projectId: string | number, triggerId: number, options?: { description?: string } & Sudo & ShowExpanded, ): Promise> { return RequestHelper.put()( this, endpoint`projects/${projectId}/triggers/${triggerId}`, options, ); } remove( projectId: string | number, triggerId: number, options?: Sudo & ShowExpanded, ): Promise> { return RequestHelper.del()( this, endpoint`projects/${projectId}/triggers/${triggerId}`, options, ); } show( projectId: string | number, triggerId: number, options?: Sudo & ShowExpanded, ): Promise> { return RequestHelper.get()( this, endpoint`projects/${projectId}/triggers/${triggerId}`, options, ); } trigger( projectId: string | number, ref: string, token: string, { variables, ...options }: { variables?: Record } & Sudo & ShowExpanded = {}, ): Promise> { const opts: Record = { ...options, searchParams: { token, ref, }, }; if (variables) { opts.isForm = true; Object.assign(opts, reformatObjectOptions(variables, 'variables')); } return RequestHelper.post()( this, endpoint`projects/${projectId}/trigger/pipeline`, opts, ); } }