Files
botpress--botpress/packages/chat-api/src/operations/user.ts
T
2026-07-13 13:34:48 +08:00

114 lines
2.9 KiB
TypeScript

import { schema } from '@bpinternal/opapi'
import z from 'zod'
import { userIdSchema } from '../models/user'
import { authHeaders } from './auth'
import { OperationFunc } from './types'
const section = 'user' as const
const userInput = schema(
z.object({
name: schema(z.string().optional(), {
description: 'Name of the [User](#schema_user) (not a unique identifier)',
}),
pictureUrl: schema(z.string().optional(), {
description: 'Picture url of the [User](#schema_user)',
}),
profile: schema(z.string().max(1000).optional(), {
description: 'Custom profile data of the [User](#schema_user) encoded as a string',
}),
})
)
export const getUserOperation: OperationFunc = (api) => ({
name: 'getUser',
description: 'Retrieves the [User](#schema_user) object for a valid identifier.',
method: 'get',
path: '/users/me',
parameters: authHeaders,
section,
response: {
description: 'Returns a [User](#schema_user) object if a valid identifier was provided',
schema: schema(
z.object({
user: api.getModelRef('User'),
})
),
},
})
export const createUserOperation: OperationFunc = (api) => ({
name: 'createUser',
description: "Creates a new [User](#schema_user). This operation can't be called when using manual authentication.",
method: 'post',
path: '/users',
requestBody: {
description: 'User data',
schema: userInput.extend({ id: userIdSchema.optional() }),
},
section,
response: {
description: 'Returns a [User](#schema_user)',
status: 201,
schema: z.object({
user: api.getModelRef('User'),
key: z.string(),
}),
},
})
export const getOrCreateUserOperation: OperationFunc = (api) => ({
name: 'getOrCreateUser',
description: 'Get or create a new [User](#schema_user)',
method: 'post',
path: '/users/get-or-create',
requestBody: {
description: 'User data',
schema: userInput,
},
parameters: {
...authHeaders,
},
section,
response: {
description: 'Returns a [User](#schema_user)',
status: 201,
schema: z.object({
user: api.getModelRef('User'),
}),
},
})
export const updateUserOperation: OperationFunc = (api) => ({
name: 'updateUser',
description: 'Update [User](#schema_user)',
method: 'put',
path: '/users/me',
parameters: authHeaders,
requestBody: {
description: 'User data',
schema: userInput,
},
section,
response: {
description: 'Returns a [User](#schema_user)',
status: 200,
schema: z.object({
user: api.getModelRef('User'),
}),
},
})
export const deleteUserOperation: OperationFunc = () => ({
name: 'deleteUser',
description: 'Permanently deletes a [User](#schema_user). It cannot be undone.',
method: 'delete',
path: '/users/me',
parameters: authHeaders,
section,
response: {
description: 'Returns the [User](#schema_user) object that was deleted',
schema: z.object({}),
},
})