import type { Request, Response } from 'express'; import type { IDataObject, IHttpRequestMethods } from 'n8n-workflow'; import type { ExpectedWebhookNodeType } from './node-type-matcher'; import type { WebhookResponse } from './webhook-response'; export type WebhookOptionsRequest = Request & { method: 'OPTIONS'; }; export type WebhookRequest = Request<{ path: string; }> & { method: IHttpRequestMethods; params: Record; }; export type WaitingWebhookRequest = WebhookRequest & { params: Pick & { suffix?: string; }; }; export interface WebhookAccessControlOptions { allowedOrigins?: string; } export interface IWebhookManager { getWebhookMethods?: (path: string) => Promise; findAccessControlOptions: (path: string, httpMethod: IHttpRequestMethods) => Promise; executeWebhook(req: WebhookRequest, res: Response, expectedNodeType?: ExpectedWebhookNodeType): Promise; } export interface IWebhookResponseCallbackData { data?: IDataObject | IDataObject[]; headers?: object; noWebhookResponse?: boolean; responseCode?: number; } export type Method = NonNullable;