UNPKG

@kaia-team/n8n-nodes-kaia

Version:
252 lines 7.82 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.userAccountsApiProperties = void 0; exports.handleUserAccountsApi = handleUserAccountsApi; const n8n_workflow_1 = require("n8n-workflow"); const utils_1 = require("../utils"); /** * User Accounts API Properties * Properties specific to the userAccounts API resource */ exports.userAccountsApiProperties = [ { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['userAccounts'], }, }, options: [ { name: 'Credits', value: 'credits', description: 'Update user credits', action: 'Update user credits', }, { name: 'Export', value: 'export', action: 'Export user accounts', }, { name: 'List', value: 'list', action: 'List user accounts', }, { name: 'Read', value: 'read', action: 'Read a user account', }, ], default: 'list', }, { displayName: 'User Account ID', name: 'userAccountId', type: 'string', default: '', displayOptions: { show: { resource: ['userAccounts'], operation: ['read'], }, }, required: true, }, // Shared params for list/export { displayName: 'Start Date', name: 'start_date', type: 'dateTime', default: '', displayOptions: { show: { resource: ['userAccounts'], operation: ['list', 'export'], }, }, description: 'Start date (updated_at)', }, { displayName: 'End Date', name: 'end_date', type: 'dateTime', default: '', displayOptions: { show: { resource: ['userAccounts'], operation: ['list', 'export'], }, }, }, { displayName: 'Email', name: 'email', type: 'string', placeholder: 'name@email.com', default: '', displayOptions: { show: { resource: ['userAccounts'], operation: ['list', 'export'], }, }, }, { displayName: 'Sorting', name: 'sorting', type: 'options', options: [ { name: 'Created', value: 'created' }, { name: 'Created Asc', value: 'created_asc' }, { name: 'History', value: 'history' }, { name: 'Updated', value: 'updated' }, { name: 'Updated Asc', value: 'updated_asc' }, ], default: 'created', displayOptions: { show: { resource: ['userAccounts'], operation: ['list', 'export'], }, }, }, // Export specific { displayName: 'Format', name: 'format', type: 'options', options: [ { name: 'DOCX', value: 'docx' }, { name: 'HTML', value: 'html' }, ], default: 'html', displayOptions: { show: { resource: ['userAccounts'], operation: ['export'], }, }, }, // Credits specific { displayName: 'Email', name: 'email', type: 'string', placeholder: 'name@email.com', default: '', displayOptions: { show: { resource: ['userAccounts'], operation: ['credits'], }, }, required: true, }, { displayName: 'Credit Change', name: 'credit_change', type: 'number', default: 0, displayOptions: { show: { resource: ['userAccounts'], operation: ['credits'], }, }, description: 'Integer added to credit total (negative to subtract)', required: true, }, { displayName: 'Reason', name: 'reason', type: 'string', default: '', displayOptions: { show: { resource: ['userAccounts'], operation: ['credits'], }, }, }, { displayName: 'Update ID', name: 'update_id', type: 'string', default: '', displayOptions: { show: { resource: ['userAccounts'], operation: ['credits'], }, }, description: 'Unique ID to prevent double redeems', }, ]; /** * User Accounts API Handler * Handles requests to the userAccounts API */ async function handleUserAccountsApi(executeFunctions, itemIndex, adminUrl, adminToken) { const operation = executeFunctions.getNodeParameter('operation', itemIndex); const additionalFields = executeFunctions.getNodeParameter('additionalFields', itemIndex, {}); const headers = (0, utils_1.createHeaders)(adminToken, additionalFields); if (operation === 'list' || operation === 'export') { const endpoint = operation === 'list' ? '/user_accounts.json' : '/user_accounts/export'; const qs = {}; const addIfSet = (qs, key, value) => { if (value) qs[key] = value; }; addIfSet(qs, 'start_date', executeFunctions.getNodeParameter('start_date', itemIndex, '')); addIfSet(qs, 'end_date', executeFunctions.getNodeParameter('end_date', itemIndex, '')); addIfSet(qs, 'email', executeFunctions.getNodeParameter('email', itemIndex, '')); addIfSet(qs, 'sorting', executeFunctions.getNodeParameter('sorting', itemIndex, '')); if (operation === 'export') { addIfSet(qs, 'format', executeFunctions.getNodeParameter('format', itemIndex, 'html')); } const response = await executeFunctions.helpers.httpRequest({ method: 'GET', url: `${adminUrl}${endpoint}`, headers, qs, }); if (operation === 'list') { return executeFunctions.helpers.returnJsonArray(response); } else { return response; } } else if (operation === 'read') { let userAccountId = executeFunctions.getNodeParameter('userAccountId', itemIndex); userAccountId = (0, utils_1.extractIdFromUrlOrId)(userAccountId, 'user_accounts'); const response = await executeFunctions.helpers.httpRequest({ method: 'GET', url: `${adminUrl}/user_accounts/${userAccountId}.json`, headers, }); return response; } else if (operation === 'credits') { const payload = { email: executeFunctions.getNodeParameter('email', itemIndex), credit_change: executeFunctions.getNodeParameter('credit_change', itemIndex), reason: executeFunctions.getNodeParameter('reason', itemIndex, ''), update_id: executeFunctions.getNodeParameter('update_id', itemIndex, ''), }; const response = await executeFunctions.helpers.httpRequest({ method: 'POST', url: `${adminUrl}/user_accounts/credits.json`, body: payload, headers, }); return response; } throw new n8n_workflow_1.NodeOperationError(executeFunctions.getNode(), `Unknown user accounts operation: ${operation}`); } //# sourceMappingURL=userAccountsApi.js.map