UNPKG

@kaia-team/n8n-nodes-kaia

Version:
137 lines 4.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.adminApiProperties = void 0; exports.handleAdminApi = handleAdminApi; const utils_1 = require("../utils"); /** * Admin API Properties * Properties specific to the admin API resource */ exports.adminApiProperties = [ { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['admin'], }, }, options: [ { name: 'DELETE', value: 'delete', description: 'Delete data via the API', action: 'Delete data via the API', }, { name: 'GET', value: 'get', description: 'Get data from the API', action: 'Get data from the API', }, { name: 'POST', value: 'post', description: 'Create data via the API', action: 'Create data via the API', }, { name: 'PUT', value: 'put', description: 'Update data via the API', action: 'Update data via the API', }, ], default: 'get', }, { displayName: 'Endpoint', name: 'endpoint', type: 'string', default: '', placeholder: 'assistants', description: 'The API endpoint to call (e.g., assistants, chat_histories, api_configs)', required: true, displayOptions: { show: { resource: ['admin'], }, }, }, // TODO: Add body parameter for POST/PUT operations // TODO: Add additionalFields parameter (shared across APIs) ]; /** * Admin API Handler * Handles requests to the admin API */ async function handleAdminApi(executeFunctions, itemIndex, adminUrl, adminToken) { const operation = executeFunctions.getNodeParameter('operation', itemIndex); const endpoint = executeFunctions.getNodeParameter('endpoint', itemIndex); const additionalFields = executeFunctions.getNodeParameter('additionalFields', itemIndex); const url = `${adminUrl}/${endpoint}`; const headers = (0, utils_1.createHeaders)(adminToken, additionalFields); let qs = undefined; if (additionalFields.queryParameters) { const queryParameters = additionalFields.queryParameters.parameters; if (queryParameters) { qs = {}; for (const param of queryParameters) { qs[param.name] = param.value; } } } let body = undefined; if (['POST', 'PUT', 'PATCH'].includes(operation.toUpperCase())) { body = executeFunctions.getNodeParameter('body', itemIndex, {}); } // For widgets create/update, build specific body if (executeFunctions.getNodeParameter('resource', itemIndex) === 'widgets' && ['create', 'update'].includes(operation)) { const widgetBody = { widget_config: {} }; // Collect parameters const params = [ 'name', 'question_timeline', 'voice', 'initial_status', 'available_assistants', 'assistant_id', 'theme', 'theme_color' /* add all others */, ]; for (const param of params) { widgetBody.widget_config[param] = executeFunctions.getNodeParameter(param, itemIndex, ''); } // Handle available_assistants as array if (widgetBody.widget_config.available_assistants) { widgetBody.widget_config.available_assistants = widgetBody.widget_config.available_assistants .split(',') .map(s => s.trim()); } // Handle vec_db_ids const vecDbIds = executeFunctions.getNodeParameter('vec_db_ids.vecDbItems', itemIndex, []); widgetBody.widget_config.vec_db_ids = vecDbIds.map(item => ({ id: item.id, weight: item.weight, })); // Handle files - for now, assume string; later add form-data if needed widgetBody.widget_config.icon = executeFunctions.getNodeParameter('icon', itemIndex, ''); widgetBody.widget_config.remove_icon = executeFunctions.getNodeParameter('remove_icon', itemIndex, false) ? 1 : 0; // Similarly for other files // TODO: If files are actual uploads, switch to FormData and multipart body = widgetBody; } const response = await executeFunctions.helpers.httpRequest({ method: operation.toUpperCase(), url, headers, ...(qs ? { qs } : {}), ...(body ? { body } : {}), }); return response; } //# sourceMappingURL=adminApi.js.map