ts-twitch-api 0.1.2 → 0.1.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.
@@ -0,0 +1,851 @@
1
+ const BASE_URL = 'https://api.twitch.tv/helix';
2
+ const getSearchParams = (params) => {
3
+ const kvPairs = [];
4
+ for (const key of Object.keys(params)) {
5
+ const value = params[key];
6
+ if (Array.isArray(value)) {
7
+ value.forEach((v) => kvPairs.push(`${key}=${v}`));
8
+ }
9
+ else {
10
+ kvPairs.push(`${key}=${value}`);
11
+ }
12
+ }
13
+ return kvPairs.join('&');
14
+ };
15
+ export class TwitchApi {
16
+ _accessToken;
17
+ _clientId;
18
+ constructor({ accessToken = '', clientId = '' } = {}) {
19
+ this._accessToken = accessToken;
20
+ this._clientId = clientId;
21
+ }
22
+ async callApi({ path, method = 'GET', params, body, requiresAuth = true, request: [clientId = null, accessToken = null, requestInit = {}], }) {
23
+ const url = params
24
+ ? `${BASE_URL}${path}?${getSearchParams(params)}`
25
+ : `${BASE_URL}${path}`;
26
+ const options = { ...requestInit, method };
27
+ const headers = new Headers();
28
+ options.headers = headers;
29
+ if (body) {
30
+ headers.set('Content-Type', 'application/json');
31
+ options.body = JSON.stringify(body);
32
+ }
33
+ if (requiresAuth) {
34
+ options.headers.set('Authorization', `Bearer ${accessToken || this._accessToken}`);
35
+ options.headers.set('Client-Id', clientId || this._clientId);
36
+ }
37
+ const response = await fetch(url, options);
38
+ return {
39
+ ok: response.ok,
40
+ status: response.status,
41
+ data: await response.json(),
42
+ };
43
+ }
44
+ ads = {
45
+ startCommercial: async (body, ...request) => this.callApi({
46
+ path: '/channels/commercial',
47
+ method: 'POST',
48
+ body,
49
+ request,
50
+ }),
51
+ getAdSchedule: async (params, ...request) => this.callApi({
52
+ path: '/channels/ads',
53
+ params,
54
+ request,
55
+ }),
56
+ snoozeNextAd: async (params, ...request) => this.callApi({
57
+ path: '/channels/ads/schedule/snooze',
58
+ method: 'POST',
59
+ params,
60
+ request,
61
+ }),
62
+ };
63
+ analytics = {
64
+ getExtensionAnalytics: async (params = null, ...request) => this.callApi({
65
+ path: '/analytics/extensions',
66
+ params,
67
+ request,
68
+ }),
69
+ getGameAnalytics: async (params = null, ...request) => this.callApi({
70
+ path: '/analytics/games',
71
+ params,
72
+ request,
73
+ }),
74
+ };
75
+ bits = {
76
+ getBitsLeaderboard: async (params = null, ...request) => this.callApi({
77
+ path: '/bits/leaderboard',
78
+ params,
79
+ request,
80
+ }),
81
+ getCheermotes: async (params = null, ...request) => this.callApi({
82
+ path: '/bits/cheermotes',
83
+ params,
84
+ request,
85
+ }),
86
+ getExtensionTransactions: async (params, ...request) => this.callApi({
87
+ path: '/extensions/transactions',
88
+ params,
89
+ request,
90
+ }),
91
+ };
92
+ channels = {
93
+ getChannelInformation: async (params, ...request) => this.callApi({
94
+ path: '/channels',
95
+ params,
96
+ request,
97
+ }),
98
+ modifyChannelInformation: async (params, body = null, ...request) => this.callApi({
99
+ path: '/channels',
100
+ method: 'PATCH',
101
+ params,
102
+ body,
103
+ request,
104
+ }),
105
+ getChannelEditors: async (params, ...request) => this.callApi({
106
+ path: '/channels/editors',
107
+ params,
108
+ request,
109
+ }),
110
+ getFollowedChannels: async (params, ...request) => this.callApi({
111
+ path: '/channels/followed',
112
+ params,
113
+ request,
114
+ }),
115
+ getChannelFollowers: async (params, ...request) => this.callApi({
116
+ path: '/channels/followers',
117
+ params,
118
+ request,
119
+ }),
120
+ };
121
+ channelPoints = {
122
+ createCustomRewards: async (params, body, ...request) => this.callApi({
123
+ path: '/channel_points/custom_rewards',
124
+ method: 'POST',
125
+ params,
126
+ body,
127
+ request,
128
+ }),
129
+ deleteCustomReward: async (params, ...request) => this.callApi({
130
+ path: '/channel_points/custom_rewards',
131
+ method: 'DELETE',
132
+ params,
133
+ request,
134
+ }),
135
+ getCustomReward: async (params, ...request) => this.callApi({
136
+ path: '/channel_points/custom_rewards',
137
+ params,
138
+ request,
139
+ }),
140
+ updateCustomReward: async (params, body = null, ...request) => this.callApi({
141
+ path: '/channel_points/custom_rewards',
142
+ method: 'PATCH',
143
+ params,
144
+ body,
145
+ request,
146
+ }),
147
+ getCustomRewardRedemption: async (params, ...request) => this.callApi({
148
+ path: '/channel_points/custom_rewards/redemptions',
149
+ params,
150
+ request,
151
+ }),
152
+ updateRedemptionStatus: async (params, body, ...request) => this.callApi({
153
+ path: '/channel_points/custom_rewards/redemptions',
154
+ method: 'PATCH',
155
+ params,
156
+ body,
157
+ request,
158
+ }),
159
+ };
160
+ charity = {
161
+ getCharityCampaign: async (params, ...request) => this.callApi({
162
+ path: '/charity/campaigns',
163
+ params,
164
+ request,
165
+ }),
166
+ getCharityCampaignDonations: async (params, ...request) => this.callApi({
167
+ path: '/charity/donations',
168
+ params,
169
+ request,
170
+ }),
171
+ };
172
+ chat = {
173
+ getChatters: async (params, ...request) => this.callApi({
174
+ path: '/chat/chatters',
175
+ params,
176
+ request,
177
+ }),
178
+ getChannelEmotes: async (params, ...request) => this.callApi({
179
+ path: '/chat/emotes',
180
+ params,
181
+ request,
182
+ }),
183
+ getGlobalEmotes: async (...request) => this.callApi({
184
+ path: '/chat/emotes/global',
185
+ request,
186
+ }),
187
+ getEmoteSets: async (params, ...request) => this.callApi({
188
+ path: '/chat/emotes/set',
189
+ params,
190
+ request,
191
+ }),
192
+ getChannelChatBadges: async (params, ...request) => this.callApi({
193
+ path: '/chat/badges',
194
+ params,
195
+ request,
196
+ }),
197
+ getGlobalChatBadges: async (...request) => this.callApi({
198
+ path: '/chat/badges/global',
199
+ request,
200
+ }),
201
+ getChatSettings: async (params, ...request) => this.callApi({
202
+ path: '/chat/settings',
203
+ params,
204
+ request,
205
+ }),
206
+ updateChatSettings: async (params, body = null, ...request) => this.callApi({
207
+ path: '/chat/settings',
208
+ method: 'PATCH',
209
+ params,
210
+ body,
211
+ request,
212
+ }),
213
+ sendChatAnnouncement: async (params, body, ...request) => this.callApi({
214
+ path: '/chat/announcements',
215
+ method: 'POST',
216
+ params,
217
+ body,
218
+ request,
219
+ }),
220
+ sendShoutout: async (params, ...request) => this.callApi({
221
+ path: '/chat/shoutouts',
222
+ method: 'POST',
223
+ params,
224
+ request,
225
+ }),
226
+ sendChatMessage: async (body, ...request) => this.callApi({
227
+ path: '/chat/messages',
228
+ method: 'POST',
229
+ body,
230
+ request,
231
+ }),
232
+ getUserChatColor: async (params, ...request) => this.callApi({
233
+ path: '/chat/color',
234
+ params,
235
+ request,
236
+ }),
237
+ updateUserChatColor: async (params, ...request) => this.callApi({
238
+ path: '/chat/color',
239
+ method: 'PUT',
240
+ params,
241
+ request,
242
+ }),
243
+ };
244
+ clips = {
245
+ createClip: async (params, ...request) => this.callApi({
246
+ path: '/clips',
247
+ method: 'POST',
248
+ params,
249
+ request,
250
+ }),
251
+ getClips: async (params = null, ...request) => this.callApi({
252
+ path: '/clips',
253
+ params,
254
+ request,
255
+ }),
256
+ };
257
+ conduits = {
258
+ getConduits: async (...request) => this.callApi({
259
+ path: '/eventsub/conduits',
260
+ request,
261
+ }),
262
+ createConduits: async (body, ...request) => this.callApi({
263
+ path: '/eventsub/conduits',
264
+ method: 'POST',
265
+ body,
266
+ request,
267
+ }),
268
+ updateConduits: async (body, ...request) => this.callApi({
269
+ path: '/eventsub/conduits',
270
+ method: 'PATCH',
271
+ body,
272
+ request,
273
+ }),
274
+ deleteConduit: async (params, ...request) => this.callApi({
275
+ path: '/eventsub/conduits',
276
+ method: 'DELETE',
277
+ params,
278
+ request,
279
+ }),
280
+ getConduitShards: async (params, ...request) => this.callApi({
281
+ path: '/eventsub/conduits/shards',
282
+ params,
283
+ request,
284
+ }),
285
+ updateConduitShards: async (body, ...request) => this.callApi({
286
+ path: '/eventsub/conduits/shards',
287
+ method: 'PATCH',
288
+ body,
289
+ request,
290
+ }),
291
+ };
292
+ ccls = {
293
+ getContentClassificationLabels: async (params = null, ...request) => this.callApi({
294
+ path: '/content_classification_labels',
295
+ params,
296
+ request,
297
+ }),
298
+ };
299
+ entitlements = {
300
+ getDropsEntitlements: async (params = null, ...request) => this.callApi({
301
+ path: '/entitlements/drops',
302
+ params,
303
+ request,
304
+ }),
305
+ updateDropsEntitlements: async (body = null, ...request) => this.callApi({
306
+ path: '/entitlements/drops',
307
+ method: 'PATCH',
308
+ body,
309
+ request,
310
+ }),
311
+ };
312
+ extensions = {
313
+ getExtensionConfigurationSegment: async (params, ...request) => this.callApi({
314
+ path: '/extensions/configurations',
315
+ params,
316
+ request,
317
+ }),
318
+ setExtensionConfigurationSegment: async (body, ...request) => this.callApi({
319
+ path: '/extensions/configurations',
320
+ method: 'PUT',
321
+ body,
322
+ request,
323
+ }),
324
+ setExtensionRequiredConfiguration: async (params, body, ...request) => this.callApi({
325
+ path: '/extensions/required_configuration',
326
+ method: 'PUT',
327
+ params,
328
+ body,
329
+ request,
330
+ }),
331
+ sendExtensionPubSubMessage: async (body, ...request) => this.callApi({
332
+ path: '/extensions/pubsub',
333
+ method: 'POST',
334
+ body,
335
+ request,
336
+ }),
337
+ getExtensionLiveChannels: async (params, ...request) => this.callApi({
338
+ path: '/extensions/live',
339
+ params,
340
+ request,
341
+ }),
342
+ getExtensionSecrets: async (...request) => this.callApi({
343
+ path: '/extensions/jwt/secrets',
344
+ request,
345
+ }),
346
+ createExtensionSecret: async (params, ...request) => this.callApi({
347
+ path: '/extensions/jwt/secrets',
348
+ method: 'POST',
349
+ params,
350
+ request,
351
+ }),
352
+ sendExtensionChatMessage: async (params, body, ...request) => this.callApi({
353
+ path: '/extensions/chat',
354
+ method: 'POST',
355
+ params,
356
+ body,
357
+ request,
358
+ }),
359
+ getExtensions: async (params, ...request) => this.callApi({
360
+ path: '/extensions',
361
+ params,
362
+ request,
363
+ }),
364
+ getReleasedExtensions: async (params, ...request) => this.callApi({
365
+ path: '/extensions/released',
366
+ params,
367
+ request,
368
+ }),
369
+ getExtensionBitsProducts: async (params = null, ...request) => this.callApi({
370
+ path: '/bits/extensions',
371
+ params,
372
+ request,
373
+ }),
374
+ updateExtensionBitsProduct: async (body, ...request) => this.callApi({
375
+ path: '/bits/extensions',
376
+ method: 'PUT',
377
+ body,
378
+ request,
379
+ }),
380
+ };
381
+ eventSub = {
382
+ createEventSubSubscription: async (body, ...request) => this.callApi({
383
+ path: '/eventsub/subscriptions',
384
+ method: 'POST',
385
+ body,
386
+ request,
387
+ }),
388
+ deleteEventSubSubscription: async (params, ...request) => this.callApi({
389
+ path: '/eventsub/subscriptions',
390
+ method: 'DELETE',
391
+ params,
392
+ request,
393
+ }),
394
+ getEventSubSubscriptions: async (params = null, ...request) => this.callApi({
395
+ path: '/eventsub/subscriptions',
396
+ params,
397
+ request,
398
+ }),
399
+ };
400
+ games = {
401
+ getTopGames: async (params = null, ...request) => this.callApi({
402
+ path: '/games/top',
403
+ params,
404
+ request,
405
+ }),
406
+ getGames: async (params = null, ...request) => this.callApi({
407
+ path: '/games',
408
+ params,
409
+ request,
410
+ }),
411
+ };
412
+ goals = {
413
+ getCreatorGoals: async (params, ...request) => this.callApi({
414
+ path: '/goals',
415
+ params,
416
+ request,
417
+ }),
418
+ };
419
+ guestStar = {
420
+ getChannelGuestStarSettings: async (params, ...request) => this.callApi({
421
+ path: '/guest_star/channel_settings',
422
+ params,
423
+ request,
424
+ }),
425
+ updateChannelGuestStarSettings: async (params, body = null, ...request) => this.callApi({
426
+ path: '/guest_star/channel_settings',
427
+ method: 'PUT',
428
+ params,
429
+ body,
430
+ request,
431
+ }),
432
+ getGuestStarSession: async (params, ...request) => this.callApi({
433
+ path: '/guest_star/session',
434
+ params,
435
+ request,
436
+ }),
437
+ createGuestStarSession: async (params, ...request) => this.callApi({
438
+ path: '/guest_star/session',
439
+ method: 'POST',
440
+ params,
441
+ request,
442
+ }),
443
+ endGuestStarSession: async (params, ...request) => this.callApi({
444
+ path: '/guest_star/session',
445
+ method: 'DELETE',
446
+ params,
447
+ request,
448
+ }),
449
+ getGuestStarInvites: async (params, ...request) => this.callApi({
450
+ path: '/guest_star/invites',
451
+ params,
452
+ request,
453
+ }),
454
+ sendGuestStarInvite: async (params, ...request) => this.callApi({
455
+ path: '/guest_star/invites',
456
+ method: 'POST',
457
+ params,
458
+ request,
459
+ }),
460
+ deleteGuestStarInvite: async (params, ...request) => this.callApi({
461
+ path: '/guest_star/invites',
462
+ method: 'DELETE',
463
+ params,
464
+ request,
465
+ }),
466
+ assignGuestStarSlot: async (params, ...request) => this.callApi({
467
+ path: '/guest_star/slot',
468
+ method: 'POST',
469
+ params,
470
+ request,
471
+ }),
472
+ updateGuestStarSlot: async (params, ...request) => this.callApi({
473
+ path: '/guest_star/slot',
474
+ method: 'PATCH',
475
+ params,
476
+ request,
477
+ }),
478
+ deleteGuestStarSlot: async (params, ...request) => this.callApi({
479
+ path: '/guest_star/slot',
480
+ method: 'DELETE',
481
+ params,
482
+ request,
483
+ }),
484
+ updateGuestStarSlotSettings: async (params, ...request) => this.callApi({
485
+ path: '/guest_star/slot_settings',
486
+ method: 'PATCH',
487
+ params,
488
+ request,
489
+ }),
490
+ };
491
+ hypeTrain = {
492
+ getHypeTrainEvents: async (params, ...request) => this.callApi({
493
+ path: '/hypetrain/events',
494
+ params,
495
+ request,
496
+ }),
497
+ };
498
+ moderation = {
499
+ checkAutoModStatus: async (params, body, ...request) => this.callApi({
500
+ path: '/moderation/enforcements/status',
501
+ method: 'POST',
502
+ params,
503
+ body,
504
+ request,
505
+ }),
506
+ manageHeldAutoModMessages: async (body, ...request) => this.callApi({
507
+ path: '/moderation/automod/message',
508
+ method: 'POST',
509
+ body,
510
+ request,
511
+ }),
512
+ getAutoModSettings: async (params, ...request) => this.callApi({
513
+ path: '/moderation/automod/settings',
514
+ params,
515
+ request,
516
+ }),
517
+ updateAutoModSettings: async (params, body = null, ...request) => this.callApi({
518
+ path: '/moderation/automod/settings',
519
+ method: 'PUT',
520
+ params,
521
+ body,
522
+ request,
523
+ }),
524
+ getBannedUsers: async (params, ...request) => this.callApi({
525
+ path: '/moderation/banned',
526
+ params,
527
+ request,
528
+ }),
529
+ banUser: async (params, body, ...request) => this.callApi({
530
+ path: '/moderation/bans',
531
+ method: 'POST',
532
+ params,
533
+ body,
534
+ request,
535
+ }),
536
+ unbanUser: async (params, ...request) => this.callApi({
537
+ path: '/moderation/bans',
538
+ method: 'DELETE',
539
+ params,
540
+ request,
541
+ }),
542
+ getBlockedTerms: async (params, ...request) => this.callApi({
543
+ path: '/moderation/blocked_terms',
544
+ params,
545
+ request,
546
+ }),
547
+ addBlockedTerm: async (params, body, ...request) => this.callApi({
548
+ path: '/moderation/blocked_terms',
549
+ method: 'POST',
550
+ params,
551
+ body,
552
+ request,
553
+ }),
554
+ removeBlockedTerm: async (params, ...request) => this.callApi({
555
+ path: '/moderation/blocked_terms',
556
+ method: 'DELETE',
557
+ params,
558
+ request,
559
+ }),
560
+ deleteChatMessages: async (params, ...request) => this.callApi({
561
+ path: '/moderation/chat',
562
+ method: 'DELETE',
563
+ params,
564
+ request,
565
+ }),
566
+ getModeratedChannels: async (params, ...request) => this.callApi({
567
+ path: '/moderation/channels',
568
+ params,
569
+ request,
570
+ }),
571
+ getModerators: async (params, ...request) => this.callApi({
572
+ path: '/moderation/moderators',
573
+ params,
574
+ request,
575
+ }),
576
+ addChannelModerator: async (params, ...request) => this.callApi({
577
+ path: '/moderation/moderators',
578
+ method: 'POST',
579
+ params,
580
+ request,
581
+ }),
582
+ removeChannelModerator: async (params, ...request) => this.callApi({
583
+ path: '/moderation/moderators',
584
+ method: 'DELETE',
585
+ params,
586
+ request,
587
+ }),
588
+ getVIPs: async (params, ...request) => this.callApi({
589
+ path: '/channels/vips',
590
+ params,
591
+ request,
592
+ }),
593
+ addChannelVIP: async (params, ...request) => this.callApi({
594
+ path: '/channels/vips',
595
+ method: 'POST',
596
+ params,
597
+ request,
598
+ }),
599
+ removeChannelVIP: async (params, ...request) => this.callApi({
600
+ path: '/channels/vips',
601
+ method: 'DELETE',
602
+ params,
603
+ request,
604
+ }),
605
+ updateShieldModeStatus: async (params, body, ...request) => this.callApi({
606
+ path: '/moderation/shield_mode',
607
+ method: 'PUT',
608
+ params,
609
+ body,
610
+ request,
611
+ }),
612
+ getShieldModeStatus: async (params, ...request) => this.callApi({
613
+ path: '/moderation/shield_mode',
614
+ params,
615
+ request,
616
+ }),
617
+ };
618
+ polls = {
619
+ getPolls: async (params, ...request) => this.callApi({
620
+ path: '/polls',
621
+ params,
622
+ request,
623
+ }),
624
+ createPoll: async (body, ...request) => this.callApi({
625
+ path: '/polls',
626
+ method: 'POST',
627
+ body,
628
+ request,
629
+ }),
630
+ endPoll: async (body, ...request) => this.callApi({
631
+ path: '/polls',
632
+ method: 'PATCH',
633
+ body,
634
+ request,
635
+ }),
636
+ };
637
+ predictions = {
638
+ getPredictions: async (params, ...request) => this.callApi({
639
+ path: '/predictions',
640
+ params,
641
+ request,
642
+ }),
643
+ createPrediction: async (body, ...request) => this.callApi({
644
+ path: '/predictions',
645
+ method: 'POST',
646
+ body,
647
+ request,
648
+ }),
649
+ endPrediction: async (body, ...request) => this.callApi({
650
+ path: '/predictions',
651
+ method: 'PATCH',
652
+ body,
653
+ request,
654
+ }),
655
+ };
656
+ raids = {
657
+ startRaid: async (params = null, ...request) => this.callApi({
658
+ path: '/raids',
659
+ method: 'POST',
660
+ params,
661
+ request,
662
+ }),
663
+ cancelRaid: async (params, ...request) => this.callApi({
664
+ path: '/raids',
665
+ method: 'DELETE',
666
+ params,
667
+ request,
668
+ }),
669
+ };
670
+ schedule = {
671
+ getChannelStreamSchedule: async (params, ...request) => this.callApi({
672
+ path: '/schedule',
673
+ params,
674
+ request,
675
+ }),
676
+ getChannelICalendar: async (params, ...request) => this.callApi({
677
+ path: '/schedule/icalendar',
678
+ params,
679
+ request,
680
+ }),
681
+ updateChannelStreamSchedule: async (params, ...request) => this.callApi({
682
+ path: '/schedule/settings',
683
+ method: 'PATCH',
684
+ params,
685
+ request,
686
+ }),
687
+ createChannelStreamScheduleSegment: async (params, body, ...request) => this.callApi({
688
+ path: '/schedule/segment',
689
+ method: 'POST',
690
+ params,
691
+ body,
692
+ request,
693
+ }),
694
+ updateChannelStreamScheduleSegment: async (params, body = null, ...request) => this.callApi({
695
+ path: '/schedule/segment',
696
+ method: 'PATCH',
697
+ params,
698
+ body,
699
+ request,
700
+ }),
701
+ deleteChannelStreamScheduleSegment: async (params, ...request) => this.callApi({
702
+ path: '/schedule/segment',
703
+ method: 'DELETE',
704
+ params,
705
+ request,
706
+ }),
707
+ };
708
+ search = {
709
+ searchCategories: async (params, ...request) => this.callApi({
710
+ path: '/search/categories',
711
+ params,
712
+ request,
713
+ }),
714
+ searchChannels: async (params, ...request) => this.callApi({
715
+ path: '/search/channels',
716
+ params,
717
+ request,
718
+ }),
719
+ };
720
+ streams = {
721
+ getStreamKey: async (params, ...request) => this.callApi({
722
+ path: '/streams/key',
723
+ params,
724
+ request,
725
+ }),
726
+ getStreams: async (params = null, ...request) => this.callApi({
727
+ path: '/streams',
728
+ params,
729
+ request,
730
+ }),
731
+ getFollowedStreams: async (params, ...request) => this.callApi({
732
+ path: '/streams/followed',
733
+ params,
734
+ request,
735
+ }),
736
+ createStreamMarker: async (body, ...request) => this.callApi({
737
+ path: '/streams/markers',
738
+ method: 'POST',
739
+ body,
740
+ request,
741
+ }),
742
+ getStreamMarkers: async (params = null, ...request) => this.callApi({
743
+ path: '/streams/markers',
744
+ params,
745
+ request,
746
+ }),
747
+ };
748
+ subscriptions = {
749
+ getBroadcasterSubscriptions: async (params, ...request) => this.callApi({
750
+ path: '/subscriptions',
751
+ params,
752
+ request,
753
+ }),
754
+ checkUserSubscription: async (params, ...request) => this.callApi({
755
+ path: '/subscriptions/user',
756
+ params,
757
+ request,
758
+ }),
759
+ };
760
+ tags = {
761
+ getAllStreamTags: async (params = null, ...request) => this.callApi({
762
+ path: '/tags/streams',
763
+ params,
764
+ request,
765
+ }),
766
+ getStreamTags: async (params, ...request) => this.callApi({
767
+ path: '/streams/tags',
768
+ params,
769
+ request,
770
+ }),
771
+ };
772
+ teams = {
773
+ getChannelTeams: async (params, ...request) => this.callApi({
774
+ path: '/teams/channel',
775
+ params,
776
+ request,
777
+ }),
778
+ getTeams: async (params = null, ...request) => this.callApi({
779
+ path: '/teams',
780
+ params,
781
+ request,
782
+ }),
783
+ };
784
+ users = {
785
+ getUsers: async (params = null, ...request) => this.callApi({
786
+ path: '/users',
787
+ params,
788
+ request,
789
+ }),
790
+ updateUser: async (params = null, ...request) => this.callApi({
791
+ path: '/users',
792
+ method: 'PUT',
793
+ params,
794
+ request,
795
+ }),
796
+ getUserBlockList: async (params, ...request) => this.callApi({
797
+ path: '/users/blocks',
798
+ params,
799
+ request,
800
+ }),
801
+ blockUser: async (params, ...request) => this.callApi({
802
+ path: '/users/blocks',
803
+ method: 'PUT',
804
+ params,
805
+ request,
806
+ }),
807
+ unblockUser: async (params, ...request) => this.callApi({
808
+ path: '/users/blocks',
809
+ method: 'DELETE',
810
+ params,
811
+ request,
812
+ }),
813
+ getUserExtensions: async (...request) => this.callApi({
814
+ path: '/users/extensions/list',
815
+ request,
816
+ }),
817
+ getUserActiveExtensions: async (params = null, ...request) => this.callApi({
818
+ path: '/users/extensions',
819
+ params,
820
+ request,
821
+ }),
822
+ updateUserExtensions: async (body, ...request) => this.callApi({
823
+ path: '/users/extensions',
824
+ method: 'PUT',
825
+ body,
826
+ request,
827
+ }),
828
+ };
829
+ videos = {
830
+ getVideos: async (params = null, ...request) => this.callApi({
831
+ path: '/videos',
832
+ params,
833
+ request,
834
+ }),
835
+ deleteVideos: async (params, ...request) => this.callApi({
836
+ path: '/videos',
837
+ method: 'DELETE',
838
+ params,
839
+ request,
840
+ }),
841
+ };
842
+ whispers = {
843
+ sendWhisper: async (params, body, ...request) => this.callApi({
844
+ path: '/whispers',
845
+ method: 'POST',
846
+ params,
847
+ body,
848
+ request,
849
+ }),
850
+ };
851
+ }