n8n-nodes-arubaclearpass 1.0.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.
Files changed (80) hide show
  1. package/dist/credentials/ClearPassApi.credentials.d.ts +7 -0
  2. package/dist/credentials/ClearPassApi.credentials.js +69 -0
  3. package/dist/credentials/ClearPassOAuth2Api.credentials.d.ts +10 -0
  4. package/dist/credentials/ClearPassOAuth2Api.credentials.js +55 -0
  5. package/dist/nodes/ArubaCentral/clearpass.svg +4 -0
  6. package/dist/nodes/ArubaClearPass/ArubaClearPass.node.d.ts +5 -0
  7. package/dist/nodes/ArubaClearPass/ArubaClearPass.node.js +173 -0
  8. package/dist/nodes/ArubaClearPass/descriptions/EnforcementProfile/EnforcementProfile.descriptions.d.ts +4 -0
  9. package/dist/nodes/ArubaClearPass/descriptions/EnforcementProfile/EnforcementProfile.descriptions.js +361 -0
  10. package/dist/nodes/ArubaClearPass/descriptions/EnforcementProfile/index.d.ts +2 -0
  11. package/dist/nodes/ArubaClearPass/descriptions/EnforcementProfile/index.js +11 -0
  12. package/dist/nodes/ArubaClearPass/descriptions/Identities/ApiClient.descriptions.d.ts +0 -0
  13. package/dist/nodes/ArubaClearPass/descriptions/Identities/ApiClient.descriptions.js +0 -0
  14. package/dist/nodes/ArubaClearPass/descriptions/Identities/DenyListedUsers.descriptions.d.ts +0 -0
  15. package/dist/nodes/ArubaClearPass/descriptions/Identities/DenyListedUsers.descriptions.js +0 -0
  16. package/dist/nodes/ArubaClearPass/descriptions/Identities/Device.descriptions.d.ts +4 -0
  17. package/dist/nodes/ArubaClearPass/descriptions/Identities/Device.descriptions.js +668 -0
  18. package/dist/nodes/ArubaClearPass/descriptions/Identities/Endpoint.descriptions.d.ts +4 -0
  19. package/dist/nodes/ArubaClearPass/descriptions/Identities/Endpoint.descriptions.js +255 -0
  20. package/dist/nodes/ArubaClearPass/descriptions/Identities/ExternalAccount.descriptions.d.ts +0 -0
  21. package/dist/nodes/ArubaClearPass/descriptions/Identities/ExternalAccount.descriptions.js +0 -0
  22. package/dist/nodes/ArubaClearPass/descriptions/Identities/GuestUser.descriptions.d.ts +4 -0
  23. package/dist/nodes/ArubaClearPass/descriptions/Identities/GuestUser.descriptions.js +477 -0
  24. package/dist/nodes/ArubaClearPass/descriptions/Identities/LocalUser.descriptions.d.ts +4 -0
  25. package/dist/nodes/ArubaClearPass/descriptions/Identities/LocalUser.descriptions.js +384 -0
  26. package/dist/nodes/ArubaClearPass/descriptions/Identities/StaticHostList.descriptions.d.ts +0 -0
  27. package/dist/nodes/ArubaClearPass/descriptions/Identities/StaticHostList.descriptions.js +0 -0
  28. package/dist/nodes/ArubaClearPass/descriptions/Identities/index.d.ts +2 -0
  29. package/dist/nodes/ArubaClearPass/descriptions/Identities/index.js +23 -0
  30. package/dist/nodes/ArubaClearPass/descriptions/PolicyElements/EnforcementPolicy.descriptions.d.ts +4 -0
  31. package/dist/nodes/ArubaClearPass/descriptions/PolicyElements/EnforcementPolicy.descriptions.js +432 -0
  32. package/dist/nodes/ArubaClearPass/descriptions/PolicyElements/Role.descriptions.d.ts +4 -0
  33. package/dist/nodes/ArubaClearPass/descriptions/PolicyElements/Role.descriptions.js +263 -0
  34. package/dist/nodes/ArubaClearPass/descriptions/PolicyElements/RoleMapping.descriptions.d.ts +4 -0
  35. package/dist/nodes/ArubaClearPass/descriptions/PolicyElements/RoleMapping.descriptions.js +365 -0
  36. package/dist/nodes/ArubaClearPass/descriptions/PolicyElements/index.d.ts +2 -0
  37. package/dist/nodes/ArubaClearPass/descriptions/PolicyElements/index.js +19 -0
  38. package/dist/nodes/ArubaClearPass/helpers/apiRequest.d.ts +9 -0
  39. package/dist/nodes/ArubaClearPass/helpers/apiRequest.js +72 -0
  40. package/dist/nodes/ArubaClearPass/helpers/errorHandler.d.ts +4 -0
  41. package/dist/nodes/ArubaClearPass/helpers/errorHandler.js +31 -0
  42. package/dist/nodes/ArubaClearPass/helpers/executeOperation.d.ts +5 -0
  43. package/dist/nodes/ArubaClearPass/helpers/executeOperation.js +164 -0
  44. package/dist/nodes/ArubaClearPass/helpers/responseFormatter.d.ts +5 -0
  45. package/dist/nodes/ArubaClearPass/helpers/responseFormatter.js +17 -0
  46. package/dist/nodes/ArubaClearPass/helpers/tokenManager.d.ts +5 -0
  47. package/dist/nodes/ArubaClearPass/helpers/tokenManager.js +63 -0
  48. package/dist/nodes/ArubaClearPass/methods/EnforcementProfile/EnforcementProfile.methods.d.ts +41 -0
  49. package/dist/nodes/ArubaClearPass/methods/EnforcementProfile/EnforcementProfile.methods.js +395 -0
  50. package/dist/nodes/ArubaClearPass/methods/Identities/Device.methods.d.ts +41 -0
  51. package/dist/nodes/ArubaClearPass/methods/Identities/Device.methods.js +409 -0
  52. package/dist/nodes/ArubaClearPass/methods/Identities/Endpoint.methods.d.ts +33 -0
  53. package/dist/nodes/ArubaClearPass/methods/Identities/Endpoint.methods.js +212 -0
  54. package/dist/nodes/ArubaClearPass/methods/Identities/GuestUser.methods.d.ts +41 -0
  55. package/dist/nodes/ArubaClearPass/methods/Identities/GuestUser.methods.js +589 -0
  56. package/dist/nodes/ArubaClearPass/methods/Identities/LocalUser.methods.d.ts +41 -0
  57. package/dist/nodes/ArubaClearPass/methods/Identities/LocalUser.methods.js +407 -0
  58. package/dist/nodes/ArubaClearPass/methods/PolicyElements/EnforcementPolicy.methods.d.ts +41 -0
  59. package/dist/nodes/ArubaClearPass/methods/PolicyElements/EnforcementPolicy.methods.js +361 -0
  60. package/dist/nodes/ArubaClearPass/methods/PolicyElements/Role.methods.d.ts +41 -0
  61. package/dist/nodes/ArubaClearPass/methods/PolicyElements/Role.methods.js +298 -0
  62. package/dist/nodes/ArubaClearPass/methods/PolicyElements/RoleMapping.methods.d.ts +41 -0
  63. package/dist/nodes/ArubaClearPass/methods/PolicyElements/RoleMapping.methods.js +358 -0
  64. package/dist/nodes/ArubaClearPass/types/EnforcementProfile/EnforcementProfile.types.d.ts +131 -0
  65. package/dist/nodes/ArubaClearPass/types/EnforcementProfile/EnforcementProfile.types.js +2 -0
  66. package/dist/nodes/ArubaClearPass/types/Identities/Device.types.d.ts +55 -0
  67. package/dist/nodes/ArubaClearPass/types/Identities/Device.types.js +2 -0
  68. package/dist/nodes/ArubaClearPass/types/Identities/Endpoint.types.d.ts +12 -0
  69. package/dist/nodes/ArubaClearPass/types/Identities/Endpoint.types.js +2 -0
  70. package/dist/nodes/ArubaClearPass/types/Identities/GuestUser.types.d.ts +31 -0
  71. package/dist/nodes/ArubaClearPass/types/Identities/GuestUser.types.js +2 -0
  72. package/dist/nodes/ArubaClearPass/types/Identities/LocalUser.types.d.ts +51 -0
  73. package/dist/nodes/ArubaClearPass/types/Identities/LocalUser.types.js +2 -0
  74. package/dist/nodes/ArubaClearPass/types/PolicyElements/EnforcementPolicy.types.d.ts +37 -0
  75. package/dist/nodes/ArubaClearPass/types/PolicyElements/EnforcementPolicy.types.js +2 -0
  76. package/dist/nodes/ArubaClearPass/types/PolicyElements/Role.types.d.ts +15 -0
  77. package/dist/nodes/ArubaClearPass/types/PolicyElements/Role.types.js +2 -0
  78. package/dist/nodes/ArubaClearPass/types/PolicyElements/RoleMapping.types.d.ts +63 -0
  79. package/dist/nodes/ArubaClearPass/types/PolicyElements/RoleMapping.types.js +2 -0
  80. package/package.json +72 -0
@@ -0,0 +1,365 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.roleMappingProperties = exports.roleMappingFields = exports.roleMappingOperations = void 0;
4
+ // Define operations for RoleMapping resource
5
+ exports.roleMappingOperations = {
6
+ displayName: 'Operation',
7
+ name: 'operation',
8
+ type: 'options',
9
+ displayOptions: {
10
+ show: {
11
+ domain: ['PolicyElements'],
12
+ resource: ['RoleMapping'],
13
+ },
14
+ },
15
+ options: [
16
+ {
17
+ name: 'Create',
18
+ value: 'create',
19
+ description: 'Create a new role mapping',
20
+ action: 'Create a role mapping',
21
+ },
22
+ {
23
+ name: 'Delete',
24
+ value: 'delete',
25
+ description: 'Delete a role mapping',
26
+ action: 'Delete a role mapping',
27
+ },
28
+ {
29
+ name: 'Get',
30
+ value: 'get',
31
+ description: 'Get a role mapping by ID',
32
+ action: 'Get a role mapping',
33
+ },
34
+ {
35
+ name: 'Get By Name',
36
+ value: 'getByName',
37
+ description: 'Get a role mapping by name',
38
+ action: 'Get a role mapping by name',
39
+ },
40
+ {
41
+ name: 'List',
42
+ value: 'list',
43
+ description: 'Get all role mappings',
44
+ action: 'List all role mappings',
45
+ },
46
+ {
47
+ name: 'Update',
48
+ value: 'update',
49
+ description: 'Update a role mapping',
50
+ action: 'Update a role mapping',
51
+ },
52
+ {
53
+ name: 'Replace',
54
+ value: 'replace',
55
+ description: 'Replace a role mapping',
56
+ action: 'Replace a role mapping',
57
+ },
58
+ {
59
+ name: 'Delete By Name',
60
+ value: 'deleteByName',
61
+ description: 'Delete a role mapping by name',
62
+ action: 'Delete a role mapping by name',
63
+ },
64
+ {
65
+ name: 'Update By Name',
66
+ value: 'updateByName',
67
+ description: 'Update a role mapping by name',
68
+ action: 'Update a role mapping by name',
69
+ },
70
+ {
71
+ name: 'Replace By Name',
72
+ value: 'replaceByName',
73
+ description: 'Replace a role mapping by name',
74
+ action: 'Replace a role mapping by name',
75
+ },
76
+ ],
77
+ default: 'list',
78
+ };
79
+ // Define fields for RoleMapping resource
80
+ exports.roleMappingFields = [
81
+ // Fields for ID-based operations
82
+ {
83
+ displayName: 'Role Mapping ID',
84
+ name: 'roleMappingId',
85
+ type: 'string',
86
+ required: true,
87
+ default: '',
88
+ displayOptions: {
89
+ show: {
90
+ domain: ['PolicyElements'],
91
+ resource: ['RoleMapping'],
92
+ operation: ['get', 'update', 'delete', 'replace'],
93
+ },
94
+ },
95
+ description: 'The ID of the role mapping',
96
+ },
97
+ // Fields for name-based operations
98
+ {
99
+ displayName: 'Name',
100
+ name: 'name',
101
+ type: 'string',
102
+ required: true,
103
+ default: '',
104
+ displayOptions: {
105
+ show: {
106
+ domain: ['PolicyElements'],
107
+ resource: ['RoleMapping'],
108
+ operation: ['getByName', 'deleteByName', 'updateByName', 'replaceByName'],
109
+ },
110
+ },
111
+ description: 'The unique name of the role mapping',
112
+ },
113
+ // Common fields for create and replace operations
114
+ {
115
+ displayName: 'Name',
116
+ name: 'name',
117
+ type: 'string',
118
+ required: true,
119
+ default: '',
120
+ displayOptions: {
121
+ show: {
122
+ domain: ['PolicyElements'],
123
+ resource: ['RoleMapping'],
124
+ operation: ['create', 'replace', 'replaceByName'],
125
+ },
126
+ },
127
+ description: 'Name of the role mapping policy',
128
+ },
129
+ {
130
+ displayName: 'Default Role Name',
131
+ name: 'default_role_name',
132
+ type: 'string',
133
+ required: true,
134
+ default: '',
135
+ displayOptions: {
136
+ show: {
137
+ domain: ['PolicyElements'],
138
+ resource: ['RoleMapping'],
139
+ operation: ['create', 'replace', 'replaceByName'],
140
+ },
141
+ },
142
+ description: 'Default role name for the role mapping',
143
+ },
144
+ {
145
+ displayName: 'Rule Combine Algorithm',
146
+ name: 'rule_combine_algo',
147
+ type: 'options',
148
+ options: [
149
+ {
150
+ name: 'First Applicable',
151
+ value: 'first-applicable',
152
+ description: 'Stop processing once a rule matches',
153
+ },
154
+ {
155
+ name: 'Evaluate All',
156
+ value: 'evaluate-all',
157
+ description: 'Process all rules regardless of matches',
158
+ },
159
+ ],
160
+ required: true,
161
+ default: 'first-applicable',
162
+ displayOptions: {
163
+ show: {
164
+ domain: ['PolicyElements'],
165
+ resource: ['RoleMapping'],
166
+ operation: ['create', 'replace', 'replaceByName'],
167
+ },
168
+ },
169
+ description: 'Algorithm to use when evaluating rules',
170
+ },
171
+ {
172
+ displayName: 'Description',
173
+ name: 'description',
174
+ type: 'string',
175
+ required: false,
176
+ default: '',
177
+ displayOptions: {
178
+ show: {
179
+ domain: ['PolicyElements'],
180
+ resource: ['RoleMapping'],
181
+ operation: ['create', 'replace', 'replaceByName'],
182
+ },
183
+ },
184
+ description: 'Description of the role mapping',
185
+ },
186
+ // Rules JSON Field for create/replace - This is complex, so we'll use JSON input
187
+ {
188
+ displayName: 'Rules',
189
+ name: 'rules',
190
+ type: 'json',
191
+ required: true,
192
+ default: '[]',
193
+ displayOptions: {
194
+ show: {
195
+ domain: ['PolicyElements'],
196
+ resource: ['RoleMapping'],
197
+ operation: ['create', 'replace', 'replaceByName'],
198
+ },
199
+ },
200
+ description: 'JSON array of mapping rules. Each rule should have match_type, role_name, and condition properties.',
201
+ placeholder: `[
202
+ {
203
+ "match_type": "AND",
204
+ "role_name": "Guest",
205
+ "condition": {
206
+ "type": "Connection",
207
+ "name": "Connection:Protocol",
208
+ "oper": "EQUALS",
209
+ "value": "MAC"
210
+ }
211
+ }
212
+ ]`,
213
+ },
214
+ // Update fields
215
+ {
216
+ displayName: 'Update Fields',
217
+ name: 'updateFields',
218
+ type: 'collection',
219
+ placeholder: 'Add Field',
220
+ default: {},
221
+ displayOptions: {
222
+ show: {
223
+ domain: ['PolicyElements'],
224
+ resource: ['RoleMapping'],
225
+ operation: ['update', 'updateByName'],
226
+ },
227
+ },
228
+ options: [
229
+ {
230
+ displayName: 'Name',
231
+ name: 'name',
232
+ type: 'string',
233
+ default: '',
234
+ description: 'Name of the role mapping policy',
235
+ },
236
+ {
237
+ displayName: 'Description',
238
+ name: 'description',
239
+ type: 'string',
240
+ default: '',
241
+ description: 'Description of the role mapping',
242
+ },
243
+ {
244
+ displayName: 'Default Role Name',
245
+ name: 'default_role_name',
246
+ type: 'string',
247
+ default: '',
248
+ description: 'Default role name for the role mapping',
249
+ },
250
+ {
251
+ displayName: 'Rule Combine Algorithm',
252
+ name: 'rule_combine_algo',
253
+ type: 'options',
254
+ options: [
255
+ {
256
+ name: 'First Applicable',
257
+ value: 'first-applicable',
258
+ description: 'Stop processing once a rule matches',
259
+ },
260
+ {
261
+ name: 'Evaluate All',
262
+ value: 'evaluate-all',
263
+ description: 'Process all rules regardless of matches',
264
+ },
265
+ ],
266
+ default: 'first-applicable',
267
+ description: 'Algorithm to use when evaluating rules',
268
+ },
269
+ {
270
+ displayName: 'Rules',
271
+ name: 'rules',
272
+ type: 'json',
273
+ default: '[]',
274
+ description: 'JSON array of mapping rules. Each rule should have match_type, role_name, and condition properties.',
275
+ placeholder: `[
276
+ {
277
+ "match_type": "AND",
278
+ "role_name": "Guest",
279
+ "condition": {
280
+ "type": "Connection",
281
+ "name": "Connection:Protocol",
282
+ "oper": "EQUALS",
283
+ "value": "MAC"
284
+ }
285
+ }
286
+ ]`,
287
+ },
288
+ ],
289
+ },
290
+ // Fields for list operation
291
+ {
292
+ displayName: 'Return All',
293
+ name: 'returnAll',
294
+ type: 'boolean',
295
+ displayOptions: {
296
+ show: {
297
+ domain: ['PolicyElements'],
298
+ resource: ['RoleMapping'],
299
+ operation: ['list'],
300
+ },
301
+ },
302
+ default: false,
303
+ description: 'Whether to return all results or only up to a given limit',
304
+ },
305
+ {
306
+ displayName: 'Limit',
307
+ name: 'limit',
308
+ type: 'number',
309
+ displayOptions: {
310
+ show: {
311
+ domain: ['PolicyElements'],
312
+ resource: ['RoleMapping'],
313
+ operation: ['list'],
314
+ returnAll: [false],
315
+ },
316
+ },
317
+ typeOptions: {
318
+ minValue: 1,
319
+ maxValue: 1000,
320
+ },
321
+ default: 100,
322
+ description: 'Max number of results to return',
323
+ },
324
+ {
325
+ displayName: 'Filters',
326
+ name: 'filters',
327
+ type: 'collection',
328
+ placeholder: 'Add Filter',
329
+ default: {},
330
+ displayOptions: {
331
+ show: {
332
+ domain: ['PolicyElements'],
333
+ resource: ['RoleMapping'],
334
+ operation: ['list'],
335
+ },
336
+ },
337
+ options: [
338
+ {
339
+ displayName: 'Filter',
340
+ name: 'filter',
341
+ type: 'string',
342
+ default: '',
343
+ description: 'JSON filter expression specifying the items to return',
344
+ placeholder: '{"name": {"$contains": "Guest"}}',
345
+ },
346
+ {
347
+ displayName: 'Sort',
348
+ name: 'sort',
349
+ type: 'string',
350
+ default: '+id',
351
+ description: 'Sort ordering for returned items (default +id)',
352
+ placeholder: '+name or -created_at',
353
+ },
354
+ {
355
+ displayName: 'Calculate Count',
356
+ name: 'calculate_count',
357
+ type: 'boolean',
358
+ default: false,
359
+ description: 'Whether to calculate the total item count',
360
+ },
361
+ ],
362
+ },
363
+ ];
364
+ // Export combined properties for use in index.ts
365
+ exports.roleMappingProperties = [exports.roleMappingOperations, ...exports.roleMappingFields];
@@ -0,0 +1,2 @@
1
+ import { INodePropertyOptions } from 'n8n-workflow';
2
+ export declare const policyElementsResources: INodePropertyOptions[];
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.policyElementsResources = void 0;
4
+ // Define the resources for the PolicyElements domain
5
+ exports.policyElementsResources = [
6
+ {
7
+ name: 'Role',
8
+ value: 'Role',
9
+ },
10
+ {
11
+ name: 'Role Mapping',
12
+ value: 'RoleMapping',
13
+ },
14
+ {
15
+ name: 'Enforcement Policy',
16
+ value: 'EnforcementPolicy',
17
+ },
18
+ // Add more resources as needed
19
+ ];
@@ -0,0 +1,9 @@
1
+ import { IExecuteFunctions, IHookFunctions, ILoadOptionsFunctions, IDataObject, IHttpRequestMethods } from 'n8n-workflow';
2
+ /**
3
+ * Make an API request to Aruba ClearPass
4
+ */
5
+ export declare function apiRequest(this: IExecuteFunctions | ILoadOptionsFunctions | IHookFunctions, method: IHttpRequestMethods, endpoint: string, body?: IDataObject, query?: IDataObject): Promise<any>;
6
+ /**
7
+ * Make paginated API requests to Aruba ClearPass and return all results
8
+ */
9
+ export declare function apiRequestAllItems(this: IExecuteFunctions | ILoadOptionsFunctions, method: IHttpRequestMethods, endpoint: string, body?: IDataObject, query?: IDataObject): Promise<any>;
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.apiRequest = apiRequest;
4
+ exports.apiRequestAllItems = apiRequestAllItems;
5
+ // helpers/apiRequest.ts
6
+ const n8n_workflow_1 = require("n8n-workflow");
7
+ const tokenManager_1 = require("./tokenManager");
8
+ /**
9
+ * Make an API request to Aruba ClearPass
10
+ */
11
+ async function apiRequest(method, endpoint, body = {}, query = {}) {
12
+ const credentials = (await this.getCredentials('clearPassApi'));
13
+ const baseUrl = credentials.url;
14
+ const options = {
15
+ method,
16
+ url: `${baseUrl}/api${endpoint}`,
17
+ headers: {
18
+ 'Content-Type': 'application/json',
19
+ },
20
+ qs: query,
21
+ body,
22
+ json: true,
23
+ };
24
+ if (Object.keys(body).length === 0) {
25
+ delete options.body;
26
+ }
27
+ try {
28
+ // If using Client ID/Secret auth, get token directly. Otherwise, use OAuth2 authentication
29
+ if (credentials.authType === 'clientCredentials') {
30
+ const token = await tokenManager_1.getToken.call(this, credentials);
31
+ options.headers = {
32
+ ...options.headers,
33
+ Authorization: `Bearer ${token}`,
34
+ };
35
+ return await this.helpers.request(options);
36
+ }
37
+ else {
38
+ // OAuth2 authentication (processed by n8n)
39
+ return await this.helpers.requestWithAuthentication.call(this, 'clearPassApi', options);
40
+ }
41
+ }
42
+ catch (error) {
43
+ // Fix error handling
44
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), error);
45
+ }
46
+ }
47
+ /**
48
+ * Make paginated API requests to Aruba ClearPass and return all results
49
+ */
50
+ async function apiRequestAllItems(method, endpoint, body = {}, query = {}) {
51
+ const returnData = [];
52
+ // Set initial parameters for pagination
53
+ let responseData;
54
+ query.limit = query.limit || 100;
55
+ query.offset = 0;
56
+ do {
57
+ responseData = await apiRequest.call(this, method, endpoint, body, query);
58
+ if (responseData._embedded && responseData._embedded.items) {
59
+ returnData.push.apply(returnData, responseData._embedded.items);
60
+ }
61
+ else if (Array.isArray(responseData)) {
62
+ returnData.push.apply(returnData, responseData);
63
+ }
64
+ else {
65
+ returnData.push(responseData);
66
+ }
67
+ query.offset = query.offset + query.limit;
68
+ } while (responseData._embedded &&
69
+ responseData._embedded.items &&
70
+ responseData._embedded.items.length === query.limit);
71
+ return returnData;
72
+ }
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Handle common error scenarios for ClearPass API
3
+ */
4
+ export declare function handleApiError(node: any, error: any): never;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleApiError = handleApiError;
4
+ // helpers/errorHandler.ts
5
+ const n8n_workflow_1 = require("n8n-workflow");
6
+ /**
7
+ * Handle common error scenarios for ClearPass API
8
+ */
9
+ function handleApiError(node, error) {
10
+ let errorMessage = 'An error occurred while making the API request: ';
11
+ // Handle standard API error responses
12
+ if (error.response && error.response.body) {
13
+ const body = error.response.body;
14
+ if (typeof body.detail === 'string') {
15
+ errorMessage += body.detail;
16
+ }
17
+ else if (typeof body.message === 'string') {
18
+ errorMessage += body.message;
19
+ }
20
+ else if (typeof body.title === 'string') {
21
+ errorMessage += body.title;
22
+ }
23
+ else {
24
+ errorMessage += JSON.stringify(body);
25
+ }
26
+ }
27
+ else if (error.message) {
28
+ errorMessage += error.message;
29
+ }
30
+ throw new n8n_workflow_1.NodeApiError(node, error, { message: errorMessage });
31
+ }
@@ -0,0 +1,5 @@
1
+ import { IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';
2
+ /**
3
+ * Execute the appropriate operation based on user selection
4
+ */
5
+ export declare function executeOperation(this: IExecuteFunctions): Promise<INodeExecutionData[]>;
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.executeOperation = executeOperation;
37
+ const deviceMethods = __importStar(require("../methods/Identities/Device.methods"));
38
+ const endpointMethods = __importStar(require("../methods/Identities/Endpoint.methods"));
39
+ const guestUserMethods = __importStar(require("../methods/Identities/GuestUser.methods"));
40
+ const localUserMethods = __importStar(require("../methods/Identities/LocalUser.methods"));
41
+ const roleMethods = __importStar(require("../methods/PolicyElements/Role.methods"));
42
+ const roleMappingMethods = __importStar(require("../methods/PolicyElements/RoleMapping.methods"));
43
+ const enforcementPolicyMethods = __importStar(require("../methods/PolicyElements/EnforcementPolicy.methods"));
44
+ const enforcementProfileMethods = __importStar(require("../methods/EnforcementProfile/EnforcementProfile.methods"));
45
+ // ... Add more methods for other endpoints here
46
+ /**
47
+ * Execute the appropriate operation based on user selection
48
+ */
49
+ async function executeOperation() {
50
+ const domain = this.getNodeParameter('domain', 0);
51
+ const resource = this.getNodeParameter('resource', 0);
52
+ const operation = this.getNodeParameter('operation', 0);
53
+ console.log(`Executing ${domain}.${resource}.${operation}`);
54
+ // Define handlers for each domain/resource/operation combination
55
+ const handlers = {
56
+ Identities: {
57
+ Device: {
58
+ list: deviceMethods.listDevices,
59
+ get: deviceMethods.getDevice,
60
+ getByMac: deviceMethods.getDeviceByMac,
61
+ create: deviceMethods.createDevice,
62
+ update: deviceMethods.updateDevice,
63
+ updateByMac: deviceMethods.updateDeviceByMac,
64
+ replace: deviceMethods.replaceDevice,
65
+ replaceByMac: deviceMethods.replaceDeviceByMac,
66
+ delete: deviceMethods.deleteDevice,
67
+ deleteByMac: deviceMethods.deleteDeviceByMac,
68
+ },
69
+ Endpoint: {
70
+ list: endpointMethods.listEndpoints,
71
+ get: endpointMethods.getEndpoint,
72
+ getByMac: endpointMethods.getEndpointByMac,
73
+ create: endpointMethods.createEndpoint,
74
+ update: endpointMethods.updateEndpoint,
75
+ updateByMac: endpointMethods.updateEndpointByMac,
76
+ delete: endpointMethods.deleteEndpoint,
77
+ deleteByMac: endpointMethods.deleteEndpointByMac,
78
+ },
79
+ GuestUser: {
80
+ // Add this section for GuestUser operations
81
+ list: guestUserMethods.listGuestUsers,
82
+ get: guestUserMethods.getGuestUser,
83
+ getByUsername: guestUserMethods.getGuestUserByUsername,
84
+ create: guestUserMethods.createGuestUser,
85
+ update: guestUserMethods.updateGuestUser,
86
+ updateByUsername: guestUserMethods.updateGuestUserByUsername,
87
+ replace: guestUserMethods.replaceGuestUser,
88
+ replaceByUsername: guestUserMethods.replaceGuestUserByUsername,
89
+ delete: guestUserMethods.deleteGuestUser,
90
+ deleteByUsername: guestUserMethods.deleteGuestUserByUsername,
91
+ },
92
+ LocalUser: {
93
+ list: localUserMethods.listLocalUsers,
94
+ get: localUserMethods.getLocalUser,
95
+ getByUserId: localUserMethods.getLocalUserByUserId,
96
+ create: localUserMethods.createLocalUser,
97
+ update: localUserMethods.updateLocalUser,
98
+ updateByUserId: localUserMethods.updateLocalUserByUserId,
99
+ replace: localUserMethods.replaceLocalUser,
100
+ replaceByUserId: localUserMethods.replaceLocalUserByUserId,
101
+ delete: localUserMethods.deleteLocalUser,
102
+ deleteByUserId: localUserMethods.deleteLocalUserByUserId,
103
+ },
104
+ },
105
+ PolicyElements: {
106
+ Role: {
107
+ list: roleMethods.listRoles,
108
+ get: roleMethods.getRole,
109
+ getByName: roleMethods.getRoleByName,
110
+ create: roleMethods.createRole,
111
+ update: roleMethods.updateRole,
112
+ updateByName: roleMethods.updateRoleByName,
113
+ replace: roleMethods.replaceRole,
114
+ replaceByName: roleMethods.replaceRoleByName,
115
+ delete: roleMethods.deleteRole,
116
+ deleteByName: roleMethods.deleteRoleByName,
117
+ },
118
+ RoleMapping: {
119
+ list: roleMappingMethods.listRoleMappings,
120
+ get: roleMappingMethods.getRoleMapping,
121
+ getByName: roleMappingMethods.getRoleMappingByName,
122
+ create: roleMappingMethods.createRoleMapping,
123
+ update: roleMappingMethods.updateRoleMapping,
124
+ updateByName: roleMappingMethods.updateRoleMappingByName,
125
+ replace: roleMappingMethods.replaceRoleMapping,
126
+ replaceByName: roleMappingMethods.replaceRoleMappingByName,
127
+ delete: roleMappingMethods.deleteRoleMapping,
128
+ deleteByName: roleMappingMethods.deleteRoleMappingByName,
129
+ },
130
+ EnforcementPolicy: {
131
+ list: enforcementPolicyMethods.listEnforcementPolicies,
132
+ get: enforcementPolicyMethods.getEnforcementPolicy,
133
+ getByName: enforcementPolicyMethods.getEnforcementPolicyByName,
134
+ create: enforcementPolicyMethods.createEnforcementPolicy,
135
+ update: enforcementPolicyMethods.updateEnforcementPolicy,
136
+ updateByName: enforcementPolicyMethods.updateEnforcementPolicyByName,
137
+ replace: enforcementPolicyMethods.replaceEnforcementPolicy,
138
+ replaceByName: enforcementPolicyMethods.replaceEnforcementPolicyByName,
139
+ delete: enforcementPolicyMethods.deleteEnforcementPolicy,
140
+ deleteByName: enforcementPolicyMethods.deleteEnforcementPolicyByName,
141
+ },
142
+ // Add other PolicyElements resources as needed
143
+ },
144
+ EnforcementProfile: {
145
+ EnforcementProfile: {
146
+ list: enforcementProfileMethods.listEnforcementProfiles,
147
+ get: enforcementProfileMethods.getEnforcementProfile,
148
+ getByName: enforcementProfileMethods.getEnforcementProfileByName,
149
+ create: enforcementProfileMethods.createEnforcementProfile,
150
+ update: enforcementProfileMethods.updateEnforcementProfile,
151
+ updateByName: enforcementProfileMethods.updateEnforcementProfileByName,
152
+ replace: enforcementProfileMethods.replaceEnforcementProfile,
153
+ replaceByName: enforcementProfileMethods.replaceEnforcementProfileByName,
154
+ delete: enforcementProfileMethods.deleteEnforcementProfile,
155
+ deleteByName: enforcementProfileMethods.deleteEnforcementProfileByName,
156
+ },
157
+ },
158
+ // Add other domain resources as needed
159
+ };
160
+ if (!handlers[domain] || !handlers[domain][resource] || !handlers[domain][resource][operation]) {
161
+ throw new Error(`The operation ${domain}.${resource}.${operation} is not supported!`);
162
+ }
163
+ return await handlers[domain][resource][operation].call(this);
164
+ }
@@ -0,0 +1,5 @@
1
+ import { IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';
2
+ /**
3
+ * Format the API response data into n8n node execution data
4
+ */
5
+ export declare function formatResponse(this: IExecuteFunctions, responseData: any): INodeExecutionData[];