@weslink/n8n-nodes-kibi-connect 0.1.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 (53) hide show
  1. package/LICENSE.md +22 -0
  2. package/README.md +38 -0
  3. package/dist/credentials/KibiConnectApi.credentials.d.ts +10 -0
  4. package/dist/credentials/KibiConnectApi.credentials.js +85 -0
  5. package/dist/credentials/KibiConnectApi.credentials.js.map +1 -0
  6. package/dist/icons/kibiConnect.dark.svg +37 -0
  7. package/dist/icons/kibiConnect.svg +37 -0
  8. package/dist/nodes/KibiConnect/KibiConnect.node.d.ts +12 -0
  9. package/dist/nodes/KibiConnect/KibiConnect.node.js +109 -0
  10. package/dist/nodes/KibiConnect/KibiConnect.node.js.map +1 -0
  11. package/dist/nodes/KibiConnect/KibiConnect.node.json +18 -0
  12. package/dist/nodes/KibiConnect/listSearch/getConversations.d.ts +2 -0
  13. package/dist/nodes/KibiConnect/listSearch/getConversations.js +33 -0
  14. package/dist/nodes/KibiConnect/listSearch/getConversations.js.map +1 -0
  15. package/dist/nodes/KibiConnect/listSearch/getUsers.d.ts +2 -0
  16. package/dist/nodes/KibiConnect/listSearch/getUsers.js +26 -0
  17. package/dist/nodes/KibiConnect/listSearch/getUsers.js.map +1 -0
  18. package/dist/nodes/KibiConnect/resources/calendarEvent/index.d.ts +2 -0
  19. package/dist/nodes/KibiConnect/resources/calendarEvent/index.js +236 -0
  20. package/dist/nodes/KibiConnect/resources/calendarEvent/index.js.map +1 -0
  21. package/dist/nodes/KibiConnect/resources/chat/index.d.ts +2 -0
  22. package/dist/nodes/KibiConnect/resources/chat/index.js +221 -0
  23. package/dist/nodes/KibiConnect/resources/chat/index.js.map +1 -0
  24. package/dist/nodes/KibiConnect/resources/notification/index.d.ts +2 -0
  25. package/dist/nodes/KibiConnect/resources/notification/index.js +131 -0
  26. package/dist/nodes/KibiConnect/resources/notification/index.js.map +1 -0
  27. package/dist/nodes/KibiConnect/resources/post/index.d.ts +2 -0
  28. package/dist/nodes/KibiConnect/resources/post/index.js +176 -0
  29. package/dist/nodes/KibiConnect/resources/post/index.js.map +1 -0
  30. package/dist/nodes/KibiConnect/resources/task/index.d.ts +2 -0
  31. package/dist/nodes/KibiConnect/resources/task/index.js +229 -0
  32. package/dist/nodes/KibiConnect/resources/task/index.js.map +1 -0
  33. package/dist/nodes/KibiConnect/resources/user/index.d.ts +2 -0
  34. package/dist/nodes/KibiConnect/resources/user/index.js +91 -0
  35. package/dist/nodes/KibiConnect/resources/user/index.js.map +1 -0
  36. package/dist/nodes/KibiConnect/resources/wiki/index.d.ts +2 -0
  37. package/dist/nodes/KibiConnect/resources/wiki/index.js +167 -0
  38. package/dist/nodes/KibiConnect/resources/wiki/index.js.map +1 -0
  39. package/dist/nodes/KibiConnect/shared/descriptions.d.ts +3 -0
  40. package/dist/nodes/KibiConnect/shared/descriptions.js +52 -0
  41. package/dist/nodes/KibiConnect/shared/descriptions.js.map +1 -0
  42. package/dist/nodes/KibiConnect/shared/errors.d.ts +6 -0
  43. package/dist/nodes/KibiConnect/shared/errors.js +42 -0
  44. package/dist/nodes/KibiConnect/shared/errors.js.map +1 -0
  45. package/dist/nodes/KibiConnect/shared/fields.d.ts +7 -0
  46. package/dist/nodes/KibiConnect/shared/fields.js +120 -0
  47. package/dist/nodes/KibiConnect/shared/fields.js.map +1 -0
  48. package/dist/nodes/KibiConnect/shared/transport.d.ts +13 -0
  49. package/dist/nodes/KibiConnect/shared/transport.js +39 -0
  50. package/dist/nodes/KibiConnect/shared/transport.js.map +1 -0
  51. package/dist/package.json +66 -0
  52. package/dist/tsconfig.tsbuildinfo +1 -0
  53. package/package.json +66 -0
package/LICENSE.md ADDED
@@ -0,0 +1,22 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Weslink GmbH
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
package/README.md ADDED
@@ -0,0 +1,38 @@
1
+ # @weslink/n8n-nodes-kibi-connect
2
+
3
+ An [n8n](https://n8n.io) community node for [Kibi Connect](https://kibi.de) — the European
4
+ workplace collaboration platform, made in Germany. Chat, feed, wiki, tasks, calendar, files
5
+ and time tracking, with data kept in the EU.
6
+
7
+ > **Early release.** The package currently ships the credential and the resources
8
+ > Calendar Event, Chat, Notification, Post, Task, User and Wiki. Documents, time
9
+ > tracking and the webhook trigger are being added.
10
+
11
+ ## Installation
12
+
13
+ Follow the [community node installation guide](https://docs.n8n.io/integrations/community-nodes/installation/)
14
+ and enter `@weslink/n8n-nodes-kibi-connect` as the package name.
15
+
16
+ ## Credentials
17
+
18
+ Create an API token in Kibi under **My Profile > Integrations** and grant it the scopes the
19
+ operations you plan to use need. Tokens cannot be edited afterwards — a missing scope means
20
+ issuing a new token.
21
+
22
+ The credential takes three fields:
23
+
24
+ | Field | Notes |
25
+ |---|---|
26
+ | Base URL | Your tenant's address, e.g. `https://acme.kibi.de`. No trailing slash, no `/api`. |
27
+ | API Token | The token itself. |
28
+ | Integration Slug | Only the trigger node needs it. Chosen when the token is created and immutable afterwards. |
29
+
30
+ The REST API also has to be switched on for the tenant, under **Administration > API**.
31
+
32
+ ## Compatibility
33
+
34
+ Requires n8n 1.x and a Kibi Connect tenant with the REST API enabled.
35
+
36
+ ## License
37
+
38
+ [MIT](LICENSE.md)
@@ -0,0 +1,10 @@
1
+ import type { IAuthenticateGeneric, Icon, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
2
+ export declare class KibiConnectApi implements ICredentialType {
3
+ name: string;
4
+ displayName: string;
5
+ icon: Icon;
6
+ documentationUrl: string;
7
+ properties: INodeProperties[];
8
+ authenticate: IAuthenticateGeneric;
9
+ test: ICredentialTestRequest;
10
+ }
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KibiConnectApi = void 0;
4
+ class KibiConnectApi {
5
+ constructor() {
6
+ this.name = 'kibiConnectApi';
7
+ this.displayName = 'Kibi Connect API';
8
+ this.icon = {
9
+ light: 'file:../icons/kibiConnect.svg',
10
+ dark: 'file:../icons/kibiConnect.dark.svg',
11
+ };
12
+ this.documentationUrl = 'https://github.com/weslinkde/n8n-nodes-kibi-connect#credentials';
13
+ this.properties = [
14
+ {
15
+ displayName: 'Base URL',
16
+ name: 'baseUrl',
17
+ type: 'string',
18
+ default: '',
19
+ required: true,
20
+ placeholder: 'https://acme.kibi.de',
21
+ description: 'The address of your Kibi Connect tenant. No trailing slash, and without /api — the node appends the API path itself',
22
+ },
23
+ {
24
+ displayName: 'API Token',
25
+ name: 'apiToken',
26
+ type: 'string',
27
+ typeOptions: { password: true },
28
+ default: '',
29
+ required: true,
30
+ description: 'Create one in Kibi under My Profile > Integrations, and grant it the scopes the operations you plan to use need. Tokens cannot be edited afterwards — a missing scope means a new token',
31
+ },
32
+ {
33
+ displayName: 'Integration Slug',
34
+ name: 'integrationSlug',
35
+ type: 'string',
36
+ default: '',
37
+ description: 'The slug chosen when the token was created. Only the trigger node needs it: to register its own webhook, and to skip the events this integration caused itself. Leave empty if the token has none',
38
+ },
39
+ ];
40
+ this.authenticate = {
41
+ type: 'generic',
42
+ properties: {
43
+ headers: {
44
+ Authorization: '=Bearer {{$credentials?.apiToken}}',
45
+ },
46
+ },
47
+ };
48
+ this.test = {
49
+ request: {
50
+ baseURL: '={{$credentials.baseUrl}}/api/v1',
51
+ url: '/users',
52
+ method: 'GET',
53
+ qs: { limit: 1 },
54
+ },
55
+ rules: [
56
+ {
57
+ type: 'responseSuccessBody',
58
+ properties: {
59
+ key: 'error',
60
+ value: 'Insufficient scope',
61
+ message: 'The token works. It just does not carry the users:read scope this test uses — grant that scope, or ignore this if the operations you need are covered by the scopes it does have.',
62
+ },
63
+ },
64
+ {
65
+ type: 'responseSuccessBody',
66
+ properties: {
67
+ key: 'error',
68
+ value: 'API disabled',
69
+ message: 'The REST API is switched off for this tenant. A system administrator turns it on under Administration > API.',
70
+ },
71
+ },
72
+ {
73
+ type: 'responseSuccessBody',
74
+ properties: {
75
+ key: 'error',
76
+ value: 'IP not allowed',
77
+ message: "This n8n instance's IP address is not on the tenant's allow list. A system administrator maintains it under Administration > API.",
78
+ },
79
+ },
80
+ ],
81
+ };
82
+ }
83
+ }
84
+ exports.KibiConnectApi = KibiConnectApi;
85
+ //# sourceMappingURL=KibiConnectApi.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KibiConnectApi.credentials.js","sourceRoot":"","sources":["../../credentials/KibiConnectApi.credentials.ts"],"names":[],"mappings":";;;AAQA,MAAa,cAAc;IAA3B;QACC,SAAI,GAAG,gBAAgB,CAAC;QAExB,gBAAW,GAAG,kBAAkB,CAAC;QAEjC,SAAI,GAAS;YACZ,KAAK,EAAE,+BAA+B;YACtC,IAAI,EAAE,oCAAoC;SAC1C,CAAC;QAEF,qBAAgB,GAAG,iEAAiE,CAAC;QAErF,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,sBAAsB;gBACnC,WAAW,EACV,qHAAqH;aACtH;YACD;gBACC,WAAW,EAAE,WAAW;gBACxB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,WAAW,EACV,yLAAyL;aAC1L;YACD;gBACC,WAAW,EAAE,kBAAkB;gBAC/B,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EACV,mMAAmM;aACpM;SACD,CAAC;QAEF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,aAAa,EAAE,oCAAoC;iBACnD;aACD;SACD,CAAC;QAMF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,kCAAkC;gBAC3C,GAAG,EAAE,QAAQ;gBACb,MAAM,EAAE,KAAK;gBACb,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;aAChB;YACD,KAAK,EAAE;gBACN;oBACC,IAAI,EAAE,qBAAqB;oBAC3B,UAAU,EAAE;wBACX,GAAG,EAAE,OAAO;wBACZ,KAAK,EAAE,oBAAoB;wBAC3B,OAAO,EACN,mLAAmL;qBACpL;iBACD;gBACD;oBACC,IAAI,EAAE,qBAAqB;oBAC3B,UAAU,EAAE;wBACX,GAAG,EAAE,OAAO;wBACZ,KAAK,EAAE,cAAc;wBACrB,OAAO,EACN,8GAA8G;qBAC/G;iBACD;gBACD;oBACC,IAAI,EAAE,qBAAqB;oBAC3B,UAAU,EAAE;wBACX,GAAG,EAAE,OAAO;wBACZ,KAAK,EAAE,gBAAgB;wBACvB,OAAO,EACN,mIAAmI;qBACpI;iBACD;aACD;SACD,CAAC;IACH,CAAC;CAAA;AA7FD,wCA6FC"}
@@ -0,0 +1,37 @@
1
+ <svg version="1.1" width="684" height="684" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
2
+ viewBox="-120 0 684 684" style="enable-background:new 0 0 1490.2 683.9;" xml:space="preserve">
3
+ <circle fill="#8B90F0" cx="102.4" cy="102.3" r="102.3"/>
4
+ <circle fill="#8B90F0" cx="102.4" cy="581.6" r="102.3"/>
5
+ <circle fill="#8B90F0" cx="342.1" cy="341.9" r="102.3"/>
6
+ <path fill="#8B90F0" d="M204.5,337.4c-0.1,1.6-0.1,3.2-0.1,4.8s0,3.2,0.1,4.7c2.5,73.4,62.5,132.2,136.4,132.6h1.9
7
+ c55.4,0.3,100.2,44.7,101.4,99.8v104.5h-98.3c-1.3,0.1-2.7,0.1-4.1,0.1c-55.4,0-100.5-43.9-102.2-98.9c0-1.2,0.1-2.3,0.1-3.5
8
+ s0-2.2-0.1-3.4c-1.8-73.2-60.7-132.1-133.8-134h-7C44,442.2,0,397.1,0,341.9s45.8-102.3,102.3-102.3h0.2
9
+ c74.1,0,134.5-58.6,137.2-132c0.1-1.8,0.1-3.5,0.1-5.3s0-3.5-0.1-5.2c1.4-27,13.2-51.3,31.6-68.8c17.9-17,41.9-27.7,68.4-28.2V0
10
+ h104.5v104.5h-0.1c-1.1,55.2-46,99.7-101.3,100.2h-1.9C267,205.2,207,263.9,204.5,337.4z"/>
11
+ <path fill="#8B90F0" d="M761.5,432.6L670,306.1v126.5h-85.9V32H670v239.8l85.9-125.4H856L751.8,289.6l107,143.1L761.5,432.6
12
+ L761.5,432.6z"/>
13
+ <path fill="#8B90F0" d="M881.7,69.8c0-28,23.5-51.5,51.5-51.5s51.5,23.5,51.5,51.5s-23.5,51.5-51.5,51.5S881.7,97.8,881.7,69.8z
14
+ M890.3,146.5h85.9v286.2h-85.9V146.5L890.3,146.5z"/>
15
+ <path fill="#8B90F0" d="M1347.1,289.6c0,85.3-61.8,151.1-136.8,151.1c-38.3,0-66.4-13.2-85.3-34.9v26.9h-85.9V32h85.9v141.4
16
+ c18.9-21.8,46.9-34.9,85.3-34.9C1285.3,138.5,1347.1,204.3,1347.1,289.6z M1261.2,289.6c0-42.9-28.6-69.8-68.1-69.8
17
+ s-68.1,26.9-68.1,69.8s28.6,69.8,68.1,69.8S1261.2,332.5,1261.2,289.6z"/>
18
+ <path fill="#8B90F0" d="M1387.2,69.8c0-28,23.5-51.5,51.5-51.5s51.5,23.5,51.5,51.5s-23.5,51.5-51.5,51.5S1387.2,97.8,1387.2,69.8z
19
+ M1395.7,146.5h85.9v286.2h-85.9V146.5L1395.7,146.5z"/>
20
+ <path fill="#8B90F0" d="M577,596c0-34,25.8-60,60.5-60c22.5,0,41.9,11.5,50.1,29.4l-9.4,5.5c-6.7-14.5-22.3-23.9-40.7-23.9
21
+ c-27.8,0-48.8,21.6-48.8,49s20.9,49,48.8,49c18.6,0,33.8-9.7,41.4-23.9l9.7,5.8c-9.2,17.7-28.5,29.2-51.1,29.2
22
+ C602.8,656.1,577,630.1,577,596z"/>
23
+ <path fill="#8B90F0" d="M704.9,596c0-34,26.9-60,60.5-60s60.3,26,60.3,60s-26.9,60-60.3,60S704.9,630.1,704.9,596z M813.9,596
24
+ c0-27.4-21.2-49-48.5-49s-48.8,21.6-48.8,49s21.4,49,48.8,49S813.9,623.4,813.9,596L813.9,596z"/>
25
+ <path fill="#8B90F0" d="M950.5,582v71.5h-11.7V582c0-21.2-12.2-35-33.8-35s-40.2,14.7-40.2,45.8v60.7h-11.5v-115h11.5v21.8
26
+ c8.7-17,23.5-24.4,41.2-24.4C933.3,536,950.5,554.2,950.5,582z"/>
27
+ <path fill="#8B90F0" d="M1080.3,582v71.5h-11.7V582c0-21.2-12.2-35-33.8-35s-40.2,14.7-40.2,45.8v60.7H983v-115h11.5v21.8
28
+ c8.7-17,23.5-24.4,41.2-24.4C1063,536,1080.3,554.2,1080.3,582z"/>
29
+ <path fill="#8B90F0" d="M1221.3,596.5c0,1.8-0.2,3.7-0.2,5.5h-104.2c2.8,26,22.5,43,48.8,43c18.9,0,33.1-8.7,39.8-20.9l10.1,6
30
+ c-9.4,15.6-27.4,26-50.1,26c-35.4,0-60.5-25.3-60.5-60s24.4-60,59.6-60S1221.3,565,1221.3,596.5L1221.3,596.5z M1116.8,590.7h92.5
31
+ c-2.5-28.1-22.3-43.7-44.8-43.7C1138.2,547,1119.1,565.2,1116.8,590.7z"/>
32
+ <path fill="#8B90F0" d="M1240.3,596c0-34,25.8-60,60.5-60c22.5,0,41.9,11.5,50.1,29.4l-9.4,5.5c-6.7-14.5-22.3-23.9-40.7-23.9
33
+ c-27.8,0-48.8,21.6-48.8,49s20.9,49,48.8,49c18.6,0,33.8-9.7,41.4-23.9l9.7,5.8c-9.2,17.7-28.5,29.2-51.1,29.2
34
+ C1266.1,656.1,1240.3,630.1,1240.3,596z"/>
35
+ <path fill="#8B90F0" d="M1401.8,549.8v74.8c0,20.2,10.8,20.7,34.3,18.6v10.3c-30.1,4.6-46-2.8-46-29v-74.8h-25.3v-11.3h25.3v-28.8
36
+ l11.7-3.5v32.2h34.3v11.3H1401.8z"/>
37
+ </svg>
@@ -0,0 +1,37 @@
1
+ <svg version="1.1" width="684" height="684" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
2
+ viewBox="-120 0 684 684" style="enable-background:new 0 0 1490.2 683.9;" xml:space="preserve">
3
+ <circle fill="#5158DD" cx="102.4" cy="102.3" r="102.3"/>
4
+ <circle fill="#5158DD" cx="102.4" cy="581.6" r="102.3"/>
5
+ <circle fill="#5158DD" cx="342.1" cy="341.9" r="102.3"/>
6
+ <path fill="#5158DD" d="M204.5,337.4c-0.1,1.6-0.1,3.2-0.1,4.8s0,3.2,0.1,4.7c2.5,73.4,62.5,132.2,136.4,132.6h1.9
7
+ c55.4,0.3,100.2,44.7,101.4,99.8v104.5h-98.3c-1.3,0.1-2.7,0.1-4.1,0.1c-55.4,0-100.5-43.9-102.2-98.9c0-1.2,0.1-2.3,0.1-3.5
8
+ s0-2.2-0.1-3.4c-1.8-73.2-60.7-132.1-133.8-134h-7C44,442.2,0,397.1,0,341.9s45.8-102.3,102.3-102.3h0.2
9
+ c74.1,0,134.5-58.6,137.2-132c0.1-1.8,0.1-3.5,0.1-5.3s0-3.5-0.1-5.2c1.4-27,13.2-51.3,31.6-68.8c17.9-17,41.9-27.7,68.4-28.2V0
10
+ h104.5v104.5h-0.1c-1.1,55.2-46,99.7-101.3,100.2h-1.9C267,205.2,207,263.9,204.5,337.4z"/>
11
+ <path fill="#5158DD" d="M761.5,432.6L670,306.1v126.5h-85.9V32H670v239.8l85.9-125.4H856L751.8,289.6l107,143.1L761.5,432.6
12
+ L761.5,432.6z"/>
13
+ <path fill="#5158DD" d="M881.7,69.8c0-28,23.5-51.5,51.5-51.5s51.5,23.5,51.5,51.5s-23.5,51.5-51.5,51.5S881.7,97.8,881.7,69.8z
14
+ M890.3,146.5h85.9v286.2h-85.9V146.5L890.3,146.5z"/>
15
+ <path fill="#5158DD" d="M1347.1,289.6c0,85.3-61.8,151.1-136.8,151.1c-38.3,0-66.4-13.2-85.3-34.9v26.9h-85.9V32h85.9v141.4
16
+ c18.9-21.8,46.9-34.9,85.3-34.9C1285.3,138.5,1347.1,204.3,1347.1,289.6z M1261.2,289.6c0-42.9-28.6-69.8-68.1-69.8
17
+ s-68.1,26.9-68.1,69.8s28.6,69.8,68.1,69.8S1261.2,332.5,1261.2,289.6z"/>
18
+ <path fill="#5158DD" d="M1387.2,69.8c0-28,23.5-51.5,51.5-51.5s51.5,23.5,51.5,51.5s-23.5,51.5-51.5,51.5S1387.2,97.8,1387.2,69.8z
19
+ M1395.7,146.5h85.9v286.2h-85.9V146.5L1395.7,146.5z"/>
20
+ <path fill="#5158DD" d="M577,596c0-34,25.8-60,60.5-60c22.5,0,41.9,11.5,50.1,29.4l-9.4,5.5c-6.7-14.5-22.3-23.9-40.7-23.9
21
+ c-27.8,0-48.8,21.6-48.8,49s20.9,49,48.8,49c18.6,0,33.8-9.7,41.4-23.9l9.7,5.8c-9.2,17.7-28.5,29.2-51.1,29.2
22
+ C602.8,656.1,577,630.1,577,596z"/>
23
+ <path fill="#5158DD" d="M704.9,596c0-34,26.9-60,60.5-60s60.3,26,60.3,60s-26.9,60-60.3,60S704.9,630.1,704.9,596z M813.9,596
24
+ c0-27.4-21.2-49-48.5-49s-48.8,21.6-48.8,49s21.4,49,48.8,49S813.9,623.4,813.9,596L813.9,596z"/>
25
+ <path fill="#5158DD" d="M950.5,582v71.5h-11.7V582c0-21.2-12.2-35-33.8-35s-40.2,14.7-40.2,45.8v60.7h-11.5v-115h11.5v21.8
26
+ c8.7-17,23.5-24.4,41.2-24.4C933.3,536,950.5,554.2,950.5,582z"/>
27
+ <path fill="#5158DD" d="M1080.3,582v71.5h-11.7V582c0-21.2-12.2-35-33.8-35s-40.2,14.7-40.2,45.8v60.7H983v-115h11.5v21.8
28
+ c8.7-17,23.5-24.4,41.2-24.4C1063,536,1080.3,554.2,1080.3,582z"/>
29
+ <path fill="#5158DD" d="M1221.3,596.5c0,1.8-0.2,3.7-0.2,5.5h-104.2c2.8,26,22.5,43,48.8,43c18.9,0,33.1-8.7,39.8-20.9l10.1,6
30
+ c-9.4,15.6-27.4,26-50.1,26c-35.4,0-60.5-25.3-60.5-60s24.4-60,59.6-60S1221.3,565,1221.3,596.5L1221.3,596.5z M1116.8,590.7h92.5
31
+ c-2.5-28.1-22.3-43.7-44.8-43.7C1138.2,547,1119.1,565.2,1116.8,590.7z"/>
32
+ <path fill="#5158DD" d="M1240.3,596c0-34,25.8-60,60.5-60c22.5,0,41.9,11.5,50.1,29.4l-9.4,5.5c-6.7-14.5-22.3-23.9-40.7-23.9
33
+ c-27.8,0-48.8,21.6-48.8,49s20.9,49,48.8,49c18.6,0,33.8-9.7,41.4-23.9l9.7,5.8c-9.2,17.7-28.5,29.2-51.1,29.2
34
+ C1266.1,656.1,1240.3,630.1,1240.3,596z"/>
35
+ <path fill="#5158DD" d="M1401.8,549.8v74.8c0,20.2,10.8,20.7,34.3,18.6v10.3c-30.1,4.6-46-2.8-46-29v-74.8h-25.3v-11.3h25.3v-28.8
36
+ l11.7-3.5v32.2h34.3v11.3H1401.8z"/>
37
+ </svg>
@@ -0,0 +1,12 @@
1
+ import { type INodeType, type INodeTypeDescription } from 'n8n-workflow';
2
+ import { getConversations } from './listSearch/getConversations';
3
+ import { getUsers } from './listSearch/getUsers';
4
+ export declare class KibiConnect implements INodeType {
5
+ description: INodeTypeDescription;
6
+ methods: {
7
+ listSearch: {
8
+ getUsers: typeof getUsers;
9
+ getConversations: typeof getConversations;
10
+ };
11
+ };
12
+ }
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KibiConnect = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const getConversations_1 = require("./listSearch/getConversations");
6
+ const getUsers_1 = require("./listSearch/getUsers");
7
+ const calendarEvent_1 = require("./resources/calendarEvent");
8
+ const chat_1 = require("./resources/chat");
9
+ const notification_1 = require("./resources/notification");
10
+ const post_1 = require("./resources/post");
11
+ const task_1 = require("./resources/task");
12
+ const user_1 = require("./resources/user");
13
+ const wiki_1 = require("./resources/wiki");
14
+ class KibiConnect {
15
+ constructor() {
16
+ this.description = {
17
+ displayName: 'Kibi Connect',
18
+ name: 'kibiConnect',
19
+ icon: {
20
+ light: 'file:../../icons/kibiConnect.svg',
21
+ dark: 'file:../../icons/kibiConnect.dark.svg',
22
+ },
23
+ group: ['input'],
24
+ version: 1,
25
+ subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
26
+ description: 'Read and write chat, posts, wiki pages, tasks and calendar events in Kibi Connect',
27
+ defaults: {
28
+ name: 'Kibi Connect',
29
+ },
30
+ usableAsTool: true,
31
+ inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
32
+ outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
33
+ credentials: [
34
+ {
35
+ name: 'kibiConnectApi',
36
+ required: true,
37
+ },
38
+ ],
39
+ requestDefaults: {
40
+ baseURL: '={{$credentials.baseUrl}}/api/v1',
41
+ headers: {
42
+ Accept: 'application/json',
43
+ 'Content-Type': 'application/json',
44
+ },
45
+ },
46
+ properties: [
47
+ {
48
+ displayName: 'Resource',
49
+ name: 'resource',
50
+ type: 'options',
51
+ noDataExpression: true,
52
+ options: [
53
+ {
54
+ name: 'Calendar Event',
55
+ value: 'calendarEvent',
56
+ description: 'Appointments and meetings',
57
+ },
58
+ {
59
+ name: 'Chat',
60
+ value: 'chat',
61
+ description: 'Send and read messages, react to them',
62
+ },
63
+ {
64
+ name: 'Notification',
65
+ value: 'notification',
66
+ description: "Notify people through Kibi's own delivery rules",
67
+ },
68
+ {
69
+ name: 'Post',
70
+ value: 'post',
71
+ description: 'News and announcements in the feed',
72
+ },
73
+ {
74
+ name: 'Task',
75
+ value: 'task',
76
+ description: 'Work items on a board',
77
+ },
78
+ {
79
+ name: 'User',
80
+ value: 'user',
81
+ description: 'Look people up in the employee directory',
82
+ },
83
+ {
84
+ name: 'Wiki Page',
85
+ value: 'wiki',
86
+ description: 'Knowledge base pages',
87
+ },
88
+ ],
89
+ default: 'chat',
90
+ },
91
+ ...calendarEvent_1.calendarEventDescription,
92
+ ...chat_1.chatDescription,
93
+ ...notification_1.notificationDescription,
94
+ ...post_1.postDescription,
95
+ ...task_1.taskDescription,
96
+ ...user_1.userDescription,
97
+ ...wiki_1.wikiDescription,
98
+ ],
99
+ };
100
+ this.methods = {
101
+ listSearch: {
102
+ getUsers: getUsers_1.getUsers,
103
+ getConversations: getConversations_1.getConversations,
104
+ },
105
+ };
106
+ }
107
+ }
108
+ exports.KibiConnect = KibiConnect;
109
+ //# sourceMappingURL=KibiConnect.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KibiConnect.node.js","sourceRoot":"","sources":["../../../nodes/KibiConnect/KibiConnect.node.ts"],"names":[],"mappings":";;;AAAA,+CAA8F;AAE9F,oEAAiE;AACjE,oDAAiD;AACjD,6DAAqE;AACrE,2CAAmD;AACnD,2DAAmE;AACnE,2CAAmD;AACnD,2CAAmD;AACnD,2CAAmD;AACnD,2CAAmD;AAEnD,MAAa,WAAW;IAAxB;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,cAAc;YAC3B,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE;gBACL,KAAK,EAAE,kCAAkC;gBACzC,IAAI,EAAE,uCAAuC;aAC7C;YACD,KAAK,EAAE,CAAC,OAAO,CAAC;YAChB,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,8DAA8D;YACxE,WAAW,EAAE,mFAAmF;YAChG,QAAQ,EAAE;gBACT,IAAI,EAAE,cAAc;aACpB;YACD,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YAClC,OAAO,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YACnC,WAAW,EAAE;gBACZ;oBACC,IAAI,EAAE,gBAAgB;oBACtB,QAAQ,EAAE,IAAI;iBACd;aACD;YAGD,eAAe,EAAE;gBAChB,OAAO,EAAE,kCAAkC;gBAC3C,OAAO,EAAE;oBACR,MAAM,EAAE,kBAAkB;oBAC1B,cAAc,EAAE,kBAAkB;iBAClC;aACD;YACD,UAAU,EAAE;gBACX;oBACC,WAAW,EAAE,UAAU;oBACvB,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,SAAS;oBACf,gBAAgB,EAAE,IAAI;oBACtB,OAAO,EAAE;wBACR;4BACC,IAAI,EAAE,gBAAgB;4BACtB,KAAK,EAAE,eAAe;4BACtB,WAAW,EAAE,2BAA2B;yBACxC;wBACD;4BACC,IAAI,EAAE,MAAM;4BACZ,KAAK,EAAE,MAAM;4BACb,WAAW,EAAE,uCAAuC;yBACpD;wBACD;4BACC,IAAI,EAAE,cAAc;4BACpB,KAAK,EAAE,cAAc;4BACrB,WAAW,EAAE,iDAAiD;yBAC9D;wBACD;4BACC,IAAI,EAAE,MAAM;4BACZ,KAAK,EAAE,MAAM;4BACb,WAAW,EAAE,oCAAoC;yBACjD;wBACD;4BACC,IAAI,EAAE,MAAM;4BACZ,KAAK,EAAE,MAAM;4BACb,WAAW,EAAE,uBAAuB;yBACpC;wBACD;4BACC,IAAI,EAAE,MAAM;4BACZ,KAAK,EAAE,MAAM;4BACb,WAAW,EAAE,0CAA0C;yBACvD;wBACD;4BACC,IAAI,EAAE,WAAW;4BACjB,KAAK,EAAE,MAAM;4BACb,WAAW,EAAE,sBAAsB;yBACnC;qBACD;oBACD,OAAO,EAAE,MAAM;iBACf;gBACD,GAAG,wCAAwB;gBAC3B,GAAG,sBAAe;gBAClB,GAAG,sCAAuB;gBAC1B,GAAG,sBAAe;gBAClB,GAAG,sBAAe;gBAClB,GAAG,sBAAe;gBAClB,GAAG,sBAAe;aAClB;SACD,CAAC;QAKF,YAAO,GAAG;YACT,UAAU,EAAE;gBACX,QAAQ,EAAR,mBAAQ;gBACR,gBAAgB,EAAhB,mCAAgB;aAChB;SACD,CAAC;IACH,CAAC;CAAA;AAjGD,kCAiGC"}
@@ -0,0 +1,18 @@
1
+ {
2
+ "node": "@weslink/n8n-nodes-kibi-connect.kibiConnect",
3
+ "nodeVersion": "1.0",
4
+ "codexVersion": "1.0",
5
+ "categories": ["Communication", "Productivity"],
6
+ "resources": {
7
+ "credentialDocumentation": [
8
+ {
9
+ "url": "https://github.com/weslinkde/n8n-nodes-kibi-connect#credentials"
10
+ }
11
+ ],
12
+ "primaryDocumentation": [
13
+ {
14
+ "url": "https://github.com/weslinkde/n8n-nodes-kibi-connect#readme"
15
+ }
16
+ ]
17
+ }
18
+ }
@@ -0,0 +1,2 @@
1
+ import type { ILoadOptionsFunctions, INodeListSearchResult } from 'n8n-workflow';
2
+ export declare function getConversations(this: ILoadOptionsFunctions, filter?: string, paginationToken?: string): Promise<INodeListSearchResult>;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getConversations = getConversations;
4
+ const transport_1 = require("../shared/transport");
5
+ async function getConversations(filter, paginationToken) {
6
+ const page = paginationToken ? Number(paginationToken) : 1;
7
+ const response = (await transport_1.kibiApiRequest.call(this, 'GET', '/chat/conversations', undefined, {
8
+ limit: 50,
9
+ page,
10
+ }));
11
+ const needle = filter === null || filter === void 0 ? void 0 : filter.toLowerCase();
12
+ const results = response.data
13
+ .filter((conversation) => {
14
+ var _a;
15
+ if (!needle)
16
+ return true;
17
+ return ((_a = conversation.name) !== null && _a !== void 0 ? _a : '').toLowerCase().includes(needle);
18
+ })
19
+ .map((conversation) => {
20
+ var _a;
21
+ return ({
22
+ name: ((_a = conversation.name) !== null && _a !== void 0 ? _a : `Conversation ${conversation.id}`) +
23
+ (conversation.type === 'group' ? ' (group)' : ''),
24
+ value: conversation.id,
25
+ });
26
+ });
27
+ const meta = response.meta;
28
+ return {
29
+ results,
30
+ paginationToken: meta && meta.current_page < meta.last_page ? String(meta.current_page + 1) : undefined,
31
+ };
32
+ }
33
+ //# sourceMappingURL=getConversations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getConversations.js","sourceRoot":"","sources":["../../../../nodes/KibiConnect/listSearch/getConversations.ts"],"names":[],"mappings":";;AA2BA,4CAiCC;AAzDD,mDAAqD;AAwB9C,KAAK,UAAU,gBAAgB,CAErC,MAAe,EACf,eAAwB;IAExB,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3D,MAAM,QAAQ,GAAG,CAAC,MAAM,0BAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE;QAC1F,KAAK,EAAE,EAAE;QACT,IAAI;KACJ,CAAC,CAAoC,CAAC;IAEvC,MAAM,MAAM,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,EAAE,CAAC;IAErC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI;SAC3B,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE;;QACxB,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,OAAO,CAAC,MAAA,YAAY,CAAC,IAAI,mCAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE;;QAAC,OAAA,CAAC;YACvB,IAAI,EACH,CAAC,MAAA,YAAY,CAAC,IAAI,mCAAI,gBAAgB,YAAY,CAAC,EAAE,EAAE,CAAC;gBACxD,CAAC,YAAY,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,KAAK,EAAE,YAAY,CAAC,EAAE;SACtB,CAAC,CAAA;KAAA,CAAC,CAAC;IAEL,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAE3B,OAAO;QACN,OAAO;QACP,eAAe,EACd,IAAI,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;KACvF,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { ILoadOptionsFunctions, INodeListSearchResult } from 'n8n-workflow';
2
+ export declare function getUsers(this: ILoadOptionsFunctions, filter?: string, paginationToken?: string): Promise<INodeListSearchResult>;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getUsers = getUsers;
4
+ const transport_1 = require("../shared/transport");
5
+ async function getUsers(filter, paginationToken) {
6
+ const page = paginationToken ? Number(paginationToken) : 1;
7
+ const response = (await transport_1.kibiApiRequest.call(this, 'GET', '/users', undefined, {
8
+ ...(filter ? { search: filter } : {}),
9
+ limit: 50,
10
+ page,
11
+ }));
12
+ const meta = response.meta;
13
+ return {
14
+ results: response.data.map((user) => {
15
+ var _a;
16
+ return ({
17
+ name: [(_a = user.name) !== null && _a !== void 0 ? _a : user.id, user.department, user.position]
18
+ .filter((part) => part !== null && part !== undefined && part !== '')
19
+ .join(' — '),
20
+ value: user.id,
21
+ });
22
+ }),
23
+ paginationToken: meta && meta.current_page < meta.last_page ? String(meta.current_page + 1) : undefined,
24
+ };
25
+ }
26
+ //# sourceMappingURL=getUsers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getUsers.js","sourceRoot":"","sources":["../../../../nodes/KibiConnect/listSearch/getUsers.ts"],"names":[],"mappings":";;AAoBA,4BA2BC;AA5CD,mDAAqD;AAiB9C,KAAK,UAAU,QAAQ,CAE7B,MAAe,EACf,eAAwB;IAExB,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3D,MAAM,QAAQ,GAAG,CAAC,MAAM,0BAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE;QAC7E,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,KAAK,EAAE,EAAE;QACT,IAAI;KACJ,CAAC,CAA4B,CAAC;IAE/B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAE3B,OAAO;QACN,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;;YAAC,OAAA,CAAC;gBAGrC,IAAI,EAAE,CAAC,MAAA,IAAI,CAAC,IAAI,mCAAI,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC;qBAC1D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,CAAC;qBACpE,IAAI,CAAC,KAAK,CAAC;gBACb,KAAK,EAAE,IAAI,CAAC,EAAE;aACd,CAAC,CAAA;SAAA,CAAC;QACH,eAAe,EACd,IAAI,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;KACvF,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { INodeProperties } from 'n8n-workflow';
2
+ export declare const calendarEventDescription: INodeProperties[];