zaccl 3.0.18 → 4.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 (68) hide show
  1. package/docs/ECatCloudRecording.js.html +69 -26
  2. package/docs/ECatGroup.js.html +213 -0
  3. package/docs/ECatMeeting.js.html +79 -11
  4. package/docs/ECatUser.js.html +7 -10
  5. package/docs/ECatWebinar.js.html +6 -5
  6. package/docs/api.cloudRecording.html +368 -28
  7. package/docs/api.group.html +396 -0
  8. package/docs/api.meeting.html +466 -15
  9. package/docs/api.user.html +10 -10
  10. package/docs/api.webinar.html +5 -5
  11. package/docs/index.html +1 -1
  12. package/lib/endpoints/ECatCloudRecording.d.ts +34 -8
  13. package/lib/endpoints/ECatCloudRecording.js +68 -25
  14. package/lib/endpoints/ECatCloudRecording.js.map +1 -1
  15. package/lib/endpoints/ECatGroup.d.ts +45 -0
  16. package/lib/endpoints/ECatGroup.js +148 -0
  17. package/lib/endpoints/ECatGroup.js.map +1 -0
  18. package/lib/endpoints/ECatMeeting.d.ts +43 -10
  19. package/lib/endpoints/ECatMeeting.js +78 -10
  20. package/lib/endpoints/ECatMeeting.js.map +1 -1
  21. package/lib/endpoints/ECatUser.d.ts +5 -5
  22. package/lib/endpoints/ECatUser.js +6 -9
  23. package/lib/endpoints/ECatUser.js.map +1 -1
  24. package/lib/endpoints/ECatWebinar.d.ts +4 -4
  25. package/lib/endpoints/ECatWebinar.js +5 -4
  26. package/lib/endpoints/ECatWebinar.js.map +1 -1
  27. package/lib/index.d.ts +22 -0
  28. package/lib/index.js +19 -0
  29. package/lib/index.js.map +1 -1
  30. package/lib/shared/helpers/genVisitEndpoint.js +154 -81
  31. package/lib/shared/helpers/genVisitEndpoint.js.map +1 -1
  32. package/lib/shared/types/VisitEndpointFunc.d.ts +3 -1
  33. package/lib/types/ZoomAPI.d.ts +2 -0
  34. package/lib/types/ZoomAPI.js.map +1 -1
  35. package/lib/types/ZoomGroup.d.ts +10 -0
  36. package/lib/types/ZoomGroup.js +3 -0
  37. package/lib/types/ZoomGroup.js.map +1 -0
  38. package/lib/types/ZoomGroupMember.d.ts +12 -0
  39. package/lib/types/ZoomGroupMember.js +3 -0
  40. package/lib/types/ZoomGroupMember.js.map +1 -0
  41. package/lib/types/ZoomMeetingTranscript.d.ts +17 -0
  42. package/lib/types/ZoomMeetingTranscript.js +3 -0
  43. package/lib/types/ZoomMeetingTranscript.js.map +1 -0
  44. package/lib/types/ZoomPastMeetingDetails.d.ts +22 -0
  45. package/lib/types/ZoomPastMeetingDetails.js +3 -0
  46. package/lib/types/ZoomPastMeetingDetails.js.map +1 -0
  47. package/lib/types/ZoomPastMeetingParticipant.d.ts +18 -0
  48. package/lib/types/ZoomPastMeetingParticipant.js +3 -0
  49. package/lib/types/ZoomPastMeetingParticipant.js.map +1 -0
  50. package/lib/types/ZoomRecordingInAccount.d.ts +22 -0
  51. package/lib/types/ZoomRecordingInAccount.js +3 -0
  52. package/lib/types/ZoomRecordingInAccount.js.map +1 -0
  53. package/package.json +2 -2
  54. package/src/endpoints/ECatCloudRecording.ts +83 -29
  55. package/src/endpoints/ECatGroup.ts +97 -0
  56. package/src/endpoints/ECatMeeting.ts +85 -10
  57. package/src/endpoints/ECatUser.ts +6 -9
  58. package/src/endpoints/ECatWebinar.ts +5 -4
  59. package/src/index.ts +53 -0
  60. package/src/shared/helpers/genVisitEndpoint.ts +143 -77
  61. package/src/shared/types/VisitEndpointFunc.ts +6 -2
  62. package/src/types/ZoomAPI.ts +2 -0
  63. package/src/types/ZoomGroup.ts +14 -0
  64. package/src/types/ZoomGroupMember.ts +20 -0
  65. package/src/types/ZoomMeetingTranscript.ts +28 -0
  66. package/src/types/ZoomPastMeetingDetails.ts +38 -0
  67. package/src/types/ZoomPastMeetingParticipant.ts +30 -0
  68. package/src/types/ZoomRecordingInAccount.ts +38 -0
@@ -14,6 +14,7 @@ import ErrorCode from '../shared/types/ErrorCode';
14
14
 
15
15
  // Import shared types
16
16
  import ZoomMeetingRecordings from '../types/ZoomMeetingRecordings';
17
+ import ZoomRecordingInAccount from '../types/ZoomRecordingInAccount';
17
18
 
18
19
  // Import shared helper
19
20
  import {
@@ -23,7 +24,77 @@ import {
23
24
 
24
25
  class ECatCloudRecording extends EndpointCategory {
25
26
  /**
26
- * Get all recordings of a meeting
27
+ * List recordings in the account (Medium)
28
+ * @author Gabe Abrams
29
+ * @instance
30
+ * @memberof api.cloudRecording
31
+ * @method listAccountRecordings
32
+ * @param opts object containing all arguments
33
+ * @param opts.fromYear the start of the date range to list recordings for (e.g. 2026)
34
+ * @param opts.fromMonth the month of the date range to list recordings for (1-12)
35
+ * @param [opts.fromDay] the day of the month of the date range to list recordings for (1-31, defaults to 1)
36
+ * @param [opts.accountId] the account ID of the account of interest (defaults to the account
37
+ * associated with the current access)
38
+ * @param [opts.onNewPage] callback function that is called when a new page of results is received.
39
+ * The function is passed the new page of results as an argument.
40
+ * @param [opts.minMsBetweenPageRequests] minimum time (in ms) to wait between paginated requests,
41
+ * for custom throttle control
42
+ * @returns the list of recordings in the account
43
+ */
44
+ async listAccountRecordings(
45
+ opts: {
46
+ fromYear: number,
47
+ fromMonth: number,
48
+ fromDay?: number,
49
+ accountId?: string,
50
+ onNewPage?: (recordings: ZoomRecordingInAccount[]) => void,
51
+ minMsBetweenPageRequests?: number,
52
+ },
53
+ ): Promise<ZoomRecordingInAccount[]> {
54
+ // Generate from date
55
+ const {
56
+ fromYear,
57
+ fromMonth,
58
+ minMsBetweenPageRequests,
59
+ } = opts;
60
+ const fromMonthPadded = fromMonth < 10 ? `0${fromMonth}` : fromMonth;
61
+ const fromDay = opts.fromDay ?? 1;
62
+ const fromDayPadded = fromDay < 10 ? `0${fromDay}` : fromDay;
63
+ const fromDateString = `${fromYear}-${fromMonthPadded}-${fromDayPadded}`;
64
+
65
+ // Generate to date
66
+ let toYear = fromYear;
67
+ let toMonth = opts.fromMonth + 1;
68
+ if (toMonth > 12) {
69
+ toMonth = 1;
70
+ toYear += 1;
71
+ }
72
+ let toMonthPadded = toMonth < 10 ? `0${toMonth}` : toMonth;
73
+ let toDay = fromDay;
74
+ let toDayPadded = toDay < 10 ? `0${toDay}` : toDay;
75
+ const toDateString = `${toYear}-${toMonthPadded}-${toDayPadded}`;
76
+
77
+ return this.visitEndpoint({
78
+ path: `/accounts/${opts.accountId ?? 'me'}/recordings`,
79
+ action: 'list recordings in the account',
80
+ method: 'GET',
81
+ params: {
82
+ page_size: 300, // max allowed page size
83
+ from: fromDateString,
84
+ to: toDateString,
85
+ },
86
+ onNewPage: opts.onNewPage,
87
+ minMsBetweenPageRequests,
88
+ itemKey: 'meetings',
89
+ errorMap: {
90
+ 400: 'Bad request',
91
+ 404: 'No recordings found',
92
+ },
93
+ });
94
+ }
95
+
96
+ /**
97
+ * Get all recordings of a meeting (Light)
27
98
  * @author Aryan Pandey
28
99
  * @instance
29
100
  * @memberof api.cloudRecording
@@ -74,17 +145,13 @@ class ECatCloudRecording extends EndpointCategory {
74
145
  }
75
146
 
76
147
  /**
77
- * List all cloud recordings of a user
148
+ * List all cloud recordings of a user (Medium)
78
149
  * @author Aryan Pandey
79
150
  * @instance
80
151
  * @memberof api.cloudRecording
81
152
  * @method listUserRecordings
82
153
  * @param opts object containing all arguments
83
154
  * @param opts.userId the user ID or email address of the user
84
- * @param [opts.pageSize=300] number of records
85
- * returned from a single API call
86
- * @param [opts.nextPageToken] token used to pageinate
87
- * through large result sets
88
155
  * @param [opts.searchTrash=false] set to true to retrieve
89
156
  * meeting recordings from the trash.
90
157
  * @param [opts.startDate=1 month before today]
@@ -95,26 +162,29 @@ class ECatCloudRecording extends EndpointCategory {
95
162
  * constructor or instance of Date object.
96
163
  * Date needs to be within past 6 months. Time data (hours and seconds)
97
164
  * is discarded
165
+ * @param [opts.onNewPage] callback function that is called when a new page of results is received.
166
+ * @param [opts.minMsBetweenPageRequests] minimum time (in ms) to wait between paginated requests,
167
+ * for custom throttle control
98
168
  * @returns List of Zoom Recordings {@link https://marketplace.zoom.us/docs/api-reference/zoom-api/cloud-recording/recordingslist#responses}
99
169
  */
100
170
  async listUserRecordings(
101
171
  opts: {
102
172
  userId: string,
103
- pageSize?: number,
104
- nextPageToken?: string,
105
173
  searchTrash?: boolean,
106
174
  startDate?: (string | Date),
107
175
  endDate?: (string | Date),
176
+ onNewPage?: (recordings: ZoomMeetingRecordings[]) => void,
177
+ minMsBetweenPageRequests?: number,
108
178
  },
109
179
  ): Promise<ZoomMeetingRecordings[]> {
110
180
  // Destructure arguments
111
181
  const {
112
182
  userId,
113
183
  searchTrash,
114
- nextPageToken,
115
184
  startDate,
116
185
  endDate,
117
- pageSize,
186
+ onNewPage,
187
+ minMsBetweenPageRequests,
118
188
  } = opts;
119
189
 
120
190
  // Declare default start Date to 1 month before
@@ -135,17 +205,6 @@ class ECatCloudRecording extends EndpointCategory {
135
205
  from: formatDate(defaultDate, 'startDate'),
136
206
  };
137
207
 
138
- if (pageSize) {
139
- // Throw error if pageSize is over max val of 300
140
- if (pageSize > 300) {
141
- throw new ZACCLError({
142
- message: `We requested ${pageSize} recordings from Zoom but it can only give us 300 at a time`,
143
- code: ErrorCode.InvalidPageSize,
144
- });
145
- }
146
- params.page_size = pageSize;
147
- }
148
-
149
208
  if (startDate) {
150
209
  params.from = formatDate(startDate, 'startDate');
151
210
  }
@@ -154,19 +213,14 @@ class ECatCloudRecording extends EndpointCategory {
154
213
  params.to = formatDate(endDate, 'endDate');
155
214
  }
156
215
 
157
- if (nextPageToken) {
158
- params.next_page_token = nextPageToken;
159
- }
160
-
161
216
  return this.visitEndpoint({
162
217
  path: `/users/${userId}/recordings`,
163
218
  action: 'list all cloud recordings of a user',
164
219
  method: 'GET',
165
220
  params,
166
- postProcessor: (body) => {
167
- // Extract the recordings from the body
168
- return Array.from(body.meetings);
169
- },
221
+ onNewPage: opts.onNewPage,
222
+ minMsBetweenPageRequests,
223
+ itemKey: 'meetings',
170
224
  errorMap: {
171
225
  404: {
172
226
  1001: `We could not find the Zoom user ${userId} on this account`,
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Category of endpoints for Zoom groups
3
+ * @author Gabe Abrams
4
+ * @namespace api.group
5
+ */
6
+
7
+ // Import shared interfaces
8
+ import EndpointCategory from '../shared/interfaces/EndpointCategory';
9
+
10
+ // Import shared types
11
+ import ZoomGroup from '../types/ZoomGroup';
12
+ import ZoomGroupMember from '../types/ZoomGroupMember';
13
+
14
+ class ECatGroup extends EndpointCategory {
15
+ /**
16
+ * List groups in the account (Medium)
17
+ * @author Gabe Abrams
18
+ * @instance
19
+ * @memberof api.account
20
+ * @method listGroups
21
+ * @param [opts] object containing all arguments
22
+ * @param [opts.onNewPage] callback function that is called when a new page of results is received.
23
+ * @param [opts.minMsBetweenPageRequests] minimum time (in ms) to wait between paginated requests,
24
+ * for custom throttle control
25
+ * @returns the list of groups in the account
26
+ */
27
+ async listGroups(
28
+ opts: {
29
+ onNewPage?: (groups: ZoomGroup[]) => void,
30
+ minMsBetweenPageRequests?: number,
31
+ } = {},
32
+ ): Promise<ZoomGroup[]> {
33
+ return this.visitEndpoint({
34
+ path: '/groups',
35
+ action: 'list groups in the account',
36
+ method: 'GET',
37
+ params: {
38
+ page_size: 10, // max allowed page size
39
+ // TODO: change above to 300
40
+ },
41
+ errorMap: {
42
+ 400: 'Bad request',
43
+ 404: {
44
+ 4130: 'No groups found for this account.',
45
+ },
46
+ },
47
+ itemKey: 'groups',
48
+ onNewPage: opts.onNewPage,
49
+ minMsBetweenPageRequests: opts.minMsBetweenPageRequests,
50
+ });
51
+ }
52
+
53
+ /**
54
+ * List the members within a group (Medium)
55
+ * @author Gabe Abrams
56
+ * @instance
57
+ * @memberof api.group
58
+ * @method listGroupMembers
59
+ * @param opts object containing all arguments
60
+ * @params opts.groupId the group ID of the group of interest
61
+ * @param [opts.onNewPage] callback function that is called when a new page of results is received.
62
+ * @param [opts.minMsBetweenPageRequests] minimum time (in ms) to wait between paginated requests,
63
+ * for custom throttle control
64
+ * @returns the list of members in the group
65
+ */
66
+ async listGroupMembers(
67
+ opts: {
68
+ groupId: string,
69
+ onNewPage?: (groupMembers: ZoomGroupMember[]) => void,
70
+ minMsBetweenPageRequests?: number,
71
+ },): Promise<ZoomGroupMember[]> {
72
+ return this.visitEndpoint({
73
+ path: `/groups/${opts.groupId}/members`,
74
+ action: 'list members in a Zoom group',
75
+ method: 'GET',
76
+ params: {
77
+ page_size: 2000, // max allowed page size
78
+ },
79
+ itemKey: 'members',
80
+ errorMap: {
81
+ 400: 'Bad request',
82
+ 404: {
83
+ 4130: 'No groups found for this account.',
84
+ },
85
+ },
86
+ onNewPage: opts.onNewPage,
87
+ minMsBetweenPageRequests: opts.minMsBetweenPageRequests,
88
+ });
89
+ }
90
+ }
91
+
92
+ /*------------------------------------------------------------------------*/
93
+ /* Export */
94
+ /*------------------------------------------------------------------------*/
95
+
96
+ export default ECatGroup;
97
+
@@ -22,10 +22,13 @@ import ZoomPollStatus from '../types/ZoomPollStatus';
22
22
  import ZoomPollQuestion from '../types/ZoomPollQuestion';
23
23
  import ZoomMeetingDetails from '../types/ZoomMeetingDetails';
24
24
  import ZoomMeetingIdAndStartTime from '../types/ZoomMeetingIdAndStartTime';
25
+ import ZoomMeetingTranscript from '../types/ZoomMeetingTranscript';
26
+ import ZoomPastMeetingParticipant from '../types/ZoomPastMeetingParticipant';
27
+ import ZoomPastMeetingDetails from '../types/ZoomPastMeetingDetails';
25
28
 
26
29
  class ECatMeeting extends EndpointCategory {
27
30
  /**
28
- * Get info on a meeting
31
+ * Get info on a meeting (Light)
29
32
  * @author Gabe Abrams
30
33
  * @author Aryan Pandey
31
34
  * @instance
@@ -36,7 +39,7 @@ class ECatMeeting extends EndpointCategory {
36
39
  * @param [opts.occurrenceId] ID for the meeting occurrence
37
40
  * @param [opts.showAllOccurrences=false] if truthy,
38
41
  * retrieves all past occurrences
39
- * @returns Zoom meeting object {@link https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meeting#responses}
42
+ * @returns Zoom meeting object
40
43
  */
41
44
  async get(
42
45
  opts: {
@@ -78,7 +81,7 @@ class ECatMeeting extends EndpointCategory {
78
81
  }
79
82
 
80
83
  /**
81
- * Create a new meeting
84
+ * Create a new meeting (Light)
82
85
  * @author Gabe Abrams
83
86
  * @author Aryan Pandey
84
87
  * @instance
@@ -110,7 +113,7 @@ class ECatMeeting extends EndpointCategory {
110
113
  }
111
114
 
112
115
  /**
113
- * Update a meeting
116
+ * Update a meeting (Light)
114
117
  * @author Gabe Abrams
115
118
  * @author Aryan Pandey
116
119
  * @instance
@@ -154,7 +157,7 @@ class ECatMeeting extends EndpointCategory {
154
157
  }
155
158
 
156
159
  /**
157
- * Delete a meeting
160
+ * Delete a meeting (Light)
158
161
  * @author Gabe Abrams
159
162
  * @author Aryan Pandey
160
163
  * @instance
@@ -212,7 +215,7 @@ class ECatMeeting extends EndpointCategory {
212
215
  }
213
216
 
214
217
  /**
215
- * Get a list of ended meeting instances
218
+ * Get a list of ended meeting instances (Medium)
216
219
  * @author Gabe Abrams
217
220
  * @author Aryan Pandey
218
221
  * @instance
@@ -234,11 +237,12 @@ class ECatMeeting extends EndpointCategory {
234
237
  errorMap: {
235
238
  404: `We could not find a meeting with the ID ${opts.meetingId}`,
236
239
  },
240
+ itemKey: 'meetings',
237
241
  });
238
242
  }
239
243
 
240
244
  /**
241
- * Get details of a past meeting instance
245
+ * Get details of a past meeting instance (Light)
242
246
  * @author Yuen Ler Chow
243
247
  * @instance
244
248
  * @memberof api.meeting
@@ -270,7 +274,7 @@ class ECatMeeting extends EndpointCategory {
270
274
  }
271
275
 
272
276
  /**
273
- * List past poll occurrences
277
+ * List past poll occurrences (Medium)
274
278
  * @author Yuen Ler Chow
275
279
  * @instance
276
280
  * @memberof api.meeting
@@ -394,7 +398,7 @@ class ECatMeeting extends EndpointCategory {
394
398
  }
395
399
 
396
400
  /**
397
- * Get poll info
401
+ * Get poll info (Light)
398
402
  * @author Yuen Ler Chow
399
403
  * @instance
400
404
  * @memberof api.meeting
@@ -554,7 +558,7 @@ class ECatMeeting extends EndpointCategory {
554
558
  * user is added as the only alt-host. This is because Zoom doesn't give us
555
559
  * enough information to determine which user is deactivated, and thus,
556
560
  * the only way to resolve the issue is to remove all previously existing
557
- * alt-hosts.
561
+ * alt-hosts. (Light)
558
562
  * @author Gabe Abrams
559
563
  * @author Aryan Pandey
560
564
  * @instance
@@ -631,6 +635,77 @@ class ECatMeeting extends EndpointCategory {
631
635
  // return updated meeting object
632
636
  return meetingObj;
633
637
  }
638
+
639
+ /**
640
+ * Get meeting transcript (Medium)
641
+ * @author Gabe Abrams
642
+ * @instance
643
+ * @memberof api.meeting
644
+ * @method getTranscript
645
+ * @param opts object containing all arguments
646
+ * @param opts.meetingId the Zoom ID of the meeting (or UUID of a past meeting instance)
647
+ * @returns meeting transcript
648
+ */
649
+ async getTranscript(
650
+ opts: {
651
+ meetingId: number,
652
+ },
653
+ ): Promise<ZoomMeetingTranscript> {
654
+ return this.visitEndpoint({
655
+ path: `/meetings/${opts.meetingId}/transcript`,
656
+ action: 'get the meeting transcript',
657
+ method: 'GET',
658
+ errorMap: {
659
+ 400: 'Invalid meeting ID',
660
+ 403: 'You do not have permission to access the transcript for this meeting',
661
+ 404: {
662
+ 3322: 'The meeting transcript does not exist',
663
+ },
664
+ },
665
+ });
666
+ }
667
+
668
+ /**
669
+ * Get list of participants in a past meeting (Medium)
670
+ * @author Gabe Abrams
671
+ * @instance
672
+ * @memberof api.meeting
673
+ * @method listPastMeetingParticipants
674
+ * @param opts object containing all arguments
675
+ * @param opts.meetingId the Zoom UUID of the past meeting instance
676
+ * @param [opts.onNewPage] callback function that is called when a new page of results is received.
677
+ * @param [opts.minMsBetweenPageRequests] minimum time (in ms) to wait between paginated requests,
678
+ * for custom throttle control
679
+ * @returns list of past meeting participants
680
+ */
681
+ async listPastMeetingParticipants(
682
+ opts: {
683
+ meetingId: string,
684
+ onNewPage?: (participants: ZoomPastMeetingParticipant[]) => void,
685
+ minMsBetweenPageRequests?: number,
686
+ },
687
+ ): Promise<ZoomPastMeetingParticipant[]> {
688
+ return this.visitEndpoint({
689
+ path: `/past_meetings/${opts.meetingId}/participants`,
690
+ action: 'get the list of participants in a past meeting',
691
+ method: 'GET',
692
+ params: {
693
+ page_size: 300, // max allowed page size
694
+ },
695
+ itemKey: 'participants',
696
+ onNewPage: opts.onNewPage,
697
+ minMsBetweenPageRequests: opts.minMsBetweenPageRequests,
698
+ errorMap: {
699
+ 400: {
700
+ 200: 'You need a paid account to access the participant list of a past meeting.',
701
+ 12702: 'You are not allowed to access information about meetings that occurred more than 1 year ago.',
702
+ },
703
+ 404: {
704
+ 3001: 'The meeting ID is invalid or the meeting has not ended.',
705
+ },
706
+ },
707
+ });
708
+ }
634
709
  }
635
710
 
636
711
  /*------------------------------------------------------------------------*/
@@ -12,7 +12,7 @@ import ZoomUser from '../types/ZoomUser';
12
12
 
13
13
  class ECatUser extends EndpointCategory {
14
14
  /**
15
- * Retrieve a user's ZAK token
15
+ * Retrieve a user's ZAK token (Light)
16
16
  * @author Aryan Pandey
17
17
  * @instance
18
18
  * @memberof api.user
@@ -33,21 +33,18 @@ class ECatUser extends EndpointCategory {
33
33
  params: {
34
34
  type: 'zak',
35
35
  },
36
+ itemKey: 'token',
36
37
  errorMap: {
37
38
  404: {
38
39
  1001: `We could not retrieve a token for Zoom user ${opts.userId} since this user does not exist`,
39
40
  },
40
41
  },
41
- postProcessor: (body) => {
42
- // extract zak token from the response object
43
- return body.token;
44
- },
45
42
  });
46
43
  }
47
44
 
48
45
  /**
49
46
  * (Re)activate a user and promote them to a "licensed" user (unless
50
- * dontPromoteToLicensed is true)
47
+ * dontPromoteToLicensed is true) (Light)
51
48
  * @author Gabe Abrams
52
49
  * @instance
53
50
  * @memberof api.user
@@ -98,7 +95,7 @@ class ECatUser extends EndpointCategory {
98
95
  }
99
96
 
100
97
  /**
101
- * Add a webinar license to the user of interest
98
+ * Add a webinar license to the user of interest (Medium)
102
99
  * @author Gabe Abrams
103
100
  * @instance
104
101
  * @memberof api.user
@@ -136,7 +133,7 @@ class ECatUser extends EndpointCategory {
136
133
  }
137
134
 
138
135
  /**
139
- * Get a user
136
+ * Get a user (Light)
140
137
  * @author Gabe Abrams
141
138
  * @instance
142
139
  * @memberof api.user
@@ -163,7 +160,7 @@ class ECatUser extends EndpointCategory {
163
160
  }
164
161
 
165
162
  /**
166
- * Promote a user to "licensed" type
163
+ * Promote a user to "licensed" type (Light)
167
164
  * @author Gabe Abrams
168
165
  * @instance
169
166
  * @memberof api.user
@@ -13,7 +13,7 @@ import ZoomWebinar from '../types/ZoomWebinar';
13
13
 
14
14
  class ECatWebinar extends EndpointCategory {
15
15
  /**
16
- * Get info on a Webinar
16
+ * Get info on a Webinar (Light)
17
17
  * @author Gabe Abrams
18
18
  * @instance
19
19
  * @memberof api.webinar
@@ -64,7 +64,7 @@ class ECatWebinar extends EndpointCategory {
64
64
  }
65
65
 
66
66
  /**
67
- * Create a webinar
67
+ * Create a webinar (Light)
68
68
  * @author Gabe Abrams
69
69
  * @instance
70
70
  * @memberof api.webinar
@@ -101,7 +101,7 @@ class ECatWebinar extends EndpointCategory {
101
101
  }
102
102
 
103
103
  /**
104
- * Add one panelist if not already in the list
104
+ * Add one panelist if not already in the list (Medium)
105
105
  * @author Gabe Abrams
106
106
  * @instance
107
107
  * @memberof api.webinar
@@ -144,7 +144,7 @@ class ECatWebinar extends EndpointCategory {
144
144
  }
145
145
 
146
146
  /**
147
- * Get a list of panelists for a webinar
147
+ * Get a list of panelists for a webinar (Medium)
148
148
  * @author Gabe Abrams
149
149
  * @instance
150
150
  * @memberof api.webinar
@@ -171,6 +171,7 @@ class ECatWebinar extends EndpointCategory {
171
171
  3001: `Webinar ${opts.webinarId} could not be found or has expired`,
172
172
  },
173
173
  },
174
+ itemKey: 'panelists',
174
175
  });
175
176
 
176
177
  // Just keep list of panelists
package/src/index.ts CHANGED
@@ -9,6 +9,7 @@ import ECatCloudRecording from './endpoints/ECatCloudRecording';
9
9
  import ECatMeeting from './endpoints/ECatMeeting';
10
10
  import ECatUser from './endpoints/ECatUser';
11
11
  import ECatWebinar from './endpoints/ECatWebinar';
12
+ import ECatGroup from './endpoints/ECatGroup';
12
13
 
13
14
  // Import shared types
14
15
  import ZoomAPIConfig from './types/ZoomAPIConfig';
@@ -17,6 +18,29 @@ import ZACCLError from './shared/classes/ZACCLError';
17
18
  import ErrorCode from './shared/types/ErrorCode';
18
19
  import ZoomAPIConfigType from './types/ZoomAPIConfigType';
19
20
 
21
+ // Import all Zoom types
22
+ import ZoomPanelist from './types/ZoomPanelist';
23
+ import ZoomPollInfo from './types/ZoomPollInfo';
24
+ import ZoomPollOccurrence from './types/ZoomPollOccurrence';
25
+ import ZoomFileType from './types/ZoomFileType';
26
+ import ZoomPollQuestion from './types/ZoomPollQuestion';
27
+ import ZoomPollQuestionAndAnswerType from './types/ZoomPollQuestionAndAnswerType';
28
+ import ZoomPollStatus from './types/ZoomPollStatus';
29
+ import ZoomLoginMethod from './types/ZoomLoginMethod';
30
+ import ZoomPollType from './types/ZoomPollType';
31
+ import ZoomRecordingFile from './types/ZoomRecordingFile';
32
+ import ZoomRecordingType from './types/ZoomRecordingType';
33
+ import ZoomMeetingIdAndStartTime from './types/ZoomMeetingIdAndStartTime';
34
+ import ZoomRecurrenceInfo from './types/ZoomRecurrenceInfo';
35
+ import ZoomMeetingOrWebinarType from './types/ZoomMeetingOrWebinarType';
36
+ import ZoomMeetingRecordings from './types/ZoomMeetingRecordings';
37
+ import ZoomUserAnswer from './types/ZoomUserAnswer';
38
+ import ZoomMeetingTranscript from './types/ZoomMeetingTranscript';
39
+ import ZoomUsersAnswersToQuestion from './types/ZoomUsersAnswersToQuestion';
40
+ import ZoomMeetingType from './types/ZoomMeetingType';
41
+ import ZoomWebinar from './types/ZoomWebinar';
42
+ import ZoomPastMeetingParticipant from './types/ZoomPastMeetingParticipant';
43
+
20
44
  // Import shared constants
21
45
  import DEFAULT_ZOOM_HOSTNAME from './shared/constants/DEFAULT_ZOOM_HOSTNAME';
22
46
 
@@ -137,9 +161,38 @@ const initZoomAPI = (
137
161
  api.meeting = new ECatMeeting(initPack);
138
162
  api.user = new ECatUser(initPack);
139
163
  api.webinar = new ECatWebinar(initPack);
164
+ api.group = new ECatGroup(initPack);
140
165
 
141
166
  // Return api instance
142
167
  return api;
143
168
  };
144
169
 
145
170
  export default initZoomAPI;
171
+
172
+ /*----------------------------------------*/
173
+ /* ---------------- Types --------------- */
174
+ /*----------------------------------------*/
175
+
176
+ export {
177
+ ZoomPanelist,
178
+ ZoomPollInfo,
179
+ ZoomPollOccurrence,
180
+ ZoomFileType,
181
+ ZoomPollQuestion,
182
+ ZoomPollQuestionAndAnswerType,
183
+ ZoomPollStatus,
184
+ ZoomLoginMethod,
185
+ ZoomPollType,
186
+ ZoomRecordingFile,
187
+ ZoomRecordingType,
188
+ ZoomMeetingIdAndStartTime,
189
+ ZoomRecurrenceInfo,
190
+ ZoomMeetingOrWebinarType,
191
+ ZoomMeetingRecordings,
192
+ ZoomUserAnswer,
193
+ ZoomMeetingTranscript,
194
+ ZoomUsersAnswersToQuestion,
195
+ ZoomMeetingType,
196
+ ZoomWebinar,
197
+ ZoomPastMeetingParticipant,
198
+ };