@vendasta/meetings 1.9.0 → 1.10.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 (37) hide show
  1. package/esm2020/lib/_internal/enums/meeting-type.enum.mjs +3 -2
  2. package/esm2020/lib/_internal/interfaces/index.mjs +1 -1
  3. package/esm2020/lib/_internal/interfaces/meeting-guest.interface.mjs +1 -1
  4. package/esm2020/lib/_internal/interfaces/meeting-host.interface.mjs +1 -1
  5. package/esm2020/lib/_internal/meeting-host.api.service.mjs +7 -2
  6. package/esm2020/lib/_internal/objects/google-meet.mjs +1 -1
  7. package/esm2020/lib/_internal/objects/groups-and-services.mjs +1 -1
  8. package/esm2020/lib/_internal/objects/index.mjs +3 -3
  9. package/esm2020/lib/_internal/objects/meeting-guest.mjs +26 -2
  10. package/esm2020/lib/_internal/objects/meeting-host.mjs +181 -25
  11. package/esm2020/lib/_internal/objects/meeting-source.mjs +1 -1
  12. package/esm2020/lib/guest/guest.service.mjs +1 -1
  13. package/esm2020/lib/host/host.service.mjs +14 -2
  14. package/esm2020/lib/index.mjs +1 -1
  15. package/esm2020/lib/shared/index.mjs +2 -1
  16. package/esm2020/lib/shared/meeting-stats.mjs +17 -0
  17. package/fesm2015/vendasta-meetings.mjs +239 -24
  18. package/fesm2015/vendasta-meetings.mjs.map +1 -1
  19. package/fesm2020/vendasta-meetings.mjs +239 -24
  20. package/fesm2020/vendasta-meetings.mjs.map +1 -1
  21. package/lib/_internal/enums/meeting-type.enum.d.ts +3 -2
  22. package/lib/_internal/interfaces/index.d.ts +2 -2
  23. package/lib/_internal/interfaces/meeting-guest.interface.d.ts +6 -0
  24. package/lib/_internal/interfaces/meeting-host.interface.d.ts +31 -9
  25. package/lib/_internal/meeting-host.api.service.d.ts +3 -2
  26. package/lib/_internal/objects/google-meet.d.ts +1 -1
  27. package/lib/_internal/objects/groups-and-services.d.ts +1 -1
  28. package/lib/_internal/objects/index.d.ts +2 -2
  29. package/lib/_internal/objects/meeting-guest.d.ts +5 -1
  30. package/lib/_internal/objects/meeting-host.d.ts +48 -15
  31. package/lib/_internal/objects/meeting-source.d.ts +1 -1
  32. package/lib/guest/guest.service.d.ts +4 -0
  33. package/lib/host/host.service.d.ts +10 -1
  34. package/lib/index.d.ts +1 -1
  35. package/lib/shared/index.d.ts +1 -0
  36. package/lib/shared/meeting-stats.d.ts +17 -0
  37. package/package.json +1 -1
@@ -154,9 +154,10 @@ var BookingSource;
154
154
  BookingSource[BookingSource["BOOKING_SOURCE_BOOKING_FORM"] = 1] = "BOOKING_SOURCE_BOOKING_FORM";
155
155
  BookingSource[BookingSource["BOOKING_SOURCE_AI_VOICE"] = 2] = "BOOKING_SOURCE_AI_VOICE";
156
156
  BookingSource[BookingSource["BOOKING_SOURCE_AI_CHAT"] = 3] = "BOOKING_SOURCE_AI_CHAT";
157
- BookingSource[BookingSource["BOOKING_SOURCE_BOOK_A_MEETING"] = 4] = "BOOKING_SOURCE_BOOK_A_MEETING";
157
+ BookingSource[BookingSource["BOOKING_SOURCE_HOST_CALENDAR_UI"] = 4] = "BOOKING_SOURCE_HOST_CALENDAR_UI";
158
158
  BookingSource[BookingSource["BOOKING_SOURCE_API_INTEGRATION"] = 5] = "BOOKING_SOURCE_API_INTEGRATION";
159
159
  BookingSource[BookingSource["BOOKING_SOURCE_CRM"] = 6] = "BOOKING_SOURCE_CRM";
160
+ BookingSource[BookingSource["BOOKING_SOURCE_HOST_CALENDAR_WEBHOOK"] = 7] = "BOOKING_SOURCE_HOST_CALENDAR_WEBHOOK";
160
161
  })(BookingSource || (BookingSource = {}));
161
162
  var DateRangeType;
162
163
  (function (DateRangeType) {
@@ -4062,6 +4063,9 @@ class CancelBatchMeetingRequest {
4062
4063
  static fromProto(proto) {
4063
4064
  let m = new CancelBatchMeetingRequest();
4064
4065
  m = Object.assign(m, proto);
4066
+ if (proto.bookingSource) {
4067
+ m.bookingSource = enumStringToValue$6(BookingSource, proto.bookingSource);
4068
+ }
4065
4069
  return m;
4066
4070
  }
4067
4071
  constructor(kwargs) {
@@ -4078,6 +4082,9 @@ class CancelBatchMeetingRequest {
4078
4082
  if (typeof this.cancellationReason !== 'undefined') {
4079
4083
  toReturn['cancellationReason'] = this.cancellationReason;
4080
4084
  }
4085
+ if (typeof this.bookingSource !== 'undefined') {
4086
+ toReturn['bookingSource'] = this.bookingSource;
4087
+ }
4081
4088
  return toReturn;
4082
4089
  }
4083
4090
  }
@@ -4671,6 +4678,9 @@ class GuestCancelMeetingRequest {
4671
4678
  static fromProto(proto) {
4672
4679
  let m = new GuestCancelMeetingRequest();
4673
4680
  m = Object.assign(m, proto);
4681
+ if (proto.bookingSource) {
4682
+ m.bookingSource = enumStringToValue$6(BookingSource, proto.bookingSource);
4683
+ }
4674
4684
  return m;
4675
4685
  }
4676
4686
  constructor(kwargs) {
@@ -4690,6 +4700,9 @@ class GuestCancelMeetingRequest {
4690
4700
  if (typeof this.cancellationReason !== 'undefined') {
4691
4701
  toReturn['cancellationReason'] = this.cancellationReason;
4692
4702
  }
4703
+ if (typeof this.bookingSource !== 'undefined') {
4704
+ toReturn['bookingSource'] = this.bookingSource;
4705
+ }
4693
4706
  return toReturn;
4694
4707
  }
4695
4708
  }
@@ -4958,6 +4971,9 @@ class GuestRescheduleMeetingRequest {
4958
4971
  if (proto.timeZone) {
4959
4972
  m.timeZone = TimeZone.fromProto(proto.timeZone);
4960
4973
  }
4974
+ if (proto.bookingSource) {
4975
+ m.bookingSource = enumStringToValue$6(BookingSource, proto.bookingSource);
4976
+ }
4961
4977
  return m;
4962
4978
  }
4963
4979
  constructor(kwargs) {
@@ -4983,6 +4999,9 @@ class GuestRescheduleMeetingRequest {
4983
4999
  if (typeof this.location !== 'undefined') {
4984
5000
  toReturn['location'] = this.location;
4985
5001
  }
5002
+ if (typeof this.bookingSource !== 'undefined') {
5003
+ toReturn['bookingSource'] = this.bookingSource;
5004
+ }
4986
5005
  return toReturn;
4987
5006
  }
4988
5007
  }
@@ -5536,6 +5555,9 @@ class RescheduleBatchMeetingRequest {
5536
5555
  if (proto.timeZone) {
5537
5556
  m.timeZone = TimeZone.fromProto(proto.timeZone);
5538
5557
  }
5558
+ if (proto.bookingSource) {
5559
+ m.bookingSource = enumStringToValue$6(BookingSource, proto.bookingSource);
5560
+ }
5539
5561
  return m;
5540
5562
  }
5541
5563
  constructor(kwargs) {
@@ -5558,6 +5580,9 @@ class RescheduleBatchMeetingRequest {
5558
5580
  if (typeof this.location !== 'undefined') {
5559
5581
  toReturn['location'] = this.location;
5560
5582
  }
5583
+ if (typeof this.bookingSource !== 'undefined') {
5584
+ toReturn['bookingSource'] = this.bookingSource;
5585
+ }
5561
5586
  return toReturn;
5562
5587
  }
5563
5588
  }
@@ -6658,6 +6683,9 @@ class CancelMeetingRequest {
6658
6683
  static fromProto(proto) {
6659
6684
  let m = new CancelMeetingRequest();
6660
6685
  m = Object.assign(m, proto);
6686
+ if (proto.bookingSource) {
6687
+ m.bookingSource = enumStringToValue$3(BookingSource, proto.bookingSource);
6688
+ }
6661
6689
  return m;
6662
6690
  }
6663
6691
  constructor(kwargs) {
@@ -6680,6 +6708,9 @@ class CancelMeetingRequest {
6680
6708
  if (typeof this.sessionId !== 'undefined') {
6681
6709
  toReturn['sessionId'] = this.sessionId;
6682
6710
  }
6711
+ if (typeof this.bookingSource !== 'undefined') {
6712
+ toReturn['bookingSource'] = this.bookingSource;
6713
+ }
6683
6714
  return toReturn;
6684
6715
  }
6685
6716
  }
@@ -7360,10 +7391,13 @@ class EventTypeSummary {
7360
7391
  return toReturn;
7361
7392
  }
7362
7393
  }
7363
- class ListAvailabilityRequestFilters {
7394
+ class ListBookedMeetingsRequestFilters {
7364
7395
  static fromProto(proto) {
7365
- let m = new ListAvailabilityRequestFilters();
7396
+ let m = new ListBookedMeetingsRequestFilters();
7366
7397
  m = Object.assign(m, proto);
7398
+ if (proto.timeSpan) {
7399
+ m.timeSpan = DateRange.fromProto(proto.timeSpan);
7400
+ }
7367
7401
  return m;
7368
7402
  }
7369
7403
  constructor(kwargs) {
@@ -7374,22 +7408,25 @@ class ListAvailabilityRequestFilters {
7374
7408
  }
7375
7409
  toApiJson() {
7376
7410
  const toReturn = {};
7411
+ if (typeof this.meetingTypeIds !== 'undefined') {
7412
+ toReturn['meetingTypeIds'] = this.meetingTypeIds;
7413
+ }
7377
7414
  if (typeof this.hostId !== 'undefined') {
7378
7415
  toReturn['hostId'] = this.hostId;
7379
7416
  }
7380
- if (typeof this.meetingTypeId !== 'undefined') {
7381
- toReturn['meetingTypeId'] = this.meetingTypeId;
7417
+ if (typeof this.timeSpan !== 'undefined' && this.timeSpan !== null) {
7418
+ toReturn['timeSpan'] = 'toApiJson' in this.timeSpan ? this.timeSpan.toApiJson() : this.timeSpan;
7419
+ }
7420
+ if (typeof this.userIds !== 'undefined') {
7421
+ toReturn['userIds'] = this.userIds;
7382
7422
  }
7383
7423
  return toReturn;
7384
7424
  }
7385
7425
  }
7386
- class ListBookedMeetingsRequestFilters {
7426
+ class ListAvailabilityRequestFilters {
7387
7427
  static fromProto(proto) {
7388
- let m = new ListBookedMeetingsRequestFilters();
7428
+ let m = new ListAvailabilityRequestFilters();
7389
7429
  m = Object.assign(m, proto);
7390
- if (proto.timeSpan) {
7391
- m.timeSpan = DateRange.fromProto(proto.timeSpan);
7392
- }
7393
7430
  return m;
7394
7431
  }
7395
7432
  constructor(kwargs) {
@@ -7400,17 +7437,11 @@ class ListBookedMeetingsRequestFilters {
7400
7437
  }
7401
7438
  toApiJson() {
7402
7439
  const toReturn = {};
7403
- if (typeof this.meetingTypeIds !== 'undefined') {
7404
- toReturn['meetingTypeIds'] = this.meetingTypeIds;
7405
- }
7406
7440
  if (typeof this.hostId !== 'undefined') {
7407
7441
  toReturn['hostId'] = this.hostId;
7408
7442
  }
7409
- if (typeof this.timeSpan !== 'undefined' && this.timeSpan !== null) {
7410
- toReturn['timeSpan'] = 'toApiJson' in this.timeSpan ? this.timeSpan.toApiJson() : this.timeSpan;
7411
- }
7412
- if (typeof this.userIds !== 'undefined') {
7413
- toReturn['userIds'] = this.userIds;
7443
+ if (typeof this.meetingTypeId !== 'undefined') {
7444
+ toReturn['meetingTypeId'] = this.meetingTypeId;
7414
7445
  }
7415
7446
  return toReturn;
7416
7447
  }
@@ -7642,6 +7673,109 @@ class GetHostsForCalendarResponse {
7642
7673
  return toReturn;
7643
7674
  }
7644
7675
  }
7676
+ class GetMeetingStatsRequest {
7677
+ static fromProto(proto) {
7678
+ let m = new GetMeetingStatsRequest();
7679
+ m = Object.assign(m, proto);
7680
+ if (proto.timeSpan) {
7681
+ m.timeSpan = DateRange.fromProto(proto.timeSpan);
7682
+ }
7683
+ if (proto.timeZone) {
7684
+ m.timeZone = TimeZone.fromProto(proto.timeZone);
7685
+ }
7686
+ return m;
7687
+ }
7688
+ constructor(kwargs) {
7689
+ if (!kwargs) {
7690
+ return;
7691
+ }
7692
+ Object.assign(this, kwargs);
7693
+ }
7694
+ toApiJson() {
7695
+ const toReturn = {};
7696
+ if (typeof this.timeSpan !== 'undefined' && this.timeSpan !== null) {
7697
+ toReturn['timeSpan'] = 'toApiJson' in this.timeSpan ? this.timeSpan.toApiJson() : this.timeSpan;
7698
+ }
7699
+ if (typeof this.timeZone !== 'undefined' && this.timeZone !== null) {
7700
+ toReturn['timeZone'] = 'toApiJson' in this.timeZone ? this.timeZone.toApiJson() : this.timeZone;
7701
+ }
7702
+ if (typeof this.businessId !== 'undefined') {
7703
+ toReturn['businessId'] = this.businessId;
7704
+ }
7705
+ return toReturn;
7706
+ }
7707
+ }
7708
+ class GetMeetingStatsResponse {
7709
+ static fromProto(proto) {
7710
+ let m = new GetMeetingStatsResponse();
7711
+ m = Object.assign(m, proto);
7712
+ if (proto.totalMeetingsScheduled) {
7713
+ m.totalMeetingsScheduled = parseInt(proto.totalMeetingsScheduled, 10);
7714
+ }
7715
+ if (proto.previousTotalMeetingsScheduled) {
7716
+ m.previousTotalMeetingsScheduled = parseInt(proto.previousTotalMeetingsScheduled, 10);
7717
+ }
7718
+ if (proto.dailyMeetingsScheduled) {
7719
+ m.dailyMeetingsScheduled = proto.dailyMeetingsScheduled.map(MeetingStatPoint.fromProto);
7720
+ }
7721
+ if (proto.totalMeetingsCancelled) {
7722
+ m.totalMeetingsCancelled = parseInt(proto.totalMeetingsCancelled, 10);
7723
+ }
7724
+ if (proto.totalMeetingsRescheduled) {
7725
+ m.totalMeetingsRescheduled = parseInt(proto.totalMeetingsRescheduled, 10);
7726
+ }
7727
+ if (proto.totalAbandonedCarts) {
7728
+ m.totalAbandonedCarts = parseInt(proto.totalAbandonedCarts, 10);
7729
+ }
7730
+ if (proto.totalCalendarDisconnected) {
7731
+ m.totalCalendarDisconnected = parseInt(proto.totalCalendarDisconnected, 10);
7732
+ }
7733
+ if (proto.totalBookedByAiChat) {
7734
+ m.totalBookedByAiChat = parseInt(proto.totalBookedByAiChat, 10);
7735
+ }
7736
+ if (proto.totalBookedByAiVoice) {
7737
+ m.totalBookedByAiVoice = parseInt(proto.totalBookedByAiVoice, 10);
7738
+ }
7739
+ return m;
7740
+ }
7741
+ constructor(kwargs) {
7742
+ if (!kwargs) {
7743
+ return;
7744
+ }
7745
+ Object.assign(this, kwargs);
7746
+ }
7747
+ toApiJson() {
7748
+ const toReturn = {};
7749
+ if (typeof this.totalMeetingsScheduled !== 'undefined') {
7750
+ toReturn['totalMeetingsScheduled'] = this.totalMeetingsScheduled;
7751
+ }
7752
+ if (typeof this.previousTotalMeetingsScheduled !== 'undefined') {
7753
+ toReturn['previousTotalMeetingsScheduled'] = this.previousTotalMeetingsScheduled;
7754
+ }
7755
+ if (typeof this.dailyMeetingsScheduled !== 'undefined' && this.dailyMeetingsScheduled !== null) {
7756
+ toReturn['dailyMeetingsScheduled'] = 'toApiJson' in this.dailyMeetingsScheduled ? this.dailyMeetingsScheduled.toApiJson() : this.dailyMeetingsScheduled;
7757
+ }
7758
+ if (typeof this.totalMeetingsCancelled !== 'undefined') {
7759
+ toReturn['totalMeetingsCancelled'] = this.totalMeetingsCancelled;
7760
+ }
7761
+ if (typeof this.totalMeetingsRescheduled !== 'undefined') {
7762
+ toReturn['totalMeetingsRescheduled'] = this.totalMeetingsRescheduled;
7763
+ }
7764
+ if (typeof this.totalAbandonedCarts !== 'undefined') {
7765
+ toReturn['totalAbandonedCarts'] = this.totalAbandonedCarts;
7766
+ }
7767
+ if (typeof this.totalCalendarDisconnected !== 'undefined') {
7768
+ toReturn['totalCalendarDisconnected'] = this.totalCalendarDisconnected;
7769
+ }
7770
+ if (typeof this.totalBookedByAiChat !== 'undefined') {
7771
+ toReturn['totalBookedByAiChat'] = this.totalBookedByAiChat;
7772
+ }
7773
+ if (typeof this.totalBookedByAiVoice !== 'undefined') {
7774
+ toReturn['totalBookedByAiVoice'] = this.totalBookedByAiVoice;
7775
+ }
7776
+ return toReturn;
7777
+ }
7778
+ }
7645
7779
  class GetMeetingTypesForCalendarsRequest {
7646
7780
  static fromProto(proto) {
7647
7781
  let m = new GetMeetingTypesForCalendarsRequest();
@@ -7959,6 +8093,9 @@ class HostCancelBatchMeetingRequest {
7959
8093
  static fromProto(proto) {
7960
8094
  let m = new HostCancelBatchMeetingRequest();
7961
8095
  m = Object.assign(m, proto);
8096
+ if (proto.bookingSource) {
8097
+ m.bookingSource = enumStringToValue$3(BookingSource, proto.bookingSource);
8098
+ }
7962
8099
  return m;
7963
8100
  }
7964
8101
  constructor(kwargs) {
@@ -7975,6 +8112,9 @@ class HostCancelBatchMeetingRequest {
7975
8112
  if (typeof this.cancellationReason !== 'undefined') {
7976
8113
  toReturn['cancellationReason'] = this.cancellationReason;
7977
8114
  }
8115
+ if (typeof this.bookingSource !== 'undefined') {
8116
+ toReturn['bookingSource'] = this.bookingSource;
8117
+ }
7978
8118
  return toReturn;
7979
8119
  }
7980
8120
  }
@@ -8230,6 +8370,9 @@ class HostRescheduleBatchMeetingRequest {
8230
8370
  if (proto.timeZone) {
8231
8371
  m.timeZone = TimeZone.fromProto(proto.timeZone);
8232
8372
  }
8373
+ if (proto.bookingSource) {
8374
+ m.bookingSource = enumStringToValue$3(BookingSource, proto.bookingSource);
8375
+ }
8233
8376
  return m;
8234
8377
  }
8235
8378
  constructor(kwargs) {
@@ -8252,6 +8395,9 @@ class HostRescheduleBatchMeetingRequest {
8252
8395
  if (typeof this.timeZone !== 'undefined' && this.timeZone !== null) {
8253
8396
  toReturn['timeZone'] = 'toApiJson' in this.timeZone ? this.timeZone.toApiJson() : this.timeZone;
8254
8397
  }
8398
+ if (typeof this.bookingSource !== 'undefined') {
8399
+ toReturn['bookingSource'] = this.bookingSource;
8400
+ }
8255
8401
  return toReturn;
8256
8402
  }
8257
8403
  }
@@ -9045,6 +9191,35 @@ class Meeting {
9045
9191
  return toReturn;
9046
9192
  }
9047
9193
  }
9194
+ class MeetingStatPoint {
9195
+ static fromProto(proto) {
9196
+ let m = new MeetingStatPoint();
9197
+ m = Object.assign(m, proto);
9198
+ if (proto.date) {
9199
+ m.date = new Date(proto.date);
9200
+ }
9201
+ if (proto.count) {
9202
+ m.count = parseInt(proto.count, 10);
9203
+ }
9204
+ return m;
9205
+ }
9206
+ constructor(kwargs) {
9207
+ if (!kwargs) {
9208
+ return;
9209
+ }
9210
+ Object.assign(this, kwargs);
9211
+ }
9212
+ toApiJson() {
9213
+ const toReturn = {};
9214
+ if (typeof this.date !== 'undefined' && this.date !== null) {
9215
+ toReturn['date'] = 'toApiJson' in this.date ? this.date.toApiJson() : this.date;
9216
+ }
9217
+ if (typeof this.count !== 'undefined') {
9218
+ toReturn['count'] = this.count;
9219
+ }
9220
+ return toReturn;
9221
+ }
9222
+ }
9048
9223
  class MeetingTypeList {
9049
9224
  static fromProto(proto) {
9050
9225
  let m = new MeetingTypeList();
@@ -9068,9 +9243,9 @@ class MeetingTypeList {
9068
9243
  return toReturn;
9069
9244
  }
9070
9245
  }
9071
- class UpdateMeetingMetadataRequestMetadataEntry {
9246
+ class HostBookBatchMeetingRequestMetadataEntry {
9072
9247
  static fromProto(proto) {
9073
- let m = new UpdateMeetingMetadataRequestMetadataEntry();
9248
+ let m = new HostBookBatchMeetingRequestMetadataEntry();
9074
9249
  m = Object.assign(m, proto);
9075
9250
  return m;
9076
9251
  }
@@ -9091,9 +9266,9 @@ class UpdateMeetingMetadataRequestMetadataEntry {
9091
9266
  return toReturn;
9092
9267
  }
9093
9268
  }
9094
- class HostBookBatchMeetingRequestMetadataEntry {
9269
+ class MeetingMetadataEntry {
9095
9270
  static fromProto(proto) {
9096
- let m = new HostBookBatchMeetingRequestMetadataEntry();
9271
+ let m = new MeetingMetadataEntry();
9097
9272
  m = Object.assign(m, proto);
9098
9273
  return m;
9099
9274
  }
@@ -9114,9 +9289,9 @@ class HostBookBatchMeetingRequestMetadataEntry {
9114
9289
  return toReturn;
9115
9290
  }
9116
9291
  }
9117
- class MeetingMetadataEntry {
9292
+ class UpdateMeetingMetadataRequestMetadataEntry {
9118
9293
  static fromProto(proto) {
9119
- let m = new MeetingMetadataEntry();
9294
+ let m = new UpdateMeetingMetadataRequestMetadataEntry();
9120
9295
  m = Object.assign(m, proto);
9121
9296
  return m;
9122
9297
  }
@@ -9220,6 +9395,9 @@ class RescheduleMeetingRequest {
9220
9395
  if (proto.start) {
9221
9396
  m.start = new Date(proto.start);
9222
9397
  }
9398
+ if (proto.bookingSource) {
9399
+ m.bookingSource = enumStringToValue$3(BookingSource, proto.bookingSource);
9400
+ }
9223
9401
  return m;
9224
9402
  }
9225
9403
  constructor(kwargs) {
@@ -9242,6 +9420,9 @@ class RescheduleMeetingRequest {
9242
9420
  if (typeof this.isRecurring !== 'undefined') {
9243
9421
  toReturn['isRecurring'] = this.isRecurring;
9244
9422
  }
9423
+ if (typeof this.bookingSource !== 'undefined') {
9424
+ toReturn['bookingSource'] = this.bookingSource;
9425
+ }
9245
9426
  return toReturn;
9246
9427
  }
9247
9428
  }
@@ -10386,6 +10567,11 @@ class MeetingHostApiService {
10386
10567
  return this.http.post(this._host + "/meetings.v1.MeetingHost/ListBookedMeetingsV2", request.toApiJson(), this.apiOptions())
10387
10568
  .pipe(map(resp => ListBookedMeetingsV2Response.fromProto(resp)));
10388
10569
  }
10570
+ getMeetingStats(r) {
10571
+ const request = (r.toApiJson) ? r : new GetMeetingStatsRequest(r);
10572
+ return this.http.post(this._host + "/meetings.v1.MeetingHost/GetMeetingStats", request.toApiJson(), this.apiOptions())
10573
+ .pipe(map(resp => GetMeetingStatsResponse.fromProto(resp)));
10574
+ }
10389
10575
  cancelMeeting(r) {
10390
10576
  const request = (r.toApiJson) ? r : new CancelMeetingRequest(r);
10391
10577
  return this.http.post(this._host + "/meetings.v1.MeetingHost/CancelMeeting", request.toApiJson(), { ...this.apiOptions(), observe: 'response' });
@@ -11138,6 +11324,23 @@ var MeetingSourceOrigin;
11138
11324
  MeetingSourceOrigin["SalesCenter"] = "sales-center";
11139
11325
  })(MeetingSourceOrigin || (MeetingSourceOrigin = {}));
11140
11326
 
11327
+ function meetingStatsFromApi(resp) {
11328
+ return {
11329
+ totalMeetingsScheduled: resp.totalMeetingsScheduled || 0,
11330
+ previousTotalMeetingsScheduled: resp.previousTotalMeetingsScheduled || 0,
11331
+ dailyMeetingsScheduled: (resp.dailyMeetingsScheduled || []).map((point) => ({
11332
+ date: point.date,
11333
+ count: point.count || 0,
11334
+ })),
11335
+ totalMeetingsCancelled: resp.totalMeetingsCancelled || 0,
11336
+ totalMeetingsRescheduled: resp.totalMeetingsRescheduled || 0,
11337
+ totalAbandonedCarts: resp.totalAbandonedCarts || 0,
11338
+ totalCalendarDisconnected: resp.totalCalendarDisconnected || 0,
11339
+ totalBookedByAiChat: resp.totalBookedByAiChat || 0,
11340
+ totalBookedByAiVoice: resp.totalBookedByAiVoice || 0,
11341
+ };
11342
+ }
11343
+
11141
11344
  class GuestService {
11142
11345
  constructor(guestAPIService) {
11143
11346
  this.guestAPIService = guestAPIService;
@@ -11676,6 +11879,18 @@ class HostService {
11676
11879
  hostCancelBatchMeeting(req) {
11677
11880
  return this.hostAPIService.hostCancelBatchMeeting(req).pipe(mapTo(null));
11678
11881
  }
11882
+ // getMeetingStats returns aggregated meeting statistics for the host, backing the
11883
+ // "My Meetings" dashboard card. timeSpan must be expressed in the caller's time zone;
11884
+ // timeZone is used to bucket meetings into days and to align the comparison period.
11885
+ getMeetingStats(req) {
11886
+ return this.hostAPIService
11887
+ .getMeetingStats({
11888
+ timeSpan: req.timeSpan,
11889
+ timeZone: req.timeZone,
11890
+ businessId: req.businessId,
11891
+ })
11892
+ .pipe(map((resp) => meetingStatsFromApi(resp)));
11893
+ }
11679
11894
  // hostListBatchAvailableTimeSlots returns valid chain start times for a
11680
11895
  // multi-service host booking. Each slot is the start of the first meeting
11681
11896
  // in the chain.