@rjsebening/n8n-nodes-learningsuite 1.4.1 → 1.6.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.
- package/README.md +72 -93
- package/dist/nodes/LearningSuite/LearningSuite.node.d.ts +6 -0
- package/dist/nodes/LearningSuite/LearningSuite.node.js +10 -6
- package/dist/nodes/LearningSuite/LearningSuite.node.json +18 -0
- package/dist/nodes/LearningSuite/LearningSuiteTrigger.node.js +3 -3
- package/dist/nodes/LearningSuite/descriptions/calendarEvent.properties.d.ts +2 -0
- package/dist/nodes/LearningSuite/descriptions/calendarEvent.properties.js +409 -0
- package/dist/nodes/LearningSuite/descriptions/course.properties.js +1 -1
- package/dist/nodes/LearningSuite/descriptions/customFields.properties.js +17 -0
- package/dist/nodes/LearningSuite/descriptions/hub.properties.js +14 -1
- package/dist/nodes/LearningSuite/descriptions/member.properties.js +63 -7
- package/dist/nodes/LearningSuite/descriptions/module.properties.js +1 -1
- package/dist/nodes/LearningSuite/descriptions/resource.selector.js +5 -0
- package/dist/nodes/LearningSuite/descriptions/trigger.instant.properties.js +4 -3
- package/dist/nodes/LearningSuite/descriptions/webhook.properties.js +3 -2
- package/dist/nodes/LearningSuite/descriptions/webhook.sampleData.properties.js +2 -0
- package/dist/nodes/LearningSuite/exec.types.d.ts +2 -2
- package/dist/nodes/LearningSuite/execute/calendarEvent.handlers.d.ts +8 -0
- package/dist/nodes/LearningSuite/execute/calendarEvent.handlers.js +252 -0
- package/dist/nodes/LearningSuite/execute/customFields.handlers.js +7 -1
- package/dist/nodes/LearningSuite/execute/hub.handlers.d.ts +1 -0
- package/dist/nodes/LearningSuite/execute/hub.handlers.js +5 -0
- package/dist/nodes/LearningSuite/execute/member.handlers.d.ts +1 -0
- package/dist/nodes/LearningSuite/execute/member.handlers.js +46 -5
- package/dist/nodes/LearningSuite/execute/registry.js +2 -0
- package/dist/nodes/LearningSuite/execute/webhook.handlers.js +1 -1
- package/dist/nodes/LearningSuite/methods/loadOptions/calendarEvent.loadOptions.d.ts +5 -0
- package/dist/nodes/LearningSuite/methods/loadOptions/calendarEvent.loadOptions.js +15 -0
- package/dist/nodes/LearningSuite/methods/loadOptions/teamMember.loadOptions.js +1 -1
- package/dist/nodes/LearningSuite/methods/resourceMappers/calendarEvent.resourceMapper.d.ts +3 -0
- package/dist/nodes/LearningSuite/methods/resourceMappers/calendarEvent.resourceMapper.js +35 -0
- package/dist/nodes/LearningSuite/shared/parsing.d.ts +2 -0
- package/dist/nodes/LearningSuite/shared/parsing.js +12 -0
- package/dist/nodes/LearningSuite/shared/request.d.ts +2 -1
- package/dist/nodes/LearningSuite/shared/request.js +6 -6
- package/dist/nodes/LearningSuitePollingTrigger/LearningSuitePollingTrigger.node.js +2 -2
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -2,103 +2,115 @@
|
|
|
2
2
|
|
|
3
3
|

|
|
4
4
|
|
|
5
|
-

|
|
6
6
|
|
|
7
7
|

|
|
8
8
|
|
|
9
|
-
An n8n
|
|
9
|
+
An n8n node for the **LearningSuite API** that connects your LearningSuite instance to n8n workflows. It is developed and maintained by its original author, Jörg Sebening — and LearningSuite has published this integration.
|
|
10
10
|
|
|
11
11
|
## What is n8n?
|
|
12
12
|
|
|
13
13
|
n8n is an easy-to-use tool that allows you to automate actions between different web apps, such as LearningSuite. Creating so-called "workflows" between apps automates many of the manual tasks. This can save you or your employees a tremendous amount of time.
|
|
14
14
|
|
|
15
|
-
## ⚖️ Legal Notice
|
|
15
|
+
## ⚖️ Maintainer & Legal Notice
|
|
16
16
|
|
|
17
|
-
This
|
|
17
|
+
This repository is the original source of the LearningSuite n8n integration, developed and maintained by Jörg Sebening ([@rjsebening](https://github.com/rjsebening)) as its official maintainer. LearningSuite has published this integration.
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
The node uses the public LearningSuite API. LearningSuite, its trademarks, and its logos belong to LearningSuite.
|
|
20
20
|
|
|
21
21
|
## 🚀 Features
|
|
22
22
|
|
|
23
|
-
- **
|
|
24
|
-
- **
|
|
25
|
-
- **Instant trigger (webhook-based)** with
|
|
23
|
+
- **16 resources** fully supported (Member, Course, Group, Bundle, Hub, Module, Community, Calendar Event, Custom Fields, Popup, Webhook, Role, User, Team Member, AI, API Call)
|
|
24
|
+
- **103 action endpoints** for maximum flexibility
|
|
25
|
+
- **Instant trigger (webhook-based)** with 19 event types for real-time automation
|
|
26
26
|
- **Polling trigger** with 11 event types for scheduled polling
|
|
27
27
|
- **Flexible API call** resource for custom endpoints
|
|
28
28
|
|
|
29
29
|
## 📋 Supported Operations
|
|
30
30
|
|
|
31
|
-
### 👤 **Member** (
|
|
31
|
+
### 👤 **Member** (21 operations)
|
|
32
32
|
|
|
33
|
-
- Get by email, get by ID, get
|
|
34
|
-
- Activate
|
|
35
|
-
- Get courses, get course
|
|
33
|
+
- Get member by email, get member by ID, get many members, create a member, update a member, delete a member, find or create member
|
|
34
|
+
- Activate deactivate member, add member to courses, remove member from courses, add member to bundles, remove member from bundles
|
|
35
|
+
- Get member courses, get member course info, get member bundles, get member AI credits
|
|
36
|
+
- Get many members filters by creation date (`Created After` / `Created Before`)
|
|
37
|
+
- Add member to bundles also updates existing accesses: end date, remove end date, pause until a date, unlimited pause, resume
|
|
36
38
|
- Get course progress, get module progress, get lesson progress, set course progress, reset course progress
|
|
37
39
|
|
|
38
|
-
### 📚 **Course** (
|
|
40
|
+
### 📚 **Course** (9 operations)
|
|
39
41
|
|
|
40
|
-
- Get published courses, get course modules, get course modules for member
|
|
41
|
-
- Get course members, get course access requests, get course submissions
|
|
42
|
+
- Get published courses, publish course, get course modules, get course modules for member
|
|
43
|
+
- Get course members, get course access requests, get course submissions
|
|
44
|
+
- Create lesson, update lesson
|
|
42
45
|
|
|
43
|
-
### 👥 **Group** (
|
|
46
|
+
### 👥 **Group** (13 operations)
|
|
44
47
|
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
+
- Create a group, delete a group, find groups by name, find or create group, get group by ID, get many groups
|
|
49
|
+
- Add members to groups, add members to groups summary, remove members from groups
|
|
50
|
+
- Add courses to group, remove courses from group, get group courses, add bundles to group
|
|
48
51
|
|
|
49
52
|
### 📦 **Bundle** (2 operations)
|
|
50
53
|
|
|
51
|
-
- Get
|
|
54
|
+
- Get bundles, get bundle members
|
|
52
55
|
|
|
53
|
-
### 🏠 **Hub** (
|
|
56
|
+
### 🏠 **Hub** (7 operations)
|
|
54
57
|
|
|
55
|
-
- Get
|
|
58
|
+
- Get many hubs, get hub templates, get hub template variables, create a hub, delete a hub, add hub access, remove hub access
|
|
56
59
|
|
|
57
60
|
### 📖 **Module** (3 operations)
|
|
58
61
|
|
|
59
|
-
- Get module lessons, get module sections, change module access
|
|
62
|
+
- Get module lessons, get module sections, change module access
|
|
60
63
|
|
|
61
|
-
### 💬 **Community** (
|
|
64
|
+
### 💬 **Community** (8 operations)
|
|
62
65
|
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
+
- Get community areas, get community forums, get community posts, get community badges
|
|
67
|
+
- Create community post, add comment to post
|
|
68
|
+
- Assign badges to member, remove badges from member
|
|
69
|
+
|
|
70
|
+
### 🗓️ **Calendar Event** (5 operations)
|
|
71
|
+
|
|
72
|
+
- Get many calendar events, create a calendar event, update a calendar event, delete a calendar event, get calendar event analytics
|
|
73
|
+
- Reminders (push/email), per-phase link stages (before/during/after), access via members/groups/bundles
|
|
74
|
+
- Update maps fields from incoming items automatically
|
|
66
75
|
|
|
67
76
|
### 🔧 **Custom Fields** (14 operations)
|
|
68
77
|
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
78
|
+
- Retrieve all custom field cards, retrieve custom field cards including their definitions and categories
|
|
79
|
+
- Retrieve custom field categories, retrieve custom field definitions
|
|
80
|
+
- Retrieve the values of a custom field for a user, get all custom field values of a user for a given profile
|
|
81
|
+
- Retrieve custom field profiles of a user, retrieve custom field profiles including their values, retrieve the values of a custom field card profile for a user
|
|
82
|
+
- Retrieve the complete custom field store of a user
|
|
83
|
+
- Set the value of a single custom field for a user, set multiple custom field values for a user in one request, update a custom field value within a profile of a custom field card
|
|
84
|
+
- Upload a file from a public URL and append it to a custom field
|
|
74
85
|
|
|
75
86
|
### 🎯 **Popup** (4 operations)
|
|
76
87
|
|
|
77
|
-
- Get
|
|
88
|
+
- Get many popups, get a popup, trigger popup for member, remove popup trigger for member
|
|
78
89
|
|
|
79
|
-
### 🔗 **Webhook** (
|
|
90
|
+
### 🔗 **Webhook** (6 operations)
|
|
80
91
|
|
|
81
|
-
- Get
|
|
92
|
+
- Get webhook subscription, get webhook subscriptions, create webhook subscription, update webhook subscription, delete webhook subscription
|
|
93
|
+
- Get webhook sample data
|
|
82
94
|
|
|
83
95
|
### 👤 **Team Member** (3 operations)
|
|
84
96
|
|
|
85
|
-
- Get
|
|
97
|
+
- Get team members, get team member by email, get team member by ID
|
|
86
98
|
|
|
87
|
-
### 📢 **User** (
|
|
99
|
+
### 📢 **User** (2 operations)
|
|
88
100
|
|
|
89
|
-
- Send push notification
|
|
101
|
+
- Send push notification, send login email
|
|
90
102
|
|
|
91
103
|
### 🤖 **AI** (4 operations)
|
|
92
104
|
|
|
93
|
-
-
|
|
105
|
+
- Send message to AI agent, send message to AI concierge, list AI agents, list agent actions
|
|
94
106
|
|
|
95
107
|
### 🛡️ **Role** (1 operation)
|
|
96
108
|
|
|
97
|
-
- Get
|
|
109
|
+
- Get many roles
|
|
98
110
|
|
|
99
111
|
### 🛠️ **API Call** (1 operation)
|
|
100
112
|
|
|
101
|
-
-
|
|
113
|
+
- Custom API call (for any endpoint)
|
|
102
114
|
|
|
103
115
|
## 🎣 Trigger Events
|
|
104
116
|
|
|
@@ -106,14 +118,15 @@ The LearningSuite trigger supports the following events:
|
|
|
106
118
|
|
|
107
119
|
### ⚡ Instant Trigger Events (Webhook)
|
|
108
120
|
|
|
109
|
-
- ✅ Community Post Commented
|
|
110
121
|
- ✅ Agent Action Executed
|
|
122
|
+
- ✅ AI Agent Limit for Inaccessible Course Content Exceeded
|
|
123
|
+
- ✅ Community Post Commented
|
|
111
124
|
- ✅ Community Post Created
|
|
112
125
|
- ✅ Community Post Moderated
|
|
113
126
|
- ✅ Course Member Added
|
|
114
127
|
- ✅ Course Progress Changed
|
|
115
128
|
- ✅ Course Updated
|
|
116
|
-
- ✅ Custom Field Value Changed
|
|
129
|
+
- ✅ Custom Field Value Changed Events
|
|
117
130
|
- ✅ Custom Popup Interaction
|
|
118
131
|
- ✅ Exam Completed
|
|
119
132
|
- ✅ Exam Graded
|
|
@@ -273,6 +286,18 @@ The Custom Fields resource supports file, image, video, and audio custom fields.
|
|
|
273
286
|
- The node respects the LearningSuite file limits defined on the custom field, such as `maxFiles`, `maxImages`, `maxVideos`, and `maxAudios`.
|
|
274
287
|
- For custom field cards with multiple profiles, use Profile ID, Profile Index, or Profile Name to target a specific profile. If the card does not allow multiple profiles, profile parameters are ignored and the default profile is used.
|
|
275
288
|
|
|
289
|
+
### Calendar Events
|
|
290
|
+
|
|
291
|
+
The Calendar Event resource works on event **series**, never on single dates — a weekly series is one entry, no matter how often it takes place.
|
|
292
|
+
|
|
293
|
+
- **Get Many** filters by series lifetime: `From Date`/`To Date` select series whose lifetime overlaps the range, widened by one day for timezone tolerance. A series can therefore be returned although none of its dates falls inside the exact range. Calculate the individual dates from `startDate`, `startTime`, `timeZone`, `duration`, `repetitionInterval`, and `endDate`.
|
|
294
|
+
- **Dates and times** use `YYYY-MM-DD` and `HH:mm` and are interpreted in the event's IANA time zone (e.g. `Europe/Berlin`).
|
|
295
|
+
- **Update** maps its fields from the incoming item automatically, so a Get Many result can be piped straight into it. Only mapped fields are sent, everything else keeps its current value.
|
|
296
|
+
- **Clearing a value**: set the field to the expression `{{ null }}`. The API allows this for Description, Duration, and End Date only.
|
|
297
|
+
- **Link Stages** replace the single link with before/during/after phases. As soon as any phase is set, the During phase is required.
|
|
298
|
+
- **Access** (members, groups, bundles) can only be set when creating an event; the update endpoint does not accept it.
|
|
299
|
+
- **Get Analytics** reports per member what they did on one occurrence: `infoOpen`, `beforeLinkClick`, `liveJoin`, `afterLinkClick`. The `Occurrence Date` is the occurrence's original date, even if it was moved. By default the whole target group is returned, members with an empty `actions` list are the no-shows; `Only Members With Actions` returns just the participants. Page through with `Limit`/`Offset` (max. 100) until `members` comes back empty.
|
|
300
|
+
|
|
276
301
|
### ⚡ Instant Webhook Trigger Setup
|
|
277
302
|
|
|
278
303
|
```
|
|
@@ -367,41 +392,7 @@ npm test
|
|
|
367
392
|
|
|
368
393
|
## 📝 Changelog
|
|
369
394
|
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
#### Custom Fields File Uploads
|
|
373
|
-
|
|
374
|
-
- ✅ Upload file from public URL
|
|
375
|
-
|
|
376
|
-
- ✅ Binary uploads for file, image, video, and audio custom fields
|
|
377
|
-
|
|
378
|
-
- ✅ File Value Mode: add, replace, and replace when the field limit is reached
|
|
379
|
-
|
|
380
|
-
- ✅ Respect custom field file limits (`maxFiles`, `maxImages`, `maxVideos`, `maxAudios`)
|
|
381
|
-
|
|
382
|
-
- ✅ Improved handling for custom field profile cards and default profiles
|
|
383
|
-
|
|
384
|
-
### Version 0.1.0 (2025-09-23)
|
|
385
|
-
|
|
386
|
-
#### Initial Release
|
|
387
|
-
|
|
388
|
-
- ✅ Full LearningSuite API integration
|
|
389
|
-
|
|
390
|
-
- ✅ 15 resources with 90 action endpoints
|
|
391
|
-
|
|
392
|
-
- ✅ Webhook triggers with 18 event types for real-time automation
|
|
393
|
-
|
|
394
|
-
- ✅ Polling triggers with 11 event types
|
|
395
|
-
|
|
396
|
-
- ✅ "Find-or-Create" logic for members and groups
|
|
397
|
-
|
|
398
|
-
- ✅ Custom Fields resource with full CRUD support
|
|
399
|
-
|
|
400
|
-
- ✅ Course progress management (get/set/reset)
|
|
401
|
-
|
|
402
|
-
- ✅ Flexible parameter configuration
|
|
403
|
-
|
|
404
|
-
- ✅ API call resource for custom endpoints
|
|
395
|
+
All notable changes are documented in [CHANGELOG.md](CHANGELOG.md).
|
|
405
396
|
|
|
406
397
|
## 🛠️ Compatibility
|
|
407
398
|
|
|
@@ -419,7 +410,9 @@ This project is licensed under the [MIT License].
|
|
|
419
410
|
|
|
420
411
|
### Report Issues
|
|
421
412
|
|
|
422
|
-
For bugs or feature requests
|
|
413
|
+
For bugs or feature requests **in this node**, please create a [GitHub Issue](https://github.com/rjsebening/n8n-nodes-learningsuite/issues).
|
|
414
|
+
|
|
415
|
+
For questions about the LearningSuite API itself or your LearningSuite account, contact LearningSuite support.
|
|
423
416
|
|
|
424
417
|
### FAQ
|
|
425
418
|
|
|
@@ -440,17 +433,3 @@ A: The default URL is `https://api.learningsuite.io/api/v1`. For custom domains,
|
|
|
440
433
|
⭐ **Like this node?** Give us a star on GitHub!
|
|
441
434
|
|
|
442
435
|
💡 **Feature request?** Open an issue - we're always open to improvements!
|
|
443
|
-
|
|
444
|
-
## 📋 Disclaimer
|
|
445
|
-
|
|
446
|
-
This unofficial community node is not affiliated with, endorsed by, or sponsored by LearningSuite. It exclusively uses the publicly available LearningSuite API in accordance with its Terms of Use.
|
|
447
|
-
|
|
448
|
-
**Important Notes:**
|
|
449
|
-
|
|
450
|
-
- This node is developed and maintained by the community.
|
|
451
|
-
|
|
452
|
-
- For issues with the LearningSuite API, contact official LearningSuite Support.
|
|
453
|
-
|
|
454
|
-
- All LearningSuite trademarks and logos belong to LearningSuite.
|
|
455
|
-
|
|
456
|
-
- This node merely provides an interface to the public API.
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type IExecuteFunctions, type INodeExecutionData, type INodeType, type INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
import { getCalendarEventResourceMapperFields } from './methods/resourceMappers/calendarEvent.resourceMapper';
|
|
2
3
|
import { getTemplateVariablesResourceMapperFields } from './methods/resourceMappers/hub.resourceMapper';
|
|
3
4
|
import { getMultipleCustomFieldValueResourceMapperFields } from './methods/resourceMappers/customFields.resourceMapper';
|
|
4
5
|
export declare class LearningSuite implements INodeType {
|
|
@@ -58,11 +59,16 @@ export declare class LearningSuite implements INodeType {
|
|
|
58
59
|
community_getForums(this: import("n8n-workflow").ILoadOptionsFunctions): Promise<import("n8n-workflow").INodePropertyOptions[]>;
|
|
59
60
|
community_getBadges(this: import("n8n-workflow").ILoadOptionsFunctions): Promise<import("n8n-workflow").INodePropertyOptions[]>;
|
|
60
61
|
community_getLatestPosts(this: import("n8n-workflow").ILoadOptionsFunctions): Promise<import("n8n-workflow").INodePropertyOptions[]>;
|
|
62
|
+
calendarEvent_getCalendarEvents(this: import("n8n-workflow").ILoadOptionsFunctions): Promise<{
|
|
63
|
+
name: string;
|
|
64
|
+
value: string;
|
|
65
|
+
}[]>;
|
|
61
66
|
bundle_getBundles(this: import("n8n-workflow").ILoadOptionsFunctions): Promise<import("n8n-workflow").INodePropertyOptions[]>;
|
|
62
67
|
ai_getAgentActions(this: import("n8n-workflow").ILoadOptionsFunctions): Promise<import("n8n-workflow").INodePropertyOptions[]>;
|
|
63
68
|
ai_getAiAgents(this: import("n8n-workflow").ILoadOptionsFunctions): Promise<import("n8n-workflow").INodePropertyOptions[]>;
|
|
64
69
|
};
|
|
65
70
|
resourceMapping: {
|
|
71
|
+
getCalendarEventResourceMapperFields: typeof getCalendarEventResourceMapperFields;
|
|
66
72
|
getTemplateVariablesResourceMapperFields: typeof getTemplateVariablesResourceMapperFields;
|
|
67
73
|
getMultipleCustomFieldValueResourceMapperFields: typeof getMultipleCustomFieldValueResourceMapperFields;
|
|
68
74
|
};
|
|
@@ -38,6 +38,7 @@ const n8n_workflow_1 = require("n8n-workflow");
|
|
|
38
38
|
// methods - loadOptions
|
|
39
39
|
const loAi = __importStar(require("./methods/loadOptions/ai.loadOptions"));
|
|
40
40
|
const loBundle = __importStar(require("./methods/loadOptions/bundle.loadOptions"));
|
|
41
|
+
const loCalendarEvent = __importStar(require("./methods/loadOptions/calendarEvent.loadOptions"));
|
|
41
42
|
const loCommunity = __importStar(require("./methods/loadOptions/community.loadOptions"));
|
|
42
43
|
const loCourse = __importStar(require("./methods/loadOptions/course.loadOptions"));
|
|
43
44
|
const loGroup = __importStar(require("./methods/loadOptions/group.loadOptions"));
|
|
@@ -49,12 +50,14 @@ const loRole = __importStar(require("./methods/loadOptions/role.loadOptions"));
|
|
|
49
50
|
const loWebhook = __importStar(require("./methods/loadOptions/webhook.loadOptions"));
|
|
50
51
|
const loTeamMember = __importStar(require("./methods/loadOptions/teamMember.loadOptions"));
|
|
51
52
|
const loCustomFields = __importStar(require("./methods/loadOptions/customFields.loadOptions"));
|
|
53
|
+
const calendarEvent_resourceMapper_1 = require("./methods/resourceMappers/calendarEvent.resourceMapper");
|
|
52
54
|
const hub_resourceMapper_1 = require("./methods/resourceMappers/hub.resourceMapper");
|
|
53
55
|
const customFields_resourceMapper_1 = require("./methods/resourceMappers/customFields.resourceMapper");
|
|
54
56
|
// properties
|
|
55
57
|
const resource_selector_1 = require("./descriptions/resource.selector");
|
|
56
58
|
const apiCall_properties_1 = require("./descriptions/apiCall.properties");
|
|
57
59
|
const bundle_properties_1 = require("./descriptions/bundle.properties");
|
|
60
|
+
const calendarEvent_properties_1 = require("./descriptions/calendarEvent.properties");
|
|
58
61
|
const community_properties_1 = require("./descriptions/community.properties");
|
|
59
62
|
const course_properties_1 = require("./descriptions/course.properties");
|
|
60
63
|
const group_properties_1 = require("./descriptions/group.properties");
|
|
@@ -71,6 +74,7 @@ const ai_properties_1 = require("./descriptions/ai.properties");
|
|
|
71
74
|
// handlers
|
|
72
75
|
const apiCall_handlers_1 = require("./execute/apiCall.handlers");
|
|
73
76
|
const bundle_handlers_1 = require("./execute/bundle.handlers");
|
|
77
|
+
const calendarEvent_handlers_1 = require("./execute/calendarEvent.handlers");
|
|
74
78
|
const community_handlers_1 = require("./execute/community.handlers");
|
|
75
79
|
const course_handlers_1 = require("./execute/course.handlers");
|
|
76
80
|
const group_handlers_1 = require("./execute/group.handlers");
|
|
@@ -88,6 +92,7 @@ const registry = {
|
|
|
88
92
|
ai: { ...ai_handlers_1.aiHandlers },
|
|
89
93
|
apiCall: { ...apiCall_handlers_1.apiCallHandlers },
|
|
90
94
|
bundle: { ...bundle_handlers_1.bundleHandlers },
|
|
95
|
+
calendarEvent: { ...calendarEvent_handlers_1.calendarEventHandlers },
|
|
91
96
|
community: { ...community_handlers_1.communityHandlers },
|
|
92
97
|
course: { ...course_handlers_1.courseHandlers },
|
|
93
98
|
customFields: { ...customFields_handlers_1.customFieldsHandlers },
|
|
@@ -113,11 +118,11 @@ class LearningSuite {
|
|
|
113
118
|
group: ['transform'],
|
|
114
119
|
version: 1,
|
|
115
120
|
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
|
|
116
|
-
description: 'Interact with LearningSuite API (powered by
|
|
121
|
+
description: 'Interact with LearningSuite API (powered by agentur-systeme.de)',
|
|
117
122
|
defaults: {
|
|
118
123
|
name: 'LearningSuite',
|
|
119
124
|
// @ts-expect-error -- description required by linter
|
|
120
|
-
description: 'Interact with LearningSuite API (powered by
|
|
125
|
+
description: 'Interact with LearningSuite API (powered by agentur-systeme.de)',
|
|
121
126
|
},
|
|
122
127
|
inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
123
128
|
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
@@ -130,15 +135,12 @@ class LearningSuite {
|
|
|
130
135
|
description: 'LearningSuite API Test',
|
|
131
136
|
},
|
|
132
137
|
],
|
|
133
|
-
requestDefaults: {
|
|
134
|
-
baseURL: '={{$credentials.baseUrl}}',
|
|
135
|
-
headers: { Accept: 'application/json', 'Content-Type': 'application/json' },
|
|
136
|
-
},
|
|
137
138
|
properties: [
|
|
138
139
|
resource_selector_1.resourceSelector,
|
|
139
140
|
...ai_properties_1.aiProperties,
|
|
140
141
|
...apiCall_properties_1.apiCallProperties,
|
|
141
142
|
...bundle_properties_1.bundleProperties,
|
|
143
|
+
...calendarEvent_properties_1.calendarEventProperties,
|
|
142
144
|
...community_properties_1.communityProperties,
|
|
143
145
|
...course_properties_1.courseProperties,
|
|
144
146
|
...customFields_properties_1.customFieldsProperties,
|
|
@@ -157,6 +159,7 @@ class LearningSuite {
|
|
|
157
159
|
loadOptions: {
|
|
158
160
|
...loAi,
|
|
159
161
|
...loBundle,
|
|
162
|
+
...loCalendarEvent,
|
|
160
163
|
...loCommunity,
|
|
161
164
|
...loCourse,
|
|
162
165
|
...loCustomFields,
|
|
@@ -170,6 +173,7 @@ class LearningSuite {
|
|
|
170
173
|
...loWebhook,
|
|
171
174
|
},
|
|
172
175
|
resourceMapping: {
|
|
176
|
+
getCalendarEventResourceMapperFields: calendarEvent_resourceMapper_1.getCalendarEventResourceMapperFields,
|
|
173
177
|
getTemplateVariablesResourceMapperFields: hub_resourceMapper_1.getTemplateVariablesResourceMapperFields,
|
|
174
178
|
getMultipleCustomFieldValueResourceMapperFields: customFields_resourceMapper_1.getMultipleCustomFieldValueResourceMapperFields,
|
|
175
179
|
},
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"node": "n8n-nodes-learningsuite.learningSuite",
|
|
3
|
+
"nodeVersion": "1.0",
|
|
4
|
+
"codexVersion": "1.0",
|
|
5
|
+
"categories": ["Marketing & Content", "Communication"],
|
|
6
|
+
"resources": {
|
|
7
|
+
"credentialDocumentation": [
|
|
8
|
+
{
|
|
9
|
+
"url": "https://github.com/rjsebening/n8n-nodes-learningsuite/blob/main/CREDENTIALS.md"
|
|
10
|
+
}
|
|
11
|
+
],
|
|
12
|
+
"primaryDocumentation": [
|
|
13
|
+
{
|
|
14
|
+
"url": "https://github.com/rjsebening/n8n-nodes-learningsuite/blob/main/README.md"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -242,7 +242,7 @@ function buildDesiredFilter(event) {
|
|
|
242
242
|
filter.groupId = String(col.groupId);
|
|
243
243
|
break;
|
|
244
244
|
}
|
|
245
|
-
// ---------------- Lesson Completed (
|
|
245
|
+
// ---------------- Lesson Completed (cascading)
|
|
246
246
|
case 'lesson.completed': {
|
|
247
247
|
const col = getCol('additionalLessonCompleted');
|
|
248
248
|
if (col.courseId)
|
|
@@ -288,12 +288,12 @@ class LearningSuiteTrigger {
|
|
|
288
288
|
},
|
|
289
289
|
group: ['trigger'],
|
|
290
290
|
version: 1,
|
|
291
|
-
description: 'Interact with LearningSuite API (powered by
|
|
291
|
+
description: 'Interact with LearningSuite API (powered by agentur-systeme.de)',
|
|
292
292
|
subtitle: '={{$parameter["event"]}}',
|
|
293
293
|
defaults: {
|
|
294
294
|
name: 'LearningSuite Trigger',
|
|
295
295
|
// @ts-expect-error -- description is required by n8n node linting for defaults
|
|
296
|
-
description: 'Interact with LearningSuite API (powered by
|
|
296
|
+
description: 'Interact with LearningSuite API (powered by agentur-systeme.de)',
|
|
297
297
|
},
|
|
298
298
|
inputs: [],
|
|
299
299
|
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|