import { NodeConnectionTypes, type IExecuteFunctions, type INodeExecutionData, type INodeType, type INodeTypeDescription, } from 'n8n-workflow'; import { filesOperations, filesParameters, genieOperations, genieParameters, unityCatalogOperations, unityCatalogParameters, databricksSqlOperations, databricksSqlParameters, modelServingOperations, modelServingParameters, vectorSearchOperations, vectorSearchParameters, } from './resources'; import { router } from './actions/router'; import * as listSearch from './methods/listSearch'; export class Databricks implements INodeType { description: INodeTypeDescription = { displayName: 'Databricks', name: 'databricks', icon: 'file:databricks.svg', group: ['transform'], version: 1, usableAsTool: true, subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', description: 'Interact with Databricks API', documentationUrl: 'https://docs.databricks.com/aws/en', defaults: { name: 'Databricks', }, inputs: [NodeConnectionTypes.Main], outputs: [NodeConnectionTypes.Main], credentials: [ { name: 'databricksApi', required: true, displayOptions: { show: { authentication: ['accessToken'], }, }, }, { name: 'databricksOAuth2Api', required: true, displayOptions: { show: { authentication: ['oAuth2'], }, }, }, ], properties: [ { displayName: 'Authentication', name: 'authentication', type: 'options', options: [ { name: 'Access Token', value: 'accessToken', }, { name: 'OAuth2', value: 'oAuth2', }, ], default: 'accessToken', }, { displayName: 'Resource', name: 'resource', type: 'options', noDataExpression: true, options: [ { name: 'Databricks SQL', value: 'databricksSql', description: 'Execute SQL queries on data warehouses. Learn more.', }, { name: 'File', value: 'files', description: 'Manage files in Unity Catalog volumes. Learn more.', }, { name: 'Genie', value: 'genie', description: 'AI-powered data assistant. Learn more.', }, { name: 'Model Serving', value: 'modelServing', description: 'Deploy and query ML models. Learn more.', }, { name: 'Unity Catalog', value: 'unityCatalog', description: 'Unified governance for data and AI. Learn more.', }, { name: 'Vector Search', value: 'vectorSearch', description: 'Semantic search with vector embeddings. Learn more.', }, ], default: 'databricksSql', }, filesOperations, genieOperations, unityCatalogOperations, databricksSqlOperations, modelServingOperations, vectorSearchOperations, ...filesParameters, ...genieParameters, ...unityCatalogParameters, ...databricksSqlParameters, ...modelServingParameters, ...vectorSearchParameters, ], }; methods = { listSearch }; async execute(this: IExecuteFunctions): Promise { return await router.call(this); } }