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

69 lines
2.0 KiB
TypeScript

import { z, IntegrationDefinition } from '@botpress/sdk'
import {
bookEventInputSchema,
bookEventOutputSchema,
generateLinkInputSchema,
generateLinkOutputSchema,
getAvailableTimeSlotsInputSchema,
getAvailableTimeSlotsOutputSchema,
getEventTypesInputSchema,
getEventTypesOutputSchema,
} from './definitions/actions'
export default new IntegrationDefinition({
name: 'calcom',
title: 'Cal.com',
version: '0.4.2',
readme: 'hub.md',
icon: 'icon.svg',
description: 'Schedule meetings and manage events using the Cal.com scheduling platform.',
configuration: {
schema: z.object({
calcomApiKey: z
.string()
.describe('Your Cal.com API Key. You can find it in your Cal.com account settings.')
.title('Cal.com API Key'),
}),
},
user: {
tags: {
id: { title: 'User ID', description: 'The ID of the user' },
},
},
events: {},
actions: {
getEventTypes: {
title: 'Get Event Types',
description: 'Fetches all event types from Cal.com',
input: { schema: getEventTypesInputSchema },
output: { schema: getEventTypesOutputSchema },
},
getAvailableTimeSlots: {
title: 'Get Available Time Slots',
description:
'Fetches available time slots for a specific event type within a date range ( default to next 7 days if not provided )',
input: { schema: getAvailableTimeSlotsInputSchema },
output: { schema: getAvailableTimeSlotsOutputSchema },
},
generateLink: {
title: 'Generate a link',
description: 'Generates a link to a calendar',
input: { schema: generateLinkInputSchema },
output: { schema: generateLinkOutputSchema },
},
bookEvent: {
title: 'Book an Event',
description: 'Books an event for a user',
input: { schema: bookEventInputSchema },
output: { schema: bookEventOutputSchema },
},
},
__advanced: {
useLegacyZuiTransformer: true,
},
attributes: {
category: 'Business Operations',
repo: 'botpress',
},
})