@rjsebening/n8n-nodes-learningsuite 1.4.0 → 1.5.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 (29) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +67 -91
  3. package/dist/credentials/LearningSuiteApi.credentials.js +4 -1
  4. package/dist/credentials/learningsuite-icon-dark.svg +1 -0
  5. package/dist/nodes/LearningSuite/LearningSuite.node.d.ts +6 -0
  6. package/dist/nodes/LearningSuite/LearningSuite.node.js +15 -10
  7. package/dist/nodes/LearningSuite/LearningSuite.node.json +18 -0
  8. package/dist/nodes/LearningSuite/LearningSuiteTrigger.node.js +3 -4
  9. package/dist/nodes/LearningSuite/descriptions/calendarEvent.properties.d.ts +2 -0
  10. package/dist/nodes/LearningSuite/descriptions/calendarEvent.properties.js +385 -0
  11. package/dist/nodes/LearningSuite/descriptions/member.properties.js +1 -1
  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 +3 -3
  15. package/dist/nodes/LearningSuite/descriptions/webhook.properties.js +2 -2
  16. package/dist/nodes/LearningSuite/exec.types.d.ts +2 -2
  17. package/dist/nodes/LearningSuite/execute/calendarEvent.handlers.d.ts +7 -0
  18. package/dist/nodes/LearningSuite/execute/calendarEvent.handlers.js +235 -0
  19. package/dist/nodes/LearningSuite/execute/registry.js +2 -0
  20. package/dist/nodes/LearningSuite/execute/webhook.handlers.js +1 -1
  21. package/dist/nodes/LearningSuite/methods/loadOptions/calendarEvent.loadOptions.d.ts +5 -0
  22. package/dist/nodes/LearningSuite/methods/loadOptions/calendarEvent.loadOptions.js +15 -0
  23. package/dist/nodes/LearningSuite/methods/loadOptions/teamMember.loadOptions.js +1 -1
  24. package/dist/nodes/LearningSuite/methods/resourceMappers/calendarEvent.resourceMapper.d.ts +3 -0
  25. package/dist/nodes/LearningSuite/methods/resourceMappers/calendarEvent.resourceMapper.js +35 -0
  26. package/dist/nodes/LearningSuite/shared/request.js +3 -3
  27. package/dist/nodes/LearningSuitePollingTrigger/LearningSuitePollingTrigger.node.js +2 -3
  28. package/package.json +73 -72
  29. /package/dist/credentials/{learningsuite.svg → learningsuite-icon-light.svg} +0 -0
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2025
3
+ Copyright (c) 2026 Rezk Jörg Sebening
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -2,27 +2,27 @@
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
+ - **100 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
 
@@ -30,75 +30,85 @@ This community node uses the public LearningSuite API and is not affiliated with
30
30
 
31
31
  ### 👤 **Member** (20 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
36
36
  - Get course progress, get module progress, get lesson progress, set course progress, reset course progress
37
37
 
38
- ### 📚 **Course** (7 operations)
38
+ ### 📚 **Course** (9 operations)
39
39
 
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
40
+ - Get published courses, publish course, get course modules, get course modules for member
41
+ - Get course members, get course access requests, get course submissions
42
+ - Create lesson, update lesson
42
43
 
43
- ### 👥 **Group** (12 operations)
44
+ ### 👥 **Group** (13 operations)
44
45
 
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
46
+ - Create a group, delete a group, find groups by name, find or create group, get group by ID, get many groups
47
+ - Add members to groups, add members to groups summary, remove members from groups
48
+ - Add courses to group, remove courses from group, get group courses, add bundles to group
48
49
 
49
50
  ### 📦 **Bundle** (2 operations)
50
51
 
51
- - Get all, get bundle members
52
+ - Get bundles, get bundle members
52
53
 
53
54
  ### 🏠 **Hub** (6 operations)
54
55
 
55
- - Get all, get templates, create, give hub access, remove hub access, get hub template variables
56
+ - Get many hubs, get hub templates, get hub template variables, create a hub, add hub access, remove hub access
56
57
 
57
58
  ### 📖 **Module** (3 operations)
58
59
 
59
- - Get module lessons, get module sections, change module access for member
60
+ - Get module lessons, get module sections, change module access
60
61
 
61
- ### 💬 **Community** (7 operations)
62
+ ### 💬 **Community** (8 operations)
62
63
 
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
64
+ - Get community areas, get community forums, get community posts, get community badges
65
+ - Create community post, add comment to post
66
+ - Assign badges to member, remove badges from member
67
+
68
+ ### 🗓️ **Calendar Event** (4 operations)
69
+
70
+ - Get many calendar events, create a calendar event, update a calendar event, delete a calendar event
71
+ - Reminders (push/email), per-phase link stages (before/during/after), access via members/groups/bundles
72
+ - Update maps fields from incoming items automatically
66
73
 
67
74
  ### 🔧 **Custom Fields** (14 operations)
68
75
 
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
76
+ - Retrieve all custom field cards, retrieve custom field cards including their definitions and categories
77
+ - Retrieve custom field categories, retrieve custom field definitions
78
+ - Retrieve the values of a custom field for a user, get all custom field values of a user for a given profile
79
+ - 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
80
+ - Retrieve the complete custom field store of a user
81
+ - 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
82
+ - Upload a file from a public URL and append it to a custom field
74
83
 
75
84
  ### 🎯 **Popup** (4 operations)
76
85
 
77
- - Get all, get popup, trigger popup for member, delete popup trigger
86
+ - Get many popups, get a popup, trigger popup for member, remove popup trigger for member
78
87
 
79
- ### 🔗 **Webhook** (5 operations)
88
+ ### 🔗 **Webhook** (6 operations)
80
89
 
81
- - Get/create/update/delete subscriptions, get sample data
90
+ - Get webhook subscription, get webhook subscriptions, create webhook subscription, update webhook subscription, delete webhook subscription
91
+ - Get webhook sample data
82
92
 
83
93
  ### 👤 **Team Member** (3 operations)
84
94
 
85
- - Get many, get by email, get by ID
95
+ - Get team members, get team member by email, get team member by ID
86
96
 
87
- ### 📢 **User** (1 operation)
97
+ ### 📢 **User** (2 operations)
88
98
 
89
- - Send push notification
99
+ - Send push notification, send login email
90
100
 
91
101
  ### 🤖 **AI** (4 operations)
92
102
 
93
- - Agent chat, concierge chat, get agent actions, get AI agents
103
+ - Send message to AI agent, send message to AI concierge, list AI agents, list agent actions
94
104
 
95
105
  ### 🛡️ **Role** (1 operation)
96
106
 
97
- - Get all
107
+ - Get many roles
98
108
 
99
109
  ### 🛠️ **API Call** (1 operation)
100
110
 
101
- - Make a request (for any API calls)
111
+ - Custom API call (for any endpoint)
102
112
 
103
113
  ## 🎣 Trigger Events
104
114
 
@@ -106,14 +116,15 @@ The LearningSuite trigger supports the following events:
106
116
 
107
117
  ### ⚡ Instant Trigger Events (Webhook)
108
118
 
109
- - ✅ Community Post Commented
110
119
  - ✅ Agent Action Executed
120
+ - ✅ AI Agent Limit for Inaccessible Course Content Exceeded
121
+ - ✅ Community Post Commented
111
122
  - ✅ Community Post Created
112
123
  - ✅ Community Post Moderated
113
124
  - ✅ Course Member Added
114
125
  - ✅ Course Progress Changed
115
126
  - ✅ Course Updated
116
- - ✅ Custom Field Value Changed
127
+ - ✅ Custom Field Value Changed Events
117
128
  - ✅ Custom Popup Interaction
118
129
  - ✅ Exam Completed
119
130
  - ✅ Exam Graded
@@ -273,6 +284,17 @@ The Custom Fields resource supports file, image, video, and audio custom fields.
273
284
  - The node respects the LearningSuite file limits defined on the custom field, such as `maxFiles`, `maxImages`, `maxVideos`, and `maxAudios`.
274
285
  - 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
286
 
287
+ ### Calendar Events
288
+
289
+ 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.
290
+
291
+ - **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`.
292
+ - **Dates and times** use `YYYY-MM-DD` and `HH:mm` and are interpreted in the event's IANA time zone (e.g. `Europe/Berlin`).
293
+ - **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.
294
+ - **Clearing a value**: set the field to the expression `{{ null }}`. The API allows this for Description, Duration, and End Date only.
295
+ - **Link Stages** replace the single link with before/during/after phases. As soon as any phase is set, the During phase is required.
296
+ - **Access** (members, groups, bundles) can only be set when creating an event; the update endpoint does not accept it.
297
+
276
298
  ### ⚡ Instant Webhook Trigger Setup
277
299
 
278
300
  ```
@@ -367,41 +389,7 @@ npm test
367
389
 
368
390
  ## 📝 Changelog
369
391
 
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
392
+ All notable changes are documented in [CHANGELOG.md](CHANGELOG.md).
405
393
 
406
394
  ## 🛠️ Compatibility
407
395
 
@@ -419,7 +407,9 @@ This project is licensed under the [MIT License].
419
407
 
420
408
  ### Report Issues
421
409
 
422
- For bugs or feature requests, please create a [GitHub Issue](https://github.com/rjsebening/n8n-nodes-learningsuite/issues).
410
+ For bugs or feature requests **in this node**, please create a [GitHub Issue](https://github.com/rjsebening/n8n-nodes-learningsuite/issues).
411
+
412
+ For questions about the LearningSuite API itself or your LearningSuite account, contact LearningSuite support.
423
413
 
424
414
  ### FAQ
425
415
 
@@ -440,17 +430,3 @@ A: The default URL is `https://api.learningsuite.io/api/v1`. For custom domains,
440
430
  ⭐ **Like this node?** Give us a star on GitHub!
441
431
 
442
432
  💡 **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.
@@ -5,7 +5,10 @@ class LearningSuiteApi {
5
5
  constructor() {
6
6
  this.name = 'learningSuiteApi';
7
7
  this.displayName = 'LearningSuite API';
8
- this.icon = 'file:learningsuite.svg';
8
+ this.icon = {
9
+ light: 'file:learningsuite-icon-light.svg',
10
+ dark: 'file:learningsuite-icon-dark.svg',
11
+ };
9
12
  this.documentationUrl = 'https://github.com/rjsebening/n8n-nodes-learningsuite/blob/main/CREDENTIALS.md';
10
13
  this.properties = [
11
14
  {
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="512" zoomAndPan="magnify" viewBox="0 0 384 391.91998" height="512" preserveAspectRatio="xMidYMid meet" version="1.0"><defs><clipPath id="c6dad2e7c9"><path d="M 127 2.066406 L 318 2.066406 L 318 214 L 127 214 Z M 127 2.066406 " clip-rule="nonzero"/></clipPath><clipPath id="a9b7033811"><path d="M 14.773438 75.550781 L 14.773438 308.371094 C 14.773438 348.953125 47.671875 381.855469 88.257812 381.855469 L 295.742188 381.855469 C 336.328125 381.855469 369.226562 348.953125 369.226562 308.371094 L 369.226562 75.550781 C 369.226562 34.96875 336.328125 2.066406 295.742188 2.066406 L 88.257812 2.066406 C 47.671875 2.066406 14.773438 34.96875 14.773438 75.550781 Z M 14.773438 75.550781 " clip-rule="nonzero"/></clipPath><clipPath id="46b7644509"><path d="M 224 54 L 369 54 L 369 293 L 224 293 Z M 224 54 " clip-rule="nonzero"/></clipPath><clipPath id="c0984bbd50"><path d="M 14.773438 75.550781 L 14.773438 308.371094 C 14.773438 348.953125 47.671875 381.855469 88.257812 381.855469 L 295.742188 381.855469 C 336.328125 381.855469 369.226562 348.953125 369.226562 308.371094 L 369.226562 75.550781 C 369.226562 34.96875 336.328125 2.066406 295.742188 2.066406 L 88.257812 2.066406 C 47.671875 2.066406 14.773438 34.96875 14.773438 75.550781 Z M 14.773438 75.550781 " clip-rule="nonzero"/></clipPath><clipPath id="4745944fd5"><path d="M 121 219 L 367 219 L 367 339 L 121 339 Z M 121 219 " clip-rule="nonzero"/></clipPath><clipPath id="dd2bba544f"><path d="M 14.773438 75.550781 L 14.773438 308.371094 C 14.773438 348.953125 47.671875 381.855469 88.257812 381.855469 L 295.742188 381.855469 C 336.328125 381.855469 369.226562 348.953125 369.226562 308.371094 L 369.226562 75.550781 C 369.226562 34.96875 336.328125 2.066406 295.742188 2.066406 L 88.257812 2.066406 C 47.671875 2.066406 14.773438 34.96875 14.773438 75.550781 Z M 14.773438 75.550781 " clip-rule="nonzero"/></clipPath><clipPath id="856a11e52a"><path d="M 66 170 L 258 170 L 258 381.488281 L 66 381.488281 Z M 66 170 " clip-rule="nonzero"/></clipPath><clipPath id="9bf386bdf1"><path d="M 14.773438 75.550781 L 14.773438 308.371094 C 14.773438 348.953125 47.671875 381.855469 88.257812 381.855469 L 295.742188 381.855469 C 336.328125 381.855469 369.226562 348.953125 369.226562 308.371094 L 369.226562 75.550781 C 369.226562 34.96875 336.328125 2.066406 295.742188 2.066406 L 88.257812 2.066406 C 47.671875 2.066406 14.773438 34.96875 14.773438 75.550781 Z M 14.773438 75.550781 " clip-rule="nonzero"/></clipPath><clipPath id="51e32676fa"><path d="M 15 89 L 160 89 L 160 329 L 15 329 Z M 15 89 " clip-rule="nonzero"/></clipPath><clipPath id="9db504f912"><path d="M 14.773438 75.550781 L 14.773438 308.371094 C 14.773438 348.953125 47.671875 381.855469 88.257812 381.855469 L 295.742188 381.855469 C 336.328125 381.855469 369.226562 348.953125 369.226562 308.371094 L 369.226562 75.550781 C 369.226562 34.96875 336.328125 2.066406 295.742188 2.066406 L 88.257812 2.066406 C 47.671875 2.066406 14.773438 34.96875 14.773438 75.550781 Z M 14.773438 75.550781 " clip-rule="nonzero"/></clipPath><clipPath id="32eae5f4c2"><path d="M 15 47 L 261 47 L 261 167 L 15 167 Z M 15 47 " clip-rule="nonzero"/></clipPath><clipPath id="6d7e40857c"><path d="M 14.773438 75.550781 L 14.773438 308.371094 C 14.773438 348.953125 47.671875 381.855469 88.257812 381.855469 L 295.742188 381.855469 C 336.328125 381.855469 369.226562 348.953125 369.226562 308.371094 L 369.226562 75.550781 C 369.226562 34.96875 336.328125 2.066406 295.742188 2.066406 L 88.257812 2.066406 C 47.671875 2.066406 14.773438 34.96875 14.773438 75.550781 Z M 14.773438 75.550781 " clip-rule="nonzero"/></clipPath><clipPath id="2d9abcf565"><path d="M 153 147 L 237 147 L 237 239 L 153 239 Z M 153 147 " clip-rule="nonzero"/></clipPath><clipPath id="13bfd7577d"><path d="M 14.773438 75.550781 L 14.773438 308.371094 C 14.773438 348.953125 47.671875 381.855469 88.257812 381.855469 L 295.742188 381.855469 C 336.328125 381.855469 369.226562 348.953125 369.226562 308.371094 L 369.226562 75.550781 C 369.226562 34.96875 336.328125 2.066406 295.742188 2.066406 L 88.257812 2.066406 C 47.671875 2.066406 14.773438 34.96875 14.773438 75.550781 Z M 14.773438 75.550781 " clip-rule="nonzero"/></clipPath></defs><g clip-path="url(#c6dad2e7c9)"><g clip-path="url(#a9b7033811)"><path fill="#1871d4" d="M 291.535156 213.332031 C 292.109375 198.699219 291.632812 184.101562 290.113281 169.539062 C 288.46875 153 285.269531 136.765625 280.519531 120.835938 C 275.351562 103.136719 267.582031 86.667969 257.210938 71.421875 C 252.648438 64.417969 247.363281 58.007812 241.367188 52.183594 C 235.367188 46.363281 228.796875 41.273438 221.660156 36.917969 C 217.097656 34.246094 212.265625 32.203125 207.164062 30.789062 C 202.066406 29.375 196.871094 28.640625 191.582031 28.582031 C 184.460938 28.492188 177.65625 29.90625 171.160156 32.824219 L 127.105469 27.867188 C 131.582031 24.050781 136.292969 20.554688 141.246094 17.378906 C 147.621094 13.257812 154.351562 9.84375 161.441406 7.132812 C 169.316406 4.101562 177.46875 2.425781 185.898438 2.097656 C 186.707031 2.0625 187.480469 2.0625 188.433594 2.0625 C 196.859375 2.078125 205.132812 3.210938 213.253906 5.464844 C 221.339844 7.722656 229.035156 10.925781 236.339844 15.070312 C 243.792969 19.347656 250.710938 24.367188 257.089844 30.128906 C 263.464844 35.894531 269.160156 42.265625 274.171875 49.253906 C 274.933594 50.308594 275.875 51.582031 277.121094 53.246094 L 277.1875 53.328125 C 282.804688 60.648438 287.882812 68.328125 292.425781 76.363281 C 298.816406 88.066406 303.621094 100.386719 306.84375 113.324219 C 315.109375 145.753906 317.941406 165.265625 317.882812 172.113281 C 311.984375 187.832031 298.851562 204.675781 291.550781 213.324219 Z M 291.535156 213.332031 " fill-opacity="1" fill-rule="nonzero"/></g></g><g clip-path="url(#46b7644509)"><g clip-path="url(#c0984bbd50)"><path fill="#ffffff" d="M 258.074219 292.765625 C 246.785156 292.621094 235.589844 291.515625 224.488281 289.449219 C 237.445312 282.628906 249.847656 274.914062 261.695312 266.3125 C 275.195312 256.617188 287.65625 245.730469 299.070312 233.652344 C 311.8125 220.3125 322.199219 205.34375 330.230469 188.738281 C 334.007812 181.285156 336.914062 173.503906 338.953125 165.398438 C 340.988281 157.292969 342.105469 149.0625 342.304688 140.707031 C 342.339844 135.414062 341.695312 130.207031 340.371094 125.085938 C 339.046875 119.964844 337.085938 115.097656 334.488281 110.488281 C 331.003906 104.289062 326.382812 99.113281 320.617188 94.949219 L 302.882812 54.304688 C 308.472656 56.289062 313.898438 58.648438 319.167969 61.375 C 325.898438 64.828125 332.199219 68.945312 338.058594 73.730469 C 344.605469 79.023438 350.117188 85.230469 354.605469 92.347656 C 355.050781 93.066406 355.449219 93.761719 355.894531 94.523438 C 360.101562 101.828125 363.261719 109.5625 365.371094 117.722656 C 367.460938 125.859375 368.539062 134.125 368.601562 142.523438 C 368.617188 151.117188 367.722656 159.617188 365.917969 168.019531 C 364.109375 176.421875 361.433594 184.539062 357.886719 192.367188 L 357.617188 192.992188 C 357.402344 193.484375 357.171875 193.980469 356.960938 194.492188 C 356.683594 195.140625 356.402344 195.792969 356.109375 196.46875 L 355.910156 196.910156 L 355.753906 197.25 C 352.265625 205.699219 348.191406 213.855469 343.535156 221.722656 C 336.609375 233.117188 328.34375 243.433594 318.734375 252.679688 C 294.765625 276.109375 279.289062 288.3125 273.339844 291.640625 C 268.28125 292.429688 263.191406 292.804688 258.074219 292.765625 Z M 258.074219 292.765625 " fill-opacity="1" fill-rule="nonzero"/></g></g><g clip-path="url(#4745944fd5)"><g clip-path="url(#dd2bba544f)"><path fill="#1871d4" d="M 243.128906 338.347656 C 241.90625 338.347656 240.941406 338.347656 240.097656 338.316406 C 226.773438 338.011719 213.703125 336.015625 200.894531 332.324219 C 168.550781 323.234375 150.28125 315.96875 144.445312 312.503906 C 133.777344 299.507812 125.765625 279.71875 121.9375 269.078125 C 134.3125 276.894531 147.1875 283.78125 160.558594 289.734375 C 175.699219 296.59375 191.355469 301.949219 207.527344 305.796875 C 221.261719 309.070312 235.191406 310.753906 249.308594 310.847656 C 253.585938 310.847656 257.851562 310.675781 261.988281 310.328125 C 270.335938 309.875 278.527344 308.507812 286.566406 306.222656 C 294.609375 303.933594 302.296875 300.789062 309.632812 296.78125 C 314.234375 294.164062 318.421875 291 322.199219 287.289062 C 325.976562 283.578125 329.214844 279.441406 331.917969 274.886719 C 335.550781 268.777344 337.730469 262.183594 338.445312 255.105469 L 364.765625 219.398438 C 365.851562 225.230469 366.523438 231.109375 366.777344 237.035156 C 367.164062 244.59375 366.746094 252.105469 365.53125 259.578125 C 364.21875 267.886719 361.59375 275.761719 357.664062 283.203125 C 357.359375 283.789062 357.011719 284.382812 356.679688 284.976562 L 356.480469 285.308594 L 356.414062 285.429688 C 352.191406 292.71875 347.078125 299.316406 341.074219 305.222656 C 335.070312 311.097656 328.445312 316.164062 321.203125 320.421875 C 313.765625 324.734375 305.957031 328.210938 297.777344 330.851562 C 289.59375 333.492188 281.226562 335.238281 272.667969 336.089844 C 271.019531 336.246094 269.246094 336.457031 267.742188 336.636719 L 267.640625 336.636719 C 259.503906 337.699219 251.335938 338.269531 243.128906 338.347656 Z M 243.128906 338.347656 " fill-opacity="1" fill-rule="nonzero"/></g></g><g clip-path="url(#856a11e52a)"><g clip-path="url(#9bf386bdf1)"><path fill="#ffffff" d="M 195.902344 381.847656 C 187.472656 381.835938 179.199219 380.703125 171.082031 378.449219 C 162.988281 376.199219 155.292969 372.996094 147.996094 368.839844 C 140.542969 364.558594 133.628906 359.539062 127.25 353.777344 C 120.871094 348.011719 115.175781 341.640625 110.164062 334.660156 C 109.390625 333.59375 108.359375 332.167969 107.210938 330.664062 L 107.015625 330.390625 C 101.457031 323.121094 96.425781 315.496094 91.921875 307.527344 C 85.523438 295.828125 80.71875 283.507812 77.507812 270.5625 C 69.207031 238.128906 66.367188 218.625 66.449219 211.796875 C 72.363281 196.050781 85.5 179.21875 92.804688 170.578125 C 92.222656 185.214844 92.695312 199.8125 94.226562 214.378906 C 95.859375 230.921875 99.046875 247.15625 103.789062 263.082031 C 108.96875 280.78125 116.742188 297.257812 127.105469 312.511719 C 131.671875 319.507812 136.957031 325.917969 142.957031 331.738281 C 148.957031 337.554688 155.523438 342.640625 162.660156 346.992188 C 167.226562 349.664062 172.0625 351.710938 177.164062 353.121094 C 182.261719 354.53125 187.460938 355.265625 192.753906 355.320312 C 199.871094 355.414062 206.679688 354.003906 213.175781 351.089844 L 257.242188 356.035156 C 252.738281 359.890625 247.988281 363.410156 242.984375 366.59375 C 236.621094 370.707031 229.902344 374.113281 222.820312 376.804688 C 214.976562 379.832031 206.851562 381.503906 198.449219 381.820312 C 197.597656 381.832031 196.816406 381.847656 195.902344 381.847656 Z M 195.902344 381.847656 " fill-opacity="1" fill-rule="nonzero"/></g></g><g clip-path="url(#51e32676fa)"><g clip-path="url(#9db504f912)"><path fill="#1871d4" d="M 81.433594 328.332031 C 75.847656 326.363281 70.429688 324.015625 65.171875 321.289062 C 58.4375 317.828125 52.136719 313.707031 46.265625 308.925781 C 39.730469 303.632812 34.21875 297.425781 29.738281 290.308594 C 29.292969 289.59375 28.851562 288.871094 28.429688 288.144531 C 24.222656 280.84375 21.070312 273.113281 18.972656 264.953125 C 16.882812 256.816406 15.800781 248.550781 15.730469 240.152344 C 15.71875 231.554688 16.613281 223.050781 18.417969 214.644531 C 20.21875 206.238281 22.890625 198.117188 26.425781 190.28125 C 27.074219 188.84375 27.757812 187.304688 28.378906 185.839844 L 28.425781 185.730469 L 28.492188 185.582031 L 28.492188 185.53125 C 32.007812 177.035156 36.109375 168.832031 40.800781 160.921875 C 47.726562 149.535156 55.988281 139.21875 65.585938 129.972656 C 89.53125 106.597656 104.734375 94.515625 110.980469 91.003906 C 116.046875 90.222656 121.144531 89.851562 126.269531 89.894531 C 137.558594 90.050781 148.75 91.160156 159.847656 93.214844 C 146.890625 100.03125 134.484375 107.742188 122.636719 116.347656 C 109.128906 126.03125 96.667969 136.910156 85.25 148.988281 C 72.511719 162.320312 62.128906 177.285156 54.097656 193.878906 C 50.316406 201.335938 47.40625 209.117188 45.367188 217.226562 C 43.324219 225.332031 42.203125 233.5625 42 241.921875 C 41.972656 247.214844 42.621094 252.425781 43.945312 257.550781 C 45.269531 262.675781 47.230469 267.546875 49.820312 272.164062 C 53.292969 278.367188 57.917969 283.546875 63.691406 287.699219 L 81.445312 328.328125 Z M 81.433594 328.332031 " fill-opacity="1" fill-rule="nonzero"/></g></g><g clip-path="url(#32eae5f4c2)"><g clip-path="url(#6d7e40857c)"><path fill="#ffffff" d="M 17.367188 166.121094 C 16.308594 160.292969 15.640625 154.421875 15.359375 148.503906 C 14.984375 140.945312 15.398438 133.425781 16.605469 125.953125 C 17.910156 117.644531 20.527344 109.765625 24.449219 102.324219 L 24.695312 101.878906 C 24.9375 101.4375 25.195312 100.96875 25.449219 100.523438 L 25.683594 100.109375 C 29.914062 92.820312 35.035156 86.230469 41.050781 80.332031 C 47.039062 74.441406 53.660156 69.371094 60.90625 65.117188 C 68.34375 60.808594 76.152344 57.335938 84.332031 54.699219 C 92.511719 52.058594 100.878906 50.316406 109.433594 49.464844 L 111.035156 49.285156 L 114.363281 48.910156 L 114.78125 48.855469 L 114.816406 48.855469 C 122.839844 47.824219 130.898438 47.269531 138.988281 47.1875 C 140.089844 47.1875 141.023438 47.1875 142.03125 47.222656 C 155.367188 47.527344 168.445312 49.523438 181.265625 53.210938 C 213.554688 62.28125 231.582031 69.40625 237.6875 73.039062 C 248.34375 86.046875 256.367188 105.820312 260.1875 116.457031 C 247.808594 108.644531 234.933594 101.757812 221.5625 95.792969 C 206.421875 88.945312 190.769531 83.59375 174.605469 79.738281 C 160.886719 76.476562 146.976562 74.800781 132.875 74.710938 C 128.609375 74.710938 124.316406 74.890625 120.140625 75.25 C 111.796875 75.695312 103.601562 77.058594 95.5625 79.339844 C 87.523438 81.621094 79.835938 84.765625 72.5 88.765625 C 67.902344 91.386719 63.710938 94.550781 59.9375 98.265625 C 56.164062 101.976562 52.929688 106.113281 50.234375 110.667969 C 46.59375 116.785156 44.417969 123.382812 43.703125 130.464844 L 17.367188 166.117188 Z M 17.367188 166.121094 " fill-opacity="1" fill-rule="nonzero"/></g></g><g clip-path="url(#2d9abcf565)"><g clip-path="url(#13bfd7577d)"><path fill="#ffffff" d="M 228.609375 179.730469 C 229.753906 180.390625 230.792969 181.1875 231.726562 182.121094 C 232.660156 183.054688 233.457031 184.09375 234.121094 185.238281 C 234.78125 186.382812 235.28125 187.59375 235.625 188.867188 C 235.964844 190.144531 236.136719 191.441406 236.136719 192.761719 C 236.136719 194.085938 235.964844 195.382812 235.625 196.660156 C 235.28125 197.933594 234.78125 199.144531 234.121094 200.289062 C 233.457031 201.429688 232.660156 202.46875 231.726562 203.402344 C 230.792969 204.335938 229.753906 205.136719 228.609375 205.792969 L 175.996094 236.15625 C 175.425781 236.484375 174.835938 236.773438 174.230469 237.023438 C 173.625 237.277344 173.003906 237.484375 172.367188 237.65625 C 171.730469 237.824219 171.089844 237.953125 170.4375 238.039062 C 169.785156 238.125 169.132812 238.167969 168.472656 238.167969 C 167.816406 238.167969 167.164062 238.125 166.511719 238.039062 C 165.859375 237.953125 165.21875 237.824219 164.582031 237.652344 C 163.949219 237.484375 163.328125 237.273438 162.71875 237.019531 C 162.113281 236.769531 161.523438 236.480469 160.957031 236.148438 C 160.386719 235.820312 159.839844 235.457031 159.320312 235.058594 C 158.796875 234.65625 158.304688 234.226562 157.839844 233.761719 C 157.375 233.296875 156.945312 232.800781 156.542969 232.28125 C 156.144531 231.757812 155.777344 231.214844 155.449219 230.644531 C 155.121094 230.078125 154.832031 229.488281 154.582031 228.882812 C 154.328125 228.273438 154.117188 227.652344 153.949219 227.019531 C 153.777344 226.382812 153.648438 225.742188 153.5625 225.089844 C 153.476562 224.4375 153.433594 223.78125 153.433594 223.125 L 153.433594 162.390625 C 153.433594 161.734375 153.476562 161.082031 153.5625 160.429688 C 153.648438 159.777344 153.777344 159.132812 153.949219 158.5 C 154.117188 157.863281 154.328125 157.242188 154.582031 156.636719 C 154.832031 156.03125 155.121094 155.441406 155.449219 154.871094 C 155.777344 154.304688 156.144531 153.757812 156.542969 153.238281 C 156.945312 152.714844 157.375 152.222656 157.839844 151.757812 C 158.304688 151.292969 158.796875 150.859375 159.320312 150.460938 C 159.839844 150.058594 160.386719 149.695312 160.957031 149.367188 C 161.523438 149.039062 162.113281 148.75 162.71875 148.496094 C 163.328125 148.246094 163.949219 148.035156 164.582031 147.863281 C 165.21875 147.695312 165.859375 147.566406 166.511719 147.480469 C 167.164062 147.394531 167.816406 147.351562 168.472656 147.351562 C 169.132812 147.351562 169.785156 147.394531 170.4375 147.480469 C 171.089844 147.5625 171.730469 147.691406 172.367188 147.863281 C 173.003906 148.03125 173.625 148.242188 174.230469 148.492188 C 174.835938 148.746094 175.425781 149.035156 175.996094 149.363281 Z M 228.609375 179.730469 " fill-opacity="1" fill-rule="nonzero"/></g></g></svg>
@@ -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
  },
@@ -204,17 +208,18 @@ class LearningSuite {
204
208
  }
205
209
  }
206
210
  catch (error) {
211
+ const nodeError = error instanceof n8n_workflow_1.NodeApiError || error instanceof n8n_workflow_1.NodeOperationError
212
+ ? error
213
+ : new n8n_workflow_1.NodeOperationError(this.getNode(), error, { itemIndex: i });
207
214
  if (this.continueOnFail()) {
208
215
  returnData.push({
209
216
  json: items[i].json,
210
- error: error instanceof n8n_workflow_1.NodeApiError || error instanceof n8n_workflow_1.NodeOperationError
211
- ? error
212
- : new n8n_workflow_1.NodeOperationError(this.getNode(), error, { itemIndex: i }),
217
+ error: nodeError,
213
218
  pairedItem: { item: i },
214
219
  });
215
220
  continue;
216
221
  }
217
- throw error;
222
+ throw nodeError;
218
223
  }
219
224
  }
220
225
  return [returnData];
@@ -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,16 +288,15 @@ 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],
300
- usableAsTool: true,
301
300
  credentials: [
302
301
  {
303
302
  name: 'learningSuiteApi',
@@ -0,0 +1,2 @@
1
+ import type { INodeProperties } from 'n8n-workflow';
2
+ export declare const calendarEventProperties: INodeProperties[];