@joshuanode/n8n-nodes-addigy 0.0.1

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 (41) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +313 -0
  3. package/dist/credentials/AddigyApi.credentials.d.ts +10 -0
  4. package/dist/credentials/AddigyApi.credentials.d.ts.map +1 -0
  5. package/dist/credentials/AddigyApi.credentials.js +54 -0
  6. package/dist/credentials/AddigyApi.credentials.js.map +1 -0
  7. package/dist/nodes/Addigy/Addigy.node.d.ts +13 -0
  8. package/dist/nodes/Addigy/Addigy.node.d.ts.map +1 -0
  9. package/dist/nodes/Addigy/Addigy.node.js +559 -0
  10. package/dist/nodes/Addigy/Addigy.node.js.map +1 -0
  11. package/dist/nodes/Addigy/GenericFunctions.d.ts +13 -0
  12. package/dist/nodes/Addigy/GenericFunctions.d.ts.map +1 -0
  13. package/dist/nodes/Addigy/GenericFunctions.js +225 -0
  14. package/dist/nodes/Addigy/GenericFunctions.js.map +1 -0
  15. package/dist/nodes/Addigy/addigy.svg +22 -0
  16. package/dist/nodes/Addigy/descriptions/AlertDescription.d.ts +4 -0
  17. package/dist/nodes/Addigy/descriptions/AlertDescription.d.ts.map +1 -0
  18. package/dist/nodes/Addigy/descriptions/AlertDescription.js +210 -0
  19. package/dist/nodes/Addigy/descriptions/AlertDescription.js.map +1 -0
  20. package/dist/nodes/Addigy/descriptions/ApplicationDescription.d.ts +4 -0
  21. package/dist/nodes/Addigy/descriptions/ApplicationDescription.d.ts.map +1 -0
  22. package/dist/nodes/Addigy/descriptions/ApplicationDescription.js +234 -0
  23. package/dist/nodes/Addigy/descriptions/ApplicationDescription.js.map +1 -0
  24. package/dist/nodes/Addigy/descriptions/DeviceDescription.d.ts +4 -0
  25. package/dist/nodes/Addigy/descriptions/DeviceDescription.d.ts.map +1 -0
  26. package/dist/nodes/Addigy/descriptions/DeviceDescription.js +292 -0
  27. package/dist/nodes/Addigy/descriptions/DeviceDescription.js.map +1 -0
  28. package/dist/nodes/Addigy/descriptions/FactDescription.d.ts +4 -0
  29. package/dist/nodes/Addigy/descriptions/FactDescription.d.ts.map +1 -0
  30. package/dist/nodes/Addigy/descriptions/FactDescription.js +282 -0
  31. package/dist/nodes/Addigy/descriptions/FactDescription.js.map +1 -0
  32. package/dist/nodes/Addigy/descriptions/InstructionDescription.d.ts +4 -0
  33. package/dist/nodes/Addigy/descriptions/InstructionDescription.d.ts.map +1 -0
  34. package/dist/nodes/Addigy/descriptions/InstructionDescription.js +328 -0
  35. package/dist/nodes/Addigy/descriptions/InstructionDescription.js.map +1 -0
  36. package/dist/nodes/Addigy/descriptions/PolicyDescription.d.ts +4 -0
  37. package/dist/nodes/Addigy/descriptions/PolicyDescription.d.ts.map +1 -0
  38. package/dist/nodes/Addigy/descriptions/PolicyDescription.js +226 -0
  39. package/dist/nodes/Addigy/descriptions/PolicyDescription.js.map +1 -0
  40. package/index.js +2 -0
  41. package/package.json +64 -0
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addigyApiRequest = addigyApiRequest;
4
+ exports.addigyApiRequestAllItems = addigyApiRequestAllItems;
5
+ exports.validateJSON = validateJSON;
6
+ exports.extractResponseData = extractResponseData;
7
+ exports.getDevices = getDevices;
8
+ exports.getPolicies = getPolicies;
9
+ exports.getApplications = getApplications;
10
+ const n8n_workflow_1 = require("n8n-workflow");
11
+ async function addigyApiRequest(method, resource, body = {}, qs = {}, uri, option = {}) {
12
+ const credentials = await this.getCredentials('addigyApi');
13
+ const baseUrl = credentials.baseUrl;
14
+ const apiToken = credentials.apiToken;
15
+ let requestOptions = {
16
+ method,
17
+ body,
18
+ qs,
19
+ url: uri || `${baseUrl}/api/v2${resource}`,
20
+ json: true,
21
+ };
22
+ requestOptions.headers = {
23
+ 'x-api-key': apiToken,
24
+ 'Content-Type': 'application/json',
25
+ };
26
+ requestOptions = Object.assign({}, requestOptions, option);
27
+ try {
28
+ const responseData = await this.helpers.httpRequest(requestOptions);
29
+ // Handle empty responses
30
+ if (responseData === null || responseData === undefined) {
31
+ return {};
32
+ }
33
+ return responseData;
34
+ }
35
+ catch (error) {
36
+ // Enhance error message with more context
37
+ const errorMessage = error?.response?.body?.message || error?.message || 'Unknown error occurred';
38
+ const statusCode = error?.response?.statusCode || error?.statusCode;
39
+ // Add helpful context to common errors
40
+ if (statusCode === 401) {
41
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), error, {
42
+ message: `Authentication failed: ${errorMessage}. Please check your API credentials.`,
43
+ description: 'Invalid or expired API token',
44
+ });
45
+ }
46
+ else if (statusCode === 403) {
47
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), error, {
48
+ message: `Permission denied: ${errorMessage}. Your API token may not have the required permissions.`,
49
+ description: 'Insufficient permissions for this operation',
50
+ });
51
+ }
52
+ else if (statusCode === 404) {
53
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), error, {
54
+ message: `Resource not found: ${errorMessage}`,
55
+ description: `The requested resource at ${resource} does not exist`,
56
+ });
57
+ }
58
+ else if (statusCode === 429) {
59
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), error, {
60
+ message: 'Rate limit exceeded. The Addigy API limits requests to 1,000 per 10 seconds.',
61
+ description: 'Please wait before making more requests',
62
+ });
63
+ }
64
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), error, {
65
+ message: `Addigy API Error: ${errorMessage}`,
66
+ description: statusCode ? `HTTP ${statusCode}` : undefined,
67
+ });
68
+ }
69
+ }
70
+ async function addigyApiRequestAllItems(propertyName, method, endpoint, body = {}, query = {}) {
71
+ const returnData = [];
72
+ let responseData;
73
+ let page = 1;
74
+ const perPage = 100;
75
+ let iterationCount = 0;
76
+ let hasMore = true;
77
+ const maxIterations = 1000; // Safety limit to prevent infinite loops
78
+ while (hasMore) {
79
+ query.per_page = perPage;
80
+ query.page = page;
81
+ try {
82
+ responseData = await addigyApiRequest.call(this, method, endpoint, body, query);
83
+ }
84
+ catch (error) {
85
+ // If we already have some data, return it; otherwise rethrow the error
86
+ if (returnData.length > 0) {
87
+ break;
88
+ }
89
+ throw error;
90
+ }
91
+ // Handle different response formats
92
+ let items = [];
93
+ if (responseData && typeof responseData === 'object') {
94
+ // Try to extract items from the response
95
+ if (Array.isArray(responseData[propertyName])) {
96
+ items = responseData[propertyName];
97
+ }
98
+ else if (Array.isArray(responseData.data)) {
99
+ // Some APIs return data in a 'data' property
100
+ items = responseData.data;
101
+ }
102
+ else if (Array.isArray(responseData)) {
103
+ // Response is directly an array
104
+ items = responseData;
105
+ }
106
+ }
107
+ if (items.length > 0) {
108
+ returnData.push(...items);
109
+ }
110
+ // Check if there are more items to fetch
111
+ hasMore =
112
+ responseData?.has_more === true ||
113
+ responseData?.hasMore === true ||
114
+ responseData?.pagination?.has_more === true ||
115
+ (responseData?.metadata?.page_count !== undefined &&
116
+ responseData?.metadata?.page !== undefined &&
117
+ responseData.metadata.page < responseData.metadata.page_count) ||
118
+ (items.length === perPage);
119
+ if (!hasMore || items.length === 0) {
120
+ break;
121
+ }
122
+ page += 1;
123
+ iterationCount++;
124
+ // Safety check to prevent infinite loops
125
+ if (iterationCount >= maxIterations) {
126
+ break;
127
+ }
128
+ }
129
+ return returnData;
130
+ }
131
+ function validateJSON(json) {
132
+ let result;
133
+ try {
134
+ result = JSON.parse(json);
135
+ }
136
+ catch {
137
+ result = undefined;
138
+ }
139
+ return result;
140
+ }
141
+ /**
142
+ * Safely extracts array data from API responses
143
+ * Handles different response formats from the Addigy API
144
+ */
145
+ function extractResponseData(responseData, propertyName) {
146
+ if (!responseData) {
147
+ return [];
148
+ }
149
+ // Direct array response
150
+ if (Array.isArray(responseData)) {
151
+ return responseData;
152
+ }
153
+ // Response with specific property name
154
+ if (Array.isArray(responseData[propertyName])) {
155
+ return responseData[propertyName];
156
+ }
157
+ // Response with 'data' property
158
+ if (Array.isArray(responseData.data)) {
159
+ return responseData.data;
160
+ }
161
+ // Response with 'results' property
162
+ if (Array.isArray(responseData.results)) {
163
+ return responseData.results;
164
+ }
165
+ // Single item response - wrap in array
166
+ if (typeof responseData === 'object' && !Array.isArray(responseData)) {
167
+ return [responseData];
168
+ }
169
+ return [];
170
+ }
171
+ async function getDevices() {
172
+ try {
173
+ const devices = await addigyApiRequestAllItems.call(this, 'devices', 'GET', '/devices');
174
+ if (!Array.isArray(devices) || devices.length === 0) {
175
+ return [];
176
+ }
177
+ return devices
178
+ .filter((device) => device.id) // Only include devices with valid IDs
179
+ .map((device) => ({
180
+ name: device.name || device.serial_number || `Device ${device.id}`,
181
+ value: device.id,
182
+ }));
183
+ }
184
+ catch {
185
+ // Return empty array instead of throwing to prevent UI errors
186
+ return [];
187
+ }
188
+ }
189
+ async function getPolicies() {
190
+ try {
191
+ const policies = await addigyApiRequestAllItems.call(this, 'policies', 'GET', '/policies');
192
+ if (!Array.isArray(policies) || policies.length === 0) {
193
+ return [];
194
+ }
195
+ return policies
196
+ .filter((policy) => policy.id) // Only include policies with valid IDs
197
+ .map((policy) => ({
198
+ name: policy.name || `Policy ${policy.id}`,
199
+ value: policy.id,
200
+ }));
201
+ }
202
+ catch {
203
+ // Return empty array instead of throwing to prevent UI errors
204
+ return [];
205
+ }
206
+ }
207
+ async function getApplications() {
208
+ try {
209
+ const applications = await addigyApiRequestAllItems.call(this, 'applications', 'GET', '/applications');
210
+ if (!Array.isArray(applications) || applications.length === 0) {
211
+ return [];
212
+ }
213
+ return applications
214
+ .filter((app) => app.id) // Only include apps with valid IDs
215
+ .map((app) => ({
216
+ name: app.name || `Application ${app.id}`,
217
+ value: app.id,
218
+ }));
219
+ }
220
+ catch {
221
+ // Return empty array instead of throwing to prevent UI errors
222
+ return [];
223
+ }
224
+ }
225
+ //# sourceMappingURL=GenericFunctions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenericFunctions.js","sourceRoot":"","sources":["../../../nodes/Addigy/GenericFunctions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100">
2
+ <!-- This is a placeholder icon. Replace with official Addigy logo from https://addigy.com/media-kit/ -->
3
+ <defs>
4
+ <linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
5
+ <stop offset="0%" style="stop-color:#667eea;stop-opacity:1" />
6
+ <stop offset="100%" style="stop-color:#764ba2;stop-opacity:1" />
7
+ </linearGradient>
8
+ </defs>
9
+
10
+ <!-- Background circle -->
11
+ <circle cx="50" cy="50" r="45" fill="url(#grad)"/>
12
+
13
+ <!-- Apple device representation -->
14
+ <g fill="#ffffff">
15
+ <!-- Laptop/Mac shape -->
16
+ <rect x="25" y="30" width="50" height="32" rx="2" fill="#ffffff" opacity="0.9"/>
17
+ <rect x="20" y="62" width="60" height="3" rx="1.5" fill="#ffffff" opacity="0.9"/>
18
+
19
+ <!-- Shield/Security symbol overlay -->
20
+ <path d="M50,35 L55,37 L55,45 C55,48 53,50 50,52 C47,50 45,48 45,45 L45,37 Z" fill="#667eea" opacity="0.8"/>
21
+ </g>
22
+ </svg>
@@ -0,0 +1,4 @@
1
+ import { INodeProperties } from 'n8n-workflow';
2
+ export declare const alertOperations: INodeProperties[];
3
+ export declare const alertFields: INodeProperties[];
4
+ //# sourceMappingURL=AlertDescription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AlertDescription.d.ts","sourceRoot":"","sources":["../../../../nodes/Addigy/descriptions/AlertDescription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,eAAO,MAAM,eAAe,EAAE,eAAe,EAiC5C,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,eAAe,EA6KxC,CAAC"}
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.alertFields = exports.alertOperations = void 0;
4
+ exports.alertOperations = [
5
+ {
6
+ displayName: 'Operation',
7
+ name: 'operation',
8
+ type: 'options',
9
+ noDataExpression: true,
10
+ displayOptions: {
11
+ show: {
12
+ resource: ['alert'],
13
+ },
14
+ },
15
+ options: [
16
+ {
17
+ name: 'Get',
18
+ value: 'get',
19
+ description: 'Get an alert by ID',
20
+ action: 'Get an alert',
21
+ },
22
+ {
23
+ name: 'Get Many',
24
+ value: 'getAll',
25
+ description: 'Get many alerts',
26
+ action: 'Get many alerts',
27
+ },
28
+ {
29
+ name: 'Resolve',
30
+ value: 'resolve',
31
+ description: 'Resolve an alert',
32
+ action: 'Resolve an alert',
33
+ },
34
+ ],
35
+ default: 'getAll',
36
+ },
37
+ ];
38
+ exports.alertFields = [
39
+ // ----------------------------------
40
+ // alert:get
41
+ // ----------------------------------
42
+ {
43
+ displayName: 'Alert ID',
44
+ name: 'alertId',
45
+ type: 'string',
46
+ required: true,
47
+ displayOptions: {
48
+ show: {
49
+ resource: ['alert'],
50
+ operation: ['get', 'resolve'],
51
+ },
52
+ },
53
+ default: '',
54
+ description: 'The ID of the alert',
55
+ },
56
+ // ----------------------------------
57
+ // alert:getAll
58
+ // ----------------------------------
59
+ {
60
+ displayName: 'Return All',
61
+ name: 'returnAll',
62
+ type: 'boolean',
63
+ displayOptions: {
64
+ show: {
65
+ resource: ['alert'],
66
+ operation: ['getAll'],
67
+ },
68
+ },
69
+ default: false,
70
+ description: 'Whether to return all results or only up to a given limit',
71
+ },
72
+ {
73
+ displayName: 'Limit',
74
+ name: 'limit',
75
+ type: 'number',
76
+ displayOptions: {
77
+ show: {
78
+ resource: ['alert'],
79
+ operation: ['getAll'],
80
+ returnAll: [false],
81
+ },
82
+ },
83
+ typeOptions: {
84
+ minValue: 1,
85
+ maxValue: 500,
86
+ },
87
+ default: 50,
88
+ description: 'Max number of results to return',
89
+ },
90
+ {
91
+ displayName: 'Filters',
92
+ name: 'filters',
93
+ type: 'collection',
94
+ placeholder: 'Add Filter',
95
+ default: {},
96
+ displayOptions: {
97
+ show: {
98
+ resource: ['alert'],
99
+ operation: ['getAll'],
100
+ },
101
+ },
102
+ options: [
103
+ {
104
+ displayName: 'Device Name or ID',
105
+ name: 'deviceId',
106
+ type: 'options',
107
+ typeOptions: {
108
+ loadOptionsMethod: 'getDevices',
109
+ },
110
+ default: '',
111
+ description: 'Filter alerts by device. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
112
+ },
113
+ {
114
+ displayName: 'Policy Name or ID',
115
+ name: 'policyId',
116
+ type: 'options',
117
+ typeOptions: {
118
+ loadOptionsMethod: 'getPolicies',
119
+ },
120
+ default: '',
121
+ description: 'Filter alerts by policy. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
122
+ },
123
+ {
124
+ displayName: 'Status',
125
+ name: 'status',
126
+ type: 'options',
127
+ options: [
128
+ {
129
+ name: 'Open',
130
+ value: 'open',
131
+ },
132
+ {
133
+ name: 'Resolved',
134
+ value: 'resolved',
135
+ },
136
+ {
137
+ name: 'All',
138
+ value: 'all',
139
+ },
140
+ ],
141
+ default: 'open',
142
+ description: 'Filter by alert status',
143
+ },
144
+ {
145
+ displayName: 'Severity',
146
+ name: 'severity',
147
+ type: 'options',
148
+ options: [
149
+ {
150
+ name: 'Critical',
151
+ value: 'critical',
152
+ },
153
+ {
154
+ name: 'Warning',
155
+ value: 'warning',
156
+ },
157
+ {
158
+ name: 'Info',
159
+ value: 'info',
160
+ },
161
+ ],
162
+ default: 'critical',
163
+ description: 'Filter by alert severity',
164
+ },
165
+ {
166
+ displayName: 'Start Date',
167
+ name: 'start_date',
168
+ type: 'dateTime',
169
+ default: '',
170
+ description: 'Get alerts created after this date',
171
+ },
172
+ {
173
+ displayName: 'End Date',
174
+ name: 'end_date',
175
+ type: 'dateTime',
176
+ default: '',
177
+ description: 'Get alerts created before this date',
178
+ },
179
+ ],
180
+ },
181
+ // ----------------------------------
182
+ // alert:resolve
183
+ // ----------------------------------
184
+ {
185
+ displayName: 'Additional Fields',
186
+ name: 'additionalFields',
187
+ type: 'collection',
188
+ placeholder: 'Add Field',
189
+ default: {},
190
+ displayOptions: {
191
+ show: {
192
+ resource: ['alert'],
193
+ operation: ['resolve'],
194
+ },
195
+ },
196
+ options: [
197
+ {
198
+ displayName: 'Resolution Notes',
199
+ name: 'notes',
200
+ type: 'string',
201
+ typeOptions: {
202
+ rows: 4,
203
+ },
204
+ default: '',
205
+ description: 'Notes about the alert resolution',
206
+ },
207
+ ],
208
+ },
209
+ ];
210
+ //# sourceMappingURL=AlertDescription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AlertDescription.js","sourceRoot":"","sources":["../../../../nodes/Addigy/descriptions/AlertDescription.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { INodeProperties } from 'n8n-workflow';
2
+ export declare const applicationOperations: INodeProperties[];
3
+ export declare const applicationFields: INodeProperties[];
4
+ //# sourceMappingURL=ApplicationDescription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApplicationDescription.d.ts","sourceRoot":"","sources":["../../../../nodes/Addigy/descriptions/ApplicationDescription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,eAAO,MAAM,qBAAqB,EAAE,eAAe,EAuClD,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,eAAe,EA+L9C,CAAC"}