n8n-nodes-calendly 2.7.4

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 (69) hide show
  1. package/README.md +111 -0
  2. package/dist/credentials/CalendlyApi.credentials.d.ts +10 -0
  3. package/dist/credentials/CalendlyApi.credentials.d.ts.map +1 -0
  4. package/dist/credentials/CalendlyApi.credentials.js +37 -0
  5. package/dist/credentials/CalendlyApi.credentials.js.map +1 -0
  6. package/dist/nodes/Calendly/Calendly.node.d.ts +6 -0
  7. package/dist/nodes/Calendly/Calendly.node.d.ts.map +1 -0
  8. package/dist/nodes/Calendly/Calendly.node.js +561 -0
  9. package/dist/nodes/Calendly/Calendly.node.js.map +1 -0
  10. package/dist/nodes/Calendly/GenericFunctions.d.ts +19 -0
  11. package/dist/nodes/Calendly/GenericFunctions.d.ts.map +1 -0
  12. package/dist/nodes/Calendly/GenericFunctions.js +64 -0
  13. package/dist/nodes/Calendly/GenericFunctions.js.map +1 -0
  14. package/dist/nodes/Calendly/calendly.svg +10 -0
  15. package/dist/nodes/Calendly/descriptions/ActivityLogDescription.d.ts +4 -0
  16. package/dist/nodes/Calendly/descriptions/ActivityLogDescription.d.ts.map +1 -0
  17. package/dist/nodes/Calendly/descriptions/ActivityLogDescription.js +124 -0
  18. package/dist/nodes/Calendly/descriptions/ActivityLogDescription.js.map +1 -0
  19. package/dist/nodes/Calendly/descriptions/CustomApiCallDescription.d.ts +4 -0
  20. package/dist/nodes/Calendly/descriptions/CustomApiCallDescription.d.ts.map +1 -0
  21. package/dist/nodes/Calendly/descriptions/CustomApiCallDescription.js +127 -0
  22. package/dist/nodes/Calendly/descriptions/CustomApiCallDescription.js.map +1 -0
  23. package/dist/nodes/Calendly/descriptions/DataComplianceDescription.d.ts +4 -0
  24. package/dist/nodes/Calendly/descriptions/DataComplianceDescription.d.ts.map +1 -0
  25. package/dist/nodes/Calendly/descriptions/DataComplianceDescription.js +34 -0
  26. package/dist/nodes/Calendly/descriptions/DataComplianceDescription.js.map +1 -0
  27. package/dist/nodes/Calendly/descriptions/EventTypeDescription.d.ts +4 -0
  28. package/dist/nodes/Calendly/descriptions/EventTypeDescription.d.ts.map +1 -0
  29. package/dist/nodes/Calendly/descriptions/EventTypeDescription.js +167 -0
  30. package/dist/nodes/Calendly/descriptions/EventTypeDescription.js.map +1 -0
  31. package/dist/nodes/Calendly/descriptions/GroupDescription.d.ts +4 -0
  32. package/dist/nodes/Calendly/descriptions/GroupDescription.d.ts.map +1 -0
  33. package/dist/nodes/Calendly/descriptions/GroupDescription.js +98 -0
  34. package/dist/nodes/Calendly/descriptions/GroupDescription.js.map +1 -0
  35. package/dist/nodes/Calendly/descriptions/InviteeDescription.d.ts +4 -0
  36. package/dist/nodes/Calendly/descriptions/InviteeDescription.d.ts.map +1 -0
  37. package/dist/nodes/Calendly/descriptions/InviteeDescription.js +216 -0
  38. package/dist/nodes/Calendly/descriptions/InviteeDescription.js.map +1 -0
  39. package/dist/nodes/Calendly/descriptions/OrganizationDescription.d.ts +4 -0
  40. package/dist/nodes/Calendly/descriptions/OrganizationDescription.d.ts.map +1 -0
  41. package/dist/nodes/Calendly/descriptions/OrganizationDescription.js +145 -0
  42. package/dist/nodes/Calendly/descriptions/OrganizationDescription.js.map +1 -0
  43. package/dist/nodes/Calendly/descriptions/RoutingFormDescription.d.ts +4 -0
  44. package/dist/nodes/Calendly/descriptions/RoutingFormDescription.d.ts.map +1 -0
  45. package/dist/nodes/Calendly/descriptions/RoutingFormDescription.js +127 -0
  46. package/dist/nodes/Calendly/descriptions/RoutingFormDescription.js.map +1 -0
  47. package/dist/nodes/Calendly/descriptions/ScheduledEventDescription.d.ts +4 -0
  48. package/dist/nodes/Calendly/descriptions/ScheduledEventDescription.d.ts.map +1 -0
  49. package/dist/nodes/Calendly/descriptions/ScheduledEventDescription.js +165 -0
  50. package/dist/nodes/Calendly/descriptions/ScheduledEventDescription.js.map +1 -0
  51. package/dist/nodes/Calendly/descriptions/SchedulingLinkDescription.d.ts +4 -0
  52. package/dist/nodes/Calendly/descriptions/SchedulingLinkDescription.d.ts.map +1 -0
  53. package/dist/nodes/Calendly/descriptions/SchedulingLinkDescription.js +55 -0
  54. package/dist/nodes/Calendly/descriptions/SchedulingLinkDescription.js.map +1 -0
  55. package/dist/nodes/Calendly/descriptions/UserDescription.d.ts +4 -0
  56. package/dist/nodes/Calendly/descriptions/UserDescription.d.ts.map +1 -0
  57. package/dist/nodes/Calendly/descriptions/UserDescription.js +119 -0
  58. package/dist/nodes/Calendly/descriptions/UserDescription.js.map +1 -0
  59. package/dist/nodes/Calendly/descriptions/WebhookSubscriptionDescription.d.ts +4 -0
  60. package/dist/nodes/Calendly/descriptions/WebhookSubscriptionDescription.d.ts.map +1 -0
  61. package/dist/nodes/Calendly/descriptions/WebhookSubscriptionDescription.js +149 -0
  62. package/dist/nodes/Calendly/descriptions/WebhookSubscriptionDescription.js.map +1 -0
  63. package/dist/nodes/CalendlyTrigger/CalendlyTrigger.node.d.ts +13 -0
  64. package/dist/nodes/CalendlyTrigger/CalendlyTrigger.node.d.ts.map +1 -0
  65. package/dist/nodes/CalendlyTrigger/CalendlyTrigger.node.js +210 -0
  66. package/dist/nodes/CalendlyTrigger/CalendlyTrigger.node.js.map +1 -0
  67. package/dist/nodes/CalendlyTrigger/calendly.svg +10 -0
  68. package/dist/nodes/calendly.svg +10 -0
  69. package/package.json +63 -0
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CalendlyTrigger = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const GenericFunctions_1 = require("../Calendly/GenericFunctions");
6
+ class CalendlyTrigger {
7
+ constructor() {
8
+ this.description = {
9
+ displayName: 'Calendly Trigger',
10
+ name: 'calendlyTrigger',
11
+ icon: 'file:calendly.svg',
12
+ group: ['trigger'],
13
+ version: 1,
14
+ description: 'Starts the workflow when Calendly events occur — invitee created/canceled, no-shows, and routing form submissions',
15
+ defaults: {
16
+ name: 'Calendly Trigger',
17
+ },
18
+ inputs: [],
19
+ outputs: ['main'],
20
+ credentials: [
21
+ {
22
+ name: 'calendlyApi',
23
+ required: true,
24
+ },
25
+ ],
26
+ webhooks: [
27
+ {
28
+ name: 'default',
29
+ httpMethod: 'POST',
30
+ responseMode: 'onReceived',
31
+ path: 'webhook',
32
+ },
33
+ ],
34
+ properties: [
35
+ {
36
+ displayName: 'Scope',
37
+ name: 'scope',
38
+ type: 'options',
39
+ required: true,
40
+ options: [
41
+ {
42
+ name: 'Organization',
43
+ value: 'organization',
44
+ description: 'Receive events for all users in the organization',
45
+ },
46
+ {
47
+ name: 'User',
48
+ value: 'user',
49
+ description: 'Receive events for the authenticated user only',
50
+ },
51
+ ],
52
+ default: 'user',
53
+ description: 'The scope of events to receive',
54
+ },
55
+ {
56
+ displayName: 'Events',
57
+ name: 'events',
58
+ type: 'multiOptions',
59
+ required: true,
60
+ options: [
61
+ {
62
+ name: 'Invitee Created',
63
+ value: 'invitee.created',
64
+ description: 'Triggers when a new event is scheduled by an invitee',
65
+ },
66
+ {
67
+ name: 'Invitee Canceled',
68
+ value: 'invitee.canceled',
69
+ description: 'Triggers when an invitee cancels a scheduled event',
70
+ },
71
+ {
72
+ name: 'Invitee No Show Created',
73
+ value: 'invitee_no_show.created',
74
+ description: 'Triggers when an invitee is marked as a no-show',
75
+ },
76
+ {
77
+ name: 'Invitee No Show Deleted',
78
+ value: 'invitee_no_show.deleted',
79
+ description: 'Triggers when a no-show mark is removed from an invitee',
80
+ },
81
+ {
82
+ name: 'Routing Form Submission Created',
83
+ value: 'routing_form_submission.created',
84
+ description: 'Triggers when a routing form is submitted',
85
+ },
86
+ ],
87
+ default: ['invitee.created'],
88
+ description: 'The Calendly events to listen for',
89
+ },
90
+ {
91
+ displayName: 'Options',
92
+ name: 'options',
93
+ type: 'collection',
94
+ placeholder: 'Add Option',
95
+ default: {},
96
+ options: [
97
+ {
98
+ displayName: 'Signing Key',
99
+ name: 'signingKey',
100
+ type: 'string',
101
+ typeOptions: { password: true },
102
+ default: '',
103
+ description: 'Optional signing key to verify webhook payloads. If set, n8n will validate the X-Calendly-Webhook-Signature header.',
104
+ },
105
+ ],
106
+ },
107
+ ],
108
+ };
109
+ this.webhookMethods = {
110
+ default: {
111
+ async checkExists() {
112
+ const webhookUrl = this.getNodeWebhookUrl('default');
113
+ const webhookData = this.getWorkflowStaticData('node');
114
+ if (webhookData.webhookId) {
115
+ try {
116
+ await GenericFunctions_1.calendlyApiRequest.call(this, 'GET', `/webhook_subscriptions/${webhookData.webhookId}`);
117
+ return true;
118
+ }
119
+ catch {
120
+ delete webhookData.webhookId;
121
+ }
122
+ }
123
+ // Check if a subscription already exists for this URL
124
+ const currentUser = await GenericFunctions_1.calendlyApiRequest.call(this, 'GET', '/users/me');
125
+ const userResource = currentUser.resource;
126
+ const orgUri = userResource.current_organization;
127
+ const userUri = userResource.uri;
128
+ const scope = this.getNodeParameter('scope');
129
+ const qs = { organization: orgUri, scope };
130
+ if (scope === 'user')
131
+ qs.user = userUri;
132
+ const res = await GenericFunctions_1.calendlyApiRequest.call(this, 'GET', '/webhook_subscriptions', {}, qs);
133
+ const subscriptions = res.collection || [];
134
+ for (const sub of subscriptions) {
135
+ if (sub.callback_url === webhookUrl) {
136
+ webhookData.webhookId = sub.uri.split('/').pop();
137
+ return true;
138
+ }
139
+ }
140
+ return false;
141
+ },
142
+ async create() {
143
+ const webhookUrl = this.getNodeWebhookUrl('default');
144
+ const webhookData = this.getWorkflowStaticData('node');
145
+ const events = this.getNodeParameter('events');
146
+ const scope = this.getNodeParameter('scope');
147
+ const options = this.getNodeParameter('options', {});
148
+ const currentUser = await GenericFunctions_1.calendlyApiRequest.call(this, 'GET', '/users/me');
149
+ const userResource = currentUser.resource;
150
+ const orgUri = userResource.current_organization;
151
+ const userUri = userResource.uri;
152
+ const body = {
153
+ url: webhookUrl,
154
+ events,
155
+ organization: orgUri,
156
+ scope,
157
+ };
158
+ if (scope === 'user') {
159
+ body.user = userUri;
160
+ }
161
+ if (options.signingKey) {
162
+ body.signing_key = options.signingKey;
163
+ }
164
+ try {
165
+ const res = await GenericFunctions_1.calendlyApiRequest.call(this, 'POST', '/webhook_subscriptions', body);
166
+ const resource = res.resource;
167
+ webhookData.webhookId = resource.uri.split('/').pop();
168
+ return true;
169
+ }
170
+ catch (error) {
171
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), error);
172
+ }
173
+ },
174
+ async delete() {
175
+ const webhookData = this.getWorkflowStaticData('node');
176
+ if (webhookData.webhookId) {
177
+ try {
178
+ await GenericFunctions_1.calendlyApiRequest.call(this, 'DELETE', `/webhook_subscriptions/${webhookData.webhookId}`);
179
+ }
180
+ catch {
181
+ return false;
182
+ }
183
+ delete webhookData.webhookId;
184
+ }
185
+ return true;
186
+ },
187
+ },
188
+ };
189
+ }
190
+ async webhook() {
191
+ const bodyData = this.getBodyData();
192
+ const options = this.getNodeParameter('options', {});
193
+ // Optionally verify the webhook signature
194
+ if (options.signingKey) {
195
+ const headers = this.getHeaderData();
196
+ const signature = headers['x-calendly-webhook-signature'];
197
+ if (signature) {
198
+ // Signature format: "t=<timestamp>,v1=<hmac>"
199
+ // Full verification would require crypto — we surface the raw signature
200
+ // for users who want to verify it in a downstream Code node
201
+ bodyData.__signature = signature;
202
+ }
203
+ }
204
+ return {
205
+ workflowData: [this.helpers.returnJsonArray([bodyData])],
206
+ };
207
+ }
208
+ }
209
+ exports.CalendlyTrigger = CalendlyTrigger;
210
+ //# sourceMappingURL=CalendlyTrigger.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CalendlyTrigger.node.js","sourceRoot":"","sources":["../../../nodes/CalendlyTrigger/CalendlyTrigger.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
2
+ <!-- Outer dark blue C ring - gap at top right (~40deg to ~320deg) -->
3
+ <path d="M 83,32 A 40,40 0 1,0 83,68 L 75,62 A 29,29 0 1,1 75,38 Z" fill="#0055D4"/>
4
+ <!-- Middle bright blue C ring -->
5
+ <path d="M 79,35 A 34,34 0 1,0 79,65 L 71,59 A 23,23 0 1,1 71,41 Z" fill="#0082FF"/>
6
+ <!-- Inner cyan C ring -->
7
+ <path d="M 75,38 A 28,28 0 1,0 75,62 L 67,56 A 17,17 0 1,1 67,44 Z" fill="#00AAFF"/>
8
+ <!-- Innermost light cyan -->
9
+ <path d="M 71,41 A 22,22 0 1,0 71,59 L 63,53 A 12,12 0 1,1 63,47 Z" fill="#00CCFF"/>
10
+ </svg>
@@ -0,0 +1,10 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
2
+ <!-- Outer dark blue C ring - gap at top right (~40deg to ~320deg) -->
3
+ <path d="M 83,32 A 40,40 0 1,0 83,68 L 75,62 A 29,29 0 1,1 75,38 Z" fill="#0055D4"/>
4
+ <!-- Middle bright blue C ring -->
5
+ <path d="M 79,35 A 34,34 0 1,0 79,65 L 71,59 A 23,23 0 1,1 71,41 Z" fill="#0082FF"/>
6
+ <!-- Inner cyan C ring -->
7
+ <path d="M 75,38 A 28,28 0 1,0 75,62 L 67,56 A 17,17 0 1,1 67,44 Z" fill="#00AAFF"/>
8
+ <!-- Innermost light cyan -->
9
+ <path d="M 71,41 A 22,22 0 1,0 71,59 L 63,53 A 12,12 0 1,1 63,47 Z" fill="#00CCFF"/>
10
+ </svg>
package/package.json ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "n8n-nodes-calendly",
3
+ "version": "2.7.4",
4
+ "description": "Comprehensive n8n community node for Calendly \u2014 covers all API v2 endpoints: Scheduled Events, Invitees, Event Types, Users, Organizations, Webhooks, Availability, Routing Forms, Scheduling Links, and more.",
5
+ "keywords": [
6
+ "n8n-community-node-package",
7
+ "n8n",
8
+ "calendly",
9
+ "scheduling",
10
+ "calendar",
11
+ "automation",
12
+ "appointments",
13
+ "booking"
14
+ ],
15
+ "license": "MIT",
16
+ "homepage": "https://github.com/crm-kraft/n8n-nodes-calendly",
17
+ "author": {
18
+ "name": "CRM Kraft"
19
+ },
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "https://github.com/crm-kraft/n8n-nodes-calendly.git"
23
+ },
24
+ "main": "index.js",
25
+ "scripts": {
26
+ "build": "tsc && npm run copy-icons",
27
+ "copy-icons": "copyfiles -u 2 \"nodes/Calendly/*.svg\" dist/nodes/ && cp dist/nodes/calendly.svg dist/nodes/Calendly/calendly.svg && cp dist/nodes/calendly.svg dist/nodes/CalendlyTrigger/calendly.svg",
28
+ "dev": "tsc --watch",
29
+ "format": "prettier nodes credentials --write",
30
+ "lint": "eslint nodes credentials package.json",
31
+ "lint:fix": "eslint nodes credentials package.json --fix",
32
+ "prepublishOnly": "npm run build",
33
+ "typecheck": "tsc --noEmit"
34
+ },
35
+ "files": [
36
+ "dist"
37
+ ],
38
+ "n8n": {
39
+ "n8nNodesApiVersion": 1,
40
+ "credentials": [
41
+ "dist/credentials/CalendlyApi.credentials.js"
42
+ ],
43
+ "nodes": [
44
+ "dist/nodes/Calendly/Calendly.node.js",
45
+ "dist/nodes/CalendlyTrigger/CalendlyTrigger.node.js"
46
+ ]
47
+ },
48
+ "devDependencies": {
49
+ "@types/express": "^4.17.21",
50
+ "@types/node": "^20.11.5",
51
+ "@typescript-eslint/eslint-plugin": "^6.19.0",
52
+ "@typescript-eslint/parser": "^6.19.0",
53
+ "copyfiles": "^2.4.1",
54
+ "eslint": "^8.56.0",
55
+ "eslint-plugin-n8n-nodes-base": "^1.16.2",
56
+ "n8n-workflow": "^1.24.0",
57
+ "prettier": "^3.2.4",
58
+ "typescript": "^5.3.3"
59
+ },
60
+ "peerDependencies": {
61
+ "n8n-workflow": "*"
62
+ }
63
+ }