92 lines
3.2 KiB
TypeScript
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'),
|
|
})
|