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

89 lines
2.6 KiB
TypeScript

import * as sdk from '@botpress/sdk'
import creatable from './bp_modules/creatable'
import deletable from './bp_modules/deletable'
import filesReadonly from './bp_modules/files-readonly'
import readable from './bp_modules/readable'
import updatable from './bp_modules/updatable'
import { entities } from './definitions'
export default new sdk.IntegrationDefinition({
name: 'confluence',
version: '3.3.4',
readme: 'hub.md',
icon: 'icon.svg',
title: 'Confluence',
description: 'Manage your files and folders effortlessly.',
attributes: {
category: 'File Management',
repo: 'botpress',
},
configuration: {
schema: sdk.z.object({
host: sdk.z.string().describe('Host URI. Format is https://your_workspace_name.atlassian.net').title('Host'),
user: sdk.z.string().describe('Email of the user').title('User Email'),
apiToken: sdk.z.string().describe('API Token').title('API Token'),
}),
},
actions: {},
entities,
channels: {
comment: {
title: 'Comments',
description: 'Comments on pages',
conversation: {
tags: {
id: { title: 'Conversation ID', description: 'The ID of the conversation in confluence' },
},
},
messages: {
text: {
schema: sdk.z.object({
text: sdk.z.string(),
}),
},
},
},
},
user: {
tags: {
id: { title: 'User ID', description: 'The ID of the user in confluence' },
},
},
__advanced: {
useLegacyZuiTransformer: true,
},
})
.extend(readable, ({ entities }) => ({
entities: { item: entities.page },
actions: { read: { name: 'getPage' } },
}))
.extend(creatable, ({ entities }) => ({
entities: { item: entities.page },
actions: { create: { name: 'createPage' } },
events: { created: { name: 'pageCreated' } },
}))
.extend(updatable, ({ entities }) => ({
entities: { item: entities.page },
actions: { update: { name: 'updatePage' } },
events: { updated: { name: 'pageUpdated' } },
}))
.extend(deletable, ({ entities }) => ({
entities: { item: entities.page },
actions: { delete: { name: 'deletePage' } },
events: { deleted: { name: 'pageDeleted' } },
}))
.extend(filesReadonly, ({}) => ({
entities: {},
actions: {
listItemsInFolder: {
name: 'filesReadonlyListItemsInFolder',
attributes: { ...sdk.WELL_KNOWN_ATTRIBUTES.HIDDEN_IN_STUDIO },
},
transferFileToBotpress: {
name: 'filesReadonlyTransferFileToBotpress',
attributes: { ...sdk.WELL_KNOWN_ATTRIBUTES.HIDDEN_IN_STUDIO },
},
},
}))