n8n-nodes-peak-test 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +19 -0
- package/README.md +127 -0
- package/dist/assets/PEAK.svg +13 -0
- package/dist/credentials/PEAKApi.credentials.d.ts +7 -0
- package/dist/credentials/PEAKApi.credentials.js +40 -0
- package/dist/credentials/PEAKApi.credentials.js.map +1 -0
- package/dist/helpers/time.d.ts +2 -0
- package/dist/helpers/time.js +23 -0
- package/dist/helpers/time.js.map +1 -0
- package/dist/nodes/ClientToken/CreateClientToken.node.d.ts +5 -0
- package/dist/nodes/ClientToken/CreateClientToken.node.js +128 -0
- package/dist/nodes/ClientToken/CreateClientToken.node.js.map +1 -0
- package/dist/nodes/Contact/GetContact.node.d.ts +5 -0
- package/dist/nodes/Contact/GetContact.node.js +145 -0
- package/dist/nodes/Contact/GetContact.node.js.map +1 -0
- package/dist/nodes/DailyJournal/CreateDailyJournal.node.d.ts +5 -0
- package/dist/nodes/DailyJournal/CreateDailyJournal.node.js +139 -0
- package/dist/nodes/DailyJournal/CreateDailyJournal.node.js.map +1 -0
- package/dist/nodes/DailyJournal/GetAccountCode.node.d.ts +5 -0
- package/dist/nodes/DailyJournal/GetAccountCode.node.js +118 -0
- package/dist/nodes/DailyJournal/GetAccountCode.node.js.map +1 -0
- package/dist/nodes/Invoice/CreateExpense.node.d.ts +5 -0
- package/dist/nodes/Invoice/CreateExpense.node.js +139 -0
- package/dist/nodes/Invoice/CreateExpense.node.js.map +1 -0
- package/dist/nodes/Invoice/CreateInvoice.node.d.ts +5 -0
- package/dist/nodes/Invoice/CreateInvoice.node.js +140 -0
- package/dist/nodes/Invoice/CreateInvoice.node.js.map +1 -0
- package/dist/nodes/Invoice/CreateInvoice.node.json +13 -0
- package/dist/nodes/PaymentMethod/GetPaymentMethod.node.d.ts +5 -0
- package/dist/nodes/PaymentMethod/GetPaymentMethod.node.js +145 -0
- package/dist/nodes/PaymentMethod/GetPaymentMethod.node.js.map +1 -0
- package/dist/nodes/Product/GetProduct.node.d.ts +5 -0
- package/dist/nodes/Product/GetProduct.node.js +146 -0
- package/dist/nodes/Product/GetProduct.node.js.map +1 -0
- package/dist/nodes/Product/GetService.node.d.ts +5 -0
- package/dist/nodes/Product/GetService.node.js +145 -0
- package/dist/nodes/Product/GetService.node.js.map +1 -0
- package/dist/nodes/Receipt/CreateReceipt.node.d.ts +5 -0
- package/dist/nodes/Receipt/CreateReceipt.node.js +139 -0
- package/dist/nodes/Receipt/CreateReceipt.node.js.map +1 -0
- package/dist/nodes/Receipt/CreateReceipt.node.json +13 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/index.js +0 -0
- package/package.json +75 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetPaymentMethod = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const time_1 = require("../../helpers/time");
|
|
6
|
+
class GetPaymentMethod {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.description = {
|
|
9
|
+
displayName: 'PEAK Get Payment Method',
|
|
10
|
+
name: 'getPaymentMethod',
|
|
11
|
+
icon: 'file:../../assets/PEAK.svg',
|
|
12
|
+
group: ['input'],
|
|
13
|
+
version: 1,
|
|
14
|
+
subtitle: '={{$parameter["operation"]}}',
|
|
15
|
+
description: 'Send parameter to get payment method via PEAK API',
|
|
16
|
+
defaults: {
|
|
17
|
+
name: 'Get PaymentMethod',
|
|
18
|
+
},
|
|
19
|
+
inputs: ['main'],
|
|
20
|
+
outputs: ['main'],
|
|
21
|
+
credentials: [{ name: 'PEAKApi', required: true }],
|
|
22
|
+
usableAsTool: true,
|
|
23
|
+
properties: [
|
|
24
|
+
{
|
|
25
|
+
displayName: 'Server Environment',
|
|
26
|
+
name: 'serverEnvironment',
|
|
27
|
+
type: 'options',
|
|
28
|
+
typeOptions: { rows: 1 },
|
|
29
|
+
default: 'production',
|
|
30
|
+
required: true,
|
|
31
|
+
description: 'PaymentMethod ID to retrieve',
|
|
32
|
+
options: [
|
|
33
|
+
{
|
|
34
|
+
name: 'UAT',
|
|
35
|
+
value: 'uat',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'PaymentMethodion',
|
|
39
|
+
value: 'paymentMethodion',
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
displayName: 'PaymentMethod ID',
|
|
45
|
+
name: 'paymentMethodId',
|
|
46
|
+
type: 'string',
|
|
47
|
+
typeOptions: { rows: 1 },
|
|
48
|
+
default: '',
|
|
49
|
+
required: false,
|
|
50
|
+
description: 'PaymentMethod ID to retrieve',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
displayName: 'PaymentMethod Code',
|
|
54
|
+
name: 'paymentMethodCode',
|
|
55
|
+
type: 'string',
|
|
56
|
+
typeOptions: { rows: 1 },
|
|
57
|
+
default: '',
|
|
58
|
+
required: false,
|
|
59
|
+
description: 'PaymentMethod code to retrieve',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
displayName: 'Client Token (override)',
|
|
63
|
+
name: 'clientTokenOverride',
|
|
64
|
+
type: 'string',
|
|
65
|
+
typeOptions: { password: true },
|
|
66
|
+
default: '',
|
|
67
|
+
description: 'Optional override (useful when token refreshes every 24h)',
|
|
68
|
+
},
|
|
69
|
+
],
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
async execute() {
|
|
73
|
+
const items = this.getInputData();
|
|
74
|
+
const returnData = [];
|
|
75
|
+
const creds = (await this.getCredentials('PEAKApi'));
|
|
76
|
+
const userToken = creds.userToken;
|
|
77
|
+
const connectId = creds.connectId;
|
|
78
|
+
let endpointUrl = 'https://peakengineapidev.azurewebsites.net/api/v1/paymentMethods';
|
|
79
|
+
for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
|
|
80
|
+
try {
|
|
81
|
+
const serverEnv = this.getNodeParameter('serverEnvironment', itemIndex, '');
|
|
82
|
+
const paymentMethodId = this.getNodeParameter('paymentMethodId', itemIndex, '');
|
|
83
|
+
const paymentMethodCode = this.getNodeParameter('paymentMethodCode', itemIndex, '');
|
|
84
|
+
const clientTokenOverride = this.getNodeParameter('clientTokenOverride', itemIndex, '');
|
|
85
|
+
if (serverEnv === 'production') {
|
|
86
|
+
endpointUrl = endpointUrl.replace('peakengineapidev.azurewebsites.net', 'api.peakaccount.com');
|
|
87
|
+
}
|
|
88
|
+
let endpointWithParams = endpointUrl + '?';
|
|
89
|
+
const clientToken = clientTokenOverride || creds.clientToken;
|
|
90
|
+
if (!clientToken)
|
|
91
|
+
throw new Error('Client Token is required (credentials or override).');
|
|
92
|
+
if (paymentMethodId !== '') {
|
|
93
|
+
endpointWithParams += `id=${encodeURIComponent(paymentMethodId)}`;
|
|
94
|
+
}
|
|
95
|
+
if (paymentMethodCode !== '') {
|
|
96
|
+
endpointWithParams += `code=${encodeURIComponent(paymentMethodCode)}`;
|
|
97
|
+
}
|
|
98
|
+
const timeStamp = (0, time_1.formatTimestamp)(new Date(), false);
|
|
99
|
+
const timeSignature = (0, time_1.hmacSha1Hex)(connectId, timeStamp);
|
|
100
|
+
const headers = {
|
|
101
|
+
'User-Token': userToken,
|
|
102
|
+
'Client-Token': clientToken,
|
|
103
|
+
'Time-Stamp': timeStamp,
|
|
104
|
+
'Time-Signature': timeSignature,
|
|
105
|
+
'Content-Type': 'application/json',
|
|
106
|
+
};
|
|
107
|
+
const options = {
|
|
108
|
+
method: 'GET',
|
|
109
|
+
url: endpointWithParams,
|
|
110
|
+
headers,
|
|
111
|
+
json: true,
|
|
112
|
+
};
|
|
113
|
+
const response = await this.helpers.httpRequest(options);
|
|
114
|
+
returnData.push({
|
|
115
|
+
json: {
|
|
116
|
+
success: true,
|
|
117
|
+
statusCode: 200,
|
|
118
|
+
data: response,
|
|
119
|
+
headers,
|
|
120
|
+
},
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
if (this.continueOnFail()) {
|
|
125
|
+
returnData.push({
|
|
126
|
+
json: { error: error.message },
|
|
127
|
+
pairedItem: { item: itemIndex },
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
if (error.context) {
|
|
132
|
+
error.context.itemIndex = itemIndex;
|
|
133
|
+
throw error;
|
|
134
|
+
}
|
|
135
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), error, {
|
|
136
|
+
itemIndex,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return [returnData];
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
exports.GetPaymentMethod = GetPaymentMethod;
|
|
145
|
+
//# sourceMappingURL=GetPaymentMethod.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetPaymentMethod.node.js","sourceRoot":"","sources":["../../../nodes/PaymentMethod/GetPaymentMethod.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
export declare class GetProduct implements INodeType {
|
|
3
|
+
description: INodeTypeDescription;
|
|
4
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetProduct = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const time_1 = require("../../helpers/time");
|
|
6
|
+
class GetProduct {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.description = {
|
|
9
|
+
displayName: 'PEAK Get Product',
|
|
10
|
+
name: 'getProduct',
|
|
11
|
+
icon: 'file:../../assets/PEAK.svg',
|
|
12
|
+
group: ['input'],
|
|
13
|
+
version: 1,
|
|
14
|
+
subtitle: '={{$parameter["operation"]}}',
|
|
15
|
+
description: 'Send parameter to get product via PEAK API',
|
|
16
|
+
defaults: {
|
|
17
|
+
name: 'Get Product',
|
|
18
|
+
},
|
|
19
|
+
inputs: ['main'],
|
|
20
|
+
outputs: ['main'],
|
|
21
|
+
credentials: [{ name: 'PEAKApi', required: true }],
|
|
22
|
+
usableAsTool: true,
|
|
23
|
+
properties: [
|
|
24
|
+
{
|
|
25
|
+
displayName: 'Server Environment',
|
|
26
|
+
name: 'serverEnvironment',
|
|
27
|
+
type: 'options',
|
|
28
|
+
typeOptions: { rows: 1 },
|
|
29
|
+
default: 'Production',
|
|
30
|
+
required: true,
|
|
31
|
+
description: 'Product ID to retrieve',
|
|
32
|
+
options: [
|
|
33
|
+
{
|
|
34
|
+
name: 'UAT',
|
|
35
|
+
value: 'uat',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Production',
|
|
39
|
+
value: 'production',
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
displayName: 'Product ID',
|
|
45
|
+
name: 'productId',
|
|
46
|
+
type: 'string',
|
|
47
|
+
typeOptions: { rows: 1 },
|
|
48
|
+
default: '',
|
|
49
|
+
required: false,
|
|
50
|
+
description: 'Product ID to retrieve',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
displayName: 'Product Code',
|
|
54
|
+
name: 'productCode',
|
|
55
|
+
type: 'string',
|
|
56
|
+
typeOptions: { rows: 1 },
|
|
57
|
+
default: '',
|
|
58
|
+
required: false,
|
|
59
|
+
description: 'Product code to retrieve',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
displayName: 'Client Token (override)',
|
|
63
|
+
name: 'clientTokenOverride',
|
|
64
|
+
type: 'string',
|
|
65
|
+
typeOptions: { password: true },
|
|
66
|
+
default: '',
|
|
67
|
+
description: 'Optional override (useful when token refreshes every 24h)',
|
|
68
|
+
},
|
|
69
|
+
],
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
async execute() {
|
|
73
|
+
const items = this.getInputData();
|
|
74
|
+
const returnData = [];
|
|
75
|
+
const creds = (await this.getCredentials('PEAKApi'));
|
|
76
|
+
const userToken = creds.userToken;
|
|
77
|
+
const connectId = creds.connectId;
|
|
78
|
+
let endpointUrl = 'https://peakengineapidev.azurewebsites.net/api/v1/products';
|
|
79
|
+
for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
|
|
80
|
+
try {
|
|
81
|
+
const serverEnv = this.getNodeParameter('serverEnvironment', itemIndex, '');
|
|
82
|
+
const productId = this.getNodeParameter('productId', itemIndex, '');
|
|
83
|
+
const productCode = this.getNodeParameter('productCode', itemIndex, '');
|
|
84
|
+
const clientTokenOverride = this.getNodeParameter('clientTokenOverride', itemIndex, '');
|
|
85
|
+
if (serverEnv === 'production') {
|
|
86
|
+
endpointUrl = endpointUrl.replace('peakengineapidev.azurewebsites.net', 'api.peakaccount.com');
|
|
87
|
+
}
|
|
88
|
+
let endpointWithParams = endpointUrl + '?';
|
|
89
|
+
const clientToken = clientTokenOverride || creds.clientToken;
|
|
90
|
+
if (!clientToken)
|
|
91
|
+
throw new Error('Client Token is required (credentials or override).');
|
|
92
|
+
if (productId !== '') {
|
|
93
|
+
endpointWithParams += `id=${encodeURIComponent(productId)}`;
|
|
94
|
+
}
|
|
95
|
+
if (productCode !== '') {
|
|
96
|
+
endpointWithParams += `code=${encodeURIComponent(productCode)}`;
|
|
97
|
+
}
|
|
98
|
+
const timeStamp = (0, time_1.formatTimestamp)(new Date(), false);
|
|
99
|
+
const timeSignature = (0, time_1.hmacSha1Hex)(connectId, timeStamp);
|
|
100
|
+
const headers = {
|
|
101
|
+
'User-Token': userToken,
|
|
102
|
+
'Client-Token': clientToken,
|
|
103
|
+
'Time-Stamp': timeStamp,
|
|
104
|
+
'Time-Signature': timeSignature,
|
|
105
|
+
'x-peak-integrator': 'n8n',
|
|
106
|
+
'Content-Type': 'application/json',
|
|
107
|
+
};
|
|
108
|
+
const options = {
|
|
109
|
+
method: 'GET',
|
|
110
|
+
url: endpointWithParams,
|
|
111
|
+
headers,
|
|
112
|
+
json: true,
|
|
113
|
+
};
|
|
114
|
+
const response = await this.helpers.httpRequest(options);
|
|
115
|
+
returnData.push({
|
|
116
|
+
json: {
|
|
117
|
+
success: true,
|
|
118
|
+
statusCode: 200,
|
|
119
|
+
data: response,
|
|
120
|
+
headers,
|
|
121
|
+
},
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
if (this.continueOnFail()) {
|
|
126
|
+
returnData.push({
|
|
127
|
+
json: { error: error.message },
|
|
128
|
+
pairedItem: { item: itemIndex },
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
if (error.context) {
|
|
133
|
+
error.context.itemIndex = itemIndex;
|
|
134
|
+
throw error;
|
|
135
|
+
}
|
|
136
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), error, {
|
|
137
|
+
itemIndex,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return [returnData];
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
exports.GetProduct = GetProduct;
|
|
146
|
+
//# sourceMappingURL=GetProduct.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetProduct.node.js","sourceRoot":"","sources":["../../../nodes/Product/GetProduct.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
export declare class GetService implements INodeType {
|
|
3
|
+
description: INodeTypeDescription;
|
|
4
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetService = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const time_1 = require("../../helpers/time");
|
|
6
|
+
class GetService {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.description = {
|
|
9
|
+
displayName: 'PEAK Get Service',
|
|
10
|
+
name: 'getService',
|
|
11
|
+
icon: 'file:../../assets/PEAK.svg',
|
|
12
|
+
group: ['input'],
|
|
13
|
+
version: 1,
|
|
14
|
+
subtitle: '={{$parameter["operation"]}}',
|
|
15
|
+
description: 'Send parameter to get service via PEAK API',
|
|
16
|
+
defaults: {
|
|
17
|
+
name: 'Get Service',
|
|
18
|
+
},
|
|
19
|
+
inputs: ['main'],
|
|
20
|
+
outputs: ['main'],
|
|
21
|
+
credentials: [{ name: 'PEAKApi', required: true }],
|
|
22
|
+
usableAsTool: true,
|
|
23
|
+
properties: [
|
|
24
|
+
{
|
|
25
|
+
displayName: 'Server Environment',
|
|
26
|
+
name: 'serverEnvironment',
|
|
27
|
+
type: 'options',
|
|
28
|
+
typeOptions: { rows: 1 },
|
|
29
|
+
default: 'production',
|
|
30
|
+
required: true,
|
|
31
|
+
description: 'Product ID to retrieve',
|
|
32
|
+
options: [
|
|
33
|
+
{
|
|
34
|
+
name: 'UAT',
|
|
35
|
+
value: 'uat',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Production',
|
|
39
|
+
value: 'production',
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
displayName: 'Service ID',
|
|
45
|
+
name: 'serviceId',
|
|
46
|
+
type: 'string',
|
|
47
|
+
typeOptions: { rows: 1 },
|
|
48
|
+
default: '',
|
|
49
|
+
required: false,
|
|
50
|
+
description: 'Service ID to retrieve',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
displayName: 'Service Code',
|
|
54
|
+
name: 'serviceCode',
|
|
55
|
+
type: 'string',
|
|
56
|
+
typeOptions: { rows: 1 },
|
|
57
|
+
default: '',
|
|
58
|
+
required: false,
|
|
59
|
+
description: 'Service code to retrieve',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
displayName: 'Client Token (override)',
|
|
63
|
+
name: 'clientTokenOverride',
|
|
64
|
+
type: 'string',
|
|
65
|
+
typeOptions: { password: true },
|
|
66
|
+
default: '',
|
|
67
|
+
description: 'Optional override (useful when token refreshes every 24h)',
|
|
68
|
+
},
|
|
69
|
+
],
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
async execute() {
|
|
73
|
+
const items = this.getInputData();
|
|
74
|
+
const returnData = [];
|
|
75
|
+
const creds = (await this.getCredentials('PEAKApi'));
|
|
76
|
+
const userToken = creds.userToken;
|
|
77
|
+
const connectId = creds.connectId;
|
|
78
|
+
let endpointUrl = 'https://peakengineapidev.azurewebsites.net/api/v1/services';
|
|
79
|
+
for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
|
|
80
|
+
try {
|
|
81
|
+
const serverEnv = this.getNodeParameter('serverEnvironment', itemIndex, '');
|
|
82
|
+
const serviceId = this.getNodeParameter('serviceId', itemIndex, '');
|
|
83
|
+
const serviceCode = this.getNodeParameter('serviceCode', itemIndex, '');
|
|
84
|
+
const clientTokenOverride = this.getNodeParameter('clientTokenOverride', itemIndex, '');
|
|
85
|
+
if (serverEnv === 'production') {
|
|
86
|
+
endpointUrl = endpointUrl.replace('peakengineapidev.azurewebsites.net', 'api.peakaccount.com');
|
|
87
|
+
}
|
|
88
|
+
let endpointWithParams = endpointUrl + '?';
|
|
89
|
+
const clientToken = clientTokenOverride || creds.clientToken;
|
|
90
|
+
if (!clientToken)
|
|
91
|
+
throw new Error('Client Token is required (credentials or override).');
|
|
92
|
+
if (serviceId !== '') {
|
|
93
|
+
endpointWithParams += `id=${encodeURIComponent(serviceId)}`;
|
|
94
|
+
}
|
|
95
|
+
if (serviceCode !== '') {
|
|
96
|
+
endpointWithParams += `code=${encodeURIComponent(serviceCode)}`;
|
|
97
|
+
}
|
|
98
|
+
const timeStamp = (0, time_1.formatTimestamp)(new Date(), false);
|
|
99
|
+
const timeSignature = (0, time_1.hmacSha1Hex)(connectId, timeStamp);
|
|
100
|
+
const headers = {
|
|
101
|
+
'User-Token': userToken,
|
|
102
|
+
'Client-Token': clientToken,
|
|
103
|
+
'Time-Stamp': timeStamp,
|
|
104
|
+
'Time-Signature': timeSignature,
|
|
105
|
+
'Content-Type': 'application/json',
|
|
106
|
+
};
|
|
107
|
+
const options = {
|
|
108
|
+
method: 'GET',
|
|
109
|
+
url: endpointWithParams,
|
|
110
|
+
headers,
|
|
111
|
+
json: true,
|
|
112
|
+
};
|
|
113
|
+
const response = await this.helpers.httpRequest(options);
|
|
114
|
+
returnData.push({
|
|
115
|
+
json: {
|
|
116
|
+
success: true,
|
|
117
|
+
statusCode: 200,
|
|
118
|
+
data: response,
|
|
119
|
+
headers,
|
|
120
|
+
},
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
if (this.continueOnFail()) {
|
|
125
|
+
returnData.push({
|
|
126
|
+
json: { error: error.message },
|
|
127
|
+
pairedItem: { item: itemIndex },
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
if (error.context) {
|
|
132
|
+
error.context.itemIndex = itemIndex;
|
|
133
|
+
throw error;
|
|
134
|
+
}
|
|
135
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), error, {
|
|
136
|
+
itemIndex,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return [returnData];
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
exports.GetService = GetService;
|
|
145
|
+
//# sourceMappingURL=GetService.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetService.node.js","sourceRoot":"","sources":["../../../nodes/Product/GetService.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
export declare class CreateReceipt implements INodeType {
|
|
3
|
+
description: INodeTypeDescription;
|
|
4
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CreateReceipt = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const time_1 = require("../../helpers/time");
|
|
6
|
+
class CreateReceipt {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.description = {
|
|
9
|
+
displayName: 'PEAK Create Receipt',
|
|
10
|
+
name: 'createReceipt',
|
|
11
|
+
icon: 'file:../../assets/PEAK.svg',
|
|
12
|
+
group: ['output'],
|
|
13
|
+
version: 1,
|
|
14
|
+
subtitle: '={{$parameter["operation"]}}',
|
|
15
|
+
description: 'Send JSON payload to create receipt via PEAK API',
|
|
16
|
+
defaults: {
|
|
17
|
+
name: 'Create Receipt',
|
|
18
|
+
},
|
|
19
|
+
inputs: ['main'],
|
|
20
|
+
outputs: ['main'],
|
|
21
|
+
credentials: [{ name: 'PEAKApi', required: true }],
|
|
22
|
+
usableAsTool: true,
|
|
23
|
+
properties: [
|
|
24
|
+
{
|
|
25
|
+
displayName: 'Server Environment',
|
|
26
|
+
name: 'serverEnvironment',
|
|
27
|
+
type: 'options',
|
|
28
|
+
typeOptions: { rows: 1 },
|
|
29
|
+
default: 'production',
|
|
30
|
+
required: true,
|
|
31
|
+
description: 'Product ID to retrieve',
|
|
32
|
+
options: [
|
|
33
|
+
{
|
|
34
|
+
name: 'UAT',
|
|
35
|
+
value: 'uat',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Production',
|
|
39
|
+
value: 'production',
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
displayName: 'JSON Body',
|
|
45
|
+
name: 'jsonBody',
|
|
46
|
+
type: 'string',
|
|
47
|
+
typeOptions: { rows: 10 },
|
|
48
|
+
default: '{\n "merchantId": "241027",\n "issueDate": "2025-10-16",\n "items": []\n}',
|
|
49
|
+
required: true,
|
|
50
|
+
description: 'Raw JSON payload (you can map from previous node with {{$json}})',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
displayName: 'Client Token (override)',
|
|
54
|
+
name: 'clientTokenOverride',
|
|
55
|
+
type: 'string',
|
|
56
|
+
typeOptions: { password: true },
|
|
57
|
+
default: '',
|
|
58
|
+
description: 'Optional override (useful when token refreshes every 24h)',
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
async execute() {
|
|
64
|
+
const items = this.getInputData();
|
|
65
|
+
const returnData = [];
|
|
66
|
+
const creds = (await this.getCredentials('PEAKApi'));
|
|
67
|
+
const userToken = creds.userToken;
|
|
68
|
+
const connectId = creds.connectId;
|
|
69
|
+
let endpointUrl = 'https://peakengineapidev.azurewebsites.net/api/v1/receipts';
|
|
70
|
+
for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
|
|
71
|
+
try {
|
|
72
|
+
const serverEnv = this.getNodeParameter('serverEnvironment', itemIndex, '');
|
|
73
|
+
const jsonBodyStr = this.getNodeParameter('jsonBody', itemIndex);
|
|
74
|
+
const clientTokenOverride = this.getNodeParameter('clientTokenOverride', itemIndex, '');
|
|
75
|
+
if (serverEnv === 'production') {
|
|
76
|
+
endpointUrl = endpointUrl.replace('peakengineapidev.azurewebsites.net', 'api.peakaccount.com');
|
|
77
|
+
}
|
|
78
|
+
const clientToken = clientTokenOverride || creds.clientToken;
|
|
79
|
+
if (!clientToken)
|
|
80
|
+
throw new Error('Client Token is required (credentials or override).');
|
|
81
|
+
let bodyObj;
|
|
82
|
+
try {
|
|
83
|
+
bodyObj = JSON.parse(jsonBodyStr);
|
|
84
|
+
if (typeof bodyObj !== 'object' || bodyObj === null) {
|
|
85
|
+
throw new Error('JSON Body must be an object.');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
throw new Error('Invalid JSON Body.');
|
|
90
|
+
}
|
|
91
|
+
const timeStamp = (0, time_1.formatTimestamp)(new Date(), false);
|
|
92
|
+
const timeSignature = (0, time_1.hmacSha1Hex)(connectId, timeStamp);
|
|
93
|
+
const headers = {
|
|
94
|
+
'User-Token': userToken,
|
|
95
|
+
'Client-Token': clientToken,
|
|
96
|
+
'Time-Stamp': timeStamp,
|
|
97
|
+
'Time-Signature': timeSignature,
|
|
98
|
+
'Content-Type': 'application/json',
|
|
99
|
+
};
|
|
100
|
+
const options = {
|
|
101
|
+
method: 'POST',
|
|
102
|
+
url: endpointUrl,
|
|
103
|
+
headers,
|
|
104
|
+
body: bodyObj,
|
|
105
|
+
json: true,
|
|
106
|
+
};
|
|
107
|
+
const response = await this.helpers.httpRequest(options);
|
|
108
|
+
returnData.push({
|
|
109
|
+
json: {
|
|
110
|
+
success: true,
|
|
111
|
+
statusCode: 200,
|
|
112
|
+
data: response,
|
|
113
|
+
headers,
|
|
114
|
+
},
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
if (this.continueOnFail()) {
|
|
119
|
+
returnData.push({
|
|
120
|
+
json: { error: error.message },
|
|
121
|
+
pairedItem: { item: itemIndex },
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
if (error.context) {
|
|
126
|
+
error.context.itemIndex = itemIndex;
|
|
127
|
+
throw error;
|
|
128
|
+
}
|
|
129
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), error, {
|
|
130
|
+
itemIndex,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return [returnData];
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
exports.CreateReceipt = CreateReceipt;
|
|
139
|
+
//# sourceMappingURL=CreateReceipt.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CreateReceipt.node.js","sourceRoot":"","sources":["../../../nodes/Receipt/CreateReceipt.node.ts"],"names":[],"mappings":"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"}
|