import { z } from '@botpress/sdk' export const formSchema = z.object({ name: z.string().optional().describe('The name of the form').title('Form Name'), siteId: z.string().describe('The ID of the site that the form was submitted from').title('Site ID'), data: z.record(z.string()).optional().describe('The data submitted in the form').title('Form Data'), schema: z .array( z.object({ fieldName: z.string().optional().describe('Form field name').title('Field Name'), fieldType: z .enum(['FormTextInput', 'FormTextarea', 'FormCheckboxInput', 'FormRadioInput', 'FormFileUploadInput']) .optional() .describe('Form field type') .title('Field Type'), fieldElementId: z.string().describe('Element ID of the Form Field').title('Field Element ID'), }) ) .optional() .describe('A list of fields from the submitted form') .title('Form Schema'), submittedAt: z.string().optional().describe('The timestamp the form was submitted').title('Submitted At'), id: z.string().describe('the ID of the event').title('Form Submission ID'), formId: z.string().describe('The ID of the form submission').title('Form ID'), formElementId: z.string().describe('The uniqueID of the Form element').title('Form Element ID'), }) export const siteSchema = z.object({ domain: z.array(z.string()).optional().describe('The domains that were published').title('Site Domain'), site: z.string().optional().describe('The ID of the site that was published').title('Site Name'), publishedOn: z.string().describe('Timestamp when the site was published').title('Published On'), publishedBy: z .object({ displayName: z.string().describe('The name andID of the user who published the site').title('Published By'), }) .describe('Information about the user who published the site') .title('Published By'), }) export const pageSchema = z.object({ siteId: z.string().describe('ID of the site').title('Site ID'), pageId: z.string().describe('ID of the page').title('Page ID'), pageTitle: z.string().optional().describe('Title of the page').title('Page Title'), createdOn: z.string().optional().describe('Timestamp when the page was created').title('Created On'), lastUpdated: z.string().optional().describe('Timestamp when the page was last updated').title('Last Updated'), deletedOn: z.string().optional().describe('Timestamp when the page was deleted').title('Deleted On'), publishedPath: z.string().optional().describe('Published path of the page').title('Published Path'), }) export const itemSchema = z.object({ id: z.string().describe('Unique identifier for the Item').title('Item ID'), workspaceId: z.string().describe('Unique identifier of the workspace').title('Workspace ID'), siteId: z.string().describe('Unique identifier of the site').title('Site ID'), collectionId: z.string().describe('Unique identifier of the collection').title('Collection ID'), fieldData: z .object({ name: z.string().describe('Name of the item').title('Item Name'), slug: z.string().describe('Slug of the item').title('Item Slug'), }) .describe('Field data of the item') .title('Field Data'), lastPublished: z .string() .nullable() .optional() .describe('Timestamp when the item was last published') .title('Last Published'), lastUpdated: z.string().optional().describe('Timestamp when the item was last updated').title('Last Updated'), createdOn: z.string().optional().describe('Timestamp when the item was created').title('Created On'), isArchived: z.boolean().optional().describe('Whether the item is archived').title('Is Archived'), isDraft: z.boolean().optional().describe('Whether the item is a draft').title('Is Draft'), cmsLocaleId: z .string() .nullable() .optional() .describe('Unique identifier of the CMS locale for this item') .title('CMS Locale ID'), }) export const commentSchema = z.object({ threadId: z.string().describe('Unique identifier for the comment thread').title('Thread ID'), commentId: z.string().describe('Unique identifier for the comment reply').title('Comment ID'), type: z.string().describe('The type of comment payload').title('Comment Type'), siteId: z.string().describe('The site unique identifier').title('Site ID'), pageId: z.string().describe('The page unique identifier').title('Page ID'), localeId: z.string().describe('The locale unique identifier').title('Locale ID'), breakpoint: z.string().describe('The breakpoint the comment was left on').title('Breakpoint'), url: z.string().describe('The URL of the page the comment was left on').title('Comment URL'), content: z.string().describe('The content of the comment reply').title('Comment Content'), isResolved: z.boolean().describe('Boolean determining if the comment thread is resolved').title('Is Resolved'), author: z .object({ userId: z.string().describe('The unique identifier of the author').title('Author ID'), email: z.string().describe('Email of the author').title('Author Email'), name: z.string().describe('Name of the author').title('Author Name'), }) .describe('Information about the author of the comment') .title('Author'), mentionedUsers: z .array( z.object({ userId: z.string().describe('The unique identifier of the mentioned user').title('Mentioned User ID'), email: z.string().describe('Email of the user').title('Mentioned User Email'), name: z.string().describe('Name of the user').title('Mentioned User Name'), }) ) .describe( 'List of mentioned users. This is an empty array until email notifications are sent, which can take up to 5 minutes after the comment is created.' ) .title('Mentioned Users'), createdOn: z.string().describe('The date the item was created').title('Created On'), lastUpdated: z.string().describe('The date the item was last updated').title('Last Updated'), })