@kaia-team/n8n-nodes-kaia
Version:
n8n nodes for Kaia LLM integration
215 lines • 7.14 kB
JavaScript
;
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