Files
2026-07-13 13:34:48 +08:00

84 lines
2.6 KiB
TypeScript

import { posthogHelper } from '@botpress/common'
import { IntegrationDefinition, z } from '@botpress/sdk'
import { actions, events, subdomain } from './definitions'
export const INTEGRATION_NAME = 'bamboohr'
export const INTEGRATION_VERSION = '2.1.3'
export default new IntegrationDefinition({
name: INTEGRATION_NAME,
version: INTEGRATION_VERSION,
title: 'BambooHR',
description: 'Retrieve your BambooHR information',
readme: 'hub.md',
icon: 'icon.svg',
configuration: {
identifier: {
linkTemplateScript: 'linkTemplate.vrl',
required: true,
},
schema: z.object({}),
},
configurations: {
manual: {
title: 'Manual configuration',
description: 'Configure manually with your BambooHR API Key',
schema: z.object({
apiKey: z.string().min(1).title('API Key').describe('Your BambooHR API Key, from My Account > Api Keys'),
subdomain,
}),
},
},
actions,
events,
secrets: {
OAUTH_CLIENT_SECRET: {
description: 'The OAuth Client Secret provided by BambooHR from the developer portal.',
},
OAUTH_CLIENT_ID: {
description: 'The OAuth Client ID provided by BambooHR from the developer portal.',
},
...posthogHelper.COMMON_SECRET_NAMES,
},
states: {
oauth: {
type: 'integration',
schema: z
.object({
domain: z.string().title('Domain').describe('The domain of the company.'),
accessToken: z.string().title('Temporary Access Token').describe('Temporary access token for the API.'),
refreshToken: z.string().title('Refresh Token').describe('Token used to refresh the access token.'),
expiresAt: z
.number()
.title('Expiration Timestamp')
.describe('Timestamp (in ms from epoch) at which the token expires.'),
scopes: z.string().title('Scopes').describe('Scopes for the token (space-separated).'),
})
.title('OAuth Parameters')
.describe('Parameters required to authenticate via OAuth. Not required if using API Key.'),
},
webhook: {
type: 'integration',
schema: z.object({
privateKey: z
.string()
.nullable()
.title('Private Key')
.describe('The private key provided by BambooHR to validate the webhook.'),
id: z
.string()
.nullable()
.title('Webhook ID')
.describe('The ID of the webhook as provided by BambooHR when the webhook was created.'),
}),
},
},
attributes: {
category: 'Business Operations',
guideSlug: 'bamboohr',
repo: 'botpress',
},
})