@revobus/n8n-nodes-kajabi 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 (73) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +161 -0
  3. package/dist/credentials/KajabiApi.credentials.d.ts +11 -0
  4. package/dist/credentials/KajabiApi.credentials.d.ts.map +1 -0
  5. package/dist/credentials/KajabiApi.credentials.js +50 -0
  6. package/dist/credentials/KajabiApi.credentials.js.map +1 -0
  7. package/dist/credentials/KajabiOAuth2Api.credentials.d.ts +12 -0
  8. package/dist/credentials/KajabiOAuth2Api.credentials.d.ts.map +1 -0
  9. package/dist/credentials/KajabiOAuth2Api.credentials.js +88 -0
  10. package/dist/credentials/KajabiOAuth2Api.credentials.js.map +1 -0
  11. package/dist/nodes/Kajabi/GenericFunctions.d.ts +30 -0
  12. package/dist/nodes/Kajabi/GenericFunctions.d.ts.map +1 -0
  13. package/dist/nodes/Kajabi/GenericFunctions.js +161 -0
  14. package/dist/nodes/Kajabi/GenericFunctions.js.map +1 -0
  15. package/dist/nodes/Kajabi/Kajabi.node.d.ts +5 -0
  16. package/dist/nodes/Kajabi/Kajabi.node.d.ts.map +1 -0
  17. package/dist/nodes/Kajabi/Kajabi.node.js +176 -0
  18. package/dist/nodes/Kajabi/Kajabi.node.js.map +1 -0
  19. package/dist/nodes/Kajabi/descriptions/BlogPostDescription.d.ts +4 -0
  20. package/dist/nodes/Kajabi/descriptions/BlogPostDescription.d.ts.map +1 -0
  21. package/dist/nodes/Kajabi/descriptions/BlogPostDescription.js +205 -0
  22. package/dist/nodes/Kajabi/descriptions/BlogPostDescription.js.map +1 -0
  23. package/dist/nodes/Kajabi/descriptions/ContactDescription.d.ts +4 -0
  24. package/dist/nodes/Kajabi/descriptions/ContactDescription.d.ts.map +1 -0
  25. package/dist/nodes/Kajabi/descriptions/ContactDescription.js +759 -0
  26. package/dist/nodes/Kajabi/descriptions/ContactDescription.js.map +1 -0
  27. package/dist/nodes/Kajabi/descriptions/ContactNoteDescription.d.ts +4 -0
  28. package/dist/nodes/Kajabi/descriptions/ContactNoteDescription.d.ts.map +1 -0
  29. package/dist/nodes/Kajabi/descriptions/ContactNoteDescription.js +127 -0
  30. package/dist/nodes/Kajabi/descriptions/ContactNoteDescription.js.map +1 -0
  31. package/dist/nodes/Kajabi/descriptions/ContactTagDescription.d.ts +4 -0
  32. package/dist/nodes/Kajabi/descriptions/ContactTagDescription.d.ts.map +1 -0
  33. package/dist/nodes/Kajabi/descriptions/ContactTagDescription.js +114 -0
  34. package/dist/nodes/Kajabi/descriptions/ContactTagDescription.js.map +1 -0
  35. package/dist/nodes/Kajabi/descriptions/CourseDescription.d.ts +4 -0
  36. package/dist/nodes/Kajabi/descriptions/CourseDescription.d.ts.map +1 -0
  37. package/dist/nodes/Kajabi/descriptions/CourseDescription.js +197 -0
  38. package/dist/nodes/Kajabi/descriptions/CourseDescription.js.map +1 -0
  39. package/dist/nodes/Kajabi/descriptions/CustomerDescription.d.ts +4 -0
  40. package/dist/nodes/Kajabi/descriptions/CustomerDescription.d.ts.map +1 -0
  41. package/dist/nodes/Kajabi/descriptions/CustomerDescription.js +358 -0
  42. package/dist/nodes/Kajabi/descriptions/CustomerDescription.js.map +1 -0
  43. package/dist/nodes/Kajabi/descriptions/FormDescription.d.ts +4 -0
  44. package/dist/nodes/Kajabi/descriptions/FormDescription.d.ts.map +1 -0
  45. package/dist/nodes/Kajabi/descriptions/FormDescription.js +381 -0
  46. package/dist/nodes/Kajabi/descriptions/FormDescription.js.map +1 -0
  47. package/dist/nodes/Kajabi/descriptions/FormSubmissionDescription.d.ts +4 -0
  48. package/dist/nodes/Kajabi/descriptions/FormSubmissionDescription.d.ts.map +1 -0
  49. package/dist/nodes/Kajabi/descriptions/FormSubmissionDescription.js +166 -0
  50. package/dist/nodes/Kajabi/descriptions/FormSubmissionDescription.js.map +1 -0
  51. package/dist/nodes/Kajabi/descriptions/LandingPageDescription.d.ts +4 -0
  52. package/dist/nodes/Kajabi/descriptions/LandingPageDescription.d.ts.map +1 -0
  53. package/dist/nodes/Kajabi/descriptions/LandingPageDescription.js +210 -0
  54. package/dist/nodes/Kajabi/descriptions/LandingPageDescription.js.map +1 -0
  55. package/dist/nodes/Kajabi/descriptions/OfferDescription.d.ts +4 -0
  56. package/dist/nodes/Kajabi/descriptions/OfferDescription.d.ts.map +1 -0
  57. package/dist/nodes/Kajabi/descriptions/OfferDescription.js +201 -0
  58. package/dist/nodes/Kajabi/descriptions/OfferDescription.js.map +1 -0
  59. package/dist/nodes/Kajabi/descriptions/PayoutDescription.d.ts +4 -0
  60. package/dist/nodes/Kajabi/descriptions/PayoutDescription.d.ts.map +1 -0
  61. package/dist/nodes/Kajabi/descriptions/PayoutDescription.js +200 -0
  62. package/dist/nodes/Kajabi/descriptions/PayoutDescription.js.map +1 -0
  63. package/dist/nodes/Kajabi/descriptions/UserDescription.d.ts +4 -0
  64. package/dist/nodes/Kajabi/descriptions/UserDescription.d.ts.map +1 -0
  65. package/dist/nodes/Kajabi/descriptions/UserDescription.js +46 -0
  66. package/dist/nodes/Kajabi/descriptions/UserDescription.js.map +1 -0
  67. package/dist/nodes/Kajabi/kajabi.svg +5 -0
  68. package/dist/nodes/KajabiTrigger/KajabiTrigger.node.d.ts +13 -0
  69. package/dist/nodes/KajabiTrigger/KajabiTrigger.node.d.ts.map +1 -0
  70. package/dist/nodes/KajabiTrigger/KajabiTrigger.node.js +152 -0
  71. package/dist/nodes/KajabiTrigger/KajabiTrigger.node.js.map +1 -0
  72. package/dist/nodes/KajabiTrigger/kajabi.svg +5 -0
  73. package/package.json +67 -0
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.userFields = exports.userOperations = void 0;
4
+ exports.userOperations = [
5
+ {
6
+ displayName: 'Operation',
7
+ name: 'operation',
8
+ type: 'options',
9
+ noDataExpression: true,
10
+ displayOptions: {
11
+ show: {
12
+ resource: ['user'],
13
+ },
14
+ },
15
+ options: [
16
+ {
17
+ name: 'Get Current',
18
+ value: 'getCurrent',
19
+ description: 'Get the current authenticated user profile',
20
+ action: 'Get current user',
21
+ routing: {
22
+ request: {
23
+ method: 'GET',
24
+ url: '/v1/me',
25
+ },
26
+ output: {
27
+ postReceive: [
28
+ {
29
+ type: 'rootProperty',
30
+ properties: {
31
+ property: 'data',
32
+ },
33
+ },
34
+ ],
35
+ },
36
+ },
37
+ },
38
+ ],
39
+ default: 'getCurrent',
40
+ },
41
+ ];
42
+ exports.userFields = [
43
+ // No additional fields needed for user operations
44
+ // The /v1/me endpoint returns the current authenticated user
45
+ ];
46
+ //# sourceMappingURL=UserDescription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserDescription.js","sourceRoot":"","sources":["../../../../nodes/Kajabi/descriptions/UserDescription.ts"],"names":[],"mappings":";;;AAEa,QAAA,cAAc,GAAsB;IAChD;QACC,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,SAAS;QACf,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,QAAQ,EAAE,CAAC,MAAM,CAAC;aAClB;SACD;QACD,OAAO,EAAE;YACR;gBACC,IAAI,EAAE,aAAa;gBACnB,KAAK,EAAE,YAAY;gBACnB,WAAW,EAAE,4CAA4C;gBACzD,MAAM,EAAE,kBAAkB;gBAC1B,OAAO,EAAE;oBACR,OAAO,EAAE;wBACR,MAAM,EAAE,KAAK;wBACb,GAAG,EAAE,QAAQ;qBACb;oBACD,MAAM,EAAE;wBACP,WAAW,EAAE;4BACZ;gCACC,IAAI,EAAE,cAAc;gCACpB,UAAU,EAAE;oCACX,QAAQ,EAAE,MAAM;iCAChB;6BACD;yBACD;qBACD;iBACD;aACD;SACD;QACD,OAAO,EAAE,YAAY;KACrB;CACD,CAAC;AAEW,QAAA,UAAU,GAAsB;AAC5C,kDAAkD;AAClD,6DAA6D;CAC7D,CAAC"}
@@ -0,0 +1,5 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
2
+ <rect width="100" height="100" rx="12" fill="#3B99FC"/>
3
+ <polygon points="15,15 15,85 55,45" fill="white"/>
4
+ <polygon points="85,85 85,45 55,65" fill="white"/>
5
+ </svg>
@@ -0,0 +1,13 @@
1
+ import type { IHookFunctions, IWebhookFunctions, INodeType, INodeTypeDescription, IWebhookResponseData } from 'n8n-workflow';
2
+ export declare class KajabiTrigger implements INodeType {
3
+ description: INodeTypeDescription;
4
+ webhookMethods: {
5
+ default: {
6
+ checkExists(this: IHookFunctions): Promise<boolean>;
7
+ create(this: IHookFunctions): Promise<boolean>;
8
+ delete(this: IHookFunctions): Promise<boolean>;
9
+ };
10
+ };
11
+ webhook(this: IWebhookFunctions): Promise<IWebhookResponseData>;
12
+ }
13
+ //# sourceMappingURL=KajabiTrigger.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KajabiTrigger.node.d.ts","sourceRoot":"","sources":["../../../nodes/KajabiTrigger/KajabiTrigger.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,oBAAoB,EACpB,oBAAoB,EACpB,MAAM,cAAc,CAAC;AAqBtB,qBAAa,aAAc,YAAW,SAAS;IAC9C,WAAW,EAAE,oBAAoB,CAyF/B;IAEF,cAAc;;8BAEY,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;yBAMtC,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;yBAKjC,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;;MAKpD;IAEI,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CA2BrE"}
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KajabiTrigger = void 0;
4
+ /**
5
+ * Flatten nested object properties for easier access
6
+ */
7
+ function flattenObject(obj, prefix = '') {
8
+ const result = {};
9
+ for (const [key, value] of Object.entries(obj)) {
10
+ const newKey = prefix ? `${prefix}_${key}` : key;
11
+ if (value && typeof value === 'object' && !Array.isArray(value)) {
12
+ Object.assign(result, flattenObject(value, newKey));
13
+ }
14
+ else {
15
+ result[newKey] = value;
16
+ }
17
+ }
18
+ return result;
19
+ }
20
+ class KajabiTrigger {
21
+ description = {
22
+ displayName: 'Kajabi Trigger',
23
+ name: 'kajabiTrigger',
24
+ icon: 'file:kajabi.svg',
25
+ group: ['trigger'],
26
+ version: 1,
27
+ description: 'Starts the workflow when Kajabi events occur via webhooks',
28
+ subtitle: '={{$parameter["event"]}}',
29
+ defaults: {
30
+ name: 'Kajabi Trigger',
31
+ },
32
+ inputs: [],
33
+ outputs: ['main'],
34
+ credentials: [],
35
+ webhooks: [
36
+ {
37
+ name: 'default',
38
+ httpMethod: 'POST',
39
+ responseMode: 'onReceived',
40
+ path: 'webhook',
41
+ },
42
+ ],
43
+ properties: [
44
+ {
45
+ displayName: 'Event',
46
+ name: 'event',
47
+ type: 'options',
48
+ options: [
49
+ {
50
+ name: 'Form Submission',
51
+ value: 'formSubmission',
52
+ description: 'Triggered when a Kajabi form is submitted',
53
+ },
54
+ {
55
+ name: 'Any Webhook',
56
+ value: 'anyWebhook',
57
+ description: 'Receives any webhook payload from Kajabi',
58
+ },
59
+ ],
60
+ default: 'formSubmission',
61
+ required: true,
62
+ description: 'The type of event to listen for',
63
+ },
64
+ {
65
+ displayName: 'Setup Instructions',
66
+ name: 'setupNotice',
67
+ type: 'notice',
68
+ default: '',
69
+ displayOptions: {
70
+ show: {
71
+ event: ['formSubmission'],
72
+ },
73
+ },
74
+ },
75
+ {
76
+ displayName: 'Generic Webhook Instructions',
77
+ name: 'genericNotice',
78
+ type: 'notice',
79
+ default: '',
80
+ displayOptions: {
81
+ show: {
82
+ event: ['anyWebhook'],
83
+ },
84
+ },
85
+ },
86
+ {
87
+ displayName: 'Options',
88
+ name: 'options',
89
+ type: 'collection',
90
+ placeholder: 'Add Option',
91
+ default: {},
92
+ options: [
93
+ {
94
+ displayName: 'Flatten Response',
95
+ name: 'flattenResponse',
96
+ type: 'boolean',
97
+ default: true,
98
+ description: 'Whether to flatten nested webhook data for easier access',
99
+ },
100
+ {
101
+ displayName: 'Include Raw Body',
102
+ name: 'includeRawBody',
103
+ type: 'boolean',
104
+ default: false,
105
+ description: 'Whether to include the raw request body in the output',
106
+ },
107
+ ],
108
+ },
109
+ ],
110
+ };
111
+ webhookMethods = {
112
+ default: {
113
+ async checkExists() {
114
+ // Kajabi doesn't have webhook management via API
115
+ // Webhooks must be configured manually in Kajabi Form settings
116
+ // Return true to allow the webhook to be registered in n8n
117
+ return true;
118
+ },
119
+ async create() {
120
+ // Manual configuration required in Kajabi
121
+ // The user needs to copy the webhook URL and paste it in Kajabi
122
+ return true;
123
+ },
124
+ async delete() {
125
+ // Manual removal required in Kajabi
126
+ return true;
127
+ },
128
+ },
129
+ };
130
+ async webhook() {
131
+ const body = this.getBodyData();
132
+ const options = this.getNodeParameter('options', {});
133
+ let responseData = body;
134
+ // Flatten response if enabled
135
+ if (options.flattenResponse !== false) {
136
+ responseData = flattenObject(body);
137
+ }
138
+ // Include raw body if requested
139
+ if (options.includeRawBody) {
140
+ const req = this.getRequestObject();
141
+ responseData = {
142
+ ...responseData,
143
+ _rawBody: req.body,
144
+ };
145
+ }
146
+ return {
147
+ workflowData: [this.helpers.returnJsonArray(responseData)],
148
+ };
149
+ }
150
+ }
151
+ exports.KajabiTrigger = KajabiTrigger;
152
+ //# sourceMappingURL=KajabiTrigger.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KajabiTrigger.node.js","sourceRoot":"","sources":["../../../nodes/KajabiTrigger/KajabiTrigger.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
2
+ <rect width="100" height="100" rx="12" fill="#3B99FC"/>
3
+ <polygon points="15,15 15,85 55,45" fill="white"/>
4
+ <polygon points="85,85 85,45 55,65" fill="white"/>
5
+ </svg>
package/package.json ADDED
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": "@revobus/n8n-nodes-kajabi",
3
+ "version": "1.0.0",
4
+ "description": "n8n community node for Kajabi API integration - manage contacts, customers, offers, courses, forms, and more",
5
+ "keywords": [
6
+ "n8n-community-node-package",
7
+ "n8n",
8
+ "n8n-nodes",
9
+ "kajabi",
10
+ "marketing",
11
+ "courses",
12
+ "automation",
13
+ "online-courses",
14
+ "membership",
15
+ "crm"
16
+ ],
17
+ "license": "MIT",
18
+ "homepage": "https://github.com/revobus/n8n-nodes-kajabi",
19
+ "author": {
20
+ "name": "Revobus",
21
+ "email": "revobus@users.noreply.github.com"
22
+ },
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "https://github.com/revobus/n8n-nodes-kajabi.git"
26
+ },
27
+ "main": "index.js",
28
+ "scripts": {
29
+ "build": "tsc && gulp build:icons",
30
+ "dev": "tsc --watch",
31
+ "format": "prettier nodes credentials --write",
32
+ "lint": "eslint nodes credentials package.json --ext .ts",
33
+ "lintfix": "eslint nodes credentials package.json --ext .ts --fix",
34
+ "prepublishOnly": "npm run build && npm run lint"
35
+ },
36
+ "files": [
37
+ "dist"
38
+ ],
39
+ "n8n": {
40
+ "n8nNodesApiVersion": 1,
41
+ "credentials": [
42
+ "dist/credentials/KajabiOAuth2Api.credentials.js",
43
+ "dist/credentials/KajabiApi.credentials.js"
44
+ ],
45
+ "nodes": [
46
+ "dist/nodes/Kajabi/Kajabi.node.js",
47
+ "dist/nodes/KajabiTrigger/KajabiTrigger.node.js"
48
+ ]
49
+ },
50
+ "devDependencies": {
51
+ "@types/node": "^22.0.0",
52
+ "@typescript-eslint/eslint-plugin": "^7.18.0",
53
+ "@typescript-eslint/parser": "^7.18.0",
54
+ "eslint": "^8.57.0",
55
+ "eslint-plugin-n8n-nodes-base": "^1.16.2",
56
+ "gulp": "^4.0.2",
57
+ "n8n-workflow": "*",
58
+ "prettier": "^3.3.3",
59
+ "typescript": "^5.6.2"
60
+ },
61
+ "peerDependencies": {
62
+ "n8n-workflow": "*"
63
+ },
64
+ "engines": {
65
+ "node": ">=18.0.0"
66
+ }
67
+ }