From a6722d4a9589108511a0bf444a4fe412125ba9d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gerg=C5=91=20M=C3=B3ricz?= Date: Thu, 30 Jan 2025 18:43:37 +0100 Subject: [PATCH] feat(webhook): add event picker --- apps/api/src/controllers/v1/types.ts | 1 + apps/api/src/services/webhook.ts | 7 +++++++ apps/js-sdk/firecrawl/src/index.ts | 1 + 3 files changed, 9 insertions(+) diff --git a/apps/api/src/controllers/v1/types.ts b/apps/api/src/controllers/v1/types.ts index 8490bcb1..5c1ae4c0 100644 --- a/apps/api/src/controllers/v1/types.ts +++ b/apps/api/src/controllers/v1/types.ts @@ -317,6 +317,7 @@ export const webhookSchema = z.preprocess( url: z.string().url(), headers: z.record(z.string(), z.string()).default({}), metadata: z.record(z.string(), z.string()).default({}), + events: z.array(z.enum(["completed", "failed", "page", "started"])).default(["completed", "failed", "page", "started"]), }) .strict(strictMessage), ); diff --git a/apps/api/src/services/webhook.ts b/apps/api/src/services/webhook.ts index d1381b05..75adfe76 100644 --- a/apps/api/src/services/webhook.ts +++ b/apps/api/src/services/webhook.ts @@ -16,6 +16,13 @@ export const callWebhook = async ( eventType: WebhookEventType = "crawl.page", awaitWebhook: boolean = false, ) => { + if (specified) { + let subType = eventType.split(".")[1]; + if (!specified.events.includes(subType as any)) { + return false; + } + } + try { const selfHostedUrl = process.env.SELF_HOSTED_WEBHOOK_URL?.replace( "{{JOB_ID}}", diff --git a/apps/js-sdk/firecrawl/src/index.ts b/apps/js-sdk/firecrawl/src/index.ts index 603591ac..422c9674 100644 --- a/apps/js-sdk/firecrawl/src/index.ts +++ b/apps/js-sdk/firecrawl/src/index.ts @@ -168,6 +168,7 @@ export interface CrawlParams { url: string; headers?: Record; metadata?: Record; + events?: ["completed", "failed", "page", "started"][number][]; }; deduplicateSimilarURLs?: boolean; ignoreQueryParameters?: boolean;