@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.
Files changed (37) hide show
  1. package/README.md +72 -93
  2. package/dist/nodes/LearningSuite/LearningSuite.node.d.ts +6 -0
  3. package/dist/nodes/LearningSuite/LearningSuite.node.js +10 -6
  4. package/dist/nodes/LearningSuite/LearningSuite.node.json +18 -0
  5. package/dist/nodes/LearningSuite/LearningSuiteTrigger.node.js +3 -3
  6. package/dist/nodes/LearningSuite/descriptions/calendarEvent.properties.d.ts +2 -0
  7. package/dist/nodes/LearningSuite/descriptions/calendarEvent.properties.js +409 -0
  8. package/dist/nodes/LearningSuite/descriptions/course.properties.js +1 -1
  9. package/dist/nodes/LearningSuite/descriptions/customFields.properties.js +17 -0
  10. package/dist/nodes/LearningSuite/descriptions/hub.properties.js +14 -1
  11. package/dist/nodes/LearningSuite/descriptions/member.properties.js +63 -7
  12. package/dist/nodes/LearningSuite/descriptions/module.properties.js +1 -1
  13. package/dist/nodes/LearningSuite/descriptions/resource.selector.js +5 -0
  14. package/dist/nodes/LearningSuite/descriptions/trigger.instant.properties.js +4 -3
  15. package/dist/nodes/LearningSuite/descriptions/webhook.properties.js +3 -2
  16. package/dist/nodes/LearningSuite/descriptions/webhook.sampleData.properties.js +2 -0
  17. package/dist/nodes/LearningSuite/exec.types.d.ts +2 -2
  18. package/dist/nodes/LearningSuite/execute/calendarEvent.handlers.d.ts +8 -0
  19. package/dist/nodes/LearningSuite/execute/calendarEvent.handlers.js +252 -0
  20. package/dist/nodes/LearningSuite/execute/customFields.handlers.js +7 -1
  21. package/dist/nodes/LearningSuite/execute/hub.handlers.d.ts +1 -0
  22. package/dist/nodes/LearningSuite/execute/hub.handlers.js +5 -0
  23. package/dist/nodes/LearningSuite/execute/member.handlers.d.ts +1 -0
  24. package/dist/nodes/LearningSuite/execute/member.handlers.js +46 -5
  25. package/dist/nodes/LearningSuite/execute/registry.js +2 -0
  26. package/dist/nodes/LearningSuite/execute/webhook.handlers.js +1 -1
  27. package/dist/nodes/LearningSuite/methods/loadOptions/calendarEvent.loadOptions.d.ts +5 -0
  28. package/dist/nodes/LearningSuite/methods/loadOptions/calendarEvent.loadOptions.js +15 -0
  29. package/dist/nodes/LearningSuite/methods/loadOptions/teamMember.loadOptions.js +1 -1
  30. package/dist/nodes/LearningSuite/methods/resourceMappers/calendarEvent.resourceMapper.d.ts +3 -0
  31. package/dist/nodes/LearningSuite/methods/resourceMappers/calendarEvent.resourceMapper.js +35 -0
  32. package/dist/nodes/LearningSuite/shared/parsing.d.ts +2 -0
  33. package/dist/nodes/LearningSuite/shared/parsing.js +12 -0
  34. package/dist/nodes/LearningSuite/shared/request.d.ts +2 -1
  35. package/dist/nodes/LearningSuite/shared/request.js +6 -6
  36. package/dist/nodes/LearningSuitePollingTrigger/LearningSuitePollingTrigger.node.js +2 -2
  37. package/package.json +2 -2
package/README.md CHANGED
@@ -2,103 +2,115 @@
2
2
 
3
3
  ![n8n](https://img.shields.io/badge/n8n-2.17.2+-brightgreen)
4
4
 
5
- ![Version](https://img.shields.io/badge/version-1.2.3-blue)
5
+ ![Version](https://img.shields.io/badge/version-1.5.0-blue)
6
6
 
7
7
  ![License](https://img.shields.io/badge/license-MIT-green)
8
8
 
9
- An n8n Community Node for the **LearningSuite API**, which allows you to seamlessly integrate your LearningSuite instance into n8n workflows.
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 community node uses the public LearningSuite API and is not affiliated with or sponsored by LearningSuite. All trademarks belong to their respective owners.
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
- **Note**: This is a community-developed node for the LearningSuite API. For official support, please contact LearningSuite directly.
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
- - **15 resources** fully supported (Member, Course, Group, Bundle, Hub, Module, Community, Custom Fields, Popup, Webhook, Role, User, Team Member, AI, API Call)
24
- - **90 action endpoints** for maximum flexibility
25
- - **Instant trigger (webhook-based)** with 18 event types for real-time automation
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** (20 operations)
31
+ ### 👤 **Member** (21 operations)
32
32
 
33
- - Get by email, get by ID, get all, create, update, delete, find or create
34
- - Activate/deactivate, add/remove courses, add/remove bundles
35
- - Get courses, get course information, get member bundles
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** (7 operations)
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, create lesson
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** (12 operations)
46
+ ### 👥 **Group** (13 operations)
44
47
 
45
- - Add bundles to group, add courses to group, add members to groups, add members to groups (summary)
46
- - Create group, delete group, find group by name, find or create group
47
- - Get group by ID, get group courses, get many, remove courses from group, remove members from groups
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 all, get bundle members
54
+ - Get bundles, get bundle members
52
55
 
53
- ### 🏠 **Hub** (6 operations)
56
+ ### 🏠 **Hub** (7 operations)
54
57
 
55
- - Get all, get templates, create, give hub access, remove hub access, get hub template variables
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 for member
62
+ - Get module lessons, get module sections, change module access
60
63
 
61
- ### 💬 **Community** (7 operations)
64
+ ### 💬 **Community** (8 operations)
62
65
 
63
- - Assign badges to member, remove community badges from member
64
- - Get community areas, get community badges, get community forums, get community posts
65
- - Create community post comment
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
- - Get cards, get cards (expanded), get categories, get definitions
70
- - Get field values, get store, get store values
71
- - Get profile by card, get profiles, get profiles (expanded)
72
- - Set field value, set multiple field values, update profile field
73
- - Upload file from URL
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 all, get popup, trigger popup for member, delete popup trigger
88
+ - Get many popups, get a popup, trigger popup for member, remove popup trigger for member
78
89
 
79
- ### 🔗 **Webhook** (5 operations)
90
+ ### 🔗 **Webhook** (6 operations)
80
91
 
81
- - Get/create/update/delete subscriptions, get sample data
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 many, get by email, get by ID
97
+ - Get team members, get team member by email, get team member by ID
86
98
 
87
- ### 📢 **User** (1 operation)
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
- - Agent chat, concierge chat, get agent actions, get AI agents
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 all
109
+ - Get many roles
98
110
 
99
111
  ### 🛠️ **API Call** (1 operation)
100
112
 
101
- - Make a request (for any API calls)
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
- ### Version 1.2.3 (current)
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, please create a [GitHub Issue](https://github.com/rjsebening/n8n-nodes-learningsuite/issues).
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 joergsebening.de)',
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 joergsebening.de)',
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 (kaskadiert)
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 joergsebening.de)',
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 joergsebening.de)',
296
+ description: 'Interact with LearningSuite API (powered by agentur-systeme.de)',
297
297
  },
298
298
  inputs: [],
299
299
  outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
@@ -0,0 +1,2 @@
1
+ import type { INodeProperties } from 'n8n-workflow';
2
+ export declare const calendarEventProperties: INodeProperties[];