Files
calendar/packages/features/webhooks/lib/constants.ts
T
Syed Ali ShahbazandGitHub 056922b6ee feat: add webhook versioning (#23861)
* add webhook version schema

* version the code

* update version from numeric to date val

* migration

* update schema and build factory

* update string

* move version picker

* tooltip instead of infobadge

* --

* fix type

* --

* fix type

* fix type

* --

* fix messed up merge

* improvements to payloadfactory

* extract version off of DB and instead keep it in IWebhookRepository

* fix webhookform

* fix type safety and routing ambiguity

* scalable with easier factory extensions and base definition

* fix types

* --

* --

* clean up prisma/client type imports

* fix

* type fix

* type fix

* cleanup

* add tests and registry changes

* unintended file inclusion

* type-fix

* select in repo

* --

* explicit return type

* --

* fix type

* fixes

* feedback 1

* feedback 2

* use enum instead of string

* fixes
2025-12-18 09:36:22 +02:00

61 lines
2.2 KiB
TypeScript

import { WebhookTriggerEvents } from "@calcom/prisma/enums";
import { WebhookVersion } from "./interface/IWebhookRepository";
// this is exported as we can't use `WebhookTriggerEvents` in the frontend straight-off
/**
* Version label map - transforms version enum values to display labels.
* Since our version values ARE date strings (e.g., "2021-10-20"), labels match values.
* This map allows for custom labels if needed in the future.
*/
export const WEBHOOK_VERSION_LABELS: Record<WebhookVersion, string> = {
[WebhookVersion.V_2021_10_20]: "2021-10-20",
// Add new versions here: [WebhookVersion.V_YYYY_MM_DD]: "YYYY-MM-DD",
};
/**
* Pre-built options for Select components - automatically generated from all versions
*/
export const WEBHOOK_VERSION_OPTIONS = Object.values(WebhookVersion).map((version) => ({
value: version,
label: WEBHOOK_VERSION_LABELS[version] ?? version,
}));
/**
* Get display label for a version
*/
export const getWebhookVersionLabel = (version: WebhookVersion): string =>
WEBHOOK_VERSION_LABELS[version] ?? version;
export const WEBHOOK_TRIGGER_EVENTS_GROUPED_BY_APP = {
core: [
WebhookTriggerEvents.BOOKING_CANCELLED,
WebhookTriggerEvents.BOOKING_CREATED,
WebhookTriggerEvents.BOOKING_RESCHEDULED,
WebhookTriggerEvents.BOOKING_PAID,
WebhookTriggerEvents.BOOKING_PAYMENT_INITIATED,
WebhookTriggerEvents.MEETING_ENDED,
WebhookTriggerEvents.MEETING_STARTED,
WebhookTriggerEvents.BOOKING_REQUESTED,
WebhookTriggerEvents.BOOKING_REJECTED,
WebhookTriggerEvents.RECORDING_READY,
WebhookTriggerEvents.INSTANT_MEETING,
WebhookTriggerEvents.RECORDING_TRANSCRIPTION_GENERATED,
WebhookTriggerEvents.BOOKING_NO_SHOW_UPDATED,
WebhookTriggerEvents.OOO_CREATED,
WebhookTriggerEvents.AFTER_HOSTS_CAL_VIDEO_NO_SHOW,
WebhookTriggerEvents.AFTER_GUESTS_CAL_VIDEO_NO_SHOW,
WebhookTriggerEvents.DELEGATION_CREDENTIAL_ERROR,
] as const,
"routing-forms": [
WebhookTriggerEvents.FORM_SUBMITTED,
WebhookTriggerEvents.FORM_SUBMITTED_NO_EVENT,
] as const,
};
export const WEBHOOK_TRIGGER_EVENTS = [
...WEBHOOK_TRIGGER_EVENTS_GROUPED_BY_APP.core,
...WEBHOOK_TRIGGER_EVENTS_GROUPED_BY_APP["routing-forms"],
] as const;