@avantguardllc/n8n-nodes-halopsa 0.1.25 → 0.1.27

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.
@@ -1,3 +1,5 @@
1
- import type { IExecuteFunctions, ILoadOptionsFunctions, IHttpRequestMethods } from 'n8n-workflow';
2
- export declare function apiRequest(this: IExecuteFunctions | ILoadOptionsFunctions, method: IHttpRequestMethods, resource: string, body?: object, query?: Record<string, string>, headers?: Record<string, string>, debugLog?: any[], timeout?: number): Promise<any>;
3
- export declare function apiRequestAllItems(this: IExecuteFunctions | ILoadOptionsFunctions, method: IHttpRequestMethods, resource: string, body?: object, query?: Record<string, string>, headers?: Record<string, string>, pagination?: Record<string, any>, debug?: boolean, timeout?: number): Promise<any[]>;
1
+ import { IHookFunctions, IWebhookFunctions, IExecuteFunctions, ILoadOptionsFunctions, IDataObject, IHttpRequestMethods } from 'n8n-workflow';
2
+ type AnyContext = IHookFunctions | IWebhookFunctions | IExecuteFunctions | ILoadOptionsFunctions;
3
+ export declare function apiRequest(this: AnyContext, method: IHttpRequestMethods, endpoint: string, body?: IDataObject | IDataObject[], qs?: IDataObject): Promise<any>;
4
+ export {};
5
+ //# sourceMappingURL=GenericFunctions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenericFunctions.d.ts","sourceRoot":"","sources":["../src/nodes/HaloPSA/GenericFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACX,mBAAmB,EAEnB,MAAM,cAAc,CAAC;AAEtB,KAAK,UAAU,GAAG,cAAc,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,qBAAqB,CAAC;AA2CjG,wBAAsB,UAAU,CAC/B,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,WAAW,GAAG,WAAW,EAAO,EACtC,EAAE,GAAE,WAAgB,GAClB,OAAO,CAAC,GAAG,CAAC,CAmBd"}
@@ -1,25 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.apiRequest = apiRequest;
4
- exports.apiRequestAllItems = apiRequestAllItems;
5
4
  const n8n_workflow_1 = require("n8n-workflow");
6
- function getNestedValue(obj, path) {
7
- if (!path)
8
- return obj;
9
- return path.split('.').reduce((current, key) => current === null || current === void 0 ? void 0 : current[key], obj);
10
- }
11
5
  const _tokenCache = new Map();
12
- function _cacheKey(credentials) {
13
- return `${credentials.clientId}::${credentials.accessTokenUrl}`;
14
- }
15
- async function getAccessToken(execContext, forceRefresh = false) {
16
- const credentials = await execContext.getCredentials('HaloPSAApi');
17
- const key = _cacheKey(credentials);
6
+ async function getAccessToken(ctx, forceRefresh = false) {
7
+ const credentials = await ctx.getCredentials('HaloPSAApi');
8
+ const key = `${credentials.clientId}::${credentials.accessTokenUrl}`;
18
9
  const cached = _tokenCache.get(key);
19
10
  if (!forceRefresh && cached && Date.now() < cached.expiresAt) {
20
11
  return cached.token;
21
12
  }
22
- const tokenUrl = credentials.accessTokenUrl;
23
13
  const bodyParams = {
24
14
  client_id: credentials.clientId,
25
15
  client_secret: credentials.clientSecret,
@@ -29,344 +19,48 @@ async function getAccessToken(execContext, forceRefresh = false) {
29
19
  bodyParams.scope = credentials.scope;
30
20
  }
31
21
  const body = new URLSearchParams(bodyParams);
32
- let rawResponse;
22
+ let raw;
33
23
  try {
34
- rawResponse = await execContext.helpers.httpRequest({
24
+ raw = await ctx.helpers.httpRequest({
35
25
  method: 'POST',
36
- url: tokenUrl,
26
+ url: credentials.accessTokenUrl,
37
27
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
38
28
  body: body.toString(),
39
29
  });
40
30
  }
41
- catch (tokenError) {
42
- const msg = tokenError.message || String(tokenError);
31
+ catch (err) {
43
32
  _tokenCache.delete(key);
44
- throw new Error(`OAuth2 token exchange failed (POST ${tokenUrl}): ${msg}. ` +
45
- `Verify your Access Token URL, Client ID, Client Secret, and Scope in the credential settings.`);
33
+ throw new Error(`OAuth2 token exchange failed: ${err.message}`);
46
34
  }
47
- const response = typeof rawResponse === 'string' ? JSON.parse(rawResponse) : rawResponse;
35
+ const response = (typeof raw === 'string' ? JSON.parse(raw) : raw);
48
36
  if (!response.access_token) {
49
37
  _tokenCache.delete(key);
50
- throw new Error(`OAuth2 token exchange succeeded but no access_token in response (POST ${tokenUrl}): ${JSON.stringify(response)}`);
38
+ throw new Error(`No access_token in response: ${JSON.stringify(response)}`);
51
39
  }
52
40
  const token = response.access_token;
53
41
  const expiresAt = Date.now() + ((response.expires_in || 3600) - 60) * 1000;
54
42
  _tokenCache.set(key, { token, expiresAt });
55
43
  return token;
56
44
  }
57
- async function apiRequest(method, resource, body = {}, query = {}, headers = {}, debugLog, timeout) {
45
+ async function apiRequest(method, endpoint, body = {}, qs = {}) {
58
46
  const credentials = await this.getCredentials('HaloPSAApi');
59
- const baseUrl = credentials.baseUrl || '/api';
60
- const url = (resource.startsWith('http://') || resource.startsWith('https://'))
61
- ? resource
62
- : `${baseUrl}${resource}`;
63
- const makeRequest = async (forceRefresh) => {
64
- const token = await getAccessToken(this, forceRefresh);
65
- const options = {
47
+ const baseUrl = credentials.baseUrl || '';
48
+ const accessToken = await getAccessToken(this);
49
+ try {
50
+ return await this.helpers.httpRequest({
66
51
  method,
67
- url,
68
- qs: query,
52
+ url: `${baseUrl}${endpoint}`,
69
53
  headers: {
70
- 'Accept': 'application/json',
71
- 'Authorization': `Bearer ${token}`,
72
- ...headers,
54
+ 'Content-Type': 'application/json',
55
+ Authorization: `Bearer ${accessToken}`,
73
56
  },
57
+ body,
58
+ qs,
74
59
  json: true,
75
- ...(timeout ? { timeout } : {}),
76
- };
77
- if (['POST', 'PUT', 'PATCH'].includes(method) && body && Object.keys(body).length > 0) {
78
- options.body = body;
79
- }
80
- if (debugLog) {
81
- const qsString = Object.entries(query).map(([k, v]) => `${k}=${v}`).join('&');
82
- debugLog.push({
83
- url: qsString ? `${url}?${qsString}` : url,
84
- method,
85
- qs: { ...query },
86
- headers: { 'Accept': 'application/json', ...headers },
87
- body: body && Object.keys(body).length > 0 ? body : undefined,
88
- });
89
- }
90
- return await this.helpers.httpRequest(options);
91
- };
92
- try {
93
- return await makeRequest(false);
94
- }
95
- catch (error) {
96
- const message = error.message || '';
97
- if (message.includes('OAuth2 token exchange')) {
98
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), message, { description: `The token exchange failed before the API request could be made.` });
99
- }
100
- if (message.includes('text/html') || message.includes('Unsupported content type')) {
101
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `The server returned HTML instead of JSON. This usually means the Base URL is incorrect, authentication failed, or the endpoint does not exist. Verify your credentials and Base URL (${baseUrl}).`, { description: `Request: ${method} ${url}` });
102
- }
103
- if (message.includes('401') || message.includes('Unauthorized') || message.includes('invalid credentials')) {
104
- try {
105
- return await makeRequest(true);
106
- }
107
- catch (retryError) {
108
- const retryMessage = retryError.message || '';
109
- const key = _cacheKey(credentials);
110
- _tokenCache.delete(key);
111
- if (retryMessage.includes('OAuth2 token exchange')) {
112
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), retryMessage, { description: `The token exchange failed on retry.` });
113
- }
114
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Authorization failed - the API returned 401. Verify your Base URL (${baseUrl}) and that the app registration has the correct API permissions.`, { description: `Request: ${method} ${url} — ${retryMessage}` });
115
- }
116
- }
117
- throw error;
118
- }
119
- }
120
- async function apiRequestAllItems(method, resource, body = {}, query = {}, headers = {}, pagination = {}, debug = false, timeout) {
121
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
122
- const returnData = [];
123
- const debugLog = [];
124
- const mode = pagination.paginationMode || 'offset';
125
- const dataPath = (_a = pagination.dataPath) !== null && _a !== void 0 ? _a : '';
126
- const maxPages = pagination.maxPages || 0;
127
- const interval = pagination.requestInterval || 0;
128
- let currentPage = 0;
129
- let lastFirstItem = null;
130
- if (debug) {
131
- debugLog.push({
132
- _paginationConfig: {
133
- mode,
134
- dataPath: dataPath || '(root)',
135
- maxPages: maxPages || 'unlimited',
136
- paginationInput: { ...pagination },
137
- },
138
60
  });
139
61
  }
140
- if (mode === 'offset') {
141
- const pageParam = (_b = pagination.pageParam) !== null && _b !== void 0 ? _b : 'page';
142
- const pageSize = (_c = pagination.pageSize) !== null && _c !== void 0 ? _c : 50;
143
- const sizeParam = (_d = pagination.sizeParam) !== null && _d !== void 0 ? _d : '';
144
- let paramValue = (_e = pagination.startValue) !== null && _e !== void 0 ? _e : 1;
145
- const increment = (_f = pagination.increment) !== null && _f !== void 0 ? _f : 1;
146
- if (debug) {
147
- debugLog.push({
148
- _offsetConfig: { pageParam, pageSize, sizeParam: sizeParam || '(none)', startValue: paramValue, increment },
149
- });
150
- }
151
- if (sizeParam) {
152
- query[sizeParam] = String(pageSize);
153
- }
154
- do {
155
- query[pageParam] = String(paramValue);
156
- const responseData = await apiRequest.call(this, method, resource, body, query, headers, debug ? debugLog : undefined, timeout);
157
- const items = dataPath ? getNestedValue(responseData, dataPath) : responseData;
158
- if (Array.isArray(items)) {
159
- if (items.length === 0) {
160
- if (debug)
161
- debugLog.push({ _paginationStop: 'empty array', page: currentPage });
162
- break;
163
- }
164
- const firstItemKey = JSON.stringify(items[0]);
165
- if (lastFirstItem !== null && firstItemKey === lastFirstItem) {
166
- if (debug)
167
- debugLog.push({ _paginationStop: 'duplicate first item', page: currentPage });
168
- break;
169
- }
170
- lastFirstItem = firstItemKey;
171
- returnData.push(...items);
172
- if (sizeParam && items.length < pageSize) {
173
- if (debug)
174
- debugLog.push({ _paginationStop: 'partial page (last page)', page: currentPage, itemsOnPage: items.length, pageSize });
175
- break;
176
- }
177
- }
178
- else if (items !== null && items !== undefined) {
179
- returnData.push(items);
180
- if (debug)
181
- debugLog.push({ _paginationStop: 'non-array response', page: currentPage });
182
- break;
183
- }
184
- else {
185
- if (debug)
186
- debugLog.push({ _paginationStop: 'null/undefined items', page: currentPage, dataPath });
187
- break;
188
- }
189
- paramValue += increment;
190
- currentPage++;
191
- if (debug)
192
- debugLog.push({ _paginationPage: currentPage, itemsSoFar: returnData.length, nextParamValue: paramValue });
193
- if (maxPages > 0 && currentPage >= maxPages) {
194
- if (debug)
195
- debugLog.push({ _paginationStop: 'maxPages reached', page: currentPage });
196
- break;
197
- }
198
- if (interval > 0)
199
- await new Promise(r => setTimeout(r, interval));
200
- } while (true);
201
- }
202
- else if (mode === 'cursor') {
203
- const cursorParam = (_g = pagination.cursorParam) !== null && _g !== void 0 ? _g : 'cursor';
204
- const cursorPath = (_h = pagination.cursorPath) !== null && _h !== void 0 ? _h : '';
205
- const pageSize = (_j = pagination.pageSize) !== null && _j !== void 0 ? _j : 50;
206
- const sizeParam = (_k = pagination.sizeParam) !== null && _k !== void 0 ? _k : '';
207
- let cursor = null;
208
- if (debug) {
209
- debugLog.push({
210
- _cursorConfig: { cursorParam, cursorPath: cursorPath || '(not set)', pageSize, sizeParam: sizeParam || '(none)' },
211
- });
212
- }
213
- if (sizeParam) {
214
- query[sizeParam] = String(pageSize);
215
- }
216
- do {
217
- if (cursor) {
218
- query[cursorParam] = cursor;
219
- if (debug)
220
- debugLog.push({ _cursorSending: { param: cursorParam, value: cursor } });
221
- }
222
- else if (debug && currentPage === 0) {
223
- debugLog.push({ _cursorInfo: 'First page — no cursor sent yet' });
224
- }
225
- const responseData = await apiRequest.call(this, method, resource, body, query, headers, debug ? debugLog : undefined, timeout);
226
- const items = dataPath ? getNestedValue(responseData, dataPath) : responseData;
227
- if (Array.isArray(items)) {
228
- if (items.length === 0) {
229
- if (debug)
230
- debugLog.push({ _paginationStop: 'empty array', page: currentPage });
231
- break;
232
- }
233
- const firstItemKey = JSON.stringify(items[0]);
234
- if (lastFirstItem !== null && firstItemKey === lastFirstItem) {
235
- if (debug)
236
- debugLog.push({ _paginationStop: 'duplicate first item', page: currentPage });
237
- break;
238
- }
239
- lastFirstItem = firstItemKey;
240
- returnData.push(...items);
241
- if (sizeParam && items.length < pageSize) {
242
- if (debug)
243
- debugLog.push({ _paginationStop: 'partial page (last page)', page: currentPage, itemsOnPage: items.length, pageSize });
244
- break;
245
- }
246
- }
247
- else if (items !== null && items !== undefined) {
248
- returnData.push(items);
249
- if (debug)
250
- debugLog.push({ _paginationStop: 'non-array response', page: currentPage });
251
- break;
252
- }
253
- else {
254
- if (debug)
255
- debugLog.push({ _paginationStop: 'null/undefined items — check dataPath', page: currentPage, dataPath });
256
- break;
257
- }
258
- cursor = cursorPath ? getNestedValue(responseData, cursorPath) : null;
259
- if (debug) {
260
- debugLog.push({ _cursorExtracted: { cursorPath, cursorValue: cursor !== null && cursor !== void 0 ? cursor : '(not found — pagination will stop)' } });
261
- }
262
- currentPage++;
263
- if (maxPages > 0 && currentPage >= maxPages) {
264
- if (debug)
265
- debugLog.push({ _paginationStop: 'maxPages reached', page: currentPage });
266
- break;
267
- }
268
- if (!cursor) {
269
- if (debug)
270
- debugLog.push({ _paginationStop: 'no cursor in response — end of data or cursorPath is wrong', page: currentPage, cursorPath });
271
- break;
272
- }
273
- if (debug)
274
- debugLog.push({ _paginationPage: currentPage, itemsSoFar: returnData.length });
275
- if (interval > 0)
276
- await new Promise(r => setTimeout(r, interval));
277
- } while (true);
278
- }
279
- else if (mode === 'url') {
280
- const nextUrlPath = (_l = pagination.nextUrlPath) !== null && _l !== void 0 ? _l : '';
281
- const pageSize = (_m = pagination.pageSize) !== null && _m !== void 0 ? _m : 50;
282
- const sizeParam = (_o = pagination.sizeParam) !== null && _o !== void 0 ? _o : '';
283
- let nextUrl = null;
284
- let isFirstRequest = true;
285
- if (debug) {
286
- debugLog.push({
287
- _urlConfig: { nextUrlPath: nextUrlPath || '(not set)', pageSize, sizeParam: sizeParam || '(none)' },
288
- });
289
- }
290
- if (sizeParam) {
291
- query[sizeParam] = String(pageSize);
292
- }
293
- do {
294
- let responseData;
295
- if (isFirstRequest || !nextUrl) {
296
- responseData = await apiRequest.call(this, method, resource, body, query, headers, debug ? debugLog : undefined, timeout);
297
- isFirstRequest = false;
298
- }
299
- else {
300
- let nextResource = nextUrl;
301
- const mergedQuery = { ...query };
302
- if (nextUrl.startsWith('http://') || nextUrl.startsWith('https://')) {
303
- const parsed = new URL(nextUrl);
304
- parsed.searchParams.forEach((v, k) => { mergedQuery[k] = v; });
305
- nextResource = parsed.origin + parsed.pathname;
306
- }
307
- if (debug)
308
- debugLog.push({ _urlFollowing: nextUrl });
309
- responseData = await apiRequest.call(this, method, nextResource, body, mergedQuery, headers, debug ? debugLog : undefined, timeout);
310
- }
311
- const items = dataPath ? getNestedValue(responseData, dataPath) : responseData;
312
- if (Array.isArray(items)) {
313
- if (items.length === 0) {
314
- if (debug)
315
- debugLog.push({ _paginationStop: 'empty array', page: currentPage });
316
- break;
317
- }
318
- const firstItemKey = JSON.stringify(items[0]);
319
- if (lastFirstItem !== null && firstItemKey === lastFirstItem) {
320
- if (debug)
321
- debugLog.push({ _paginationStop: 'duplicate first item', page: currentPage });
322
- break;
323
- }
324
- lastFirstItem = firstItemKey;
325
- returnData.push(...items);
326
- if (sizeParam && items.length < pageSize) {
327
- if (debug)
328
- debugLog.push({ _paginationStop: 'partial page (last page)', page: currentPage, itemsOnPage: items.length, pageSize });
329
- break;
330
- }
331
- }
332
- else if (items !== null && items !== undefined) {
333
- returnData.push(items);
334
- if (debug)
335
- debugLog.push({ _paginationStop: 'non-array response', page: currentPage });
336
- break;
337
- }
338
- else {
339
- if (debug)
340
- debugLog.push({ _paginationStop: 'null/undefined items — check dataPath', page: currentPage, dataPath });
341
- break;
342
- }
343
- nextUrl = nextUrlPath ? getNestedValue(responseData, nextUrlPath) : null;
344
- if (debug) {
345
- debugLog.push({ _urlExtracted: { nextUrlPath, nextUrlValue: nextUrl !== null && nextUrl !== void 0 ? nextUrl : '(not found — pagination will stop)' } });
346
- }
347
- currentPage++;
348
- if (maxPages > 0 && currentPage >= maxPages) {
349
- if (debug)
350
- debugLog.push({ _paginationStop: 'maxPages reached', page: currentPage });
351
- break;
352
- }
353
- if (!nextUrl) {
354
- if (debug)
355
- debugLog.push({ _paginationStop: 'no next URL in response', page: currentPage, nextUrlPath });
356
- break;
357
- }
358
- if (debug)
359
- debugLog.push({ _paginationPage: currentPage, itemsSoFar: returnData.length });
360
- if (interval > 0)
361
- await new Promise(r => setTimeout(r, interval));
362
- } while (true);
363
- }
364
- if (debug) {
365
- debugLog.push({ _paginationSummary: { mode, totalItems: returnData.length, totalPages: currentPage + 1 } });
366
- }
367
- if (debug && debugLog.length > 0) {
368
- returnData.unshift({ __debug: debugLog });
62
+ catch (error) {
63
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), error);
369
64
  }
370
- return returnData;
371
65
  }
372
66
  //# sourceMappingURL=GenericFunctions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GenericFunctions.js","sourceRoot":"","sources":["../../../nodes/HaloPSA/GenericFunctions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GenericFunctions.js","sourceRoot":"","sources":["../src/nodes/HaloPSA/GenericFunctions.ts"],"names":[],"mappings":"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"}
@@ -120125,7 +120125,7 @@ class HaloPSA {
120125
120125
  displayName: 'Page Parameter Name (Offset)',
120126
120126
  name: 'pageParam',
120127
120127
  type: 'string',
120128
- default: 'page',
120128
+ default: 'page_no',
120129
120129
  description: 'Offset mode. Query parameter name for the page number or offset. E.g. page, offset, skip.',
120130
120130
  },
120131
120131
  {
@@ -120146,14 +120146,14 @@ class HaloPSA {
120146
120146
  displayName: 'Page Size',
120147
120147
  name: 'pageSize',
120148
120148
  type: 'number',
120149
- default: 50,
120149
+ default: 100,
120150
120150
  description: 'Expected items per page. Used to detect the last page.',
120151
120151
  },
120152
120152
  {
120153
120153
  displayName: 'Page Size Parameter Name (Offset)',
120154
120154
  name: 'sizeParam',
120155
120155
  type: 'string',
120156
- default: '',
120156
+ default: 'page_size',
120157
120157
  description: 'Offset mode. Query parameter name for page size (e.g. per_page, limit). Leave empty to not send.',
120158
120158
  },
120159
120159
  {