@pipedream/zoom 0.7.1 → 0.9.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.
- package/README.md +2 -2
- package/actions/add-meeting-registrant/add-meeting-registrant.mjs +1 -1
- package/actions/add-webinar-registrant/add-webinar-registrant.mjs +1 -1
- package/actions/delete-meeting/delete-meeting.mjs +65 -0
- package/actions/get-meeting-transcript/get-meeting-transcript.mjs +1 -1
- package/actions/get-webinar-details/get-webinar-details.mjs +1 -1
- package/actions/list-call-recordings/list-call-recordings.mjs +1 -1
- package/actions/list-meetings/list-meetings.mjs +125 -0
- package/actions/list-past-meeting-participants/list-past-meeting-participants.mjs +1 -1
- package/actions/list-user-call-logs/list-user-call-logs.mjs +1 -1
- package/actions/list-webinar-participants-report/list-webinar-participants-report.mjs +1 -1
- package/common/constants.mjs +20 -0
- package/package.json +2 -2
- package/sources/custom-event/custom-event.mjs +1 -1
- package/sources/meeting-created/meeting-created.mjs +1 -1
- package/sources/meeting-deleted/meeting-deleted.mjs +1 -1
- package/sources/meeting-ended/meeting-ended.mjs +1 -1
- package/sources/meeting-started/meeting-started.mjs +1 -1
- package/sources/meeting-updated/meeting-updated.mjs +1 -1
- package/sources/new-recording-transcript-completed/new-recording-transcript-completed.mjs +1 -1
- package/sources/phone-event/phone-event.mjs +1 -1
- package/sources/recording-completed/recording-completed.mjs +1 -1
- package/sources/webinar-created/webinar-created.mjs +1 -1
- package/sources/webinar-deleted/webinar-deleted.mjs +1 -1
- package/sources/webinar-ended/webinar-ended.mjs +1 -1
- package/sources/webinar-started/webinar-started.mjs +1 -1
- package/sources/webinar-updated/webinar-updated.mjs +1 -1
- package/zoom.app.mjs +75 -0
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Overview
|
|
2
2
|
The Zoom API lets you tap into a rich set of functionalities to enhance the video conferencing experience within your own app or workflow. With the Zoom API on Pipedream, you can automatically create meetings, manage users, send meeting notifications, and more, orchestrating these actions within a broader automation. This allows for seamless integration with other services, enabling both data collection and action triggers based on Zoom events.
|
|
3
3
|
|
|
4
|
-
**Pipedream [workflows](/workflows/) allow you to run any Node.js code that connects to the Zoom API**. Just [create a new workflow](https://pipedream.com/new), then add prebuilt Zoom [actions](/components#actions) (create a meeting, send a chat message, etc.) or [write your own code](/code/). These workflows can be triggered by HTTP requests, timers, email, or on any app-based event (new tweets, a
|
|
4
|
+
**Pipedream [workflows](/workflows/) allow you to run any Node.js code that connects to the Zoom API**. Just [create a new workflow](https://pipedream.com/new), then add prebuilt Zoom [actions](/components#actions) (create a meeting, send a chat message, etc.) or [write your own code](/code/). These workflows can be triggered by HTTP requests, timers, email, or on any app-based event (new tweets, a GitHub PR, Zoom events, etc).
|
|
5
5
|
|
|
6
6
|
# Getting Started
|
|
7
7
|
|
|
@@ -33,4 +33,4 @@ The [Zoom API docs on permissions](https://marketplace.zoom.us/docs/guides/autho
|
|
|
33
33
|
|
|
34
34
|
- **Zoom Webinar Attendee Management**: Build a workflow where new sign-ups from an event management platform like Eventbrite trigger the addition of these attendees to a Zoom webinar. Post-webinar, send a follow-up email via Mailgun with a link to the webinar recording, which you can upload to a cloud storage platform like Dropbox.
|
|
35
35
|
|
|
36
|
-
- **Meeting Analytics and Reporting**: Combine Zoom's meeting ended webhook with Pipedream's capabilities to create a workflow that captures meeting details upon conclusion. With this data, you can send a summary email to the host, update a Google Sheet with attendance information, and even push the data to a BI tool like Tableau for more in-depth analysis.
|
|
36
|
+
- **Meeting Analytics and Reporting**: Combine Zoom's meeting ended webhook with Pipedream's capabilities to create a workflow that captures meeting details upon conclusion. With this data, you can send a summary email to the host, update a Google Sheet with attendance information, and even push the data to a BI tool like Tableau for more in-depth analysis.
|
|
@@ -4,7 +4,7 @@ export default {
|
|
|
4
4
|
key: "zoom-add-meeting-registrant",
|
|
5
5
|
name: "Add Meeting Registrant",
|
|
6
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
|
+
version: "0.3.7",
|
|
8
8
|
annotations: {
|
|
9
9
|
destructiveHint: false,
|
|
10
10
|
openWorldHint: true,
|
|
@@ -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
|
+
version: "0.3.7",
|
|
8
8
|
annotations: {
|
|
9
9
|
destructiveHint: false,
|
|
10
10
|
openWorldHint: true,
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import zoom from "../../zoom.app.mjs";
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
key: "zoom-delete-meeting",
|
|
5
|
+
name: "Delete Meeting",
|
|
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",
|
|
8
|
+
type: "action",
|
|
9
|
+
annotations: {
|
|
10
|
+
destructiveHint: true,
|
|
11
|
+
openWorldHint: true,
|
|
12
|
+
readOnlyHint: false,
|
|
13
|
+
},
|
|
14
|
+
props: {
|
|
15
|
+
zoom,
|
|
16
|
+
meetingId: {
|
|
17
|
+
propDefinition: [
|
|
18
|
+
zoom,
|
|
19
|
+
"meetingId",
|
|
20
|
+
],
|
|
21
|
+
description: "The ID of the meeting to delete",
|
|
22
|
+
optional: false,
|
|
23
|
+
},
|
|
24
|
+
occurrenceId: {
|
|
25
|
+
propDefinition: [
|
|
26
|
+
zoom,
|
|
27
|
+
"occurrenceId",
|
|
28
|
+
({ meetingId }) => ({
|
|
29
|
+
meetingId,
|
|
30
|
+
}),
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
scheduleForReminder: {
|
|
34
|
+
type: "boolean",
|
|
35
|
+
label: "Schedule for Reminder",
|
|
36
|
+
description: "If `true`, notify host and alternative host about the meeting cancellation via email. If `false`, do not send any email notification.",
|
|
37
|
+
optional: true,
|
|
38
|
+
},
|
|
39
|
+
cancelMeetingReminder: {
|
|
40
|
+
type: "boolean",
|
|
41
|
+
label: "Cancel Meeting Reminder",
|
|
42
|
+
description: "If `true`, notify registrants about the meeting cancellation via email. If `false`, do not send any email notification to meeting registrants.",
|
|
43
|
+
optional: true,
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
async run({ $ }) {
|
|
47
|
+
const response = await this.zoom.deleteMeeting({
|
|
48
|
+
$,
|
|
49
|
+
meetingId: this.meetingId,
|
|
50
|
+
params: {
|
|
51
|
+
occurrence_id: this.occurrenceId,
|
|
52
|
+
schedule_for_reminder: this.scheduleForReminder,
|
|
53
|
+
cancel_meeting_reminder: this.cancelMeetingReminder,
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
if (this.occurrenceId) {
|
|
58
|
+
$.export("$summary", `The occurrence "${this.occurrenceId}" related to the meeting "${this.meetingId}" was successfully deleted`);
|
|
59
|
+
} else {
|
|
60
|
+
$.export("$summary", `The meeting "${this.meetingId}" was successfully deleted`);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return response;
|
|
64
|
+
},
|
|
65
|
+
};
|
|
@@ -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.
|
|
8
|
+
version: "0.0.5",
|
|
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
|
+
version: "0.3.7",
|
|
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.
|
|
7
|
+
version: "0.0.5",
|
|
8
8
|
annotations: {
|
|
9
9
|
destructiveHint: false,
|
|
10
10
|
openWorldHint: true,
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import zoom from "../../zoom.app.mjs";
|
|
2
|
+
import constants from "../../common/constants.mjs";
|
|
3
|
+
|
|
4
|
+
export default {
|
|
5
|
+
name: "List Meetings",
|
|
6
|
+
description: "List meetings for a user. [See the documentation](https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/meetings)",
|
|
7
|
+
key: "zoom-list-meetings",
|
|
8
|
+
version: "0.0.1",
|
|
9
|
+
type: "action",
|
|
10
|
+
annotations: {
|
|
11
|
+
destructiveHint: false,
|
|
12
|
+
openWorldHint: true,
|
|
13
|
+
readOnlyHint: true,
|
|
14
|
+
},
|
|
15
|
+
props: {
|
|
16
|
+
zoom,
|
|
17
|
+
userId: {
|
|
18
|
+
propDefinition: [
|
|
19
|
+
zoom,
|
|
20
|
+
"meetingUserId",
|
|
21
|
+
],
|
|
22
|
+
},
|
|
23
|
+
type: {
|
|
24
|
+
type: "string",
|
|
25
|
+
label: "Type",
|
|
26
|
+
description: "The type of meetings to list. Defaults to `scheduled`",
|
|
27
|
+
optional: true,
|
|
28
|
+
options: constants.MEETING_TYPES,
|
|
29
|
+
},
|
|
30
|
+
from: {
|
|
31
|
+
type: "string",
|
|
32
|
+
label: "From",
|
|
33
|
+
description: "The start date and time of the meetings to list. Example: `2023-01-01`",
|
|
34
|
+
optional: true,
|
|
35
|
+
},
|
|
36
|
+
to: {
|
|
37
|
+
type: "string",
|
|
38
|
+
label: "To",
|
|
39
|
+
description: "The end date and time of the meetings to list. Example: `2023-01-01`",
|
|
40
|
+
optional: true,
|
|
41
|
+
},
|
|
42
|
+
timezone: {
|
|
43
|
+
type: "string",
|
|
44
|
+
label: "Timezone",
|
|
45
|
+
description: "The timezone to use for the `from` and `to` dates. Example: `America/New_York`",
|
|
46
|
+
optional: true,
|
|
47
|
+
},
|
|
48
|
+
titleSearch: {
|
|
49
|
+
type: "string",
|
|
50
|
+
label: "Title Search",
|
|
51
|
+
description: "The title of the meetings to search for",
|
|
52
|
+
optional: true,
|
|
53
|
+
},
|
|
54
|
+
createdAfter: {
|
|
55
|
+
type: "string",
|
|
56
|
+
label: "Created After",
|
|
57
|
+
description: "The date and time to filter meetings created after. Example: `2023-01-01`",
|
|
58
|
+
optional: true,
|
|
59
|
+
},
|
|
60
|
+
createdBefore: {
|
|
61
|
+
type: "string",
|
|
62
|
+
label: "Created Before",
|
|
63
|
+
description: "The date and time to filter meetings created before. Example: `2023-01-01`",
|
|
64
|
+
optional: true,
|
|
65
|
+
},
|
|
66
|
+
max: {
|
|
67
|
+
propDefinition: [
|
|
68
|
+
zoom,
|
|
69
|
+
"max",
|
|
70
|
+
],
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
methods: {
|
|
74
|
+
isRelevant(meeting) {
|
|
75
|
+
if (this.titleSearch) {
|
|
76
|
+
if (!meeting.topic?.toLowerCase().includes(this.titleSearch.toLowerCase())) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (this.createdAfter && Date.parse(meeting.created_at) < Date.parse(this.createdAfter)) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
if (this.createdBefore && Date.parse(meeting.created_at) > Date.parse(this.createdBefore)) {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
return true;
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
async run({ $ }) {
|
|
90
|
+
const meetings = [];
|
|
91
|
+
let count = 0;
|
|
92
|
+
|
|
93
|
+
const results = this.zoom.getResourcesStream({
|
|
94
|
+
resourceFn: this.zoom.listUserMeetings,
|
|
95
|
+
resourceFnArgs: {
|
|
96
|
+
$,
|
|
97
|
+
userId: this.userId,
|
|
98
|
+
params: {
|
|
99
|
+
type: this.type,
|
|
100
|
+
from: this.from,
|
|
101
|
+
to: this.to,
|
|
102
|
+
timezone: this.timezone,
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
resourceName: "meetings",
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
for await (const meeting of results) {
|
|
109
|
+
if (!this.isRelevant(meeting)) {
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
meetings.push(meeting);
|
|
113
|
+
count++;
|
|
114
|
+
if (count >= this.max) {
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
$.export("$summary", `Successfully retrieved ${count} meeting${count === 1
|
|
120
|
+
? ""
|
|
121
|
+
: "s"}`);
|
|
122
|
+
|
|
123
|
+
return meetings;
|
|
124
|
+
},
|
|
125
|
+
};
|
|
@@ -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.
|
|
8
|
+
version: "0.2.7",
|
|
9
9
|
annotations: {
|
|
10
10
|
destructiveHint: false,
|
|
11
11
|
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
|
+
version: "0.0.7",
|
|
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
|
+
version: "0.0.8",
|
|
9
9
|
annotations: {
|
|
10
10
|
destructiveHint: false,
|
|
11
11
|
openWorldHint: true,
|
package/common/constants.mjs
CHANGED
|
@@ -2,8 +2,28 @@ const BASE_URL = "https://api.zoom.us";
|
|
|
2
2
|
const VERSION_PATH = "/v2";
|
|
3
3
|
const MAX_RESOURCES = 300;
|
|
4
4
|
|
|
5
|
+
const MEETING_TYPES = [
|
|
6
|
+
{
|
|
7
|
+
value: "scheduled",
|
|
8
|
+
label: "All valid previous (unexpired) meetings, live meetings, and upcoming scheduled meetings",
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
value: "live",
|
|
12
|
+
label: "All ongoing meetings",
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
value: "upcoming",
|
|
16
|
+
label: "All upcoming meetings, including live meetings",
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
value: "previous_meetings",
|
|
20
|
+
label: "All the previous meetings",
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
|
|
5
24
|
export default {
|
|
6
25
|
BASE_URL,
|
|
7
26
|
VERSION_PATH,
|
|
8
27
|
MAX_RESOURCES,
|
|
28
|
+
MEETING_TYPES,
|
|
9
29
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pipedream/zoom",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Pipedream Zoom Components",
|
|
5
5
|
"main": "zoom.app.mjs",
|
|
6
6
|
"keywords": [
|
|
@@ -14,6 +14,6 @@
|
|
|
14
14
|
"access": "public"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@pipedream/platform": "^3.1.
|
|
17
|
+
"@pipedream/platform": "^3.1.1"
|
|
18
18
|
}
|
|
19
19
|
}
|
|
@@ -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.
|
|
9
|
+
version: "0.0.4",
|
|
10
10
|
type: "source",
|
|
11
11
|
dedupe: "unique",
|
|
12
12
|
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.
|
|
9
|
+
version: "0.1.6",
|
|
10
10
|
type: "source",
|
|
11
11
|
dedupe: "unique",
|
|
12
12
|
props: {
|
package/zoom.app.mjs
CHANGED
|
@@ -55,6 +55,22 @@ export default {
|
|
|
55
55
|
},
|
|
56
56
|
optional: true,
|
|
57
57
|
},
|
|
58
|
+
occurrenceId: {
|
|
59
|
+
type: "string",
|
|
60
|
+
label: "Occurrence ID",
|
|
61
|
+
description: "If you select a value for this param, only that instance will be deleted. Otherwise, the entire meeting series will be deleted.",
|
|
62
|
+
optional: true,
|
|
63
|
+
async options({ meetingId }) {
|
|
64
|
+
if (!meetingId) {
|
|
65
|
+
return [];
|
|
66
|
+
}
|
|
67
|
+
const occurrences = await this.listMeetingsOccurrences(meetingId);
|
|
68
|
+
return occurrences.map((occurrence) => ({
|
|
69
|
+
label: `${occurrence.start_time} (${occurrence.status})`,
|
|
70
|
+
value: occurrence.occurrence_id,
|
|
71
|
+
}));
|
|
72
|
+
},
|
|
73
|
+
},
|
|
58
74
|
userId: {
|
|
59
75
|
type: "string",
|
|
60
76
|
label: "User Id",
|
|
@@ -80,6 +96,31 @@ export default {
|
|
|
80
96
|
};
|
|
81
97
|
},
|
|
82
98
|
},
|
|
99
|
+
meetingUserId: {
|
|
100
|
+
type: "string",
|
|
101
|
+
label: "User ID",
|
|
102
|
+
description: "The user ID or email address of the user to list meetings for",
|
|
103
|
+
async options({ prevContext }) {
|
|
104
|
+
const { nextPageToken } = prevContext;
|
|
105
|
+
const response = await this.listAllUsers({
|
|
106
|
+
params: {
|
|
107
|
+
next_page_token: nextPageToken,
|
|
108
|
+
},
|
|
109
|
+
});
|
|
110
|
+
const options = response.users.map(({
|
|
111
|
+
id: value, display_name, email,
|
|
112
|
+
}) => ({
|
|
113
|
+
label: `${display_name} - ${email}`,
|
|
114
|
+
value,
|
|
115
|
+
}));
|
|
116
|
+
return {
|
|
117
|
+
options,
|
|
118
|
+
context: {
|
|
119
|
+
nextPageToken: response.next_page_token,
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
},
|
|
123
|
+
},
|
|
83
124
|
includeAudioRecordings: {
|
|
84
125
|
type: "boolean",
|
|
85
126
|
label: "Include Audio Recordings",
|
|
@@ -257,6 +298,14 @@ export default {
|
|
|
257
298
|
...args,
|
|
258
299
|
});
|
|
259
300
|
},
|
|
301
|
+
listUserMeetings({
|
|
302
|
+
userId, ...args
|
|
303
|
+
}) {
|
|
304
|
+
return this._makeRequest({
|
|
305
|
+
path: `/users/${userId}/meetings`,
|
|
306
|
+
...args,
|
|
307
|
+
});
|
|
308
|
+
},
|
|
260
309
|
listWebinars({
|
|
261
310
|
userId = "me", ...args
|
|
262
311
|
} = {}) {
|
|
@@ -283,6 +332,12 @@ export default {
|
|
|
283
332
|
...opts,
|
|
284
333
|
});
|
|
285
334
|
},
|
|
335
|
+
listAllUsers(opts = {}) {
|
|
336
|
+
return this._makeRequest({
|
|
337
|
+
path: "/users",
|
|
338
|
+
...opts,
|
|
339
|
+
});
|
|
340
|
+
},
|
|
286
341
|
listCallLogs({
|
|
287
342
|
userId, ...args
|
|
288
343
|
}) {
|
|
@@ -297,6 +352,26 @@ export default {
|
|
|
297
352
|
...args,
|
|
298
353
|
});
|
|
299
354
|
},
|
|
355
|
+
async listMeetingsOccurrences(meetingId) {
|
|
356
|
+
try {
|
|
357
|
+
meetingId = utils.doubleEncode(meetingId);
|
|
358
|
+
const { occurrences } = await this._makeRequest({
|
|
359
|
+
path: `/meetings/${meetingId}`,
|
|
360
|
+
});
|
|
361
|
+
return occurrences || [];
|
|
362
|
+
} catch {
|
|
363
|
+
return [];
|
|
364
|
+
}
|
|
365
|
+
},
|
|
366
|
+
deleteMeeting({
|
|
367
|
+
meetingId, ...args
|
|
368
|
+
}) {
|
|
369
|
+
return this._makeRequest({
|
|
370
|
+
method: "DELETE",
|
|
371
|
+
path: `/meetings/${utils.doubleEncode(meetingId)}`,
|
|
372
|
+
...args,
|
|
373
|
+
});
|
|
374
|
+
},
|
|
300
375
|
async *getResourcesStream({
|
|
301
376
|
resourceFn,
|
|
302
377
|
resourceFnArgs,
|