import { CALENDLY_ROUTING_FORM_SCHEMA, CALENDLY_ROUTING_FORM_SUBMISSION_SCHEMA, CALENDLY_URI_SCHEMA, CALENDLY_UUID_SCHEMA, } from "@automate.ax/integration-contracts/calendly" import * as z from "zod" import { defineAction } from "../../../automation/actions" import { CALENDLY_ACCOUNT, CALENDLY_PAGE_INFO_SCHEMA, CALENDLY_PAGE_INPUT_SCHEMA, calendlyAccountRequirement, collectionResponse, compactCalendlyQuery, getCalendlyApi, resourceResponse, toPage, } from "./lib" const ACCOUNT = calendlyAccountRequirement("routing_forms:read") export const listCalendlyRoutingForms = defineAction( "List Calendly routing forms", ) .describe( "Lists routing forms for a Calendly organization on Teams or above.", ) .account(CALENDLY_ACCOUNT, ACCOUNT) .input( CALENDLY_PAGE_INPUT_SCHEMA.extend({ organization: CALENDLY_URI_SCHEMA, sort: z.enum(["created_at:asc", "created_at:desc"]).optional(), }), ) .output( z.object({ items: CALENDLY_ROUTING_FORM_SCHEMA.array(), pageInfo: CALENDLY_PAGE_INFO_SCHEMA, }), ) .retry({ replaySafety: "safe" }) .handler(({ account, input }) => getCalendlyApi(account) .request("routing_forms", { query: compactCalendlyQuery(input), responseSchema: collectionResponse(CALENDLY_ROUTING_FORM_SCHEMA), }) .then(toPage), ) export const getCalendlyRoutingForm = defineAction("Get Calendly routing form") .describe("Retrieves one Calendly routing form on Teams or above.") .account(CALENDLY_ACCOUNT, ACCOUNT) .input(z.object({ routingFormId: CALENDLY_UUID_SCHEMA })) .output(CALENDLY_ROUTING_FORM_SCHEMA) .retry({ replaySafety: "safe" }) .handler(({ account, input }) => getCalendlyApi(account) .request(`routing_forms/${encodeURIComponent(input.routingFormId)}`, { responseSchema: resourceResponse(CALENDLY_ROUTING_FORM_SCHEMA), }) .then(({ resource }) => resource), ) export const listCalendlyRoutingFormSubmissions = defineAction( "List Calendly routing form submissions", ) .describe( "Lists submissions for one Calendly routing form on Teams or above.", ) .account(CALENDLY_ACCOUNT, ACCOUNT) .input( CALENDLY_PAGE_INPUT_SCHEMA.extend({ form: CALENDLY_URI_SCHEMA, sort: z.enum(["created_at:asc", "created_at:desc"]).optional(), }), ) .output( z.object({ items: CALENDLY_ROUTING_FORM_SUBMISSION_SCHEMA.array(), pageInfo: CALENDLY_PAGE_INFO_SCHEMA, }), ) .retry({ replaySafety: "safe" }) .handler(({ account, input }) => getCalendlyApi(account) .request("routing_form_submissions", { query: compactCalendlyQuery(input), responseSchema: collectionResponse( CALENDLY_ROUTING_FORM_SUBMISSION_SCHEMA, ), }) .then(toPage), ) export const getCalendlyRoutingFormSubmission = defineAction( "Get Calendly routing form submission", ) .describe("Retrieves one Calendly routing form submission on Teams or above.") .account(CALENDLY_ACCOUNT, ACCOUNT) .input(z.object({ submissionId: CALENDLY_UUID_SCHEMA })) .output(CALENDLY_ROUTING_FORM_SUBMISSION_SCHEMA) .retry({ replaySafety: "safe" }) .handler(({ account, input }) => getCalendlyApi(account) .request( `routing_form_submissions/${encodeURIComponent(input.submissionId)}`, { responseSchema: resourceResponse( CALENDLY_ROUTING_FORM_SUBMISSION_SCHEMA, ), }, ) .then(({ resource }) => resource), )