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