Files
2026-07-13 13:34:48 +08:00

92 lines
3.2 KiB
TypeScript

import { z } from '@botpress/sdk'
export const getEventTypesInputSchema = z.object({
username: z.string().describe('The username of the Cal.com account').title('Username'),
})
export const getEventTypesOutputSchema = z.object({
eventTypes: z
.array(
z.object({
id: z.number().describe('The unique identifier of the event type').title('Event Type ID'),
lengthInMinutes: z.number().describe('The duration of the event type in minutes').title('Duration (minutes)'),
title: z.string().describe('The title of the event type').title('Title'),
slug: z.string().describe('The slug of the event type').title('Slug'),
description: z.string().describe('A brief description of the event type').title('Description'),
lengthInMinutesOptions: z
.array(z.number())
.describe('Available duration options for the event type')
.title('Duration Options (minutes)'),
})
)
.describe('A list of event types associated with the Cal.com account')
.title('Event Types'),
})
export const getAvailableTimeSlotsInputSchema = z.object({
eventTypeId: z.number().describe('The ID of the event type').title('Event Type ID'),
startDate: z
.string()
.optional()
.describe('Start date in YYYY-MM-DD format')
.describe('Start date in YYYY-MM-DD format')
.title('Start Date'),
endDate: z
.string()
.optional()
.describe('End date in YYYY-MM-DD format')
.describe('End date in YYYY-MM-DD format')
.title('End Date'),
})
export const getAvailableTimeSlotsOutputSchema = z.object({
slots: z
.record(z.string(), z.array(z.record(z.string(), z.string())))
.describe('Available time slots grouped by date')
.title('Available Time Slots'),
})
export const generateLinkInputSchema = z.object({
conversationId: z
.string()
.describe('The ID of the conversation')
.placeholder('{{ event.conversationId }}')
.title('Conversation ID'),
email: z
.string()
.email('Invalid email address')
.describe('The email of the user to send the link to')
.title('User Email'),
eventTypeId: z.number().describe('The ID of the event type').title('Event Type ID'),
})
export const generateLinkOutputSchema = z.object({
url: z.string().describe('The generated scheduling link').title('Scheduling Link URL'),
})
export const bookEventInputSchema = z.object({
eventTypeId: z.number().describe('The ID of the event type').title('Event Type ID'),
start: z
.string()
.describe('Start time in ISO 8601 format')
.describe('Start time in ISO 8601 format')
.title('Start Time'),
email: z
.string()
.email('Invalid email address')
.describe('The email of the user booking the event')
.title('User Email'),
name: z.string().describe('The name of the user booking the event').title('User Name'),
timeZone: z.string().describe('Time zone in IANA format, e.g., America/New_York').title('Time Zone'),
conversationId: z
.string()
.optional()
.placeholder('{{ event.conversationId }}')
.describe('The ID of the conversation')
.title('Conversation ID'),
})
export const bookEventOutputSchema = z.object({
success: z.boolean().describe('Indicates if the booking was successful').title('Success'),
})