import {z} from 'zod' export type AstraDBConnectorConfigInput = {collection_name: string, keyspace?: (string | null) | undefined, batch_size?: number | undefined, binary_encode_vectors?: boolean | undefined, api_endpoint: string, token: string, flatten_metadata?: boolean | undefined} | {[key: string]: unknown}; export type ConfluenceSourceConnectorConfigInput = {url: string, username?: (string | null) | undefined, cloud_id?: (string | null) | undefined, password?: (string | null) | undefined, api_token?: (string | null) | undefined, token?: (string | null) | undefined, oauth_token?: (string | null) | undefined, refresh_token?: (string | null) | undefined, cloud?: boolean | undefined, extract_images?: boolean | undefined, extract_files?: boolean | undefined, include_attachments?: boolean | undefined, max_num_of_spaces?: number | undefined, max_num_of_docs_from_each_space?: number | undefined, spaces?: (Array | null) | undefined} | {[key: string]: unknown}; export type CouchbaseSourceConnectorConfigInput = {bucket: string, connection_string: string, scope?: (string | null) | undefined, collection?: (string | null) | undefined, batch_size: number, username: string, password: string, collection_id: string} | {[key: string]: unknown}; export type DatabricksVolumesConnectorConfigInput = {host: string, catalog: string, schema?: string | undefined, volume: string, volume_path: string, token?: (string | null) | undefined, client_id?: (string | null) | undefined, client_secret?: (string | null) | undefined} | {[key: string]: unknown}; export type DropboxSourceConnectorConfigInput = {token: string, refresh_token?: (string | null) | undefined, remote_url: string, recursive?: boolean | undefined} | {[key: string]: unknown}; export type ElasticsearchConnectorConfigInput = {hosts: Array, index_name: string, es_api_key: string} | {[key: string]: unknown}; export type EncryptionType = 'rsa' | 'rsa_aes' | 'runtime_config'; export type SecretReference = {id: string, type?: EncryptionType | undefined}; export type GoogleDriveSourceConnectorConfigInput = {drive_id: string, service_account_key?: (SecretReference | string | null) | undefined, oauth_token?: (SecretReference | string | null) | undefined, refresh_token?: (string | null) | undefined, extensions?: (Array | null) | undefined, recursive?: boolean | undefined} | {[key: string]: unknown}; export type KafkaCloudSourceConnectorConfigInput = {bootstrap_servers: string, port?: number | undefined, group_id?: (string | null) | undefined, topic: string, kafka_api_key: string, secret: string, num_messages_to_consume?: number | undefined} | {[key: string]: unknown}; export type MongoDBConnectorConfigInput = {database: string, collection: string, uri: string} | {[key: string]: unknown}; export type OneDriveSourceConnectorConfigInput = {client_id?: (string | null) | undefined, user_pname: string, tenant: string, authority_url?: string | undefined, client_cred?: (string | null) | undefined, oauth_token?: (string | null) | undefined, refresh_token?: (string | null) | undefined, recursive?: boolean | undefined, path: string} | {[key: string]: unknown}; export type OutlookSourceConnectorConfigInput = {authority_url?: string | undefined, tenant?: (string | null) | undefined, client_id?: (string | null) | undefined, client_cred?: (string | null) | undefined, oauth_token?: (string | null) | undefined, refresh_token?: (string | null) | undefined, outlook_folders?: (Array | null) | undefined, recursive?: boolean | undefined, user_email: string} | {[key: string]: unknown}; export type PostgresSourceConnectorConfigInput = {host: string, database: string, port: number, username: string, password: string, table_name: string, batch_size: number, id_column?: string | undefined, fields?: (Array | null) | undefined} | {[key: string]: unknown}; export type SalesforceSourceConnectorConfigInput = {username: string, consumer_key: string, private_key: string, categories: Array} | {[key: string]: unknown}; export type SharePointSourceConnectorConfigInput = {site?: (string | null) | undefined, tenant: string, authority_url?: string | undefined, user_pname?: (string | null) | undefined, client_id?: (string | null) | undefined, client_cred?: (string | null) | undefined, oauth_token?: (string | null) | undefined, refresh_token?: (string | null) | undefined, recursive?: boolean | undefined, path?: (string | null) | undefined, team_id?: (string | null) | undefined, channels?: (Array | null) | undefined} | {[key: string]: unknown}; export type SlackSourceConnectorConfigInput = {token: string, refresh_token?: (string | null) | undefined, channels: Array, start_date?: (string | null) | undefined, end_date?: (string | null) | undefined} | {[key: string]: unknown}; export type SnowflakeSourceConnectorConfigInput = {account: string, role: string, user: string, password: string, host: string, port?: number | undefined, database: string, schema: string, table_name: string, batch_size?: number | undefined, id_column: string, fields?: (Array | null) | undefined} | {[key: string]: unknown}; export type TeradataSourceConnectorConfigInput = {host: string, user?: (string | null) | undefined, password?: (string | null) | undefined, database?: (string | null) | undefined, dbs_port?: number | undefined, use_signed_in_user?: (boolean | null) | undefined, id_column?: string | undefined, table_name: string, batch_size?: number | undefined, fields?: (Array | null) | undefined} | {[key: string]: unknown}; export type JiraSourceConnectorConfigInput = {url: string, username?: (string | null) | undefined, cloud_id?: (string | null) | undefined, password?: (string | null) | undefined, token?: (string | null) | undefined, oauth_token?: (string | null) | undefined, refresh_token?: (string | null) | undefined, cloud?: (boolean | null) | undefined, projects?: (Array | null) | undefined, boards?: (Array | null) | undefined, issues?: (Array | null) | undefined, status_filters?: (Array | null) | undefined, download_attachments?: (boolean | null) | undefined} | {[key: string]: unknown}; export type ZendeskSourceConnectorConfigInput = {subdomain: string, email: string, api_token: string, item_type?: (string | null) | undefined, batch_size?: (number | null) | undefined} | {[key: string]: unknown}; export type S3SourceConnectorConfigInput = {remote_url: string, anonymous?: boolean | undefined, ambient_credentials?: boolean | undefined, key?: (string | null) | undefined, secret?: (string | null) | undefined, token?: (string | null) | undefined, endpoint_url?: (string | null) | undefined, role_arn?: (string | null) | undefined, external_id?: (string | null) | undefined, recursive?: boolean | undefined} | {[key: string]: unknown}; export type AzureSourceConnectorConfigInput = {remote_url: string, account_name?: (string | null) | undefined, account_key?: (string | null) | undefined, connection_string?: (string | null) | undefined, sas_token?: (string | null) | undefined, recursive?: boolean | undefined} | {[key: string]: unknown}; export type GCSSourceConnectorConfigInput = {remote_url: string, service_account_key?: (SecretReference | string | null) | undefined, recursive?: boolean | undefined, oauth_token?: (string | null) | undefined, refresh_token?: (string | null) | undefined, oauth_client_id?: (string | null) | undefined, oauth_client_secret?: (string | null) | undefined} | {[key: string]: unknown}; export type UpdateSourceConnector = {name?: (string | null) | undefined, key?: (string | null) | undefined, config: AstraDBConnectorConfigInput | ConfluenceSourceConnectorConfigInput | CouchbaseSourceConnectorConfigInput | DatabricksVolumesConnectorConfigInput | DropboxSourceConnectorConfigInput | ElasticsearchConnectorConfigInput | GoogleDriveSourceConnectorConfigInput | KafkaCloudSourceConnectorConfigInput | MongoDBConnectorConfigInput | OneDriveSourceConnectorConfigInput | OutlookSourceConnectorConfigInput | PostgresSourceConnectorConfigInput | SalesforceSourceConnectorConfigInput | SharePointSourceConnectorConfigInput | SlackSourceConnectorConfigInput | SnowflakeSourceConnectorConfigInput | TeradataSourceConnectorConfigInput | JiraSourceConnectorConfigInput | ZendeskSourceConnectorConfigInput | S3SourceConnectorConfigInput | AzureSourceConnectorConfigInput | GCSSourceConnectorConfigInput | {[key: string]: unknown}}; export type UpdateApiApiV1SourcesSourceIdArgs = {source_id: string | string, 'unstructured-api-key'?: (string | null) | undefined, body: UpdateSourceConnector}; export type UpdateApiApiV1SourcesSourceIdOptions = {baseUrl: string, fetch?: typeof fetch | undefined}; export const sourceConnectorType = z.enum(["airtable", "astradb", "confluence", "couchbase", "databricks_volumes", "dropbox", "elasticsearch", "github", "gitlab", "google_drive", "kafka-cloud", "local", "mongodb", "onedrive", "outlook", "postgres", "salesforce", "sftp", "sharepoint", "slack", "snowflake", "teradata", "vastdb", "jira", "zendesk", "s3", "azure", "gcs"]); export const astraDBConnectorConfig = z.object({collection_name: z.string(), keyspace: z.string().nullable().optional(), batch_size: z.number().int(), binary_encode_vectors: z.boolean().optional(), api_endpoint: z.string(), token: z.string()}).and(z.record(z.string(), z.unknown())); export const confluenceSourceConnectorConfig = z.object({url: z.string(), username: z.string().nullable().optional(), cloud_id: z.string().nullable().optional(), password: z.string().nullable().optional(), api_token: z.string().nullable().optional(), token: z.string().nullable().optional(), oauth_token: z.string().nullable().optional(), refresh_token: z.string().nullable().optional(), cloud: z.boolean(), extract_images: z.boolean().optional(), extract_files: z.boolean().optional(), include_attachments: z.boolean().optional(), max_num_of_spaces: z.number().int(), max_num_of_docs_from_each_space: z.number().int(), spaces: z.array(z.string()).nullable()}).and(z.record(z.string(), z.unknown())); export const couchbaseSourceConnectorConfig = z.object({bucket: z.string(), connection_string: z.string(), scope: z.string().nullable().optional(), collection: z.string().nullable().optional(), batch_size: z.number().int(), username: z.string(), password: z.string(), collection_id: z.string()}).and(z.record(z.string(), z.unknown())); export const databricksVolumesConnectorConfig = z.object({host: z.string(), catalog: z.string(), schema: z.string().optional(), volume: z.string(), volume_path: z.string(), token: z.string().nullable().optional(), client_id: z.string().nullable().optional(), client_secret: z.string().nullable().optional()}).and(z.record(z.string(), z.unknown())); export const dropboxSourceConnectorConfig = z.object({token: z.string(), refresh_token: z.string().nullable().optional(), remote_url: z.string(), recursive: z.boolean()}).and(z.record(z.string(), z.unknown())); export const elasticsearchConnectorConfig = z.object({hosts: z.array(z.string()), index_name: z.string(), es_api_key: z.string()}).and(z.record(z.string(), z.unknown())); export const encryptionType = z.enum(["rsa", "rsa_aes", "runtime_config"]); export const secretReference = z.object({id: z.string(), type: encryptionType.optional()}); export const googleDriveSourceConnectorConfig = z.object({drive_id: z.string(), service_account_key: z.union([secretReference, z.string()]).nullable().optional(), oauth_token: z.union([secretReference, z.string()]).nullable().optional(), refresh_token: z.string().nullable().optional(), extensions: z.array(z.string()).nullable().optional(), recursive: z.boolean()}).and(z.record(z.string(), z.unknown())); export const kafkaCloudSourceConnectorConfig = z.object({bootstrap_servers: z.string(), port: z.number().int(), group_id: z.string().nullable().optional(), topic: z.string(), kafka_api_key: z.string(), secret: z.string(), num_messages_to_consume: z.number().int()}).and(z.record(z.string(), z.unknown())); export const mongoDBConnectorConfig = z.object({database: z.string(), collection: z.string(), uri: z.string()}).and(z.record(z.string(), z.unknown())); export const oneDriveSourceConnectorConfig = z.object({client_id: z.string().nullable().optional(), user_pname: z.string(), tenant: z.string(), authority_url: z.string().optional(), client_cred: z.string().nullable().optional(), oauth_token: z.string().nullable().optional(), refresh_token: z.string().nullable().optional(), recursive: z.boolean(), path: z.string()}).and(z.record(z.string(), z.unknown())); export const outlookSourceConnectorConfig = z.object({authority_url: z.string().optional(), tenant: z.string().nullable().optional(), client_id: z.string().nullable().optional(), client_cred: z.string().nullable().optional(), oauth_token: z.string().nullable().optional(), refresh_token: z.string().nullable().optional(), outlook_folders: z.array(z.string()).nullable().optional(), recursive: z.boolean(), user_email: z.string()}).and(z.record(z.string(), z.unknown())); export const postgresSourceConnectorConfig = z.object({host: z.string(), database: z.string(), port: z.number().int(), username: z.string(), password: z.string(), table_name: z.string(), batch_size: z.number().int(), id_column: z.string(), fields: z.array(z.string()).nullable().optional()}).and(z.record(z.string(), z.unknown())); export const salesforceSourceConnectorConfig = z.object({username: z.string(), consumer_key: z.string(), private_key: z.string(), categories: z.array(z.string())}).and(z.record(z.string(), z.unknown())); export const sharePointSourceConnectorConfig = z.object({site: z.string().nullable().optional(), tenant: z.string(), authority_url: z.string().optional(), user_pname: z.string().nullable().optional(), client_id: z.string().nullable().optional(), client_cred: z.string().nullable().optional(), oauth_token: z.string().nullable().optional(), refresh_token: z.string().nullable().optional(), recursive: z.boolean(), path: z.string().nullable().optional(), team_id: z.string().nullable().optional(), channels: z.array(z.string()).nullable().optional()}).and(z.record(z.string(), z.unknown())); export const slackSourceConnectorConfig = z.object({token: z.string(), refresh_token: z.string().nullable().optional(), channels: z.array(z.string()), start_date: z.string().nullable().optional(), end_date: z.string().nullable().optional()}).and(z.record(z.string(), z.unknown())); export const snowflakeSourceConnectorConfig = z.object({account: z.string(), role: z.string(), user: z.string(), password: z.string(), host: z.string(), port: z.number().int().gte(1).optional(), database: z.string(), schema: z.string(), table_name: z.string(), batch_size: z.number().int().gte(1).optional(), id_column: z.string(), fields: z.array(z.string()).nullable().optional()}).and(z.record(z.string(), z.unknown())); export const teradataSourceConnectorConfig = z.object({host: z.string(), user: z.string().nullable().optional(), password: z.string().nullable().optional(), database: z.string().nullable().optional(), dbs_port: z.number().int().gte(1).optional(), use_signed_in_user: z.boolean().nullable().optional(), id_column: z.string().optional(), table_name: z.string(), batch_size: z.number().int().gte(1).optional(), fields: z.array(z.string()).nullable().optional()}).and(z.record(z.string(), z.unknown())); export const jiraSourceConnectorConfig = z.object({url: z.string(), username: z.string().nullable().optional(), cloud_id: z.string().nullable().optional(), password: z.string().nullable().optional(), token: z.string().nullable().optional(), oauth_token: z.string().nullable().optional(), refresh_token: z.string().nullable().optional(), cloud: z.boolean().nullable().optional(), projects: z.array(z.string()).nullable().optional(), boards: z.array(z.string()).nullable().optional(), issues: z.array(z.string()).nullable().optional(), status_filters: z.array(z.string()).nullable().optional(), download_attachments: z.boolean().nullable().optional()}).and(z.record(z.string(), z.unknown())); export const zendeskSourceConnectorConfig = z.object({subdomain: z.string(), email: z.string(), api_token: z.string(), item_type: z.string().nullable().optional(), batch_size: z.number().int().nullable().optional()}).and(z.record(z.string(), z.unknown())); export const s3SourceConnectorConfig = z.object({remote_url: z.string(), anonymous: z.boolean(), ambient_credentials: z.boolean().nullable().optional(), key: z.string().nullable().optional(), secret: z.string().nullable().optional(), token: z.string().nullable().optional(), endpoint_url: z.string().nullable().optional(), role_arn: z.string().nullable().optional(), external_id: z.string().nullable().optional(), recursive: z.boolean()}).and(z.record(z.string(), z.unknown())); export const azureSourceConnectorConfig = z.object({remote_url: z.string(), account_name: z.string().nullable().optional(), account_key: z.string().nullable().optional(), connection_string: z.string().nullable().optional(), sas_token: z.string().nullable().optional(), recursive: z.boolean()}).and(z.record(z.string(), z.unknown())); export const gCSSourceConnectorConfig = z.object({remote_url: z.string(), service_account_key: z.union([secretReference, z.string()]).nullable().optional(), recursive: z.boolean(), oauth_token: z.string().nullable().optional(), refresh_token: z.string().nullable().optional(), oauth_client_id: z.string().nullable().optional(), oauth_client_secret: z.string().nullable().optional()}).and(z.record(z.string(), z.unknown())); export const sourceConnectorInformation = z.object({id: z.string(), name: z.string(), type: z.union([sourceConnectorType, z.string()]), config: z.union([astraDBConnectorConfig, confluenceSourceConnectorConfig, couchbaseSourceConnectorConfig, databricksVolumesConnectorConfig, dropboxSourceConnectorConfig, elasticsearchConnectorConfig, googleDriveSourceConnectorConfig, kafkaCloudSourceConnectorConfig, mongoDBConnectorConfig, oneDriveSourceConnectorConfig, outlookSourceConnectorConfig, postgresSourceConnectorConfig, salesforceSourceConnectorConfig, sharePointSourceConnectorConfig, slackSourceConnectorConfig, snowflakeSourceConnectorConfig, teradataSourceConnectorConfig, jiraSourceConnectorConfig, zendeskSourceConnectorConfig, s3SourceConnectorConfig, azureSourceConnectorConfig, gCSSourceConnectorConfig, z.record(z.string(), z.unknown())]), created_at: z.string(), updated_at: z.string().nullable().optional(), key: z.string().nullable().optional()}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * Update source connector * * PUT /api/v1/sources/{source_id} */ export const updateApiApiV1SourcesSourceId = async (args: UpdateApiApiV1SourcesSourceIdArgs, options: UpdateApiApiV1SourcesSourceIdOptions) => { const {baseUrl, fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "application/json") if (args['unstructured-api-key'] != null) headers.set("unstructured-api-key", String(args['unstructured-api-key'])) const url = `${baseUrl.replace(/\/+$/, '')}/api/v1/sources/${encodeURIComponent(String(args.source_id))}${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "PUT", headers, body: JSON.stringify(args.body)}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(sourceConnectorInformation, await res.json()) };