82 lines
4.1 KiB
TypeScript
82 lines
4.1 KiB
TypeScript
import { z, ActionDefinition } from '@botpress/sdk'
|
|
|
|
export const getComments = {
|
|
title: 'Get Comments',
|
|
description: 'Get a comments thread',
|
|
input: {
|
|
schema: z.object({
|
|
submissionId: z
|
|
.string()
|
|
.title('SubmissionId')
|
|
.describe('The id of the submission to get comments for.')
|
|
.optional(),
|
|
changelogId: z
|
|
.string()
|
|
.title('changelogId')
|
|
.describe(
|
|
'The id of the changelog to get comments for. Accepts both ObjectId and slug. Example: "65f5f3c037fc63b7d43d0f16" or "my-changelog-slug"'
|
|
)
|
|
.optional(),
|
|
privacy: z
|
|
.enum(['public', 'private', 'all'])
|
|
.title('Privacy')
|
|
.describe('Filter comments by privacy setting. Allowed values: "public", "private", "all"')
|
|
.optional(),
|
|
inReview: z
|
|
.boolean()
|
|
.title('In Review')
|
|
.describe('Filter comments by whether they are in review. Set to true to get only comments that are in review.')
|
|
.optional(),
|
|
commentThreadId: z
|
|
.string()
|
|
.title('Comment Thread Id')
|
|
.describe(
|
|
'Given a specific comment id, this will return all comments in the thread with the root comment being the comment with the given id.'
|
|
)
|
|
.optional(),
|
|
limit: z.number().title('Limit').describe('Number of results per page. Default is 10.').optional(),
|
|
page: z.number().title('Page').describe('Page number. Default is 1.').optional(),
|
|
sortBy: z.enum(['best', 'top', 'new', 'old']).title('SortBy').describe('Sort order of the results.').optional(),
|
|
nextToken: z.string().title('Next Token').optional().describe('Page number. Starts at 1'),
|
|
}),
|
|
},
|
|
output: {
|
|
schema: z.object({
|
|
results: z
|
|
.array(
|
|
z
|
|
.object({
|
|
id: z.string().title('ID').describe('Comment ID'),
|
|
upvoted: z.boolean().optional().title('Upvoted').describe('Whether the comment is upvoted'),
|
|
downvoted: z.boolean().optional().title('Downvoted').describe('Whether the comment is downvoted'),
|
|
inReview: z.boolean().optional().title('In Review').describe('Whether the comment is in review'),
|
|
isSpam: z.boolean().optional().title('Is Spam').describe('Whether the comment is marked as spam'),
|
|
pinned: z.boolean().optional().title('Pinned').describe('Whether the comment is pinned'),
|
|
emailSent: z.boolean().optional().title('Email Sent').describe('Whether an email notification was sent'),
|
|
sendNotification: z
|
|
.boolean()
|
|
.optional()
|
|
.title('Send Notification')
|
|
.describe('Whether to send notifications'),
|
|
organization: z.string().optional().title('Organization').describe('Organization ID'),
|
|
submission: z.string().optional().title('Submission').describe('Submission ID'),
|
|
author: z.string().optional().title('Author').describe('Author name'),
|
|
authorId: z.string().optional().title('Author ID').describe('Author ID'),
|
|
authorPicture: z.string().optional().title('Author Picture').describe('Author profile picture URL'),
|
|
isPrivate: z.boolean().optional().title('Is Private').describe('Whether the comment is private'),
|
|
isDeleted: z.boolean().optional().title('Is Deleted').describe('Whether the comment is deleted'),
|
|
content: z.string().optional().title('Content').describe('Comment content'),
|
|
upvotes: z.number().optional().title('Upvotes').describe('Number of upvotes'),
|
|
downvotes: z.number().optional().title('Downvotes').describe('Number of downvotes'),
|
|
parentComment: z.string().nullable().optional().title('Parent Comment').describe('Parent comment ID'),
|
|
path: z.string().optional().title('Path').describe('Comment path'),
|
|
})
|
|
.title('Comment')
|
|
.describe('Represent a single comment.')
|
|
)
|
|
.title('Comments')
|
|
.describe('A list of comments.'),
|
|
}),
|
|
},
|
|
} satisfies ActionDefinition
|