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

166 lines
5.3 KiB
TypeScript

import { IntegrationDefinition, z } from '@botpress/sdk'
export default new IntegrationDefinition({
name: 'clickup',
title: 'ClickUp',
version: '0.0.3',
description: 'Create and update tasks, and add comments from your chatbot.',
readme: 'hub.md',
icon: 'icon.svg',
configuration: {
schema: z.object({
apiKey: z.string().title('API Key').describe('API Key for Click Up'),
teamId: z.string().title('Team ID').describe('Team ID to use for Click Up'),
}),
},
events: {
taskCreated: {
title: 'Task Created',
description: 'Triggered when a task is created',
schema: z.object({ id: z.string().title('Task ID').describe('ID of the created task') }),
},
taskUpdated: {
title: 'Task Updated',
description: 'Triggered when a task is updated',
schema: z.object({ id: z.string().title('Task ID').describe('ID of the updated task') }),
},
taskDeleted: {
title: 'Task Deleted',
description: 'Triggered when a task is deleted',
schema: z.object({ id: z.string().title('Task ID').describe('ID of the deleted task') }),
},
},
actions: {
createTask: {
title: 'Create a task',
description: 'Create a new task in a list',
input: {
schema: z.object({
listId: z.string().title('List ID').describe('ID of the list to create the task in'),
name: z.string().title('Name').describe('Name of the task to be created'),
description: z.string().title('Description').optional().describe('Description of the task to be created'),
status: z.string().optional().title('Status').describe('Status of the task to be created'),
assignees: z
.array(z.number())
.optional()
.title('Assignees')
.describe('IDs of the assignees of the task to be created'),
dueDate: z.string().datetime().optional().title('Due date').describe('Due date of the task to be created'),
tags: z.array(z.string()).optional().title('Tags').describe('Tags of the task to be created'),
}),
},
output: {
schema: z.object({
taskId: z.string().title('Task ID').describe('Id of the task created'),
}),
},
},
updateTask: {
title: 'Update a task',
description: 'Update the details of a task',
input: {
schema: z.object({
taskId: z.string().title('Task ID').describe('ID of the task to be updated'),
name: z.string().optional().title('Name').describe('New name of the task'),
description: z.string().optional().title('Description').describe('New description of the task'),
status: z.string().optional().title('Status').describe('New status of the task'),
archived: z.boolean().optional().title('Archived').describe('New archived status of the task'),
assigneesToAdd: z
.array(z.number())
.optional()
.title('Assignees to add')
.describe('Members to add to the task'),
assigneesToRemove: z
.array(z.number())
.optional()
.title('Assignees to remove')
.describe('Members to remove from the task'),
dueDate: z.string().datetime().optional().title('Due date').describe('New due date of the task'),
}),
},
output: {
schema: z.object({
taskId: z.string().title('Task ID').describe('Id of the task updated'),
}),
},
},
deleteTask: {
title: 'Delete a task',
description: 'Delete a task',
input: {
schema: z.object({
taskId: z.string().title('Task ID').describe('ID of the task to be deleted'),
}),
},
output: {
schema: z.object({}),
},
},
getListMembers: {
title: 'Get members of a list',
description: 'Get all the members of a list',
input: {
schema: z.object({
listId: z.string().title('List ID').describe('ID of the list to get the members of'),
}),
},
output: {
schema: z.object({
members: z
.array(
z.object({
id: z.number().title('Member ID').describe('ID of the member'),
username: z.string().title('Username').describe('Username of the member'),
email: z.string().title('Email').describe('Email of the member'),
})
)
.title('Members')
.describe('Members of the list'),
}),
},
},
},
channels: {
comment: {
title: 'Comment',
description: 'Comments on a task',
messages: {
text: {
schema: z.object({ text: z.string().title('Text').describe('Content of the comment') }),
},
},
message: {
tags: {
id: {
title: 'Message ID',
description: 'Message ID from ClickUp',
},
},
},
conversation: {
tags: {
taskId: {
title: 'Task ID',
description: 'Task ID from ClickUp',
},
},
},
},
},
user: {
tags: {
id: {
title: 'User ID',
description: 'User ID from ClickUp',
},
},
},
attributes: {
category: 'Project Management',
repo: 'botpress',
},
})