import {z} from 'zod' export type DestinationConnectorType = 'unstructured_blob_storage' | 'astradb' | 'chroma' | 'couchbase' | 'databricks_volumes' | 'databricks_volume_delta_tables' | 'delta_table' | 'dropbox' | 'elasticsearch' | 'kafka-cloud' | 'kdbai' | 'local' | 'milvus' | 'mongodb' | 'motherduck' | 'neo4j' | 'onedrive' | 'pinecone' | 'postgres' | 'redis' | 'qdrant-cloud' | 'sftp' | 'singlestore' | 'snowflake' | 'teradata' | 'vastdb' | 'weaviate-cloud' | 'ibm_watsonx_s3' | 's3' | 'azure' | 'gcs'; export type GetApiApiV1DestinationsArgs = {destination_type?: (DestinationConnectorType | null) | undefined, 'unstructured-api-key'?: (string | null) | undefined}; export type GetApiApiV1DestinationsOptions = {baseUrl: string, fetch?: typeof fetch | undefined}; export const destinationConnectorType = z.enum(["unstructured_blob_storage", "astradb", "chroma", "couchbase", "databricks_volumes", "databricks_volume_delta_tables", "delta_table", "dropbox", "elasticsearch", "kafka-cloud", "kdbai", "local", "milvus", "mongodb", "motherduck", "neo4j", "onedrive", "pinecone", "postgres", "redis", "qdrant-cloud", "sftp", "singlestore", "snowflake", "teradata", "vastdb", "weaviate-cloud", "ibm_watsonx_s3", "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 couchbaseDestinationConnectorConfig = 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()}).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 databricksVDTDestinationConnectorConfig = z.object({server_hostname: z.string(), http_path: z.string(), token: z.string().nullable().optional(), client_id: z.string().nullable().optional(), client_secret: z.string().nullable().optional(), catalog: z.string(), database: z.string().optional(), table_name: z.string().nullable().optional(), schema: z.string().optional(), volume: z.string(), volume_path: z.string().nullable().optional()}).and(z.record(z.string(), z.unknown())); export const deltaTableConnectorConfig = z.object({aws_access_key_id: z.string(), aws_secret_access_key: z.string(), aws_region: z.string(), table_uri: z.string()}).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 kafkaCloudDestinationConnectorConfig = 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(), batch_size: z.number().int()}).and(z.record(z.string(), z.unknown())); export const milvusDestinationConnectorConfig = z.object({uri: z.string(), user: z.string().nullable().optional(), token: z.string().nullable().optional(), password: z.string().nullable().optional(), db_name: z.string().nullable().optional(), collection_name: z.string(), record_id_key: z.string()}).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 neo4jDestinationConnectorConfig = z.object({uri: z.string(), database: z.string(), username: z.string(), password: z.string(), batch_size: z.number().int()}).and(z.record(z.string(), z.unknown())); export const oneDriveDestinationConnectorConfig = 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(), remote_url: z.string()}).and(z.record(z.string(), z.unknown())); export const pineconeDestinationConnectorConfig = z.object({index_name: z.string(), api_key: z.string(), namespace: z.string(), batch_size: z.number().int()}).and(z.record(z.string(), z.unknown())); export const postgresDestinationConnectorConfig = 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()}).and(z.record(z.string(), z.unknown())); export const redisDestinationConnectorConfig = z.object({host: z.string(), port: z.number().int(), username: z.string().nullable().optional(), password: z.string().nullable().optional(), uri: z.string().nullable().optional(), database: z.number().int(), ssl: z.boolean(), batch_size: z.number().int()}).and(z.record(z.string(), z.unknown())); export const qdrantCloudDestinationConnectorConfig = z.object({url: z.string(), api_key: z.string(), collection_name: z.string(), batch_size: z.number().int()}).and(z.record(z.string(), z.unknown())); export const snowflakeDestinationConnectorConfig = 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().optional(), batch_size: z.number().int().gte(1).optional(), record_id_key: z.string().nullable().optional()}).and(z.record(z.string(), z.unknown())); export const teradataDestinationConnectorConfig = 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(), table_name: z.string().optional(), batch_size: z.number().int().gte(1).optional(), record_id_key: z.string().nullable().optional()}).and(z.record(z.string(), z.unknown())); export const weaviateDestinationConnectorConfig = z.object({cluster_url: z.string(), api_key: z.string(), collection: z.string().nullable().optional()}).and(z.record(z.string(), z.unknown())); export const iBMWatsonxS3DestinationConnectorConfig = z.object({iam_api_key: z.string(), access_key_id: z.string(), secret_access_key: z.string(), iceberg_endpoint: z.string(), object_storage_endpoint: z.string(), object_storage_region: z.string(), catalog: z.string(), account_id: z.string().nullable().optional(), max_retries_connection: z.number().int(), namespace: z.string(), table: z.string(), max_retries: z.number().int(), record_id_key: z.string()}).and(z.record(z.string(), z.unknown())); export const s3DestinationConnectorConfig = 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()}).and(z.record(z.string(), z.unknown())); export const azureDestinationConnectorConfig = 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()}).and(z.record(z.string(), z.unknown())); export const destinationConnectorInformation = z.object({id: z.string(), name: z.string(), type: z.union([destinationConnectorType, z.string()]), config: z.union([astraDBConnectorConfig, couchbaseDestinationConnectorConfig, databricksVolumesConnectorConfig, databricksVDTDestinationConnectorConfig, deltaTableConnectorConfig, elasticsearchConnectorConfig, kafkaCloudDestinationConnectorConfig, milvusDestinationConnectorConfig, mongoDBConnectorConfig, neo4jDestinationConnectorConfig, oneDriveDestinationConnectorConfig, pineconeDestinationConnectorConfig, postgresDestinationConnectorConfig, redisDestinationConnectorConfig, qdrantCloudDestinationConnectorConfig, snowflakeDestinationConnectorConfig, teradataDestinationConnectorConfig, weaviateDestinationConnectorConfig, iBMWatsonxS3DestinationConnectorConfig, s3DestinationConnectorConfig, azureDestinationConnectorConfig, z.record(z.string(), z.unknown())]), created_at: z.string(), updated_at: z.string().nullable().optional(), key: z.string().nullable().optional()}); export const getApiApiV1DestinationsResponse = z.array(destinationConnectorInformation); 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 }; /** * List destination connectors * * GET /api/v1/destinations/ */ export const getApiApiV1Destinations = async (args: GetApiApiV1DestinationsArgs, options: GetApiApiV1DestinationsOptions) => { const {baseUrl, fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (args.destination_type != null) query.append("destination_type", String(args.destination_type)) if (args['unstructured-api-key'] != null) headers.set("unstructured-api-key", String(args['unstructured-api-key'])) const url = `${baseUrl.replace(/\/+$/, '')}/api/v1/destinations/${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(getApiApiV1DestinationsResponse, await res.json()) };