n8n-nodes-msdefender 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 (84) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +83 -0
  3. package/dist/credentials/MsdefenderOAuth2Api.credentials.d.ts +9 -0
  4. package/dist/credentials/MsdefenderOAuth2Api.credentials.js +49 -0
  5. package/dist/credentials/MsdefenderOAuth2Api.credentials.js.map +1 -0
  6. package/dist/icons/ms-defender.dark.svg +1 -0
  7. package/dist/icons/ms-defender.svg +1 -0
  8. package/dist/images/app-permissions.png +0 -0
  9. package/dist/nodes/Msdefender/Msdefender.node.d.ts +4 -0
  10. package/dist/nodes/Msdefender/Msdefender.node.js +99 -0
  11. package/dist/nodes/Msdefender/Msdefender.node.js.map +1 -0
  12. package/dist/nodes/Msdefender/Msdefender.node.json +20 -0
  13. package/dist/nodes/Msdefender/resources/advancedQuery/index.d.ts +2 -0
  14. package/dist/nodes/Msdefender/resources/advancedQuery/index.js +35 -0
  15. package/dist/nodes/Msdefender/resources/advancedQuery/index.js.map +1 -0
  16. package/dist/nodes/Msdefender/resources/advancedQuery/run.d.ts +2 -0
  17. package/dist/nodes/Msdefender/resources/advancedQuery/run.js +29 -0
  18. package/dist/nodes/Msdefender/resources/advancedQuery/run.js.map +1 -0
  19. package/dist/nodes/Msdefender/resources/exposure/index.d.ts +2 -0
  20. package/dist/nodes/Msdefender/resources/exposure/index.js +45 -0
  21. package/dist/nodes/Msdefender/resources/exposure/index.js.map +1 -0
  22. package/dist/nodes/Msdefender/resources/machine/addOrRemoveTag.d.ts +2 -0
  23. package/dist/nodes/Msdefender/resources/machine/addOrRemoveTag.js +80 -0
  24. package/dist/nodes/Msdefender/resources/machine/addOrRemoveTag.js.map +1 -0
  25. package/dist/nodes/Msdefender/resources/machine/findByTag.d.ts +2 -0
  26. package/dist/nodes/Msdefender/resources/machine/findByTag.js +47 -0
  27. package/dist/nodes/Msdefender/resources/machine/findByTag.js.map +1 -0
  28. package/dist/nodes/Msdefender/resources/machine/getAll.d.ts +2 -0
  29. package/dist/nodes/Msdefender/resources/machine/getAll.js +116 -0
  30. package/dist/nodes/Msdefender/resources/machine/getAll.js.map +1 -0
  31. package/dist/nodes/Msdefender/resources/machine/getSecurityRecommendations.d.ts +2 -0
  32. package/dist/nodes/Msdefender/resources/machine/getSecurityRecommendations.js +29 -0
  33. package/dist/nodes/Msdefender/resources/machine/getSecurityRecommendations.js.map +1 -0
  34. package/dist/nodes/Msdefender/resources/machine/index.d.ts +2 -0
  35. package/dist/nodes/Msdefender/resources/machine/index.js +67 -0
  36. package/dist/nodes/Msdefender/resources/machine/index.js.map +1 -0
  37. package/dist/nodes/Msdefender/resources/machine/listSoftware.d.ts +2 -0
  38. package/dist/nodes/Msdefender/resources/machine/listSoftware.js +29 -0
  39. package/dist/nodes/Msdefender/resources/machine/listSoftware.js.map +1 -0
  40. package/dist/nodes/Msdefender/resources/machineAction/cancelMachineAction.d.ts +2 -0
  41. package/dist/nodes/Msdefender/resources/machineAction/cancelMachineAction.js +27 -0
  42. package/dist/nodes/Msdefender/resources/machineAction/cancelMachineAction.js.map +1 -0
  43. package/dist/nodes/Msdefender/resources/machineAction/index.d.ts +2 -0
  44. package/dist/nodes/Msdefender/resources/machineAction/index.js +75 -0
  45. package/dist/nodes/Msdefender/resources/machineAction/index.js.map +1 -0
  46. package/dist/nodes/Msdefender/resources/machineAction/isolateDevice.d.ts +2 -0
  47. package/dist/nodes/Msdefender/resources/machineAction/isolateDevice.js +37 -0
  48. package/dist/nodes/Msdefender/resources/machineAction/isolateDevice.js.map +1 -0
  49. package/dist/nodes/Msdefender/resources/machineAction/listMachineActions.d.ts +2 -0
  50. package/dist/nodes/Msdefender/resources/machineAction/listMachineActions.js +116 -0
  51. package/dist/nodes/Msdefender/resources/machineAction/listMachineActions.js.map +1 -0
  52. package/dist/nodes/Msdefender/resources/machineAction/offboardMachine.d.ts +2 -0
  53. package/dist/nodes/Msdefender/resources/machineAction/offboardMachine.js +29 -0
  54. package/dist/nodes/Msdefender/resources/machineAction/offboardMachine.js.map +1 -0
  55. package/dist/nodes/Msdefender/resources/machineAction/releaseFromIsolation.d.ts +2 -0
  56. package/dist/nodes/Msdefender/resources/machineAction/releaseFromIsolation.js +37 -0
  57. package/dist/nodes/Msdefender/resources/machineAction/releaseFromIsolation.js.map +1 -0
  58. package/dist/nodes/Msdefender/resources/machineAction/runAntivirusScan.d.ts +2 -0
  59. package/dist/nodes/Msdefender/resources/machineAction/runAntivirusScan.js +73 -0
  60. package/dist/nodes/Msdefender/resources/machineAction/runAntivirusScan.js.map +1 -0
  61. package/dist/nodes/Msdefender/shared/odataProperties.d.ts +2 -0
  62. package/dist/nodes/Msdefender/shared/odataProperties.js +91 -0
  63. package/dist/nodes/Msdefender/shared/odataProperties.js.map +1 -0
  64. package/dist/nodes/Msdefender/shared/utils.d.ts +1 -0
  65. package/dist/nodes/Msdefender/shared/utils.js +20 -0
  66. package/dist/nodes/Msdefender/shared/utils.js.map +1 -0
  67. package/dist/nodes/Msdefender/vulnerability/getAll.d.ts +2 -0
  68. package/dist/nodes/Msdefender/vulnerability/getAll.js +78 -0
  69. package/dist/nodes/Msdefender/vulnerability/getAll.js.map +1 -0
  70. package/dist/nodes/Msdefender/vulnerability/getByCve.d.ts +2 -0
  71. package/dist/nodes/Msdefender/vulnerability/getByCve.js +30 -0
  72. package/dist/nodes/Msdefender/vulnerability/getByCve.js.map +1 -0
  73. package/dist/nodes/Msdefender/vulnerability/getByMachineAndSoftware.d.ts +2 -0
  74. package/dist/nodes/Msdefender/vulnerability/getByMachineAndSoftware.js +116 -0
  75. package/dist/nodes/Msdefender/vulnerability/getByMachineAndSoftware.js.map +1 -0
  76. package/dist/nodes/Msdefender/vulnerability/getMachinesByCve.d.ts +2 -0
  77. package/dist/nodes/Msdefender/vulnerability/getMachinesByCve.js +30 -0
  78. package/dist/nodes/Msdefender/vulnerability/getMachinesByCve.js.map +1 -0
  79. package/dist/nodes/Msdefender/vulnerability/index.d.ts +2 -0
  80. package/dist/nodes/Msdefender/vulnerability/index.js +65 -0
  81. package/dist/nodes/Msdefender/vulnerability/index.js.map +1 -0
  82. package/dist/package.json +50 -0
  83. package/dist/tsconfig.tsbuildinfo +1 -0
  84. package/package.json +50 -0
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runAntivirusScanDescription = void 0;
4
+ const showOnlyForAntiVirusScan = {
5
+ operation: ['runAntivirusScan'],
6
+ resource: ['machineAction'],
7
+ };
8
+ exports.runAntivirusScanDescription = [
9
+ {
10
+ displayName: 'Device ID',
11
+ name: 'deviceId',
12
+ type: 'string',
13
+ default: '',
14
+ required: true,
15
+ displayOptions: {
16
+ show: showOnlyForAntiVirusScan,
17
+ },
18
+ description: 'The ID of the device to run the antivirus scan on',
19
+ routing: {
20
+ request: {
21
+ method: 'POST',
22
+ url: '=/api/machines/{{ $parameter.deviceId }}/runAntivirusScan',
23
+ },
24
+ },
25
+ },
26
+ {
27
+ displayName: 'Scan Type',
28
+ name: 'scanType',
29
+ type: 'options',
30
+ options: [
31
+ {
32
+ name: 'Quick',
33
+ value: 'quick',
34
+ description: 'Perform a quick scan',
35
+ },
36
+ {
37
+ name: 'Full',
38
+ value: 'full',
39
+ description: 'Perform a full system scan',
40
+ },
41
+ ],
42
+ default: 'quick',
43
+ required: true,
44
+ displayOptions: {
45
+ show: showOnlyForAntiVirusScan,
46
+ },
47
+ description: 'The type of antivirus scan to perform',
48
+ routing: {
49
+ send: {
50
+ type: 'body',
51
+ property: 'ScanType',
52
+ },
53
+ },
54
+ },
55
+ {
56
+ displayName: 'Comment',
57
+ name: 'comment',
58
+ type: 'string',
59
+ default: '',
60
+ required: true,
61
+ displayOptions: {
62
+ show: showOnlyForAntiVirusScan,
63
+ },
64
+ description: 'Comment associated with the action',
65
+ routing: {
66
+ send: {
67
+ type: 'body',
68
+ property: 'Comment',
69
+ },
70
+ },
71
+ }
72
+ ];
73
+ //# sourceMappingURL=runAntivirusScan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runAntivirusScan.js","sourceRoot":"","sources":["../../../../../nodes/Msdefender/resources/machineAction/runAntivirusScan.ts"],"names":[],"mappings":";;;AAEA,MAAM,wBAAwB,GAAG;IAC7B,SAAS,EAAE,CAAC,kBAAkB,CAAC;IAC/B,QAAQ,EAAE,CAAC,eAAe,CAAC;CAC9B,CAAC;AAEW,QAAA,2BAA2B,GAAsB;IAC1D;QACI,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,IAAI;QACd,cAAc,EAAE;YACZ,IAAI,EAAE,wBAAwB;SACjC;QACD,WAAW,EAAE,mDAAmD;QAChE,OAAO,EAAE;YACL,OAAO,EAAE;gBACL,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,2DAA2D;aACnE;SACJ;KACJ;IACD;QACI,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE;YACL;gBACI,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,OAAO;gBACd,WAAW,EAAE,sBAAsB;aACtC;YACD;gBACI,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,MAAM;gBACb,WAAW,EAAE,4BAA4B;aAC5C;SACJ;QACD,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,IAAI;QACd,cAAc,EAAE;YACZ,IAAI,EAAE,wBAAwB;SACjC;QACD,WAAW,EAAE,uCAAuC;QACpD,OAAO,EAAE;YACL,IAAI,EAAE;gBACF,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,UAAU;aACvB;SACJ;KACJ;IACD;QACI,WAAW,EAAE,SAAS;QACtB,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,IAAI;QACd,cAAc,EAAE;YACZ,IAAI,EAAE,wBAAwB;SACjC;QACD,WAAW,EAAE,oCAAoC;QACjD,OAAO,EAAE;YACL,IAAI,EAAE;gBACF,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,SAAS;aACtB;SACJ;KACJ;CACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { INodeProperties } from 'n8n-workflow';
2
+ export declare const commonOdataProperties: INodeProperties[];
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.commonOdataProperties = void 0;
4
+ const utils_1 = require("./utils");
5
+ const showOnlyForOdataOperations = {
6
+ operation: ['getAllMachines', 'listSoftware', 'getAllVulnerabilities'],
7
+ resource: ['machine', 'vulnerability'],
8
+ };
9
+ exports.commonOdataProperties = [
10
+ {
11
+ displayName: 'Limit',
12
+ name: 'limit',
13
+ type: 'number',
14
+ default: 50,
15
+ displayOptions: {
16
+ show: {
17
+ ...showOnlyForOdataOperations,
18
+ returnAll: [false],
19
+ },
20
+ },
21
+ typeOptions: {
22
+ minValue: 1,
23
+ maxValue: 1000,
24
+ },
25
+ description: 'Max number of results to return',
26
+ routing: {
27
+ send: {
28
+ type: 'query',
29
+ property: '$top',
30
+ },
31
+ output: {
32
+ maxResults: '={{$value}}',
33
+ },
34
+ },
35
+ },
36
+ {
37
+ displayName: 'Return All',
38
+ name: 'returnAll',
39
+ type: 'boolean',
40
+ displayOptions: {
41
+ show: {
42
+ ...showOnlyForOdataOperations,
43
+ },
44
+ },
45
+ default: true,
46
+ description: 'Whether to return all results or only up to a given limit',
47
+ routing: {
48
+ send: {
49
+ paginate: '={{$value}}',
50
+ type: 'query',
51
+ property: '$top',
52
+ value: '100',
53
+ },
54
+ operations: {
55
+ pagination: {
56
+ type: 'generic',
57
+ properties: {
58
+ continue: `={{ !!(${utils_1.getNextODataLink.toString()})($response.body) }}`,
59
+ request: {
60
+ url: `={{ (${utils_1.getNextODataLink.toString()})($response.body) ?? $request.url }}`,
61
+ },
62
+ },
63
+ },
64
+ },
65
+ },
66
+ },
67
+ {
68
+ displayName: 'Skip',
69
+ name: 'skip',
70
+ type: 'number',
71
+ displayOptions: {
72
+ show: {
73
+ ...showOnlyForOdataOperations,
74
+ returnAll: [false],
75
+ },
76
+ },
77
+ typeOptions: {
78
+ minValue: 1,
79
+ maxValue: 1000,
80
+ },
81
+ default: 50,
82
+ description: 'Number of results to skip',
83
+ routing: {
84
+ send: {
85
+ type: 'query',
86
+ property: '$skip',
87
+ },
88
+ },
89
+ },
90
+ ];
91
+ //# sourceMappingURL=odataProperties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"odataProperties.js","sourceRoot":"","sources":["../../../../nodes/Msdefender/shared/odataProperties.ts"],"names":[],"mappings":";;;AACA,mCAA2C;AAE3C,MAAM,0BAA0B,GAAG;IAClC,SAAS,EAAE,CAAC,gBAAgB,EAAE,cAAc,EAAE,uBAAuB,CAAC;IACtE,QAAQ,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC;CACtC,CAAC;AAEW,QAAA,qBAAqB,GAAsB;IACvD;QACC,WAAW,EAAE,OAAO;QACpB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,GAAG,0BAA0B;gBAC7B,SAAS,EAAE,CAAC,KAAK,CAAC;aAClB;SACD;QACD,WAAW,EAAE;YACZ,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,IAAI;SACd;QACD,WAAW,EAAE,iCAAiC;QAC9C,OAAO,EAAE;YACR,IAAI,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,MAAM;aAChB;YACD,MAAM,EAAE;gBACP,UAAU,EAAE,aAAa;aACzB;SACD;KACD;IACD;QACC,WAAW,EAAE,YAAY;QACzB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,SAAS;QACf,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,GAAG,0BAA0B;aAC7B;SACD;QACD,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,2DAA2D;QACxE,OAAO,EAAE;YACR,IAAI,EAAE;gBACL,QAAQ,EAAE,aAAa;gBACvB,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,KAAK;aACZ;YACD,UAAU,EAAE;gBACX,UAAU,EAAE;oBACX,IAAI,EAAE,SAAS;oBACf,UAAU,EAAE;wBACX,QAAQ,EAAE,UAAU,wBAAgB,CAAC,QAAQ,EAAE,sBAAsB;wBACrE,OAAO,EAAE;4BACR,GAAG,EAAE,QAAQ,wBAAgB,CAAC,QAAQ,EAAE,sCAAsC;yBAC9E;qBACD;iBACD;aACD;SACD;KACD;IACD;QACC,WAAW,EAAE,MAAM;QACnB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,QAAQ;QACd,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,GAAG,0BAA0B;gBAC7B,SAAS,EAAE,CAAC,KAAK,CAAC;aAClB;SACD;QACD,WAAW,EAAE;YACZ,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,IAAI;SACd;QACD,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,2BAA2B;QACxC,OAAO,EAAE;YACR,IAAI,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,OAAO;aACjB;SACD;KACD;CACD,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function getNextODataLink(): string | undefined;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getNextODataLink = getNextODataLink;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ function getNextODataLink() {
6
+ try {
7
+ n8n_workflow_1.LoggerProxy.debug('Extracting OData nextLink from response');
8
+ const odataLink = 'https://www.vg.no';
9
+ n8n_workflow_1.LoggerProxy.debug(`OData nextLink: ${odataLink}`);
10
+ return odataLink;
11
+ }
12
+ catch (error) {
13
+ n8n_workflow_1.LoggerProxy.error('Error while logging debug information for OData nextLink extraction', { error });
14
+ }
15
+ finally {
16
+ n8n_workflow_1.LoggerProxy.debug('Finished processing OData nextLink extraction');
17
+ }
18
+ return undefined;
19
+ }
20
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../nodes/Msdefender/shared/utils.ts"],"names":[],"mappings":";;AAEA,4CAYC;AAdD,+CAAqD;AAErD,SAAgB,gBAAgB;IAC/B,IAAI,CAAC;QACJ,0BAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,mBAAmB,CAAC;QACtC,0BAAM,CAAC,KAAK,CAAC,mBAAmB,SAAS,EAAE,CAAC,CAAC;QAC7C,OAAO,SAAS,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,0BAAM,CAAC,KAAK,CAAC,qEAAqE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAChG,CAAC;YAAS,CAAC;QACV,0BAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { INodeProperties } from "n8n-workflow";
2
+ export declare const getAllVulnerabilityDescription: INodeProperties[];
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAllVulnerabilityDescription = void 0;
4
+ const showOnlyForGetAllVulnerabilities = {
5
+ operation: ['getAllVulnerabilities'],
6
+ resource: ['vulnerability'],
7
+ };
8
+ exports.getAllVulnerabilityDescription = [
9
+ {
10
+ displayName: 'Return All',
11
+ name: 'returnAll',
12
+ type: 'boolean',
13
+ displayOptions: {
14
+ show: {
15
+ ...showOnlyForGetAllVulnerabilities,
16
+ },
17
+ },
18
+ default: false,
19
+ description: 'Whether to return all results or only up to a given limit',
20
+ },
21
+ {
22
+ displayName: 'Limit',
23
+ name: 'limit',
24
+ type: 'number',
25
+ displayOptions: {
26
+ show: {
27
+ ...showOnlyForGetAllVulnerabilities,
28
+ returnAll: [false],
29
+ },
30
+ },
31
+ typeOptions: {
32
+ minValue: 1,
33
+ maxValue: 1000,
34
+ },
35
+ default: 50,
36
+ description: 'Max number of results to return',
37
+ routing: {
38
+ send: {
39
+ paginate: '={{ $value }}',
40
+ },
41
+ operations: {
42
+ pagination: {
43
+ type: 'generic',
44
+ properties: {
45
+ continue: `={{ !!($response.body['@odata.nextLink']) }}`,
46
+ request: {
47
+ url: `={{ $response.body['@odata.nextLink'] ?? $request.url }}`,
48
+ },
49
+ },
50
+ },
51
+ },
52
+ },
53
+ },
54
+ {
55
+ displayName: 'Skip',
56
+ name: 'skip',
57
+ type: 'number',
58
+ displayOptions: {
59
+ show: {
60
+ ...showOnlyForGetAllVulnerabilities,
61
+ returnAll: [false],
62
+ },
63
+ },
64
+ typeOptions: {
65
+ minValue: 0,
66
+ maxValue: 1000,
67
+ },
68
+ default: 0,
69
+ description: 'Number of results to skip',
70
+ routing: {
71
+ send: {
72
+ type: 'query',
73
+ property: '$skip',
74
+ },
75
+ },
76
+ },
77
+ ];
78
+ //# sourceMappingURL=getAll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAll.js","sourceRoot":"","sources":["../../../../nodes/Msdefender/vulnerability/getAll.ts"],"names":[],"mappings":";;;AAEA,MAAM,gCAAgC,GAAG;IACxC,SAAS,EAAE,CAAC,uBAAuB,CAAC;IACpC,QAAQ,EAAE,CAAC,eAAe,CAAC;CAC3B,CAAC;AAEW,QAAA,8BAA8B,GAAsB;IAChE;QACC,WAAW,EAAE,YAAY;QACzB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,SAAS;QACf,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,GAAG,gCAAgC;aACnC;SACD;QACD,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,2DAA2D;KACxE;IACD;QACC,WAAW,EAAE,OAAO;QACpB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;QACd,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,GAAG,gCAAgC;gBACnC,SAAS,EAAE,CAAC,KAAK,CAAC;aAClB;SACD;QACD,WAAW,EAAE;YACZ,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,IAAI;SACd;QACD,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,iCAAiC;QAC9C,OAAO,EAAE;YACR,IAAI,EAAE;gBACL,QAAQ,EAAE,eAAe;aACzB;YACD,UAAU,EAAE;gBACX,UAAU,EAAE;oBACX,IAAI,EAAE,SAAS;oBACf,UAAU,EAAE;wBACX,QAAQ,EAAE,8CAA8C;wBACxD,OAAO,EAAE;4BACR,GAAG,EAAE,0DAA0D;yBAC/D;qBACD;iBACD;aACD;SACD;KACD;IACD;QACC,WAAW,EAAE,MAAM;QACnB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,QAAQ;QACd,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,GAAG,gCAAgC;gBACnC,SAAS,EAAE,CAAC,KAAK,CAAC;aAClB;SACD;QACD,WAAW,EAAE;YACZ,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,IAAI;SACd;QACD,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,2BAA2B;QACxC,OAAO,EAAE;YACR,IAAI,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,OAAO;aACjB;SACD;KACD;CACD,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { INodeProperties } from "n8n-workflow";
2
+ export declare const getByCveDescription: INodeProperties[];
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getByCveDescription = void 0;
4
+ const showOnlyForGetByCve = {
5
+ operation: ['getByCve'],
6
+ resource: ['vulnerability'],
7
+ };
8
+ exports.getByCveDescription = [
9
+ {
10
+ displayName: 'CVE ID',
11
+ name: 'cveId',
12
+ type: 'string',
13
+ placeholder: 'CVE-2025-12345',
14
+ displayOptions: {
15
+ show: {
16
+ ...showOnlyForGetByCve,
17
+ },
18
+ },
19
+ default: '',
20
+ required: true,
21
+ description: 'The CVE ID of the vulnerability to retrieve',
22
+ routing: {
23
+ request: {
24
+ method: 'GET',
25
+ url: '=/api/vulnerabilities/{{ $parameter.cveId }}',
26
+ },
27
+ },
28
+ },
29
+ ];
30
+ //# sourceMappingURL=getByCve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getByCve.js","sourceRoot":"","sources":["../../../../nodes/Msdefender/vulnerability/getByCve.ts"],"names":[],"mappings":";;;AAEA,MAAM,mBAAmB,GAAG;IACxB,SAAS,EAAE,CAAC,UAAU,CAAC;IACvB,QAAQ,EAAE,CAAC,eAAe,CAAC;CAC9B,CAAC;AAEW,QAAA,mBAAmB,GAAsB;IAClD;QACI,WAAW,EAAE,QAAQ;QACrB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,gBAAgB;QAC7B,cAAc,EAAE;YACZ,IAAI,EAAE;gBACF,GAAG,mBAAmB;aACzB;SACJ;QACD,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,6CAA6C;QAC1D,OAAO,EAAE;YACL,OAAO,EAAE;gBACL,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,8CAA8C;aACtD;SACJ;KACJ;CACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { INodeProperties } from 'n8n-workflow';
2
+ export declare const getByMachineAndSoftwareDescription: INodeProperties[];
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getByMachineAndSoftwareDescription = void 0;
4
+ const showOnlyForGetByMachineAndSoftware = {
5
+ operation: ['getByMachineAndSoftware'],
6
+ resource: ['vulnerability'],
7
+ };
8
+ exports.getByMachineAndSoftwareDescription = [
9
+ {
10
+ displayName: 'Filter',
11
+ name: 'filter',
12
+ type: 'string',
13
+ default: '',
14
+ placeholder: "cveId eq 'CVE-2025-12345'",
15
+ description: 'The filter expression - supports: ID, cveId, machineId, fixingKbId, productName, productVersion, severity, and productVendor properties',
16
+ displayOptions: {
17
+ show: {
18
+ ...showOnlyForGetByMachineAndSoftware,
19
+ },
20
+ },
21
+ routing: {
22
+ send: {
23
+ type: 'query',
24
+ property: '$filter',
25
+ preSend: [
26
+ async function (requestOptions) {
27
+ if (requestOptions.qs && this.getNodeParameter('filter', '') === '')
28
+ delete requestOptions.qs['$filter'];
29
+ return requestOptions;
30
+ },
31
+ ],
32
+ },
33
+ },
34
+ },
35
+ {
36
+ displayName: 'Limit',
37
+ name: 'limit',
38
+ type: 'number',
39
+ default: 50,
40
+ displayOptions: {
41
+ show: {
42
+ ...showOnlyForGetByMachineAndSoftware,
43
+ returnAll: [false],
44
+ },
45
+ },
46
+ typeOptions: {
47
+ minValue: 1,
48
+ maxValue: 1000,
49
+ },
50
+ description: 'Max number of results to return',
51
+ routing: {
52
+ send: {
53
+ type: 'query',
54
+ property: '$top',
55
+ },
56
+ output: {
57
+ maxResults: '={{$value}}',
58
+ },
59
+ },
60
+ },
61
+ {
62
+ displayName: 'Return All',
63
+ name: 'returnAll',
64
+ type: 'boolean',
65
+ displayOptions: {
66
+ show: {
67
+ ...showOnlyForGetByMachineAndSoftware,
68
+ },
69
+ },
70
+ default: false,
71
+ description: 'Whether to return all results or only up to a given limit',
72
+ routing: {
73
+ send: {
74
+ paginate: '={{ $value }}',
75
+ type: 'query',
76
+ property: '$top',
77
+ value: '={{parameter.limit}}',
78
+ },
79
+ operations: {
80
+ pagination: {
81
+ type: 'generic',
82
+ properties: {
83
+ continue: `={{ !!($response.body['@odata.nextLink']) }}`,
84
+ request: {
85
+ url: `={{ $request.url }}`,
86
+ },
87
+ },
88
+ },
89
+ },
90
+ },
91
+ },
92
+ {
93
+ displayName: 'Skip',
94
+ name: 'skip',
95
+ type: 'number',
96
+ displayOptions: {
97
+ show: {
98
+ ...showOnlyForGetByMachineAndSoftware,
99
+ returnAll: [false],
100
+ },
101
+ },
102
+ typeOptions: {
103
+ minValue: 0,
104
+ maxValue: 1000,
105
+ },
106
+ default: 0,
107
+ description: 'Number of results to skip',
108
+ routing: {
109
+ send: {
110
+ type: 'query',
111
+ property: '$skip',
112
+ },
113
+ },
114
+ },
115
+ ];
116
+ //# sourceMappingURL=getByMachineAndSoftware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getByMachineAndSoftware.js","sourceRoot":"","sources":["../../../../nodes/Msdefender/vulnerability/getByMachineAndSoftware.ts"],"names":[],"mappings":";;;AAEA,MAAM,kCAAkC,GAAG;IAC1C,SAAS,EAAE,CAAC,yBAAyB,CAAC;IACtC,QAAQ,EAAE,CAAC,eAAe,CAAC;CAC3B,CAAC;AAEW,QAAA,kCAAkC,GAAsB;IACpE;QACC,WAAW,EAAE,QAAQ;QACrB,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,2BAA2B;QACxC,WAAW,EACV,yIAAyI;QAC1I,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,GAAG,kCAAkC;aACrC;SACD;QACD,OAAO,EAAE;YACR,IAAI,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE;oBACR,KAAK,WAEJ,cAAmC;wBAEnC,IAAI,cAAc,CAAC,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,EAAE;4BAClE,OAAO,cAAc,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;wBACrC,OAAO,cAAc,CAAC;oBACvB,CAAC;iBACD;aACD;SACD;KACD;IACD;QACC,WAAW,EAAE,OAAO;QACpB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,GAAG,kCAAkC;gBACrC,SAAS,EAAE,CAAC,KAAK,CAAC;aAClB;SACD;QACD,WAAW,EAAE;YACZ,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,IAAI;SACd;QACD,WAAW,EAAE,iCAAiC;QAC9C,OAAO,EAAE;YACR,IAAI,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,MAAM;aAChB;YACD,MAAM,EAAE;gBACP,UAAU,EAAE,aAAa;aACzB;SACD;KACD;IACD;QACC,WAAW,EAAE,YAAY;QACzB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,SAAS;QACf,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,GAAG,kCAAkC;aACrC;SACD;QACD,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,2DAA2D;QACxE,OAAO,EAAE;YACR,IAAI,EAAE;gBACL,QAAQ,EAAE,eAAe;gBACzB,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,sBAAsB;aAC7B;YACD,UAAU,EAAE;gBACX,UAAU,EAAE;oBACX,IAAI,EAAE,SAAS;oBACf,UAAU,EAAE;wBACX,QAAQ,EAAE,8CAA8C;wBACxD,OAAO,EAAE;4BACR,GAAG,EAAE,qBAAqB;yBAC1B;qBACD;iBACD;aACD;SACD;KACD;IACD;QACC,WAAW,EAAE,MAAM;QACnB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,QAAQ;QACd,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,GAAG,kCAAkC;gBACrC,SAAS,EAAE,CAAC,KAAK,CAAC;aAClB;SACD;QACD,WAAW,EAAE;YACZ,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,IAAI;SACd;QACD,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,2BAA2B;QACxC,OAAO,EAAE;YACR,IAAI,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,OAAO;aACjB;SACD;KACD;CACD,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { INodeProperties } from "n8n-workflow";
2
+ export declare const getMachinesByCveDescription: INodeProperties[];
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMachinesByCveDescription = void 0;
4
+ const showOnlyForGetMachinesByCve = {
5
+ operation: ['getMachinesByCve'],
6
+ resource: ['vulnerability'],
7
+ };
8
+ exports.getMachinesByCveDescription = [
9
+ {
10
+ displayName: 'CVE ID',
11
+ name: 'cveId',
12
+ type: 'string',
13
+ placeholder: 'CVE-2025-12345',
14
+ displayOptions: {
15
+ show: {
16
+ ...showOnlyForGetMachinesByCve,
17
+ },
18
+ },
19
+ default: '',
20
+ required: true,
21
+ description: 'The CVE ID of the vulnerability to retrieve',
22
+ routing: {
23
+ request: {
24
+ method: 'GET',
25
+ url: '=/api/vulnerabilities/{{ $parameter.cveId }}/machineRefences',
26
+ },
27
+ },
28
+ },
29
+ ];
30
+ //# sourceMappingURL=getMachinesByCve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getMachinesByCve.js","sourceRoot":"","sources":["../../../../nodes/Msdefender/vulnerability/getMachinesByCve.ts"],"names":[],"mappings":";;;AAEA,MAAM,2BAA2B,GAAG;IAChC,SAAS,EAAE,CAAC,kBAAkB,CAAC;IAC/B,QAAQ,EAAE,CAAC,eAAe,CAAC;CAC9B,CAAC;AAEW,QAAA,2BAA2B,GAAsB;IAC1D;QACI,WAAW,EAAE,QAAQ;QACrB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,gBAAgB;QAC7B,cAAc,EAAE;YACZ,IAAI,EAAE;gBACF,GAAG,2BAA2B;aACjC;SACJ;QACD,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,6CAA6C;QAC1D,OAAO,EAAE;YACL,OAAO,EAAE;gBACL,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,8DAA8D;aACtE;SACJ;KACJ;CACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { INodeProperties } from 'n8n-workflow';
2
+ export declare const vulnerabilityDescription: INodeProperties[];
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.vulnerabilityDescription = void 0;
4
+ const getAll_1 = require("./getAll");
5
+ const getMachinesByCve_1 = require("./getMachinesByCve");
6
+ const getByMachineAndSoftware_1 = require("./getByMachineAndSoftware");
7
+ const showOnlyForVulnerabilityResource = {
8
+ resource: ['vulnerability'],
9
+ };
10
+ exports.vulnerabilityDescription = [
11
+ {
12
+ displayName: 'Operation',
13
+ name: 'operation',
14
+ type: 'options',
15
+ noDataExpression: true,
16
+ displayOptions: {
17
+ show: {
18
+ ...showOnlyForVulnerabilityResource,
19
+ },
20
+ },
21
+ options: [
22
+ {
23
+ name: 'Get By CVE',
24
+ value: 'getByCve',
25
+ action: 'Get vulnerability by CVE ID',
26
+ description: 'Retrieve vulnerability details by CVE ID',
27
+ },
28
+ {
29
+ name: 'Get By Machine And Software',
30
+ value: 'getByMachineAndSoftware',
31
+ action: 'Get vulnerabilities by machine and software',
32
+ description: 'Retrieve vulnerabilities affecting a specific software on a specific machine',
33
+ routing: {
34
+ request: {
35
+ method: 'GET',
36
+ url: '/api/vulnerabilities/machinesVulnerabilities',
37
+ },
38
+ },
39
+ },
40
+ {
41
+ name: 'Get Many',
42
+ value: 'getAllVulnerabilities',
43
+ action: 'Get many vulnerabilities',
44
+ description: 'Retrieve many vulnerabilities',
45
+ routing: {
46
+ request: {
47
+ method: 'GET',
48
+ url: '/api/vulnerabilities',
49
+ },
50
+ },
51
+ },
52
+ {
53
+ name: 'Get Machines By CVE',
54
+ value: 'getMachinesByCve',
55
+ action: 'Get machines affected by CVE ID',
56
+ description: 'Retrieves a list of devices affected by a vulnerability',
57
+ },
58
+ ],
59
+ default: 'getAllVulnerabilities',
60
+ },
61
+ ...getAll_1.getAllVulnerabilityDescription,
62
+ ...getMachinesByCve_1.getMachinesByCveDescription,
63
+ ...getByMachineAndSoftware_1.getByMachineAndSoftwareDescription,
64
+ ];
65
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../nodes/Msdefender/vulnerability/index.ts"],"names":[],"mappings":";;;AACA,qCAA0D;AAC1D,yDAAiE;AACjE,uEAA+E;AAE/E,MAAM,gCAAgC,GAAG;IACxC,QAAQ,EAAE,CAAC,eAAe,CAAC;CAC3B,CAAC;AAEW,QAAA,wBAAwB,GAAsB;IAC1D;QACC,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,SAAS;QACf,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,GAAG,gCAAgC;aACnC;SACD;QACD,OAAO,EAAE;YACR;gBACC,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,6BAA6B;gBACrC,WAAW,EAAE,0CAA0C;aACvD;YACD;gBACC,IAAI,EAAE,6BAA6B;gBACnC,KAAK,EAAE,yBAAyB;gBAChC,MAAM,EAAE,6CAA6C;gBACrD,WAAW,EAAE,8EAA8E;gBAC3F,OAAO,EAAE;oBACR,OAAO,EAAE;wBACR,MAAM,EAAE,KAAK;wBACb,GAAG,EAAE,8CAA8C;qBACnD;iBACD;aACD;YACD;gBACC,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,uBAAuB;gBAC9B,MAAM,EAAE,0BAA0B;gBAClC,WAAW,EAAE,+BAA+B;gBAC5C,OAAO,EAAE;oBACR,OAAO,EAAE;wBACR,MAAM,EAAE,KAAK;wBACb,GAAG,EAAE,sBAAsB;qBAC3B;iBACD;aACD;YACD;gBACC,IAAI,EAAE,qBAAqB;gBAC3B,KAAK,EAAE,kBAAkB;gBACzB,MAAM,EAAE,iCAAiC;gBACzC,WAAW,EAAE,yDAAyD;aACtE;SACD;QACD,OAAO,EAAE,uBAAuB;KAChC;IACD,GAAG,uCAA8B;IACjC,GAAG,8CAA2B;IAC9B,GAAG,4DAAkC;CACrC,CAAC"}
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "n8n-nodes-msdefender",
3
+ "version": "1.0.0",
4
+ "description": "Integration with Microsoft Defender API",
5
+ "license": "MIT",
6
+ "homepage": "",
7
+ "keywords": [
8
+ "n8n-community-node-package"
9
+ ],
10
+ "author": {
11
+ "name": "FrodeHus",
12
+ "email": "frode.hus@outlook.com"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://github.com/frodehus/n8n-nodes-msdefender.git"
17
+ },
18
+ "scripts": {
19
+ "build": "n8n-node build",
20
+ "build:watch": "tsc --watch",
21
+ "dev": "n8n-node dev",
22
+ "lint": "n8n-node lint",
23
+ "lint:fix": "n8n-node lint --fix",
24
+ "release": "n8n-node release",
25
+ "prepublishOnly": "n8n-node prerelease"
26
+ },
27
+ "files": [
28
+ "dist"
29
+ ],
30
+ "n8n": {
31
+ "n8nNodesApiVersion": 1,
32
+ "strict": true,
33
+ "credentials": [
34
+ "dist/credentials/MsdefenderOAuth2Api.credentials.js"
35
+ ],
36
+ "nodes": [
37
+ "dist/nodes/Msdefender/Msdefender.node.js"
38
+ ]
39
+ },
40
+ "devDependencies": {
41
+ "@n8n/node-cli": "*",
42
+ "eslint": "9.32.0",
43
+ "prettier": "3.6.2",
44
+ "release-it": "^19.0.4",
45
+ "typescript": "5.9.2"
46
+ },
47
+ "peerDependencies": {
48
+ "n8n-workflow": "*"
49
+ }
50
+ }