ts-twitch-api 0.1.3 → 0.1.5

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.
@@ -1,851 +0,0 @@
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
- }