UNPKG

@kaia-team/n8n-nodes-kaia

Version:
215 lines 7.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.shopApiProperties = void 0; exports.handleShopApi = handleShopApi; const n8n_workflow_1 = require("n8n-workflow"); const utils_1 = require("../utils"); /** * Shop API Properties * Properties specific to the shop API resource (redeem code management) */ exports.shopApiProperties = [ { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['shop'], }, }, options: [ { name: 'Create', value: 'create', description: 'Create redeem code', action: 'Create a shop', }, { name: 'Redeem', value: 'redeem', description: 'Admin redeem code', action: 'Redeem a shop', }, ], default: 'create', }, { displayName: 'Code', name: 'code', type: 'string', default: '', displayOptions: { show: { resource: ['shop'], operation: ['create'], }, }, description: 'Optional code (auto-generated if blank)', }, { displayName: 'Side Effects', name: 'side_effects', type: 'fixedCollection', typeOptions: { multipleValues: true }, default: {}, placeholder: 'Add Side Effect', displayOptions: { show: { resource: ['shop'], operation: ['create'], }, }, options: [ { name: 'effects', displayName: 'Effects', values: [ { displayName: 'Amount', name: 'amount', type: 'number', default: 0, description: 'For credit_grant', }, { displayName: 'Duration', name: 'duration', type: 'number', default: 0, }, { displayName: 'Feature Name', name: 'feature_name', type: 'string', default: '', }, { displayName: 'Type', name: 'type', type: 'options', options: [ { name: 'Credit Grant', value: 'credit_grant', }, { name: 'Feature Unlock', value: 'feature_unlock', }, ], default: 'credit_grant', }, { displayName: 'Unit', name: 'unit', type: 'options', options: [ { name: 'Days', value: 'days', }, { name: 'Hours', value: 'hours', }, { name: 'Minutes', value: 'minutes', }, { name: 'Months', value: 'months', }, { name: 'Weeks', value: 'weeks', }, ], default: 'days', }, ], }, ], }, { displayName: 'Code String', name: 'code_string', type: 'string', default: '', displayOptions: { show: { resource: ['shop'], operation: ['redeem'], }, }, description: 'The code string to redeem', required: true, }, { displayName: 'User ID', name: 'user_id', type: 'string', default: '', displayOptions: { show: { resource: ['shop'], operation: ['redeem'], }, }, required: true, description: 'User auth_id', }, ]; /** * Shop API Handler * Handles requests to the shop API (redeem code management) */ async function handleShopApi(executeFunctions, itemIndex, adminUrl, adminToken) { const operation = executeFunctions.getNodeParameter('operation', itemIndex); const additionalFields = executeFunctions.getNodeParameter('additionalFields', itemIndex, {}); const baseUrl = adminUrl.replace('/admin', ''); const headers = (0, utils_1.createHeaders)(adminToken, additionalFields); if (operation === 'create') { const payload = { redeem_code: {} }; const code = executeFunctions.getNodeParameter('code', itemIndex, ''); if (code) payload.redeem_code.code = code; const effects = executeFunctions.getNodeParameter('side_effects.effects', itemIndex, []); payload.redeem_code.side_effects = effects.map(effect => { const config = {}; if (effect.type === 'credit_grant') { config.amount = effect.amount; } else if (effect.type === 'feature_unlock') { config.feature_name = effect.feature_name; config.duration = effect.duration; config.unit = effect.unit; } return { type: effect.type, config }; }); const response = await executeFunctions.helpers.httpRequest({ method: 'POST', url: `${adminUrl}/redeem_codes.json`, body: payload, headers, }); return response; } else if (operation === 'redeem') { const payload = { code_string: executeFunctions.getNodeParameter('code_string', itemIndex), user_id: executeFunctions.getNodeParameter('user_id', itemIndex), }; const response = await executeFunctions.helpers.httpRequest({ method: 'POST', url: `${baseUrl}/shopify/public/redeem_codes/admin_redeem`, body: payload, headers, }); return response; } throw new n8n_workflow_1.NodeOperationError(executeFunctions.getNode(), `Unknown shop operation: ${operation}`); } //# sourceMappingURL=shopApi.js.map