import { BaseResource } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../infrastructure'; import type { GitlabAPIResponse, ShowExpanded, Sudo } from '../infrastructure'; import type { HookSchema } from '../templates/ResourceHooks'; export interface SystemHookTestResponse extends Record { project_id: number; owner_email: string; owner_name: string; name: string; path: string; event_name: string; } export interface CreateSystemHook { token?: string; pushEvents?: boolean; tagPushEvents?: boolean; mergeRequestsEvents?: boolean; repositoryUpdateEvents?: boolean; enableSslVerification?: boolean; } export class SystemHooks extends BaseResource { all( options?: Sudo & ShowExpanded, ): Promise> { return RequestHelper.get()(this, 'hooks', options); } // Convenience method add( url: string, options?: CreateSystemHook & Sudo & ShowExpanded, ): Promise> { return this.create(url, options); } create( url: string, options?: CreateSystemHook & Sudo & ShowExpanded, ): Promise> { return RequestHelper.post()(this, 'hooks', { url, ...options, }); } test( hookId: number, options?: Sudo & ShowExpanded, ): Promise> { return RequestHelper.post()(this, `hooks/${hookId}`, options); } remove( hookId: number, options?: Sudo & ShowExpanded, ): Promise> { return RequestHelper.del()(this, `hooks/${hookId}`, options); } show( hookId: number, options?: Sudo & ShowExpanded, ): Promise> { return RequestHelper.post()(this, `hooks/${hookId}`, options); } }