diff --git a/packages/cli/src/WebhookHelpers.ts b/packages/cli/src/WebhookHelpers.ts index 93da2cf8f4..a83ed169b9 100644 --- a/packages/cli/src/WebhookHelpers.ts +++ b/packages/cli/src/WebhookHelpers.ts @@ -204,7 +204,14 @@ export async function executeWebhook( 200, ) as number; - if (!['onReceived', 'lastNode', 'responseNode'].includes(responseMode as string)) { + if ( + ![ + 'onReceived', + 'lastNode', + 'responseNode', + 'noBodyResponse' + ].includes(responseMode as string) + ) { // If the mode is not known we error. Is probably best like that instead of using // the default that people know as early as possible (probably already testing phase) // that something does not resolve properly. @@ -349,6 +356,17 @@ export async function executeWebhook( didSendResponse = true; } + // Some systems require that a webhook doesn't respond with any data + // if responseMode is set to noBodyResponse we will see this fire + if (responseMode === 'noBodyResponse' && !didSendResponse) { + // Return response without data + responseCallback(null, { + responseCode, + }); + + didSendResponse = true; + } + // Initialize the data of the webhook node const nodeExecutionStack: IExecuteData[] = []; nodeExecutionStack.push({ diff --git a/packages/nodes-base/nodes/Webhook/Webhook.node.ts b/packages/nodes-base/nodes/Webhook/Webhook.node.ts index 5e72c37666..fb39cd78c3 100644 --- a/packages/nodes-base/nodes/Webhook/Webhook.node.ts +++ b/packages/nodes-base/nodes/Webhook/Webhook.node.ts @@ -165,6 +165,11 @@ export class Webhook implements INodeType { value: 'responseNode', description: 'Response defined in that node', }, + { + name: 'No Body Response', + value: 'noBodyResponse', + description: 'Returns data without a body', + }, ], default: 'onReceived', description: 'When and how to respond to the webhook.',