95 lines
3.4 KiB
TypeScript
95 lines
3.4 KiB
TypeScript
import { z } from '@botpress/sdk'
|
|
import { creatableFieldSchema, fieldValueSchema } from './field-schemas'
|
|
import { tableSchema, recordSchema } from './sub-schemas'
|
|
|
|
export const getTableRecordsInputSchema = z.object({
|
|
tableIdOrName: z
|
|
.string()
|
|
.describe('The ID or Name of the table (e.g. tblFnqcm4zLVKn85A or articles)')
|
|
.title('Table ID or Name'),
|
|
nextToken: z.string().optional().describe('The next page token (Optional)').title('Next Token'),
|
|
})
|
|
|
|
export const getTableRecordsOutputSchema = z.object({
|
|
records: z.array(recordSchema).describe('Array of single record with field and cell values').title('Records'),
|
|
nextToken: z.string().optional().describe('The next page token (Optional)').title('Next Token'),
|
|
})
|
|
|
|
export const listRecordsInputSchema = z.object({
|
|
tableIdOrName: z
|
|
.string()
|
|
.describe('The ID or Name of the table (e.g. tblFnqcm4zLVKn85A or articles)')
|
|
.title('Table ID or Name'),
|
|
nextToken: z.string().optional().describe('The next page token (Optional)').title('Next Token'),
|
|
filterByFormula: z
|
|
.string()
|
|
.optional()
|
|
.describe('filter to apply to the list records (See https://support.airtable.com/docs/formula-field-reference)')
|
|
.title('Filter By Formula'),
|
|
})
|
|
|
|
export const listRecordsOutputSchema = z
|
|
.object({
|
|
records: z.array(recordSchema).describe('Array of single record with field and cell values').title('Records'),
|
|
nextToken: z.string().optional().describe('The next page token (Optional)').title('Next Token'),
|
|
})
|
|
.passthrough()
|
|
|
|
export const createTableInputSchema = z.object({
|
|
name: z.string().describe('Name of the Table (e.g. MyTable)').title('Name'),
|
|
fields: z
|
|
.array(creatableFieldSchema)
|
|
.min(1)
|
|
.describe(
|
|
'The fields to create in the table. Each field requires a name and type, and some types require additional options.'
|
|
)
|
|
.title('Fields'),
|
|
description: z
|
|
.string()
|
|
.optional()
|
|
.describe('Description of the Table (e.g. This is my table) (Optional)')
|
|
.title('Description'),
|
|
})
|
|
|
|
export const createTableOutputSchema = tableSchema.passthrough()
|
|
|
|
export const updateTableInputSchema = z.object({
|
|
tableIdOrName: z
|
|
.string()
|
|
.describe('The ID or Name of the table (e.g. tblFnqcm4zLVKn85A or articles)')
|
|
.title('Table ID or Name'),
|
|
name: z.string().optional().describe('Name of the Table (e.g. MyTable) (Optional)').title('Name'),
|
|
description: z
|
|
.string()
|
|
.optional()
|
|
.describe('Description of the Table (e.g. This is my table) (Optional)')
|
|
.title('Description'),
|
|
})
|
|
|
|
export const updateTableOutputSchema = tableSchema.passthrough()
|
|
|
|
export const createRecordInputSchema = z.object({
|
|
tableIdOrName: z
|
|
.string()
|
|
.describe('The ID or Name of the table (e.g. tblFnqcm4zLVKn85A or articles)')
|
|
.title('Table ID or Name'),
|
|
fields: z.array(fieldValueSchema).min(1).describe('The fields and their values for the new record').title('Fields'),
|
|
})
|
|
|
|
export const createRecordOutputSchema = recordSchema.passthrough()
|
|
|
|
export const updateRecordInputSchema = z.object({
|
|
tableIdOrName: z
|
|
.string()
|
|
.describe('The ID or Name of the table (e.g. tblFnqcm4zLVKn85A or articles)')
|
|
.title('Table ID or Name'),
|
|
recordId: z.string().describe('The ID of the Record to be updated').title('Record ID'),
|
|
fields: z
|
|
.array(fieldValueSchema)
|
|
.min(1)
|
|
.describe('The fields and their values for the record to be updated')
|
|
.title('Fields'),
|
|
})
|
|
|
|
export const updateRecordOutputSchema = recordSchema.passthrough()
|