import { cloudflareTriggerDefinitions as definitions } from "@automate.ax/catalog/triggers/cloudflare" import type { z } from "zod" import { createTrigger } from "../../automation/create-trigger" import type { IntegrationAccountReference } from "../../automation/integrations" import { CLOUDFLARE_ALERT_TYPE_SCHEMA, CLOUDFLARE_NOTIFICATION_FILTERS_SCHEMA, } from "@automate.ax/integration-contracts/cloudflare" /** Public camelCase Cloudflare notification-policy filters. */ type Filters = z.input export interface CloudflareTriggerOptions { account?: string | IntegrationAccountReference<"cloudflare"> accountId: string filters?: Filters } export interface OnCloudflareNotificationOptions extends CloudflareTriggerOptions { alertTypes: z.input[] } export const onCloudflareNotification = createTrigger( definitions.cloudflareNotification, ) /** * Maps a semantic trigger to its fixed Cloudflare policy alert type. * * @param alertType - Exact provider alert type. */ function semantic(alertType: z.input) { return (options: CloudflareTriggerOptions) => ({ ...options, alertTypes: [alertType], }) } /** Subscribes to Cloudflare network-layer DDoS attack notifications. */ export const onCloudflareLayer4DdosAttack = createTrigger( definitions.cloudflareLayer4DdosAttack, semantic("advanced_ddos_attack_l4_alert"), ) /** Subscribes to Cloudflare application-layer DDoS attack notifications. */ export const onCloudflareLayer7DdosAttack = createTrigger( definitions.cloudflareLayer7DdosAttack, semantic("advanced_ddos_attack_l7_alert"), ) /** Subscribes to Cloudflare dedicated SSL certificate events. */ export const onCloudflareSslCertificateEvent = createTrigger( definitions.cloudflareSslCertificateEvent, semantic("dedicated_ssl_certificate_event_type"), ) /** Subscribes to Cloudflare origin health-check status changes. */ export const onCloudflareOriginHealthCheckStatusChanged = createTrigger( definitions.cloudflareOriginHealthCheckStatusChanged, semantic("health_check_status_notification"), ) /** Subscribes to Cloudflare Access custom-certificate expiration alerts. */ export const onCloudflareAccessCertificateExpiring = createTrigger( definitions.cloudflareAccessCertificateExpiring, semantic("access_custom_certificate_expiration_type"), )