97 lines
2.6 KiB
TypeScript
97 lines
2.6 KiB
TypeScript
import { z, EventDefinition } from '@botpress/sdk'
|
|
import { webhookEvent, userSchema } from './common'
|
|
|
|
const postSchema = z.object({
|
|
id: z.string().title('Id').optional(),
|
|
type: z.string().title('Type').optional(),
|
|
title: z.string().title('Title').optional(),
|
|
content: z.string().title('Content').optional(),
|
|
user: userSchema.title('User').optional(),
|
|
postStatus: z
|
|
.object({
|
|
name: z.string().optional(),
|
|
type: z.string().optional(),
|
|
id: z.string().optional(),
|
|
})
|
|
.title('Post Status')
|
|
.optional(),
|
|
postCategory: z
|
|
.object({
|
|
category: z.string().optional(),
|
|
id: z.string().optional(),
|
|
})
|
|
.title('Post Category')
|
|
.optional(),
|
|
date: z.string().title('Date').optional(),
|
|
slug: z.string().title('Slug').optional(),
|
|
categoryId: z.string().title('Category Id').optional(),
|
|
})
|
|
|
|
export const postCreated = {
|
|
title: 'Post Created',
|
|
description: 'A post was created on a board.',
|
|
schema: webhookEvent.extend({
|
|
topic: z.literal('post.created').title('Topic').describe('The topic of the event'),
|
|
data: z
|
|
.object({
|
|
item: postSchema,
|
|
})
|
|
.title('Data')
|
|
.describe('Event data'),
|
|
}),
|
|
} satisfies EventDefinition
|
|
|
|
export const postUpdated = {
|
|
title: 'Post Updated',
|
|
description: 'A post was updated on a board.',
|
|
schema: webhookEvent.extend({
|
|
topic: z.literal('post.updated').title('Topic').describe('The topic of the event'),
|
|
data: z
|
|
.object({
|
|
item: postSchema,
|
|
changes: z.array(
|
|
z.object({
|
|
field: z.string(),
|
|
oldValue: z.any(),
|
|
newValue: z.any(),
|
|
})
|
|
),
|
|
})
|
|
.title('Data')
|
|
.describe('Event data'),
|
|
}),
|
|
} satisfies EventDefinition
|
|
|
|
export const postDeleted = {
|
|
title: 'Post Deleted',
|
|
description: 'A post was deleted on a board.',
|
|
schema: webhookEvent.extend({
|
|
topic: z.literal('post.deleted').title('Topic').describe('The topic of the event'),
|
|
data: z
|
|
.object({
|
|
item: postSchema,
|
|
})
|
|
.title('Data')
|
|
.describe('Event data'),
|
|
}),
|
|
} satisfies EventDefinition
|
|
|
|
export const postVoted = {
|
|
title: 'Post voted',
|
|
description: 'A post was voted on a board.',
|
|
schema: webhookEvent.extend({
|
|
topic: z.literal('post.voted').title('Topic').describe('The topic of the event'),
|
|
data: z
|
|
.object({
|
|
item: z.object({
|
|
type: z.string().optional(),
|
|
action: z.string().optional(),
|
|
submissionId: z.string().optional(),
|
|
user: userSchema.optional(),
|
|
}),
|
|
})
|
|
.title('Data')
|
|
.describe('Event data'),
|
|
}),
|
|
} satisfies EventDefinition
|