UNPKG

n8n-nodes-scalefluidly

Version:
392 lines 18.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ScaleFluidly = void 0; const n8n_workflow_1 = require("n8n-workflow"); const quote_actions_1 = require("./quote-actions"); const configure_actions_1 = require("./configure-actions"); const pricing_actions_1 = require("./pricing-actions"); const intent_url_map_1 = require("./intent-url-map"); const admin_actions_1 = require("./admin-actions"); class ScaleFluidly { constructor() { this.description = { displayName: 'ScaleFluidly', name: 'scaleFluidly', usableAsTool: true, icon: 'file:ScaleFluidly.svg', group: ['transform'], version: 1, subtitle: '={{ $parameter["operation"] + ": " + $parameter["resource"] }}', description: 'Consume ScaleFluidly API', defaults: { name: 'ScaleFluidly', }, credentials: [ { name: 'scaleFluidlyApi', required: false, }, ], inputs: ["main"], outputs: ["main"], properties: [ { displayName: 'Environment', name: 'environment', type: 'options', options: [ { name: 'Dev', value: 'https://documentation-dev.scalefluidly.com', }, { name: 'QA', value: 'https://documentation.scalefluidly.com', }, { name: 'Local', value: 'http://localhost:8400', } ], default: 'Dev', noDataExpression: true, required: true, description: 'Environment Type', }, { displayName: 'Resource', name: 'resource', type: 'options', options: [ { name: 'Admin', value: 'admin', }, { name: 'Configure', value: 'configure', }, { name: 'MCP', value: 'mcp', }, { name: 'Pricing', value: 'pricing', }, { name: 'Quote', value: 'quote', } ], default: 'quote', noDataExpression: true, required: true, description: 'Create a new quote', }, { displayName: 'Operation', name: 'operation', type: 'options', displayOptions: { show: { resource: [ 'admin', ], }, }, options: admin_actions_1.adminActions, default: "get_all_users", noDataExpression: true, required: true, }, { displayName: 'Operation', name: 'operation', type: 'options', displayOptions: { show: { resource: [ 'quote', ], }, }, options: quote_actions_1.quoteActions, default: "get_user_room", noDataExpression: true, required: true, }, { displayName: 'Operation', name: 'operation', type: 'options', displayOptions: { show: { resource: [ 'configure', ], }, }, options: configure_actions_1.configureActions, default: 'ungroup_products', noDataExpression: true, required: true, }, { displayName: 'Operation', name: 'operation', type: 'options', displayOptions: { show: { resource: [ 'pricing', ], }, }, options: pricing_actions_1.pricingActions, default: 'get_pricing', noDataExpression: true, required: true, }, { displayName: 'Operation', name: 'operation', type: 'options', displayOptions: { show: { resource: [ 'mcp' ], }, }, options: [{ name: 'Execute MCP', value: 'execute_mcp', description: 'Execute MCP Action', action: 'Execute MCP Action', }], default: 'execute_mcp', noDataExpression: true, required: true, }, { displayName: 'Intent', name: 'intent', type: 'string', required: true, displayOptions: { show: { operation: ["execute_mcp"], resource: [ 'mcp' ], } }, default: '', placeholder: '', description: 'User Intent Name', }, { displayName: 'Token', name: 'access_token', type: 'string', typeOptions: { password: true }, required: true, displayOptions: { show: { operation: ["execute_mcp"], resource: [ 'mcp' ], } }, default: '', placeholder: '', description: 'Token Details', }, { displayName: 'Request', name: 'request_info', type: 'json', required: true, displayOptions: { show: { operation: [ "add_approver_to_quote", "add_participants_for_quote", "add_participants_for_room", "clone_quote", "create_account", "create_contact", "create_external_account", "create_order", "create_quote", "create_room", "create_quote_version", "delegate_approver_to_quote", "delete_participants_for_quote", "delete_participants_for_room", "get_account_details", "get_account_layout_by_type", "get_accounts", "get_order_activity_timeline", "get_all_users_and_contacts_for_room", "get_all_users_and_contacts_for_quote", "get_approvals_list_for_quote", "get_approvers_list_for_quote", "get_available_users_and_contacts_for_room", "get_cart_quote_line_items", "get_complete_account_details", "get_complete_order_details", "get_contact_details", "get_contacts_by_account", "get_deal_data", "get_documents_by_room_and_parent", "get_high_value_deals_data", "get_complete_quote_details", "get_orders", "get_page_layout", "get_performance_data", "get_quote_activity_timeline", "get_quote_data", "get_quote_details", "get_quote_id_and_type_from_sf_external_id", "get_quote_versions", "get_quote_line_summary", "get_shared_templates", "get_user_quotes", "send_email_to_customers", "insert_into_address_details", "get_order_details", "get_participants_for_quote", "get_participants_for_room", "get_room_by_id", "save_or_update_page_layout", "update_account", "update_contact", "update_order", "update_quote", "update_room", "update_status_by_approver", "get_user_room", "add_products_to_quote", "add_products_to_group", "apply_discount", "apply_favorite_carts", "apply_target_value", "apply_promotion", "clone_bundle", "get_adjustment_values_line_item", "configure_product", "save_favorite_cart", "delete_bundle", "delete_favorite_cart", "get_favorite_carts", "get_price_trails", "predefined_grouping", "get_product_line_summary", "get_product_ramps", "get_recommendations", "get_product_details", "get_quote_line_summary_details", "get_adjustment_values_quote_line_item", "get_selected_product_options", "ungroup_products", "search_objects", "universal_search_objects", "add_user_favourite_product", "get_categories_by_pricebookId", "get_user_products_by_filter", "get_product_categories", "remove_user_favourite_product", "search_product_categories", "get_user_favourite_products", "get_pricing", "update_users", "add_users", "get_group_members", "get_groups", "add_groups", "update_groups", "get_permission", "add_permission", "update_permission", "get_configuration_rule", "add_or_update_configuration_rule", "add_rule_product_groups", "update_rule_product_groups", "get_configuration", "save_configuration", "save_quote_types", "get_layout_fields_by_object", "get_data_values", "get_field_columns", "add_currency_conversion", "update_currency_conversion", "delete_currency_conversion", "save_translation_meta_data", "save_translation_data", "set_customer_languages", "get_properties", "get_flow_by_id", "create_flow", "update_flow", "set_up_customer_profile_for_salesforce", "request_free_trial", "get_category_products", "get_non_associated_category_products", "get_category_pricebooks", "get_non_associated_pricebooks", "get_category_details", "get_category_discounts", "get_category_discount_by_id", "add_categories", "update_category", "add_products_to_category", "add_pricebook_to_category", "delete_category_products", "update_category_pricebooks", "add_update_category_discounts", "delete_category_discounts", "get_price_book_associated_products", "get_price_book_available_products", "pricebook_line_items", "get_pricing_customer_lookup", "add_price_book", "update_price_book", "add_price_book_associated_products", "update_price_book_associated_products", "add_deal_guidance", "update_deal_guidances", "get_group_users", "add_or_update_approval", "add_objects", "update_objects", "import_data", "get_object_details_by_id", "insert_or_update_templates", "get_layout_fields", "get_layouts_by_layout_id", "add_layouts", "delete_layouts", "get_product_activity_timeline", "get_price_book_activity_timeline", "get_price_book_item_activity_timeline", "get_rule_activity_timeline", "add_product_uom", "edit_product_uom", "add_product_uom_conversion", "edit_product_uom_conversion", "get_product_by_id", "get_available_product_options", "get_available_product_group_options", "get_associated_product_options", "get_product_groups", "get_product_group_options", "get_product_options_by_group_id", "get_product_attributes", "get_product_attributes_by_group_id", "get_group_attributes", "get_available_product_group_attributes", "add_price_book_item", "edit_price_book_item", "add_products", "update_products", "save_product_group_options", "delete_product_group_options", "save_product_group_attributes", "update_option_group", "fetch_object_details", "execute_mcp" ], resource: [ 'quote', 'configure', 'product', 'pricing', 'mcp', 'admin' ], }, }, default: '', placeholder: '', description: 'Request Body', }, { displayName: 'Additional Fields', name: 'additionalFields', type: 'collection', placeholder: 'Add Field', default: {}, displayOptions: { show: { resource: [ 'quote', ], operation: [ 'create', ], }, }, options: [ { displayName: 'Description', name: 'description', type: 'string', default: '', }, ], }, ], }; } getToolParameters() { return { type: 'object', properties: { request_info: { type: 'object', description: 'Optional tool input object (can be empty)', }, }, required: [], }; } async execute() { const items = this.getInputData(); let responseData; const returnData = []; const operation = this.getNodeParameter('operation', 0); const environment = this.getNodeParameter('environment', 0); const staticData = this.getWorkflowStaticData('node'); for (let i = 0; i < items.length; i++) { if (i === 0) { const headers = items[i].json.headers; if (headers && headers['authorization']) { const authorizationHeader = headers['authorization']; staticData.authorizationHeader = authorizationHeader; } } else { const bearerToken = staticData.authorizationHeader; if (!bearerToken) { throw new n8n_workflow_1.ApplicationError('Bearer token not found'); } } let uri; let quoteUrl = environment; const makeRequest = async (uri, method, body, access_token) => { let authHeader = staticData.authorizationHeader; if (access_token) { authHeader = `Bearer ${access_token}`; } const options = { headers: { 'Accept': 'application/json', 'authorization': authHeader }, method, uri, json: true, }; if (body) { options.body = body; } if (!authHeader) { responseData = await this.helpers.requestWithAuthentication.call(this, 'scaleFluidlyApi', options); } else { responseData = await this.helpers.request(options); } returnData.push(responseData); }; let requestData = undefined; try { requestData = this.getNodeParameter('request_info', i); } catch { } let intent = operation; let access_token = undefined; if (operation === 'execute_mcp') { intent = this.getNodeParameter('intent', i); access_token = this.getNodeParameter('access_token', i); } const slectedOperation = intent_url_map_1.intentUrlMap[intent]; if (!slectedOperation) { throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Operation "${intent}" not found`); } uri = `${quoteUrl}${slectedOperation.url}`; await makeRequest(uri, slectedOperation.method, requestData, access_token); } return [this.helpers.returnJsonArray(returnData)]; } } exports.ScaleFluidly = ScaleFluidly; //# sourceMappingURL=ScaleFluidly.node.js.map