@pipedream/zoom 0.9.0 → 0.9.1

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 (30) hide show
  1. package/actions/add-meeting-registrant/add-meeting-registrant.mjs +87 -32
  2. package/actions/add-webinar-registrant/add-webinar-registrant.mjs +1 -1
  3. package/actions/delete-meeting/delete-meeting.mjs +1 -1
  4. package/actions/get-meeting-details/get-meeting-details.mjs +1 -1
  5. package/actions/get-meeting-transcript/get-meeting-transcript.mjs +1 -1
  6. package/actions/get-webinar-details/get-webinar-details.mjs +1 -1
  7. package/actions/list-call-recordings/list-call-recordings.mjs +1 -1
  8. package/actions/list-meetings/list-meetings.mjs +1 -1
  9. package/actions/list-past-meeting-participants/list-past-meeting-participants.mjs +1 -1
  10. package/actions/list-past-webinar-qa/list-past-webinar-qa.mjs +1 -1
  11. package/actions/list-user-call-logs/list-user-call-logs.mjs +1 -1
  12. package/actions/list-webinar-participants-report/list-webinar-participants-report.mjs +1 -1
  13. package/actions/update-meeting/update-meeting.mjs +1 -1
  14. package/actions/update-webinar/update-webinar.mjs +1 -1
  15. package/common/utils.mjs +21 -0
  16. package/package.json +1 -1
  17. package/sources/custom-event/custom-event.mjs +1 -1
  18. package/sources/meeting-created/meeting-created.mjs +1 -1
  19. package/sources/meeting-deleted/meeting-deleted.mjs +1 -1
  20. package/sources/meeting-ended/meeting-ended.mjs +1 -1
  21. package/sources/meeting-started/meeting-started.mjs +1 -1
  22. package/sources/meeting-updated/meeting-updated.mjs +1 -1
  23. package/sources/new-recording-transcript-completed/new-recording-transcript-completed.mjs +1 -1
  24. package/sources/phone-event/phone-event.mjs +1 -1
  25. package/sources/recording-completed/recording-completed.mjs +1 -1
  26. package/sources/webinar-created/webinar-created.mjs +1 -1
  27. package/sources/webinar-deleted/webinar-deleted.mjs +1 -1
  28. package/sources/webinar-ended/webinar-ended.mjs +1 -1
  29. package/sources/webinar-started/webinar-started.mjs +1 -1
  30. package/sources/webinar-updated/webinar-updated.mjs +1 -1
@@ -1,10 +1,12 @@
1
1
  import app from "../../zoom.app.mjs";
2
+ import { ConfigurationError } from "@pipedream/platform";
3
+ import constants from "../../common/utils.mjs";
2
4
 
3
5
  export default {
4
6
  key: "zoom-add-meeting-registrant",
5
7
  name: "Add Meeting Registrant",
6
- description: "Registers a participant for a meeting. [See the docs here](https://marketplace.zoom.us/docs/api-reference/zoom-api/methods/#operation/meetingRegistrantCreate)",
7
- version: "0.3.7",
8
+ description: "Registers a participant or multiple participants for a meeting. [See the documentation](https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/meetingRegistrantCreate)",
9
+ version: "0.3.8",
8
10
  annotations: {
9
11
  destructiveHint: false,
10
12
  openWorldHint: true,
@@ -18,6 +20,7 @@ export default {
18
20
  app,
19
21
  "meetingId",
20
22
  ],
23
+ optional: false,
21
24
  },
22
25
  occurrenceIds: {
23
26
  propDefinition: [
@@ -127,6 +130,33 @@ export default {
127
130
  "customQuestions",
128
131
  ],
129
132
  },
133
+ registrants: {
134
+ type: "object",
135
+ label: "Registrants",
136
+ description: `Use this field to enter multiple registrants at once. Will override the single registrant fields if provided. Each registrant should be an object with at least the following properties: email, first_name, last_name. Example:
137
+ \`[
138
+ {
139
+ "email": "test@example.com",
140
+ "first_name": "John",
141
+ "last_name": "Doe"
142
+ }
143
+ ]\``,
144
+ optional: true,
145
+ reloadProps: true,
146
+ },
147
+ },
148
+ additionalProps(props) {
149
+ // Don't require email, firstName, lastName if registrants array is provided
150
+ props.email.optional = this.registrants
151
+ ? true
152
+ : false;
153
+ props.firstName.optional = this.registrants
154
+ ? true
155
+ : false;
156
+ props.lastName.optional = this.registrants
157
+ ? true
158
+ : false;
159
+ return {};
130
160
  },
131
161
  methods: {
132
162
  addMeetingRegistrant({
@@ -161,37 +191,62 @@ export default {
161
191
  customQuestions,
162
192
  } = this;
163
193
 
164
- const response = await this.addMeetingRegistrant({
165
- step,
166
- meetingId,
167
- params: {
168
- occurrence_ids: occurrenceIds,
169
- },
170
- data: {
171
- email,
172
- first_name: firstName,
173
- last_name: lastName,
174
- address,
175
- city,
176
- country,
177
- zip,
178
- state,
179
- phone,
180
- industry,
181
- org,
182
- job_title: jobTitle,
183
- purchasing_time_frame: purchasingTimeFrame,
184
- role_in_purchase_process: roleInPurchaseProcess,
185
- no_of_employees: noOfEmployees,
186
- comments,
187
- custom_questions: typeof(customQuestions) === "undefined"
188
- ? customQuestions
189
- : JSON.parse(customQuestions),
190
- },
191
- });
194
+ // If registrants array is provided, use it. Otherwise, use the single registrant fields.
195
+ let registrants = constants.parseArray(this.registrants);
196
+ if (!registrants?.length) {
197
+ registrants = [
198
+ {
199
+ email,
200
+ first_name: firstName,
201
+ last_name: lastName,
202
+ address,
203
+ city,
204
+ country,
205
+ zip,
206
+ state,
207
+ phone,
208
+ industry,
209
+ org,
210
+ job_title: jobTitle,
211
+ purchasing_time_frame: purchasingTimeFrame,
212
+ role_in_purchase_process: roleInPurchaseProcess,
213
+ no_of_employees: noOfEmployees,
214
+ comments,
215
+ custom_questions: typeof(customQuestions) === "undefined"
216
+ ? customQuestions
217
+ : JSON.parse(customQuestions),
218
+ },
219
+ ];
220
+ }
221
+
222
+ if (registrants.length > 10) {
223
+ throw new ConfigurationError("You can only add up to 10 registrants at once.");
224
+ }
192
225
 
193
- step.export("$summary", `Successfully added registrant to meeting with ID \`${response.id}\``);
226
+ // Add each registrant to the meeting
227
+ const responses = [];
228
+ for (const registrant of registrants) {
229
+ try {
230
+ const registration = await this.addMeetingRegistrant({
231
+ step,
232
+ meetingId,
233
+ params: {
234
+ occurrence_ids: occurrenceIds,
235
+ },
236
+ data: registrant,
237
+ });
238
+ responses.push(registration);
239
+ } catch (error) {
240
+ throw new ConfigurationError(`Added ${responses.length} registrants before encountering an error: ${error.message}`);
241
+ }
242
+ }
194
243
 
195
- return response;
244
+ if (registrants.length > 1) {
245
+ step.export("$summary", `Successfully added ${registrants.length} registrants to meeting with ID \`${meetingId}\``);
246
+ return responses;
247
+ } else {
248
+ step.export("$summary", `Successfully added registrant to meeting with ID \`${meetingId}\``);
249
+ return responses[0];
250
+ }
196
251
  },
197
252
  };
@@ -4,7 +4,7 @@ export default {
4
4
  key: "zoom-add-webinar-registrant",
5
5
  name: "Add Webinar Registrant",
6
6
  description: "Registers a participant for a webinar. [See the docs here](https://marketplace.zoom.us/docs/api-reference/zoom-api/webinars/webinarregistrantcreate).",
7
- version: "0.3.7",
7
+ version: "0.3.8",
8
8
  annotations: {
9
9
  destructiveHint: false,
10
10
  openWorldHint: true,
@@ -4,7 +4,7 @@ export default {
4
4
  key: "zoom-delete-meeting",
5
5
  name: "Delete Meeting",
6
6
  description: "Delete a meeting. [See the documentation](https://developers.zoom.us/docs/api/meetings/#tag/meetings/delete/meetings/{meetingId})",
7
- version: "0.0.2",
7
+ version: "0.0.3",
8
8
  type: "action",
9
9
  annotations: {
10
10
  destructiveHint: true,
@@ -6,7 +6,7 @@ export default {
6
6
  key: "zoom-get-meeting-details",
7
7
  name: "Get Meeting Details",
8
8
  description: "Retrieves the details of a meeting.",
9
- version: "0.3.6",
9
+ version: "0.3.7",
10
10
  annotations: {
11
11
  destructiveHint: false,
12
12
  openWorldHint: true,
@@ -5,7 +5,7 @@ export default {
5
5
  key: "zoom-get-meeting-transcript",
6
6
  name: "Get Meeting Transcript",
7
7
  description: "Get the transcript of a meeting. [See the documentation](https://developers.zoom.us/docs/api/meetings/#tag/cloud-recording/get/meetings/{meetingId}/transcript)",
8
- version: "0.0.5",
8
+ version: "0.0.6",
9
9
  annotations: {
10
10
  destructiveHint: false,
11
11
  openWorldHint: true,
@@ -4,7 +4,7 @@ export default {
4
4
  key: "zoom-get-webinar-details",
5
5
  name: "Get Webinar Details",
6
6
  description: "Gets details of a scheduled webinar. [See the docs here](https://marketplace.zoom.us/docs/api-reference/zoom-api/methods/#operation/webinar).",
7
- version: "0.3.7",
7
+ version: "0.3.8",
8
8
  annotations: {
9
9
  destructiveHint: false,
10
10
  openWorldHint: true,
@@ -4,7 +4,7 @@ export default {
4
4
  name: "List Call Recordings",
5
5
  description: "Get your account's call recordings. [See the documentation](https://developers.zoom.us/docs/api/rest/reference/phone/methods/#operation/getPhoneRecordings)",
6
6
  key: "zoom-list-call-recordings",
7
- version: "0.0.5",
7
+ version: "0.0.6",
8
8
  annotations: {
9
9
  destructiveHint: false,
10
10
  openWorldHint: true,
@@ -5,7 +5,7 @@ export default {
5
5
  name: "List Meetings",
6
6
  description: "List meetings for a user. [See the documentation](https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/meetings)",
7
7
  key: "zoom-list-meetings",
8
- version: "0.0.1",
8
+ version: "0.0.2",
9
9
  type: "action",
10
10
  annotations: {
11
11
  destructiveHint: false,
@@ -5,7 +5,7 @@ export default {
5
5
  key: "zoom-list-past-meeting-participants",
6
6
  name: "List Past Meeting Participants",
7
7
  description: "Retrieve information on participants from a past meeting. [See the docs here](https://marketplace.zoom.us/docs/api-reference/zoom-api/methods/#operation/pastMeetingParticipants).",
8
- version: "0.2.7",
8
+ version: "0.2.8",
9
9
  annotations: {
10
10
  destructiveHint: false,
11
11
  openWorldHint: true,
@@ -6,7 +6,7 @@ export default {
6
6
  key: "zoom-list-past-webinar-qa",
7
7
  name: "List Past Webinar Q&A",
8
8
  description: "The feature for Webinars allows attendees to ask questions during the Webinar and for the panelists, co-hosts and host to answer their questions. Use this API to list Q&A of a specific Webinar.",
9
- version: "0.1.6",
9
+ version: "0.1.7",
10
10
  annotations: {
11
11
  destructiveHint: false,
12
12
  openWorldHint: true,
@@ -4,7 +4,7 @@ export default {
4
4
  name: "List User's Call Logs",
5
5
  description: "Gets a user's Zoom phone call logs. [See the documentation](https://developers.zoom.us/docs/zoom-phone/apis/#operation/phoneUserCallLogs)",
6
6
  key: "zoom-list-user-call-logs",
7
- version: "0.0.7",
7
+ version: "0.0.8",
8
8
  annotations: {
9
9
  destructiveHint: false,
10
10
  openWorldHint: true,
@@ -5,7 +5,7 @@ export default {
5
5
  key: "zoom-list-webinar-participants-report",
6
6
  name: "List Webinar Participants Report",
7
7
  description: "Retrieves detailed report on each webinar attendee. You can get webinar participant reports for the last 6 months. [See the docs here](https://marketplace.zoom.us/docs/api-reference/zoom-api/methods/#operation/reportWebinarParticipants).",
8
- version: "0.0.8",
8
+ version: "0.0.9",
9
9
  annotations: {
10
10
  destructiveHint: false,
11
11
  openWorldHint: true,
@@ -6,7 +6,7 @@ export default {
6
6
  key: "zoom-update-meeting",
7
7
  name: "Update Meeting",
8
8
  description: "Updates an existing Zoom meeting",
9
- version: "0.1.6",
9
+ version: "0.1.7",
10
10
  annotations: {
11
11
  destructiveHint: true,
12
12
  openWorldHint: true,
@@ -6,7 +6,7 @@ export default {
6
6
  key: "zoom-update-webinar",
7
7
  name: "Update Webinar",
8
8
  description: "Update a webinar's topic, start time, or other settings",
9
- version: "0.1.6",
9
+ version: "0.1.7",
10
10
  annotations: {
11
11
  destructiveHint: true,
12
12
  openWorldHint: true,
package/common/utils.mjs CHANGED
@@ -1,3 +1,5 @@
1
+ import { ConfigurationError } from "@pipedream/platform";
2
+
1
3
  async function streamIterator(stream) {
2
4
  const resources = [];
3
5
  for await (const resource of stream) {
@@ -21,8 +23,27 @@ function doubleEncode(value) {
21
23
  return value;
22
24
  }
23
25
 
26
+ function parseArray(value) {
27
+ if (!value) {
28
+ return undefined;
29
+ }
30
+ if (typeof value === "string") {
31
+ try {
32
+ value = JSON.parse(value);
33
+ } catch {
34
+ throw new ConfigurationError(`Could not parse as array: ${value}`);
35
+ }
36
+ }
37
+ if (Array.isArray(value)) {
38
+ return value;
39
+ } else {
40
+ throw new ConfigurationError(`Expected a string or array, got ${typeof value}`);
41
+ }
42
+ }
43
+
24
44
  export default {
25
45
  streamIterator,
26
46
  summaryEnd,
27
47
  doubleEncode,
48
+ parseArray,
28
49
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pipedream/zoom",
3
- "version": "0.9.0",
3
+ "version": "0.9.1",
4
4
  "description": "Pipedream Zoom Components",
5
5
  "main": "zoom.app.mjs",
6
6
  "keywords": [
@@ -6,7 +6,7 @@ export default {
6
6
  key: "zoom-custom-event",
7
7
  name: "Custom Events (Instant)",
8
8
  description: "Emit new events tied to your Zoom user or resources you own",
9
- version: "0.1.6",
9
+ version: "0.1.7",
10
10
  type: "source",
11
11
  dedupe: "unique",
12
12
  props: {
@@ -6,7 +6,7 @@ export default {
6
6
  key: "zoom-meeting-created",
7
7
  name: "Meeting Created (Instant)",
8
8
  description: "Emit new event each time a meeting is created where you're the host",
9
- version: "0.1.6",
9
+ version: "0.1.7",
10
10
  type: "source",
11
11
  dedupe: "unique",
12
12
  props: {
@@ -6,7 +6,7 @@ export default {
6
6
  key: "zoom-meeting-deleted",
7
7
  name: "Meeting Deleted (Instant)",
8
8
  description: "Emit new event each time a meeting is deleted where you're the host",
9
- version: "0.1.6",
9
+ version: "0.1.7",
10
10
  type: "source",
11
11
  dedupe: "unique",
12
12
  props: {
@@ -6,7 +6,7 @@ export default {
6
6
  key: "zoom-meeting-ended",
7
7
  name: "Meeting Ended (Instant)",
8
8
  description: "Emit new event each time a meeting ends where you're the host",
9
- version: "0.1.6",
9
+ version: "0.1.7",
10
10
  type: "source",
11
11
  dedupe: "unique",
12
12
  props: {
@@ -6,7 +6,7 @@ export default {
6
6
  key: "zoom-meeting-started",
7
7
  name: "Meeting Started (Instant)",
8
8
  description: "Emit new event each time a meeting starts where you're the host",
9
- version: "0.1.7",
9
+ version: "0.1.8",
10
10
  type: "source",
11
11
  dedupe: "unique",
12
12
  props: {
@@ -6,7 +6,7 @@ export default {
6
6
  key: "zoom-meeting-updated",
7
7
  name: "Meeting Updated (Instant)",
8
8
  description: "Emit new event each time a meeting is updated where you're the host",
9
- version: "0.1.6",
9
+ version: "0.1.7",
10
10
  type: "source",
11
11
  dedupe: "unique",
12
12
  props: {
@@ -6,7 +6,7 @@ export default {
6
6
  key: "zoom-new-recording-transcript-completed",
7
7
  name: "New Recording Transcript Completed (Instant)",
8
8
  description: "Emit new event each time a recording transcript is completed",
9
- version: "0.0.4",
9
+ version: "0.0.5",
10
10
  type: "source",
11
11
  dedupe: "unique",
12
12
  props: {
@@ -6,7 +6,7 @@ export default {
6
6
  key: "zoom-phone-event",
7
7
  name: "Zoom Phone Events (Instant)",
8
8
  description: "Emit new Zoom Phone event tied to your Zoom user or resources you own",
9
- version: "0.1.6",
9
+ version: "0.1.7",
10
10
  type: "source",
11
11
  props: {
12
12
  ...common.props,
@@ -6,7 +6,7 @@ export default {
6
6
  key: "zoom-recording-completed",
7
7
  name: "Recording Completed (Instant)",
8
8
  description: "Emit new event each time a new recording completes for a meeting or webinar where you're the host",
9
- version: "0.1.6",
9
+ version: "0.1.7",
10
10
  type: "source",
11
11
  dedupe: "unique",
12
12
  props: {
@@ -6,7 +6,7 @@ export default {
6
6
  key: "zoom-webinar-created",
7
7
  name: "Webinar Created (Instant)",
8
8
  description: "Emit new event each time a webinar is created where you're the host",
9
- version: "0.1.6",
9
+ version: "0.1.7",
10
10
  type: "source",
11
11
  dedupe: "unique",
12
12
  props: {
@@ -6,7 +6,7 @@ export default {
6
6
  key: "zoom-webinar-deleted",
7
7
  name: "Webinar Deleted (Instant)",
8
8
  description: "Emit new event each time a webinar is deleted where you're the host",
9
- version: "0.1.6",
9
+ version: "0.1.7",
10
10
  type: "source",
11
11
  dedupe: "unique",
12
12
  props: {
@@ -6,7 +6,7 @@ export default {
6
6
  key: "zoom-webinar-ended",
7
7
  name: "Webinar Ended (Instant)",
8
8
  description: "Emit new event each time a webinar ends where you're the host",
9
- version: "0.1.6",
9
+ version: "0.1.7",
10
10
  type: "source",
11
11
  dedupe: "unique",
12
12
  props: {
@@ -6,7 +6,7 @@ export default {
6
6
  key: "zoom-webinar-started",
7
7
  name: "Webinar Started (Instant)",
8
8
  description: "Emit new event each time a webinar starts where you're the host",
9
- version: "0.1.6",
9
+ version: "0.1.7",
10
10
  type: "source",
11
11
  dedupe: "unique",
12
12
  props: {
@@ -6,7 +6,7 @@ export default {
6
6
  key: "zoom-webinar-updated",
7
7
  name: "Webinar Updated (Instant)",
8
8
  description: "Emit new event each time a webinar is updated where you're the host",
9
- version: "0.1.6",
9
+ version: "0.1.7",
10
10
  type: "source",
11
11
  dedupe: "unique",
12
12
  props: {