54 lines
1.9 KiB
TypeScript
54 lines
1.9 KiB
TypeScript
import { z, IntegrationDefinitionProps } from '@botpress/sdk'
|
|
import { userProfileSchema } from './schemas'
|
|
|
|
const oauthCredentialsSchema = z.object({
|
|
accessToken: z.string().title('Access Token').describe('The access token for Linear'),
|
|
refreshToken: z.string().title('Refresh Token').describe('The refresh token needed when the access token expires'),
|
|
expiresAt: z.string().title('Expires At').describe('The time when the access token expires'),
|
|
})
|
|
|
|
export const states = {
|
|
credentials: {
|
|
type: 'integration',
|
|
schema: oauthCredentialsSchema,
|
|
},
|
|
adminCredentials: {
|
|
type: 'integration',
|
|
schema: oauthCredentialsSchema.describe(
|
|
'User-actor OAuth credentials used only for admin operations (webhook register/unregister)'
|
|
),
|
|
},
|
|
environment: {
|
|
type: 'integration',
|
|
schema: z.object({
|
|
env: z
|
|
.enum(['preview', 'production'])
|
|
.title('Environment')
|
|
.describe('The environment where the integration is installed'),
|
|
source: z.string().optional().title('Source').describe('The source of the OAuth request, eg: "desk"'),
|
|
wizardPhase: z
|
|
.enum(['admin', 'app'])
|
|
.optional()
|
|
.title('Wizard Phase')
|
|
.describe('Which leg of the two-phase OAuth wizard is currently expected on /oauth callback'),
|
|
runtimeActor: z
|
|
.enum(['user', 'app'])
|
|
.optional()
|
|
.title('Runtime Actor')
|
|
.describe('Which Linear OAuth actor type was used for the runtime credentials'),
|
|
}),
|
|
},
|
|
|
|
// TODO: delete these 2 states when the backend stop considering state deletion as breaking change
|
|
configuration: {
|
|
type: 'integration',
|
|
schema: z.object({
|
|
botUserId: z.string().optional().title('Bot User ID').describe('The ID of the bot user'),
|
|
}),
|
|
},
|
|
profile: {
|
|
type: 'user',
|
|
schema: userProfileSchema,
|
|
},
|
|
} satisfies IntegrationDefinitionProps['states']
|