@joshuanode/n8n-nodes-cipp 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 (64) hide show
  1. package/README.md +142 -0
  2. package/dist/credentials/CippApi.credentials.d.ts +10 -0
  3. package/dist/credentials/CippApi.credentials.d.ts.map +1 -0
  4. package/dist/credentials/CippApi.credentials.js +58 -0
  5. package/dist/credentials/CippApi.credentials.js.map +1 -0
  6. package/dist/credentials/cipp.svg +4 -0
  7. package/dist/index.d.ts +3 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +19 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/nodes/Cipp/Cipp.node.d.ts +11 -0
  12. package/dist/nodes/Cipp/Cipp.node.d.ts.map +1 -0
  13. package/dist/nodes/Cipp/Cipp.node.js +949 -0
  14. package/dist/nodes/Cipp/Cipp.node.js.map +1 -0
  15. package/dist/nodes/Cipp/GenericFunctions.d.ts +23 -0
  16. package/dist/nodes/Cipp/GenericFunctions.d.ts.map +1 -0
  17. package/dist/nodes/Cipp/GenericFunctions.js +181 -0
  18. package/dist/nodes/Cipp/GenericFunctions.js.map +1 -0
  19. package/dist/nodes/Cipp/cipp.svg +4 -0
  20. package/dist/nodes/Cipp/descriptions/AlertDescription.d.ts +4 -0
  21. package/dist/nodes/Cipp/descriptions/AlertDescription.d.ts.map +1 -0
  22. package/dist/nodes/Cipp/descriptions/AlertDescription.js +251 -0
  23. package/dist/nodes/Cipp/descriptions/AlertDescription.js.map +1 -0
  24. package/dist/nodes/Cipp/descriptions/ApplicationDescription.d.ts +4 -0
  25. package/dist/nodes/Cipp/descriptions/ApplicationDescription.d.ts.map +1 -0
  26. package/dist/nodes/Cipp/descriptions/ApplicationDescription.js +458 -0
  27. package/dist/nodes/Cipp/descriptions/ApplicationDescription.js.map +1 -0
  28. package/dist/nodes/Cipp/descriptions/CippDescription.d.ts +8 -0
  29. package/dist/nodes/Cipp/descriptions/CippDescription.d.ts.map +1 -0
  30. package/dist/nodes/Cipp/descriptions/CippDescription.js +534 -0
  31. package/dist/nodes/Cipp/descriptions/CippDescription.js.map +1 -0
  32. package/dist/nodes/Cipp/descriptions/DeviceDescription.d.ts +6 -0
  33. package/dist/nodes/Cipp/descriptions/DeviceDescription.d.ts.map +1 -0
  34. package/dist/nodes/Cipp/descriptions/DeviceDescription.js +374 -0
  35. package/dist/nodes/Cipp/descriptions/DeviceDescription.js.map +1 -0
  36. package/dist/nodes/Cipp/descriptions/GroupDescription.d.ts +4 -0
  37. package/dist/nodes/Cipp/descriptions/GroupDescription.d.ts.map +1 -0
  38. package/dist/nodes/Cipp/descriptions/GroupDescription.js +315 -0
  39. package/dist/nodes/Cipp/descriptions/GroupDescription.js.map +1 -0
  40. package/dist/nodes/Cipp/descriptions/MailboxDescription.d.ts +4 -0
  41. package/dist/nodes/Cipp/descriptions/MailboxDescription.d.ts.map +1 -0
  42. package/dist/nodes/Cipp/descriptions/MailboxDescription.js +175 -0
  43. package/dist/nodes/Cipp/descriptions/MailboxDescription.js.map +1 -0
  44. package/dist/nodes/Cipp/descriptions/TeamDescription.d.ts +6 -0
  45. package/dist/nodes/Cipp/descriptions/TeamDescription.d.ts.map +1 -0
  46. package/dist/nodes/Cipp/descriptions/TeamDescription.js +509 -0
  47. package/dist/nodes/Cipp/descriptions/TeamDescription.js.map +1 -0
  48. package/dist/nodes/Cipp/descriptions/TenantDescription.d.ts +4 -0
  49. package/dist/nodes/Cipp/descriptions/TenantDescription.d.ts.map +1 -0
  50. package/dist/nodes/Cipp/descriptions/TenantDescription.js +102 -0
  51. package/dist/nodes/Cipp/descriptions/TenantDescription.js.map +1 -0
  52. package/dist/nodes/Cipp/descriptions/UserDescription.d.ts +4 -0
  53. package/dist/nodes/Cipp/descriptions/UserDescription.d.ts.map +1 -0
  54. package/dist/nodes/Cipp/descriptions/UserDescription.js +374 -0
  55. package/dist/nodes/Cipp/descriptions/UserDescription.js.map +1 -0
  56. package/dist/nodes/Cipp/descriptions/index.d.ts +3 -0
  57. package/dist/nodes/Cipp/descriptions/index.d.ts.map +1 -0
  58. package/dist/nodes/Cipp/descriptions/index.js +43 -0
  59. package/dist/nodes/Cipp/descriptions/index.js.map +1 -0
  60. package/dist/nodes/Cipp/types.d.ts +142 -0
  61. package/dist/nodes/Cipp/types.d.ts.map +1 -0
  62. package/dist/nodes/Cipp/types.js +3 -0
  63. package/dist/nodes/Cipp/types.js.map +1 -0
  64. package/package.json +68 -0
package/README.md ADDED
@@ -0,0 +1,142 @@
1
+ # n8n-nodes-cipp
2
+
3
+ [![npm version](https://badge.fury.io/js/%40joshuanode%2Fn8n-nodes-cipp.svg)](https://www.npmjs.com/package/@joshuanode/n8n-nodes-cipp)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+
6
+ n8n community node for [CIPP.app](https://cipp.app) - Comprehensive Microsoft 365 multi-tenant management.
7
+
8
+ ![CIPP Node](https://img.shields.io/badge/n8n-Community%20Node-ff6d5a)
9
+ ![Beta](https://img.shields.io/badge/Status-Beta-orange)
10
+
11
+ > ⚠️ **Beta Notice**: This node is currently in beta and may not be fully functional yet. Some operations may be incomplete or require adjustments. Use in production at your own risk.
12
+ >
13
+ > 🤝 **Contributions Welcome!** We welcome bug reports, feature requests, and pull requests. If you encounter issues or have improvements, please open an issue or PR on GitHub.
14
+
15
+ ## Features
16
+
17
+ This node provides full integration with the CIPP API, enabling automation of:
18
+
19
+ - **Identity Management** - Users, groups, MFA, devices
20
+ - **Tenant Administration** - Alerts, licenses, standards
21
+ - **Intune** - Applications, Autopilot, device actions
22
+ - **Teams & SharePoint** - Teams, sites, voice numbers
23
+ - **Security & Compliance** - Defender alerts, incidents
24
+ - **Tools** - Breach search, Graph API requests
25
+ - **CIPP System** - Scheduled jobs, backups
26
+
27
+ ## Installation
28
+
29
+ ### n8n (Self-hosted)
30
+
31
+ ```bash
32
+ npm install @joshuanode/n8n-nodes-cipp
33
+ ```
34
+
35
+ Or add to your n8n Docker container:
36
+
37
+ ```bash
38
+ # In your Dockerfile
39
+ RUN npm install -g @joshuanode/n8n-nodes-cipp
40
+ ```
41
+
42
+ ### n8n Cloud
43
+
44
+ Community nodes can be installed via **Settings → Community Nodes → Install**.
45
+
46
+ ## Credentials Setup
47
+
48
+ 1. **Create an Azure AD App Registration** for CIPP API access
49
+ 2. Configure the following in n8n:
50
+ - **CIPP Instance URL**: Your CIPP deployment URL (e.g., `https://cipp.yourdomain.com`)
51
+ - **Azure AD Tenant ID**: The tenant where your CIPP app registration lives
52
+ - **Application (Client) ID**: From your Azure AD app registration
53
+ - **Client Secret**: Generated from your app registration
54
+
55
+ For detailed authentication setup, see the [CIPP API Documentation](https://docs.cipp.app/api-documentation/setup-and-authentication).
56
+
57
+ ## Resources & Operations
58
+
59
+ | Resource | Operations |
60
+ | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- |
61
+ | **Tenant** | Get Many, Clear Cache |
62
+ | **User** | Add, Disable, Enable, Reset Password, Reset MFA, Revoke Sessions, Remove, Create TAP, Set Per-User MFA, Send MFA Push, Clear Immutable ID, Offboard |
63
+ | **Group** | Add, Edit Members, Delete, Hide from GAL, Set Delivery Management, Get Many |
64
+ | **Device** | Get Many, Manage, Execute Action, Get Recovery Key, Get LAPS Password |
65
+ | **Autopilot** | Get Many, Assign, Remove, Sync, Get Configurations |
66
+ | **Mailbox** | Convert, Enable Archive, Set Out of Office, Set Email Forwarding |
67
+ | **Alert** | Add, Get Many, Get Security Alerts, Get Security Incidents, Set Alert Status, Set Incident Status |
68
+ | **Application** | Get Many, Assign, Remove, Add WinGet/Store/Chocolatey/MSP/Office Apps |
69
+ | **Team** | Add, Get Many, Get Sites, Get Activity, Manage Site Members/Permissions |
70
+ | **Voice** | Get Phone Numbers, Get Locations, Assign/Unassign Numbers |
71
+ | **Scheduled Item** | Add, Get Many, Remove |
72
+ | **Backup** | Get Many, Run, Restore, Set Auto-Backup |
73
+ | **Tools** | Breach Search (Account/Tenant), Graph Request |
74
+
75
+ ## Example Usage
76
+
77
+ ### List All Tenants
78
+
79
+ ```
80
+ Resource: Tenant
81
+ Operation: Get Many
82
+ Return All: true
83
+ ```
84
+
85
+ ### Create a New User
86
+
87
+ ```
88
+ Resource: User
89
+ Operation: Add
90
+ Tenant: Select from dropdown
91
+ First Name: John
92
+ Last Name: Doe
93
+ Domain: contoso.com
94
+ ```
95
+
96
+ ### Execute Device Action
97
+
98
+ ```
99
+ Resource: Device
100
+ Operation: Execute Action
101
+ Tenant: Select from dropdown
102
+ Device ID: <device-guid>
103
+ Action: SyncDevice
104
+ ```
105
+
106
+ ### Custom Graph Request
107
+
108
+ ```
109
+ Resource: Tools
110
+ Operation: Graph Request
111
+ Tenant: Select from dropdown
112
+ Endpoint: users
113
+ $select: id,displayName,userPrincipalName
114
+ $filter: startsWith(displayName,'John')
115
+ ```
116
+
117
+ ## Development
118
+
119
+ ```bash
120
+ # Install dependencies
121
+ npm install
122
+
123
+ # Build
124
+ npm run build
125
+
126
+ # Lint
127
+ npm run lint
128
+
129
+ # Link for local testing
130
+ npm link
131
+ ```
132
+
133
+ ## Links
134
+
135
+ - [CIPP.app](https://cipp.app)
136
+ - [CIPP Documentation](https://docs.cipp.app)
137
+ - [CIPP API Endpoints](https://docs.cipp.app/api-documentation/endpoints/)
138
+ - [n8n Community Nodes](https://docs.n8n.io/integrations/community-nodes/)
139
+
140
+ ## License
141
+
142
+ MIT
@@ -0,0 +1,10 @@
1
+ import type { Icon, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
2
+ export declare class CippApi implements ICredentialType {
3
+ name: string;
4
+ displayName: string;
5
+ icon: Icon;
6
+ documentationUrl: string;
7
+ properties: INodeProperties[];
8
+ test: ICredentialTestRequest;
9
+ }
10
+ //# sourceMappingURL=CippApi.credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CippApi.credentials.d.ts","sourceRoot":"","sources":["../../credentials/CippApi.credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,IAAI,EACJ,sBAAsB,EACtB,eAAe,EACf,eAAe,EACf,MAAM,cAAc,CAAC;AAEtB,qBAAa,OAAQ,YAAW,eAAe;IAC9C,IAAI,SAAa;IACjB,WAAW,SAAc;IACzB,IAAI,EAAE,IAAI,CAAmB;IAC7B,gBAAgB,SAAsE;IAEtF,UAAU,EAAE,eAAe,EAAE,CAqC3B;IAIF,IAAI,EAAE,sBAAsB,CAM1B;CACF"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CippApi = void 0;
4
+ class CippApi {
5
+ name = 'cippApi';
6
+ displayName = 'CIPP API';
7
+ icon = 'file:cipp.svg';
8
+ documentationUrl = 'https://docs.cipp.app/api-documentation/setup-and-authentication';
9
+ properties = [
10
+ {
11
+ displayName: 'CIPP Instance URL',
12
+ name: 'baseUrl',
13
+ type: 'string',
14
+ default: '',
15
+ required: true,
16
+ placeholder: 'https://cipp.yourdomain.com',
17
+ description: 'The base URL of your CIPP deployment',
18
+ },
19
+ {
20
+ displayName: 'Azure AD Tenant ID',
21
+ name: 'tenantId',
22
+ type: 'string',
23
+ default: '',
24
+ required: true,
25
+ placeholder: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
26
+ description: 'Your Azure AD Tenant ID (where the CIPP app registration lives)',
27
+ },
28
+ {
29
+ displayName: 'Application (Client) ID',
30
+ name: 'clientId',
31
+ type: 'string',
32
+ default: '',
33
+ required: true,
34
+ placeholder: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
35
+ description: 'The Application (Client) ID from Azure AD App Registration',
36
+ },
37
+ {
38
+ displayName: 'Client Secret',
39
+ name: 'clientSecret',
40
+ type: 'string',
41
+ typeOptions: { password: true },
42
+ default: '',
43
+ required: true,
44
+ description: 'The Client Secret from Azure AD App Registration',
45
+ },
46
+ ];
47
+ // Custom pre-request auth - the node handles OAuth token acquisition
48
+ // This test validates by attempting a simple API call
49
+ test = {
50
+ request: {
51
+ method: 'GET',
52
+ url: '={{$credentials.baseUrl.replace(/\\/$/, "")}}/api/ListTenants',
53
+ skipSslCertificateValidation: false,
54
+ },
55
+ };
56
+ }
57
+ exports.CippApi = CippApi;
58
+ //# sourceMappingURL=CippApi.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CippApi.credentials.js","sourceRoot":"","sources":["../../credentials/CippApi.credentials.ts"],"names":[],"mappings":";;;AAOA,MAAa,OAAO;IACnB,IAAI,GAAG,SAAS,CAAC;IACjB,WAAW,GAAG,UAAU,CAAC;IACzB,IAAI,GAAS,eAAe,CAAC;IAC7B,gBAAgB,GAAG,kEAAkE,CAAC;IAEtF,UAAU,GAAsB;QAC/B;YACC,WAAW,EAAE,mBAAmB;YAChC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,6BAA6B;YAC1C,WAAW,EAAE,sCAAsC;SACnD;QACD;YACC,WAAW,EAAE,oBAAoB;YACjC,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,sCAAsC;YACnD,WAAW,EAAE,iEAAiE;SAC9E;QACD;YACC,WAAW,EAAE,yBAAyB;YACtC,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,sCAAsC;YACnD,WAAW,EAAE,4DAA4D;SACzE;QACD;YACC,WAAW,EAAE,eAAe;YAC5B,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC/B,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,kDAAkD;SAC/D;KACD,CAAC;IAEF,qEAAqE;IACrE,sDAAsD;IACtD,IAAI,GAA2B;QAC9B,OAAO,EAAE;YACR,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,+DAA+D;YACpE,4BAA4B,EAAE,KAAK;SACnC;KACD,CAAC;CACF;AAtDD,0BAsDC"}
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" fill="none">
2
+ <rect width="64" height="64" rx="8" fill="#0078D4"/>
3
+ <text x="32" y="42" font-family="Arial, sans-serif" font-size="24" font-weight="bold" fill="white" text-anchor="middle">CIPP</text>
4
+ </svg>
@@ -0,0 +1,3 @@
1
+ export * from './nodes/Cipp/Cipp.node';
2
+ export * from './credentials/CippApi.credentials';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,mCAAmC,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,19 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./nodes/Cipp/Cipp.node"), exports);
18
+ __exportStar(require("./credentials/CippApi.credentials"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC;AACvC,oEAAkD"}
@@ -0,0 +1,11 @@
1
+ import type { IExecuteFunctions, ILoadOptionsFunctions, INodeExecutionData, INodeListSearchResult, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class Cipp implements INodeType {
3
+ description: INodeTypeDescription;
4
+ methods: {
5
+ listSearch: {
6
+ tenantSearch(this: ILoadOptionsFunctions, filter?: string): Promise<INodeListSearchResult>;
7
+ };
8
+ };
9
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
10
+ }
11
+ //# sourceMappingURL=Cipp.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Cipp.node.d.ts","sourceRoot":"","sources":["../../../nodes/Cipp/Cipp.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEX,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,SAAS,EACT,oBAAoB,EACpB,MAAM,cAAc,CAAC;AAUtB,qBAAa,IAAK,YAAW,SAAS;IACrC,WAAW,EAAE,oBAAoB,CAkG/B;IAEF,OAAO;;+BAGE,qBAAqB,WAClB,MAAM,GACb,OAAO,CAAC,qBAAqB,CAAC;;MAqBjC;IAEI,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CA2rCvE"}