import { calcomPath, getCalcomApi, } from "@automate.ax/integration-contracts/calcom" import * as z from "zod" export const CALCOM_ACCOUNT = "calcom" export const BOOKING_API_VERSION = "2026-02-25" export const BOOKING_LIST_API_VERSION = "2026-05-01" export const BOOKING_ATTENDEE_API_VERSION = "2024-08-13" export const EVENT_TYPE_API_VERSION = "2026-06-12" export const PRIVATE_LINK_API_VERSION = "2024-09-04" export const SCHEDULE_API_VERSION = "2024-06-11" export const SLOT_API_VERSION = "2024-09-04" export const CALCOM_ID_SCHEMA = z.number().int().positive() export const CALCOM_UID_SCHEMA = z.string().trim().min(1) export const CALCOM_DATE_TIME_SCHEMA = z.iso.datetime({ offset: true }) export { calcomPath } type CalcomQueryValue = | boolean | number | string | (boolean | number | string)[] | null | undefined /** Creates the Cal.com API-key account requirement. */ export function calcomAccountRequirement() { return { connections: [{ connectionMethodId: "api-key" }], } as const } /** * Resolves the shared API client from one action account. * * @param account Resolved Cal.com action account. * @param account.connectionMethodId Selected connection method. * @param account.secret Decrypted connection secret. * @param account.serviceId Cal.com service identifier. */ export function calcomApi(account: { connectionMethodId: string secret: Record serviceId: "calcom" }) { return getCalcomApi(account) } /** * Removes undefined fields before a value crosses the provider boundary. * * @param value Candidate query parameters. */ export function compact(value: Record) { const result: Record> = {} for (const [key, item] of Object.entries(value)) { if (item !== undefined) result[key] = item } return result }