import defaultPrisma from "@calcom/prisma"; import type { PrismaClient } from "@calcom/prisma"; import type { WebhookTriggerEvents } from "@calcom/prisma/enums"; export type GetSubscriberOptions = { userId?: number | null; eventTypeId?: number | null; triggerEvent: WebhookTriggerEvents; teamId?: number | null; orgId?: number | null; }; const getWebhooks = async (options: GetSubscriberOptions, prisma: PrismaClient = defaultPrisma) => { const userId = options.userId ?? 0; const eventTypeId = options.eventTypeId ?? 0; const teamId = options.teamId ?? 0; const orgId = options.orgId ?? 0; // if we have userId and teamId it is a managed event type and should trigger for team and user const allWebhooks = await prisma.webhook.findMany({ where: { OR: [ { platform: true, }, { userId, }, { eventTypeId, }, { teamId: { in: [teamId, orgId], }, }, ], AND: { eventTriggers: { has: options.triggerEvent, }, active: { equals: true, }, }, }, select: { id: true, subscriberUrl: true, payloadTemplate: true, appId: true, secret: true, }, }); return allWebhooks; }; export default getWebhooks;