53 lines
1.7 KiB
TypeScript
53 lines
1.7 KiB
TypeScript
import { z, IntegrationDefinition } from '@botpress/sdk'
|
|
|
|
export default new IntegrationDefinition({
|
|
name: 'webhook',
|
|
version: '1.1.6',
|
|
title: 'Webhook',
|
|
description: 'Use webhooks to send and receive data from external systems and trigger workflows.',
|
|
icon: 'icon.svg',
|
|
readme: 'hub.md',
|
|
configuration: {
|
|
schema: z.object({
|
|
secret: z
|
|
.string()
|
|
.optional()
|
|
.title('Webhook Header Secret')
|
|
.describe(
|
|
'Secret that must be sent with the request as a header called "x-bp-secret." Leave empty to allow all requests without a secret.'
|
|
),
|
|
allowedOrigins: z
|
|
.array(z.string())
|
|
.optional()
|
|
.title('Allowed Origins')
|
|
.describe(
|
|
'List of allowed origins for CORS. Leaving this field empty will block all requests originating from a browser and only allow requests from a server.'
|
|
),
|
|
}),
|
|
},
|
|
events: {
|
|
event: {
|
|
title: 'Event',
|
|
description: 'The event triggered in the webhook',
|
|
schema: z
|
|
.object({
|
|
body: z.any().describe('The body of the event').title('Body'),
|
|
query: z.record(z.any()).describe('The query of the event').title('Query'),
|
|
path: z.string().describe('The path of the event').title('Path'),
|
|
headers: z
|
|
.record(z.union([z.string(), z.string().array()]))
|
|
.describe('The headers of the event')
|
|
.title('Headers'),
|
|
method: z.enum(['GET', 'POST']).describe('The method of the event').title('Method'),
|
|
})
|
|
.passthrough(),
|
|
},
|
|
},
|
|
|
|
attributes: {
|
|
category: 'Developer Tools',
|
|
guideSlug: 'webhook',
|
|
repo: 'botpress',
|
|
},
|
|
})
|