Skip to content

Commit 2645e5c

Browse files
waleedlatif1claude
andcommitted
feat(confluence): add webhook triggers for Confluence events
Adds 16 Confluence triggers: page CRUD, comments, blogs, attachments, spaces, and labels — plus a generic webhook trigger. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent fe34d23 commit 2645e5c

19 files changed

+1281
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import { ConfluenceIcon } from '@/components/icons'
2+
import { buildTriggerSubBlocks } from '@/triggers'
3+
import {
4+
buildAttachmentOutputs,
5+
buildConfluenceAttachmentExtraFields,
6+
confluenceSetupInstructions,
7+
confluenceTriggerOptions,
8+
} from '@/triggers/confluence/utils'
9+
import type { TriggerConfig } from '@/triggers/types'
10+
11+
/**
12+
* Confluence Attachment Created Trigger
13+
*
14+
* Triggers when a new attachment is uploaded to a page or blog post in Confluence.
15+
*/
16+
export const confluenceAttachmentCreatedTrigger: TriggerConfig = {
17+
id: 'confluence_attachment_created',
18+
name: 'Confluence Attachment Created',
19+
provider: 'confluence',
20+
description: 'Trigger workflow when an attachment is uploaded in Confluence',
21+
version: '1.0.0',
22+
icon: ConfluenceIcon,
23+
24+
subBlocks: buildTriggerSubBlocks({
25+
triggerId: 'confluence_attachment_created',
26+
triggerOptions: confluenceTriggerOptions,
27+
setupInstructions: confluenceSetupInstructions('attachment_created'),
28+
extraFields: buildConfluenceAttachmentExtraFields('confluence_attachment_created'),
29+
}),
30+
31+
outputs: buildAttachmentOutputs(),
32+
33+
webhook: {
34+
method: 'POST',
35+
headers: {
36+
'Content-Type': 'application/json',
37+
'X-Hub-Signature': 'sha256=...',
38+
'X-Atlassian-Webhook-Identifier': 'unique-webhook-id',
39+
},
40+
},
41+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import { ConfluenceIcon } from '@/components/icons'
2+
import { buildTriggerSubBlocks } from '@/triggers'
3+
import {
4+
buildAttachmentOutputs,
5+
buildConfluenceAttachmentExtraFields,
6+
confluenceSetupInstructions,
7+
confluenceTriggerOptions,
8+
} from '@/triggers/confluence/utils'
9+
import type { TriggerConfig } from '@/triggers/types'
10+
11+
/**
12+
* Confluence Attachment Removed Trigger
13+
*
14+
* Triggers when an attachment is removed or trashed from a page or blog post in Confluence.
15+
*/
16+
export const confluenceAttachmentRemovedTrigger: TriggerConfig = {
17+
id: 'confluence_attachment_removed',
18+
name: 'Confluence Attachment Removed',
19+
provider: 'confluence',
20+
description: 'Trigger workflow when an attachment is removed in Confluence',
21+
version: '1.0.0',
22+
icon: ConfluenceIcon,
23+
24+
subBlocks: buildTriggerSubBlocks({
25+
triggerId: 'confluence_attachment_removed',
26+
triggerOptions: confluenceTriggerOptions,
27+
setupInstructions: confluenceSetupInstructions('attachment_removed'),
28+
extraFields: buildConfluenceAttachmentExtraFields('confluence_attachment_removed'),
29+
}),
30+
31+
outputs: buildAttachmentOutputs(),
32+
33+
webhook: {
34+
method: 'POST',
35+
headers: {
36+
'Content-Type': 'application/json',
37+
'X-Hub-Signature': 'sha256=...',
38+
'X-Atlassian-Webhook-Identifier': 'unique-webhook-id',
39+
},
40+
},
41+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import { ConfluenceIcon } from '@/components/icons'
2+
import { buildTriggerSubBlocks } from '@/triggers'
3+
import {
4+
buildBlogOutputs,
5+
buildConfluenceExtraFields,
6+
confluenceSetupInstructions,
7+
confluenceTriggerOptions,
8+
} from '@/triggers/confluence/utils'
9+
import type { TriggerConfig } from '@/triggers/types'
10+
11+
/**
12+
* Confluence Blog Post Created Trigger
13+
*
14+
* Triggers when a new blog post is created in Confluence.
15+
*/
16+
export const confluenceBlogCreatedTrigger: TriggerConfig = {
17+
id: 'confluence_blog_created',
18+
name: 'Confluence Blog Post Created',
19+
provider: 'confluence',
20+
description: 'Trigger workflow when a blog post is created in Confluence',
21+
version: '1.0.0',
22+
icon: ConfluenceIcon,
23+
24+
subBlocks: buildTriggerSubBlocks({
25+
triggerId: 'confluence_blog_created',
26+
triggerOptions: confluenceTriggerOptions,
27+
setupInstructions: confluenceSetupInstructions('blog_created'),
28+
extraFields: buildConfluenceExtraFields('confluence_blog_created'),
29+
}),
30+
31+
outputs: buildBlogOutputs(),
32+
33+
webhook: {
34+
method: 'POST',
35+
headers: {
36+
'Content-Type': 'application/json',
37+
'X-Hub-Signature': 'sha256=...',
38+
'X-Atlassian-Webhook-Identifier': 'unique-webhook-id',
39+
},
40+
},
41+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import { ConfluenceIcon } from '@/components/icons'
2+
import { buildTriggerSubBlocks } from '@/triggers'
3+
import {
4+
buildBlogOutputs,
5+
buildConfluenceExtraFields,
6+
confluenceSetupInstructions,
7+
confluenceTriggerOptions,
8+
} from '@/triggers/confluence/utils'
9+
import type { TriggerConfig } from '@/triggers/types'
10+
11+
/**
12+
* Confluence Blog Post Removed Trigger
13+
*
14+
* Triggers when a blog post is removed or trashed in Confluence.
15+
*/
16+
export const confluenceBlogRemovedTrigger: TriggerConfig = {
17+
id: 'confluence_blog_removed',
18+
name: 'Confluence Blog Post Removed',
19+
provider: 'confluence',
20+
description: 'Trigger workflow when a blog post is removed in Confluence',
21+
version: '1.0.0',
22+
icon: ConfluenceIcon,
23+
24+
subBlocks: buildTriggerSubBlocks({
25+
triggerId: 'confluence_blog_removed',
26+
triggerOptions: confluenceTriggerOptions,
27+
setupInstructions: confluenceSetupInstructions('blog_removed'),
28+
extraFields: buildConfluenceExtraFields('confluence_blog_removed'),
29+
}),
30+
31+
outputs: buildBlogOutputs(),
32+
33+
webhook: {
34+
method: 'POST',
35+
headers: {
36+
'Content-Type': 'application/json',
37+
'X-Hub-Signature': 'sha256=...',
38+
'X-Atlassian-Webhook-Identifier': 'unique-webhook-id',
39+
},
40+
},
41+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import { ConfluenceIcon } from '@/components/icons'
2+
import { buildTriggerSubBlocks } from '@/triggers'
3+
import {
4+
buildBlogOutputs,
5+
buildConfluenceExtraFields,
6+
confluenceSetupInstructions,
7+
confluenceTriggerOptions,
8+
} from '@/triggers/confluence/utils'
9+
import type { TriggerConfig } from '@/triggers/types'
10+
11+
/**
12+
* Confluence Blog Post Updated Trigger
13+
*
14+
* Triggers when a blog post is updated in Confluence.
15+
*/
16+
export const confluenceBlogUpdatedTrigger: TriggerConfig = {
17+
id: 'confluence_blog_updated',
18+
name: 'Confluence Blog Post Updated',
19+
provider: 'confluence',
20+
description: 'Trigger workflow when a blog post is updated in Confluence',
21+
version: '1.0.0',
22+
icon: ConfluenceIcon,
23+
24+
subBlocks: buildTriggerSubBlocks({
25+
triggerId: 'confluence_blog_updated',
26+
triggerOptions: confluenceTriggerOptions,
27+
setupInstructions: confluenceSetupInstructions('blog_updated'),
28+
extraFields: buildConfluenceExtraFields('confluence_blog_updated'),
29+
}),
30+
31+
outputs: buildBlogOutputs(),
32+
33+
webhook: {
34+
method: 'POST',
35+
headers: {
36+
'Content-Type': 'application/json',
37+
'X-Hub-Signature': 'sha256=...',
38+
'X-Atlassian-Webhook-Identifier': 'unique-webhook-id',
39+
},
40+
},
41+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import { ConfluenceIcon } from '@/components/icons'
2+
import { buildTriggerSubBlocks } from '@/triggers'
3+
import {
4+
buildCommentOutputs,
5+
buildConfluenceExtraFields,
6+
confluenceSetupInstructions,
7+
confluenceTriggerOptions,
8+
} from '@/triggers/confluence/utils'
9+
import type { TriggerConfig } from '@/triggers/types'
10+
11+
/**
12+
* Confluence Comment Created Trigger
13+
*
14+
* Triggers when a new comment is created on a page or blog post in Confluence.
15+
*/
16+
export const confluenceCommentCreatedTrigger: TriggerConfig = {
17+
id: 'confluence_comment_created',
18+
name: 'Confluence Comment Created',
19+
provider: 'confluence',
20+
description: 'Trigger workflow when a comment is created in Confluence',
21+
version: '1.0.0',
22+
icon: ConfluenceIcon,
23+
24+
subBlocks: buildTriggerSubBlocks({
25+
triggerId: 'confluence_comment_created',
26+
triggerOptions: confluenceTriggerOptions,
27+
setupInstructions: confluenceSetupInstructions('comment_created'),
28+
extraFields: buildConfluenceExtraFields('confluence_comment_created'),
29+
}),
30+
31+
outputs: buildCommentOutputs(),
32+
33+
webhook: {
34+
method: 'POST',
35+
headers: {
36+
'Content-Type': 'application/json',
37+
'X-Hub-Signature': 'sha256=...',
38+
'X-Atlassian-Webhook-Identifier': 'unique-webhook-id',
39+
},
40+
},
41+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import { ConfluenceIcon } from '@/components/icons'
2+
import { buildTriggerSubBlocks } from '@/triggers'
3+
import {
4+
buildCommentOutputs,
5+
buildConfluenceExtraFields,
6+
confluenceSetupInstructions,
7+
confluenceTriggerOptions,
8+
} from '@/triggers/confluence/utils'
9+
import type { TriggerConfig } from '@/triggers/types'
10+
11+
/**
12+
* Confluence Comment Removed Trigger
13+
*
14+
* Triggers when a comment is removed from a page or blog post in Confluence.
15+
*/
16+
export const confluenceCommentRemovedTrigger: TriggerConfig = {
17+
id: 'confluence_comment_removed',
18+
name: 'Confluence Comment Removed',
19+
provider: 'confluence',
20+
description: 'Trigger workflow when a comment is removed in Confluence',
21+
version: '1.0.0',
22+
icon: ConfluenceIcon,
23+
24+
subBlocks: buildTriggerSubBlocks({
25+
triggerId: 'confluence_comment_removed',
26+
triggerOptions: confluenceTriggerOptions,
27+
setupInstructions: confluenceSetupInstructions('comment_removed'),
28+
extraFields: buildConfluenceExtraFields('confluence_comment_removed'),
29+
}),
30+
31+
outputs: buildCommentOutputs(),
32+
33+
webhook: {
34+
method: 'POST',
35+
headers: {
36+
'Content-Type': 'application/json',
37+
'X-Hub-Signature': 'sha256=...',
38+
'X-Atlassian-Webhook-Identifier': 'unique-webhook-id',
39+
},
40+
},
41+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/**
2+
* Confluence Triggers
3+
* Export all Confluence webhook triggers
4+
*/
5+
6+
export { confluenceAttachmentCreatedTrigger } from './attachment_created'
7+
export { confluenceAttachmentRemovedTrigger } from './attachment_removed'
8+
export { confluenceBlogCreatedTrigger } from './blog_created'
9+
export { confluenceBlogRemovedTrigger } from './blog_removed'
10+
export { confluenceBlogUpdatedTrigger } from './blog_updated'
11+
export { confluenceCommentCreatedTrigger } from './comment_created'
12+
export { confluenceCommentRemovedTrigger } from './comment_removed'
13+
export { confluenceLabelAddedTrigger } from './label_added'
14+
export { confluenceLabelRemovedTrigger } from './label_removed'
15+
export { confluencePageCreatedTrigger } from './page_created'
16+
export { confluencePageMovedTrigger } from './page_moved'
17+
export { confluencePageRemovedTrigger } from './page_removed'
18+
export { confluencePageUpdatedTrigger } from './page_updated'
19+
export { confluenceSpaceCreatedTrigger } from './space_created'
20+
export { confluenceSpaceUpdatedTrigger } from './space_updated'
21+
export { confluenceWebhookTrigger } from './webhook'
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import { ConfluenceIcon } from '@/components/icons'
2+
import { buildTriggerSubBlocks } from '@/triggers'
3+
import {
4+
buildConfluenceExtraFields,
5+
buildLabelOutputs,
6+
confluenceSetupInstructions,
7+
confluenceTriggerOptions,
8+
} from '@/triggers/confluence/utils'
9+
import type { TriggerConfig } from '@/triggers/types'
10+
11+
/**
12+
* Confluence Label Added Trigger
13+
*
14+
* Triggers when a label is added to a page, blog post, or other content in Confluence.
15+
*/
16+
export const confluenceLabelAddedTrigger: TriggerConfig = {
17+
id: 'confluence_label_added',
18+
name: 'Confluence Label Added',
19+
provider: 'confluence',
20+
description: 'Trigger workflow when a label is added to content in Confluence',
21+
version: '1.0.0',
22+
icon: ConfluenceIcon,
23+
24+
subBlocks: buildTriggerSubBlocks({
25+
triggerId: 'confluence_label_added',
26+
triggerOptions: confluenceTriggerOptions,
27+
setupInstructions: confluenceSetupInstructions('label_added'),
28+
extraFields: buildConfluenceExtraFields('confluence_label_added'),
29+
}),
30+
31+
outputs: buildLabelOutputs(),
32+
33+
webhook: {
34+
method: 'POST',
35+
headers: {
36+
'Content-Type': 'application/json',
37+
'X-Hub-Signature': 'sha256=...',
38+
'X-Atlassian-Webhook-Identifier': 'unique-webhook-id',
39+
},
40+
},
41+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import { ConfluenceIcon } from '@/components/icons'
2+
import { buildTriggerSubBlocks } from '@/triggers'
3+
import {
4+
buildConfluenceExtraFields,
5+
buildLabelOutputs,
6+
confluenceSetupInstructions,
7+
confluenceTriggerOptions,
8+
} from '@/triggers/confluence/utils'
9+
import type { TriggerConfig } from '@/triggers/types'
10+
11+
/**
12+
* Confluence Label Removed Trigger
13+
*
14+
* Triggers when a label is removed from a page, blog post, or other content in Confluence.
15+
*/
16+
export const confluenceLabelRemovedTrigger: TriggerConfig = {
17+
id: 'confluence_label_removed',
18+
name: 'Confluence Label Removed',
19+
provider: 'confluence',
20+
description: 'Trigger workflow when a label is removed from content in Confluence',
21+
version: '1.0.0',
22+
icon: ConfluenceIcon,
23+
24+
subBlocks: buildTriggerSubBlocks({
25+
triggerId: 'confluence_label_removed',
26+
triggerOptions: confluenceTriggerOptions,
27+
setupInstructions: confluenceSetupInstructions('label_removed'),
28+
extraFields: buildConfluenceExtraFields('confluence_label_removed'),
29+
}),
30+
31+
outputs: buildLabelOutputs(),
32+
33+
webhook: {
34+
method: 'POST',
35+
headers: {
36+
'Content-Type': 'application/json',
37+
'X-Hub-Signature': 'sha256=...',
38+
'X-Atlassian-Webhook-Identifier': 'unique-webhook-id',
39+
},
40+
},
41+
}

0 commit comments

Comments
 (0)