166 lines
5.3 KiB
TypeScript
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',
|
|
},
|
|
})
|