@wazo/sdk 0.38.7 → 0.38.8

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 (106) hide show
  1. package/dist/wazo-sdk.js +2 -2
  2. package/esm/__tests__/api-client.test.js +142 -2
  3. package/esm/__tests__/web-rtc-client.test.js +227 -27
  4. package/esm/api/calld.js +8 -0
  5. package/esm/api/confd.js +134 -2
  6. package/esm/api-client.js +142 -2
  7. package/esm/checker/Checker.js +183 -24
  8. package/esm/checker/checks/aor.js +142 -2
  9. package/esm/checker/checks/api.js +142 -2
  10. package/esm/checker/checks/index.js +183 -24
  11. package/esm/checker/checks/wazo-websocket.js +2 -0
  12. package/esm/checker/checks/webrtc-transport.js +181 -24
  13. package/esm/checker/checks/webrtc.js +181 -24
  14. package/esm/domain/AdHocAPIConference.js +142 -2
  15. package/esm/domain/Features.js +142 -2
  16. package/esm/domain/Meeting.js +18 -0
  17. package/esm/domain/MeetingAuthorization.js +70 -0
  18. package/esm/domain/Phone/CTIPhone.js +142 -2
  19. package/esm/domain/__tests__/Meeting.test.js +87 -1
  20. package/esm/domain/__tests__/MeetingAuthorization.test.js +109 -0
  21. package/esm/index.js +226 -27
  22. package/esm/service/CallApi.js +142 -2
  23. package/esm/service/getApiClient.js +142 -2
  24. package/esm/simple/Auth.js +226 -27
  25. package/esm/simple/Configuration.js +226 -27
  26. package/esm/simple/Directory.js +142 -2
  27. package/esm/simple/Phone.js +226 -27
  28. package/esm/simple/Websocket.js +3 -0
  29. package/esm/simple/index.js +226 -27
  30. package/esm/simple/room/LocalParticipant.js +226 -27
  31. package/esm/simple/room/Participant.js +226 -27
  32. package/esm/simple/room/RemoteParticipant.js +226 -27
  33. package/esm/simple/room/Room.js +226 -27
  34. package/esm/simple/room/SipRoom.js +226 -27
  35. package/esm/simple/room/Stream.js +226 -27
  36. package/esm/simple/room/__tests__/Participant.test.js +14747 -0
  37. package/esm/simple/room/__tests__/RemoteParticipant.test.js +226 -27
  38. package/esm/simple/utils.js +226 -27
  39. package/esm/utils/__tests__/object.test.js +57 -0
  40. package/esm/utils/__tests__/string.test.js +30 -0
  41. package/esm/utils/object.js +24 -0
  42. package/esm/utils/string.js +10 -0
  43. package/esm/web-rtc-client.js +181 -24
  44. package/esm/websocket-client.js +3 -1
  45. package/lib/__tests__/api-client.test.js +142 -2
  46. package/lib/__tests__/web-rtc-client.test.js +227 -27
  47. package/lib/api/calld.js +8 -0
  48. package/lib/api/confd.js +134 -2
  49. package/lib/api-client.js +142 -2
  50. package/lib/checker/Checker.js +183 -24
  51. package/lib/checker/checks/aor.js +142 -2
  52. package/lib/checker/checks/api.js +142 -2
  53. package/lib/checker/checks/index.js +183 -24
  54. package/lib/checker/checks/wazo-websocket.js +2 -0
  55. package/lib/checker/checks/webrtc-transport.js +181 -24
  56. package/lib/checker/checks/webrtc.js +181 -24
  57. package/lib/domain/AdHocAPIConference.js +142 -2
  58. package/lib/domain/Features.js +142 -2
  59. package/lib/domain/Meeting.js +18 -0
  60. package/lib/domain/MeetingAuthorization.js +79 -0
  61. package/lib/domain/Phone/CTIPhone.js +142 -2
  62. package/lib/domain/__tests__/Meeting.test.js +87 -1
  63. package/lib/domain/__tests__/MeetingAuthorization.test.js +111 -0
  64. package/lib/index.js +226 -27
  65. package/lib/service/CallApi.js +142 -2
  66. package/lib/service/getApiClient.js +142 -2
  67. package/lib/simple/Auth.js +226 -27
  68. package/lib/simple/Configuration.js +226 -27
  69. package/lib/simple/Directory.js +142 -2
  70. package/lib/simple/Phone.js +226 -27
  71. package/lib/simple/Websocket.js +3 -0
  72. package/lib/simple/index.js +226 -27
  73. package/lib/simple/room/LocalParticipant.js +226 -27
  74. package/lib/simple/room/Participant.js +226 -27
  75. package/lib/simple/room/RemoteParticipant.js +226 -27
  76. package/lib/simple/room/Room.js +226 -27
  77. package/lib/simple/room/SipRoom.js +226 -27
  78. package/lib/simple/room/Stream.js +226 -27
  79. package/lib/simple/room/__tests__/Participant.test.js +14757 -0
  80. package/lib/simple/room/__tests__/RemoteParticipant.test.js +226 -27
  81. package/lib/simple/utils.js +226 -27
  82. package/lib/utils/__tests__/object.test.js +59 -0
  83. package/lib/utils/__tests__/string.test.js +32 -0
  84. package/lib/utils/object.js +28 -0
  85. package/lib/utils/string.js +14 -0
  86. package/lib/web-rtc-client.js +181 -24
  87. package/lib/websocket-client.js +3 -0
  88. package/package.json +2 -2
  89. package/src/__tests__/web-rtc-client.test.js +46 -3
  90. package/src/api/calld.js +8 -0
  91. package/src/api/confd.js +43 -2
  92. package/src/domain/Meeting.js +20 -0
  93. package/src/domain/MeetingAuthorization.js +67 -0
  94. package/src/domain/__tests__/Meeting.test.js +70 -1
  95. package/src/domain/__tests__/MeetingAuthorization.test.js +58 -0
  96. package/src/simple/room/Participant.js +40 -0
  97. package/src/simple/room/Room.js +2 -2
  98. package/src/simple/room/SipRoom.js +1 -1
  99. package/src/simple/room/__tests__/Participant.test.js +81 -0
  100. package/src/types/WebSocketMessage.js +7 -1
  101. package/src/utils/__tests__/object.test.js +35 -0
  102. package/src/utils/__tests__/string.test.js +23 -0
  103. package/src/utils/object.js +15 -0
  104. package/src/utils/string.js +8 -0
  105. package/src/web-rtc-client.js +39 -22
  106. package/src/websocket-client.js +2 -0
@@ -2643,6 +2643,70 @@ class ExternalApp {
2643
2643
 
2644
2644
  //
2645
2645
 
2646
+ class MeetingAuthorization {
2647
+
2648
+
2649
+
2650
+
2651
+
2652
+
2653
+ constructor({
2654
+ meetingUuid,
2655
+ uuid,
2656
+ userUuid,
2657
+ userName,
2658
+ } = {}) {
2659
+ this.meetingUuid = meetingUuid;
2660
+ this.uuid = uuid;
2661
+ this.userUuid = userUuid;
2662
+ this.userName = userName;
2663
+ }
2664
+
2665
+ setStatus(status ) {
2666
+ this.status = status;
2667
+ }
2668
+
2669
+ getStatus() {
2670
+ return this.status;
2671
+ }
2672
+
2673
+ static parse(plain ) {
2674
+ const {
2675
+ meeting_uuid: meetingUuid,
2676
+ uuid,
2677
+ guest_uuid: userUuid,
2678
+ guest_name: userName,
2679
+ } = plain;
2680
+
2681
+ return new MeetingAuthorization({
2682
+ meetingUuid,
2683
+ uuid,
2684
+ userUuid,
2685
+ userName,
2686
+ });
2687
+ }
2688
+
2689
+ static parseMany(items ) {
2690
+ if (!items) {
2691
+ return [];
2692
+ }
2693
+ return items.map(MeetingAuthorization.parse);
2694
+ }
2695
+ }
2696
+
2697
+ //
2698
+
2699
+
2700
+
2701
+
2702
+
2703
+
2704
+
2705
+
2706
+
2707
+
2708
+
2709
+
2646
2710
 
2647
2711
 
2648
2712
 
@@ -2653,6 +2717,7 @@ class ExternalApp {
2653
2717
 
2654
2718
 
2655
2719
 
2720
+
2656
2721
 
2657
2722
 
2658
2723
  class Meeting {
@@ -2667,6 +2732,8 @@ class Meeting {
2667
2732
 
2668
2733
 
2669
2734
 
2735
+
2736
+
2670
2737
 
2671
2738
  static parse(plain ) {
2672
2739
  return new Meeting({
@@ -2679,6 +2746,7 @@ class Meeting {
2679
2746
  extension: plain.exten,
2680
2747
  persistent: plain.persistent,
2681
2748
  creationTime: moment(plain.creation_time).toDate(),
2749
+ requireAuthorization: plain.require_authorization,
2682
2750
  });
2683
2751
  }
2684
2752
 
@@ -2703,6 +2771,7 @@ class Meeting {
2703
2771
  extension,
2704
2772
  persistent,
2705
2773
  creationTime,
2774
+ requireAuthorization,
2706
2775
  } = {}) {
2707
2776
  this.guestSipAuthorization = guestSipAuthorization;
2708
2777
  this.uri = uri;
@@ -2713,6 +2782,7 @@ class Meeting {
2713
2782
  this.extension = extension;
2714
2783
  this.persistent = persistent;
2715
2784
  this.creationTime = creationTime;
2785
+ this.requireAuthorization = requireAuthorization;
2716
2786
 
2717
2787
  // Useful to compare instead of instanceof with minified code
2718
2788
  this.type = 'Meeting';
@@ -2723,8 +2793,32 @@ class Meeting {
2723
2793
  const [username, secret] = atob(this.guestSipAuthorization).split(':');
2724
2794
  return { username, secret };
2725
2795
  }
2796
+
2726
2797
  }
2727
2798
 
2799
+ //
2800
+
2801
+ const camelToUnderscore = (key ) => {
2802
+ if (typeof key !== 'string') {
2803
+ throw new Error('Input is not a string');
2804
+ }
2805
+ return key.charAt(0).toLowerCase() + key.substring(1).replace(/([A-Z])/g, '_$1').toLowerCase();
2806
+ };
2807
+
2808
+ //
2809
+
2810
+ const convertKeysFromCamelToUnderscore = (args ) => {
2811
+ if (!args || typeof args !== 'object' || Array.isArray(args)) {
2812
+ throw new Error('Input is not an object');
2813
+ }
2814
+
2815
+ return Object.keys(args).reduce((acc, key) => {
2816
+ acc[camelToUnderscore(key)] = typeof args[key] === 'object' && !Array.isArray(args[key])
2817
+ ? convertKeysFromCamelToUnderscore(args[key]) : args[key];
2818
+ return acc;
2819
+ }, {});
2820
+ };
2821
+
2728
2822
  /* */
2729
2823
 
2730
2824
  var confdMethods = (client , baseUrl ) => ({
@@ -2793,8 +2887,18 @@ var confdMethods = (client , baseUrl ) => ({
2793
2887
  getMyMeetings: () =>
2794
2888
  client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
2795
2889
 
2796
- createMyMeeting: (name , persistent ) =>
2797
- client.post(`${baseUrl}/users/me/meetings`, { name, persistent }).then(Meeting.parse),
2890
+ createMyMeeting: (args ) =>
2891
+ client
2892
+ .post(`${baseUrl}/users/me/meetings`, convertKeysFromCamelToUnderscore(args))
2893
+ .then(Meeting.parse),
2894
+
2895
+ updateMyMeeting: (meetingUuid , data ) =>
2896
+ client.put(
2897
+ `${baseUrl}/users/me/meetings/${meetingUuid}`,
2898
+ convertKeysFromCamelToUnderscore(data),
2899
+ null,
2900
+ ApiRequester.successResponseParser,
2901
+ ),
2798
2902
 
2799
2903
  deleteMyMeeting: (meetingUuid ) =>
2800
2904
  client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
@@ -2802,8 +2906,36 @@ var confdMethods = (client , baseUrl ) => ({
2802
2906
  getMeeting: (meetingUuid ) =>
2803
2907
  client.get(`${baseUrl}/meetings/${meetingUuid}`, null).then(Meeting.parse),
2804
2908
 
2909
+ meetingAuthorizations: (meetingUuid ) =>
2910
+ client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations`, null).then(MeetingAuthorization.parseMany),
2911
+
2912
+ meetingAuthorizationReject: (meetingUuid , authorizationUuid ) =>
2913
+ client.put(
2914
+ `${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/reject`,
2915
+ {},
2916
+ null,
2917
+ ApiRequester.successResponseParser,
2918
+ ),
2919
+
2920
+ meetingAuthorizationAccept: (meetingUuid , authorizationUuid ) =>
2921
+ client.put(
2922
+ `${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/accept`,
2923
+ {},
2924
+ null,
2925
+ ApiRequester.successResponseParser,
2926
+ ),
2927
+
2805
2928
  guestGetMeeting: (meetingUuid ) =>
2806
2929
  client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}`, null).then(Meeting.parse),
2930
+
2931
+ guestAuthorizationRequest: (userUuid , meetingUuid , username ) =>
2932
+ client
2933
+ .post(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations`, { guest_name: username })
2934
+ .then(MeetingAuthorization.parse),
2935
+
2936
+ guestAuthorizationCheck: (userUuid , meetingUuid , authorizationUuid ) =>
2937
+ client.get(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations/${authorizationUuid}`, null),
2938
+
2807
2939
  });
2808
2940
 
2809
2941
  //
@@ -4268,6 +4400,14 @@ var calldMethods = (client , baseUrl ) => ({
4268
4400
  getMeetingParticipantsAsUser: async (meetingUuid ) =>
4269
4401
  client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/participants`),
4270
4402
 
4403
+ banMeetingParticipant: (meetingUuid , participantUuid ) =>
4404
+ client.delete(
4405
+ `${baseUrl}/users/me/meetings/${meetingUuid}/participants/${participantUuid}`,
4406
+ null,
4407
+ null,
4408
+ ApiRequester.successResponseParser,
4409
+ ),
4410
+
4271
4411
  listTrunks: () => client.get(`${baseUrl}/trunks`),
4272
4412
 
4273
4413
  mute: (callId ) =>
@@ -5059,6 +5199,7 @@ const AGENT_UNPAUSED = 'agent_unpaused';
5059
5199
  const CONFERENCE_ADHOC_PARTICIPANT_LEFT = 'conference_adhoc_participant_left';
5060
5200
  const CONFERENCE_ADHOC_DELETED = 'conference_adhoc_deleted';
5061
5201
  const MEETING_USER_PROGRESS = 'meeting_user_progress';
5202
+ const MEETING_USER_GUEST_AUTHORIZATION_CREATED = 'meeting_user_guest_authorization_created';
5062
5203
 
5063
5204
  const BLACKLIST_EVENTS = [
5064
5205
  CHAT_MESSAGE_SENT,
@@ -5410,6 +5551,7 @@ WebSocketClient.eventLists = [
5410
5551
  CONFERENCE_ADHOC_PARTICIPANT_LEFT,
5411
5552
  CONFERENCE_ADHOC_DELETED,
5412
5553
  MEETING_USER_PROGRESS,
5554
+ MEETING_USER_GUEST_AUTHORIZATION_CREATED,
5413
5555
  ];
5414
5556
 
5415
5557
  var wazoWebsocket = {
@@ -7026,7 +7168,7 @@ class WebRTCClient extends Emitter {
7026
7168
  });
7027
7169
  }
7028
7170
 
7029
- changeAudioInputDevice(id , session , force ) {
7171
+ async changeAudioInputDevice(id , session , force ) {
7030
7172
  const currentId = this.getAudioDeviceId();
7031
7173
  logger$1.info('setting audio input device', { id, currentId, session: !!session });
7032
7174
 
@@ -7034,33 +7176,50 @@ class WebRTCClient extends Emitter {
7034
7176
  return null;
7035
7177
  }
7036
7178
 
7179
+ // in order to handle an audio track change for default devices
7180
+ // we need the actual id of the device (not 'default')
7181
+ let deviceId = id;
7182
+ if (id === 'default' && navigator.mediaDevices) {
7183
+ const devices = await navigator.mediaDevices.enumerateDevices();
7184
+ const defaultDevice = devices.find(device => device.deviceId === 'default');
7185
+ if (defaultDevice) {
7186
+ const deviceLabel = defaultDevice.label.replace('Default - ', '');
7187
+ const targetDevice = devices.find(device => device.label === deviceLabel);
7188
+ if (targetDevice) {
7189
+ deviceId = targetDevice.deviceId;
7190
+ if (!force && deviceId === currentId) {
7191
+ return null;
7192
+ }
7193
+ }
7194
+ }
7195
+ }
7196
+
7037
7197
  // let's update the local audio value
7038
7198
  if (this.audio) {
7039
7199
  this.audio = {
7040
7200
  deviceId: {
7041
- exact: id,
7201
+ exact: deviceId,
7042
7202
  },
7043
7203
  };
7044
7204
  }
7045
7205
 
7046
- if (session) {
7206
+ if (session && navigator.mediaDevices) {
7047
7207
  const sdh = session.sessionDescriptionHandler;
7048
7208
  const pc = sdh.peerConnection;
7049
7209
 
7050
- // $FlowFixMe
7051
- return navigator.mediaDevices.getUserMedia({ audio: { deviceId: { exact: id } } }).then(async stream => {
7052
- const audioTrack = stream.getAudioTracks()[0];
7053
- const sender = pc && pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
7210
+ const constraints = { audio: { deviceId: { exact: deviceId } } };
7211
+ const stream = await navigator.mediaDevices.getUserMedia(constraints);
7212
+ const audioTrack = stream.getAudioTracks()[0];
7213
+ const sender = pc && pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
7054
7214
 
7055
- if (sender) {
7056
- if (sender.track) {
7057
- audioTrack.enabled = sender.track.enabled;
7058
- }
7059
- sender.replaceTrack(audioTrack);
7215
+ if (sender) {
7216
+ if (sender.track) {
7217
+ audioTrack.enabled = sender.track.enabled;
7060
7218
  }
7219
+ sender.replaceTrack(audioTrack);
7220
+ }
7061
7221
 
7062
- return stream;
7063
- });
7222
+ return stream;
7064
7223
  }
7065
7224
  }
7066
7225
 
@@ -7080,14 +7239,14 @@ class WebRTCClient extends Emitter {
7080
7239
  return null;
7081
7240
  }
7082
7241
 
7083
- // let's update the local video value
7084
- if (this.video) {
7085
- this.video = {
7086
- deviceId: {
7087
- exact: id,
7088
- },
7089
- };
7090
- }
7242
+ // let's make sure we don't lose other video constraints settings -- width, height, frameRate...
7243
+ const videoObject = typeof this.video === 'object' ? this.video : {};
7244
+ this.video = {
7245
+ ...videoObject,
7246
+ deviceId: {
7247
+ exact: id,
7248
+ },
7249
+ };
7091
7250
  }
7092
7251
 
7093
7252
  changeSessionVideoInputDevice(id , session ) {
@@ -2625,6 +2625,70 @@ class ExternalApp {
2625
2625
 
2626
2626
  //
2627
2627
 
2628
+ class MeetingAuthorization {
2629
+
2630
+
2631
+
2632
+
2633
+
2634
+
2635
+ constructor({
2636
+ meetingUuid,
2637
+ uuid,
2638
+ userUuid,
2639
+ userName,
2640
+ } = {}) {
2641
+ this.meetingUuid = meetingUuid;
2642
+ this.uuid = uuid;
2643
+ this.userUuid = userUuid;
2644
+ this.userName = userName;
2645
+ }
2646
+
2647
+ setStatus(status ) {
2648
+ this.status = status;
2649
+ }
2650
+
2651
+ getStatus() {
2652
+ return this.status;
2653
+ }
2654
+
2655
+ static parse(plain ) {
2656
+ const {
2657
+ meeting_uuid: meetingUuid,
2658
+ uuid,
2659
+ guest_uuid: userUuid,
2660
+ guest_name: userName,
2661
+ } = plain;
2662
+
2663
+ return new MeetingAuthorization({
2664
+ meetingUuid,
2665
+ uuid,
2666
+ userUuid,
2667
+ userName,
2668
+ });
2669
+ }
2670
+
2671
+ static parseMany(items ) {
2672
+ if (!items) {
2673
+ return [];
2674
+ }
2675
+ return items.map(MeetingAuthorization.parse);
2676
+ }
2677
+ }
2678
+
2679
+ //
2680
+
2681
+
2682
+
2683
+
2684
+
2685
+
2686
+
2687
+
2688
+
2689
+
2690
+
2691
+
2628
2692
 
2629
2693
 
2630
2694
 
@@ -2635,6 +2699,7 @@ class ExternalApp {
2635
2699
 
2636
2700
 
2637
2701
 
2702
+
2638
2703
 
2639
2704
 
2640
2705
  class Meeting {
@@ -2649,6 +2714,8 @@ class Meeting {
2649
2714
 
2650
2715
 
2651
2716
 
2717
+
2718
+
2652
2719
 
2653
2720
  static parse(plain ) {
2654
2721
  return new Meeting({
@@ -2661,6 +2728,7 @@ class Meeting {
2661
2728
  extension: plain.exten,
2662
2729
  persistent: plain.persistent,
2663
2730
  creationTime: moment(plain.creation_time).toDate(),
2731
+ requireAuthorization: plain.require_authorization,
2664
2732
  });
2665
2733
  }
2666
2734
 
@@ -2685,6 +2753,7 @@ class Meeting {
2685
2753
  extension,
2686
2754
  persistent,
2687
2755
  creationTime,
2756
+ requireAuthorization,
2688
2757
  } = {}) {
2689
2758
  this.guestSipAuthorization = guestSipAuthorization;
2690
2759
  this.uri = uri;
@@ -2695,6 +2764,7 @@ class Meeting {
2695
2764
  this.extension = extension;
2696
2765
  this.persistent = persistent;
2697
2766
  this.creationTime = creationTime;
2767
+ this.requireAuthorization = requireAuthorization;
2698
2768
 
2699
2769
  // Useful to compare instead of instanceof with minified code
2700
2770
  this.type = 'Meeting';
@@ -2705,8 +2775,32 @@ class Meeting {
2705
2775
  const [username, secret] = atob(this.guestSipAuthorization).split(':');
2706
2776
  return { username, secret };
2707
2777
  }
2778
+
2708
2779
  }
2709
2780
 
2781
+ //
2782
+
2783
+ const camelToUnderscore = (key ) => {
2784
+ if (typeof key !== 'string') {
2785
+ throw new Error('Input is not a string');
2786
+ }
2787
+ return key.charAt(0).toLowerCase() + key.substring(1).replace(/([A-Z])/g, '_$1').toLowerCase();
2788
+ };
2789
+
2790
+ //
2791
+
2792
+ const convertKeysFromCamelToUnderscore = (args ) => {
2793
+ if (!args || typeof args !== 'object' || Array.isArray(args)) {
2794
+ throw new Error('Input is not an object');
2795
+ }
2796
+
2797
+ return Object.keys(args).reduce((acc, key) => {
2798
+ acc[camelToUnderscore(key)] = typeof args[key] === 'object' && !Array.isArray(args[key])
2799
+ ? convertKeysFromCamelToUnderscore(args[key]) : args[key];
2800
+ return acc;
2801
+ }, {});
2802
+ };
2803
+
2710
2804
  /* */
2711
2805
 
2712
2806
  var confdMethods = (client , baseUrl ) => ({
@@ -2775,8 +2869,18 @@ var confdMethods = (client , baseUrl ) => ({
2775
2869
  getMyMeetings: () =>
2776
2870
  client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
2777
2871
 
2778
- createMyMeeting: (name , persistent ) =>
2779
- client.post(`${baseUrl}/users/me/meetings`, { name, persistent }).then(Meeting.parse),
2872
+ createMyMeeting: (args ) =>
2873
+ client
2874
+ .post(`${baseUrl}/users/me/meetings`, convertKeysFromCamelToUnderscore(args))
2875
+ .then(Meeting.parse),
2876
+
2877
+ updateMyMeeting: (meetingUuid , data ) =>
2878
+ client.put(
2879
+ `${baseUrl}/users/me/meetings/${meetingUuid}`,
2880
+ convertKeysFromCamelToUnderscore(data),
2881
+ null,
2882
+ ApiRequester.successResponseParser,
2883
+ ),
2780
2884
 
2781
2885
  deleteMyMeeting: (meetingUuid ) =>
2782
2886
  client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
@@ -2784,8 +2888,36 @@ var confdMethods = (client , baseUrl ) => ({
2784
2888
  getMeeting: (meetingUuid ) =>
2785
2889
  client.get(`${baseUrl}/meetings/${meetingUuid}`, null).then(Meeting.parse),
2786
2890
 
2891
+ meetingAuthorizations: (meetingUuid ) =>
2892
+ client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations`, null).then(MeetingAuthorization.parseMany),
2893
+
2894
+ meetingAuthorizationReject: (meetingUuid , authorizationUuid ) =>
2895
+ client.put(
2896
+ `${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/reject`,
2897
+ {},
2898
+ null,
2899
+ ApiRequester.successResponseParser,
2900
+ ),
2901
+
2902
+ meetingAuthorizationAccept: (meetingUuid , authorizationUuid ) =>
2903
+ client.put(
2904
+ `${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/accept`,
2905
+ {},
2906
+ null,
2907
+ ApiRequester.successResponseParser,
2908
+ ),
2909
+
2787
2910
  guestGetMeeting: (meetingUuid ) =>
2788
2911
  client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}`, null).then(Meeting.parse),
2912
+
2913
+ guestAuthorizationRequest: (userUuid , meetingUuid , username ) =>
2914
+ client
2915
+ .post(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations`, { guest_name: username })
2916
+ .then(MeetingAuthorization.parse),
2917
+
2918
+ guestAuthorizationCheck: (userUuid , meetingUuid , authorizationUuid ) =>
2919
+ client.get(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations/${authorizationUuid}`, null),
2920
+
2789
2921
  });
2790
2922
 
2791
2923
  //
@@ -4224,6 +4356,14 @@ var calldMethods = (client , baseUrl ) => ({
4224
4356
  getMeetingParticipantsAsUser: async (meetingUuid ) =>
4225
4357
  client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/participants`),
4226
4358
 
4359
+ banMeetingParticipant: (meetingUuid , participantUuid ) =>
4360
+ client.delete(
4361
+ `${baseUrl}/users/me/meetings/${meetingUuid}/participants/${participantUuid}`,
4362
+ null,
4363
+ null,
4364
+ ApiRequester.successResponseParser,
4365
+ ),
4366
+
4227
4367
  listTrunks: () => client.get(`${baseUrl}/trunks`),
4228
4368
 
4229
4369
  mute: (callId ) =>