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

203 lines
6.8 KiB
TypeScript

import { IntegrationDefinition, z } from '@botpress/sdk'
import {
makeApiCallInputSchema,
makeApiCallOutputSchema,
getRecordByIdInputSchema,
getRecordByIdOutputSchema,
insertRecordInputSchema,
insertRecordOutputSchema,
updateRecordInputSchema,
updateRecordOutputSchema,
deleteRecordInputSchema,
deleteRecordOutputSchema,
searchRecordsInputSchema,
searchRecordsOutputSchema,
getRecordsInputSchema,
getRecordsOutputSchema,
getOrganizationDetailsOutputSchema,
getUsersInputSchema,
getUsersOutputSchema,
emptyInputSchema,
getAppointmentsInputSchema,
getAppointmentsOutputSchema,
getAppointmentByIdInputSchema,
getAppointmentByIdOutputSchema,
createAppointmentInputSchema,
createAppointmentOutputSchema,
updateAppointmentInputSchema,
updateAppointmentOutputSchema,
deleteAppointmentInputSchema,
deleteAppointmentOutputSchema,
sendMailInputSchema,
sendMailOutputSchema,
uploadFileInputSchema,
uploadFileOutputSchema,
getFileInputSchema,
getFileOutputSchema,
} from './src/misc/custom-schemas'
import { DATA_CENTERS } from './src/misc/data-centers'
import { zohoCredentialsStateSchema, zohoOAuthWizardStateSchema } from './src/misc/oauth-schemas'
export default new IntegrationDefinition({
name: 'zoho',
version: '4.0.1',
title: 'Zoho',
readme: 'hub.md',
icon: 'icon.svg',
description:
'Integrate your Botpress chatbot with Zoho CRM to manage customer interactions. Add, update, and retrieve contacts, deals, orders, and appointments directly through your chatbot.',
configuration: {
identifier: {
linkTemplateScript: 'linkTemplate.vrl',
required: true,
},
schema: z.object({}),
},
configurations: {
manual: {
title: 'Manual configuration',
description: 'Configure manually with Zoho OAuth client credentials and a refresh token',
schema: z.object({
clientId: z.string().title('Client ID').describe('Your Zoho Client ID'),
clientSecret: z.string().title('Client Secret').describe('Your Zoho Client Secret'),
refreshToken: z.string().title('Refresh Token').describe('Your Zoho Refresh Token'),
dataCenter: z.enum(DATA_CENTERS).title('Data Center Region').describe('Zoho Data Center Region'),
}),
},
},
secrets: {
CLIENT_ID: {
description: 'The OAuth Client ID provided by Zoho.',
},
CLIENT_SECRET: {
description: 'The OAuth Client Secret provided by Zoho.',
},
},
user: {
tags: {
id: {
title: 'Zoho Tokens',
description: 'Zoho CRM access and refresh tokens',
},
},
},
states: {
credentials: {
type: 'integration',
schema: zohoCredentialsStateSchema,
},
oauthWizard: {
type: 'integration',
schema: zohoOAuthWizardStateSchema,
},
},
actions: {
makeApiCall: {
title: 'Make API Call',
description: 'Make a custom API call to the Zoho CRM API',
input: { schema: makeApiCallInputSchema },
output: { schema: makeApiCallOutputSchema },
},
insertRecord: {
title: 'Insert Record',
description: 'Insert a new record into a Zoho CRM module',
input: { schema: insertRecordInputSchema },
output: { schema: insertRecordOutputSchema },
},
updateRecord: {
title: 'Update Record',
description: 'Update an existing record in a Zoho CRM module',
input: { schema: updateRecordInputSchema },
output: { schema: updateRecordOutputSchema },
},
deleteRecord: {
title: 'Delete Record',
description: 'Delete a record from a Zoho CRM module',
input: { schema: deleteRecordInputSchema },
output: { schema: deleteRecordOutputSchema },
},
searchRecords: {
title: 'Search Records',
description: 'Search for records in a Zoho CRM module',
input: { schema: searchRecordsInputSchema },
output: { schema: searchRecordsOutputSchema },
},
getRecordById: {
title: 'Get Record By ID',
description: 'Retrieve a record from a Zoho CRM module by its unique ID',
input: { schema: getRecordByIdInputSchema },
output: { schema: getRecordByIdOutputSchema },
},
getRecords: {
title: 'Get Records',
description: 'Retrieve records from a Zoho CRM module',
input: { schema: getRecordsInputSchema },
output: { schema: getRecordsOutputSchema },
},
getOrganizationDetails: {
title: 'Get Organization Details',
description: 'Retrieve details about the Zoho CRM organization',
input: { schema: emptyInputSchema },
output: { schema: getOrganizationDetailsOutputSchema },
},
getUsers: {
title: 'Get Users',
description: 'Retrieve a list of users from the Zoho CRM organization',
input: { schema: getUsersInputSchema },
output: { schema: getUsersOutputSchema },
},
getAppointments: {
title: 'Get Appointments',
description: 'Retrieve a list of appointments from the Zoho CRM organization',
input: { schema: getAppointmentsInputSchema },
output: { schema: getAppointmentsOutputSchema },
},
getAppointmentById: {
title: 'Get Appointment By ID',
description: 'Retrieve an appointment from the Zoho CRM organization by its unique ID',
input: { schema: getAppointmentByIdInputSchema },
output: { schema: getAppointmentByIdOutputSchema },
},
createAppointment: {
title: 'Create Appointment',
description: 'Create a new appointment in the Zoho CRM organization',
input: { schema: createAppointmentInputSchema },
output: { schema: createAppointmentOutputSchema },
},
updateAppointment: {
title: 'Update Appointment',
description: 'Update an existing appointment in the Zoho CRM organization',
input: { schema: updateAppointmentInputSchema },
output: { schema: updateAppointmentOutputSchema },
},
deleteAppointment: {
title: 'Delete Appointment',
description: 'Delete an appointment from the Zoho CRM organization',
input: { schema: deleteAppointmentInputSchema },
output: { schema: deleteAppointmentOutputSchema },
},
sendMail: {
title: 'Send Mail',
description: 'Send an email using the Zoho CRM Mail API',
input: { schema: sendMailInputSchema },
output: { schema: sendMailOutputSchema },
},
uploadFile: {
title: 'Upload File',
description: 'Upload a file to the Zoho CRM organization',
input: { schema: uploadFileInputSchema },
output: { schema: uploadFileOutputSchema },
},
getFile: {
title: 'Get File',
description: 'Retrieve a file from the Zoho CRM organization by its unique ID',
input: { schema: getFileInputSchema },
output: { schema: getFileOutputSchema },
},
},
attributes: {
category: 'Business Operations',
repo: 'botpress',
},
})