UNPKG

n8n-nodes-supersaas

Version:

n8n node to create webhook in SuperSaaS

218 lines 9.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SuperSaaSTrigger = void 0; const n8n_workflow_1 = require("n8n-workflow"); const GenericFunctions_1 = require("./GenericFunctions"); class SuperSaaSTrigger { constructor() { this.description = { displayName: 'SuperSaaS Trigger', name: 'superSaaSTrigger', icon: 'file:superSaaS.svg', group: ['trigger'], version: 1, subtitle: '={{ $parameter["operation"] + ": " + $parameter["resource"] }}', description: 'SuperSaaS trigger', defaults: { name: 'SuperSaaS Trigger', }, inputs: [], outputs: ["main"], credentials: [ { name: 'superSaaSApi', required: true, }, ], webhooks: [ { name: 'default', httpMethod: 'POST', responseMode: 'onReceived', path: 'webhook', }, ], properties: [ { displayName: 'Event (gets parent ID)', name: 'events', type: 'options', options: [ { name: 'Changed Appointment', value: 'C', }, { name: 'Changed Credit', value: 'P', }, { name: 'Changed Form', value: 'O', }, { name: 'Changed User', value: 'M', }, { name: 'New Appointment', value: 'N', }, { name: 'New Form', value: 'S', }, { name: 'New User', value: 'U', }, { name: 'Send Mail', value: 'H', }, { name: 'Sent Follow-Up', value: 'F', }, { name: 'Sent Reminder', value: 'R', }, ], default: 'U', description: 'Select Event', required: true, }, { displayName: 'Parent ID', name: 'schedule', type: 'options', default: [], typeOptions: { loadOptionsDependsOn: ['events'], loadOptionsMethod: 'getSchedules', }, description: 'Account, Schedule, FormID', }, ], }; this.methods = { loadOptions: { async getSchedules() { const event = this.getNodeParameter('events', 0); let optionsRet = []; if (event === 'U' || event === 'M' || event === 'H' || event === 'P') { let account = await GenericFunctions_1.getAccount.call(this); optionsRet.push({ name: "Account", value: account }); } else if (event === 'N' || event === 'C' || event === 'R' || event === 'F') { let responseData = await GenericFunctions_1.superSaaSApiRequest.call(this, 'GET', '/api/schedules.json'); let responseJSON = JSON.parse(responseData); for (const item of responseJSON) { const itemName = item["name"]; const itemID = item["id"]; optionsRet.push({ name: "Schedule: " + itemName, value: itemID, }); } } else if (event === 'S' || event === 'O') { let responseData = await GenericFunctions_1.superSaaSApiRequest.call(this, 'GET', '/api/super_forms.json'); let responseJSON = JSON.parse(responseData); for (const item of responseJSON) { const itemName = item["name"]; const itemID = item["id"]; optionsRet.push({ name: "Form: " + itemName, value: itemID, }); } } return optionsRet; }, } }; this.webhookMethods = { default: { async checkExists() { const webhookUrl = this.getNodeWebhookUrl('default'); const event = this.getNodeParameter('events'); let parentID = this.getNodeParameter('schedule'); let responseData = await GenericFunctions_1.superSaaSApiRequest.call(this, 'GET', '/api/hooks'); let responseJSON = JSON.parse(responseData); for (const webhook of responseJSON) { if (webhook.url === webhookUrl && webhook.trigger === event && webhook.parent_id === parentID) { return true; } } return false; }, async create() { var webhookUrl = this.getNodeWebhookUrl('default'); const event = this.getNodeParameter('events'); const parentId = this.getNodeParameter('schedule'); if (!parentId) { throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Parent ID is required'); } try { const creds = await this.getCredentials('superSaaSApi'); if (creds.ngrok && creds.ngrok.length > 0) { webhookUrl = webhookUrl?.replace("http://localhost:5678", creds.ngrok); } console.log('Creating webhook with:', { webhookUrl, event, parentId, account: creds.account, }); const responseData = await GenericFunctions_1.superSaaSApiRequest.call(this, 'POST', '/api/hooks', parentId, event, webhookUrl); const response = typeof responseData === 'string' ? JSON.parse(responseData) : responseData; if (!response || !response.id) { throw new Error('Invalid response from webhook creation'); } return true; } catch (error) { console.error('Failed to create webhook, check API key:', { error, account: (await this.getCredentials('superSaaSApi')).account, params: { webhookUrl, event, parentId, } }); throw error; } }, async delete() { const webhookData = this.getWorkflowStaticData('node'); if (webhookData.webhookID === undefined || webhookData.webhookParentID === undefined) { return false; } try { await GenericFunctions_1.superSaaSApiRequest.call(this, 'DELETE', '/api/hooks', webhookData.webhookParentID, null, null, webhookData.webhookID); } catch (error) { return false; } delete webhookData.webhookID; delete webhookData.webhookParentID; return true; }, }, }; } async webhook() { const bodyData = this.getBodyData(); return { workflowData: [this.helpers.returnJsonArray(bodyData)], }; } } exports.SuperSaaSTrigger = SuperSaaSTrigger; //# sourceMappingURL=SuperSaaSTrigger.node.js.map