@stream-io/node-sdk 0.4.10 → 0.4.11

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.
package/dist/index.es.mjs CHANGED
@@ -162,7 +162,7 @@ class BaseApi {
162
162
  Authorization: this.apiConfig.token,
163
163
  'stream-auth-type': 'jwt',
164
164
  'Content-Type': 'application/json',
165
- 'X-Stream-Client': 'stream-node-' + "0.4.10",
165
+ 'X-Stream-Client': 'stream-node-' + "0.4.11",
166
166
  'Accept-Encoding': 'gzip',
167
167
  'x-client-request-id': clientRequestId,
168
168
  };
@@ -503,6 +503,12 @@ decoders.ChannelMute = (input) => {
503
503
  };
504
504
  return decode(typeMappings, input);
505
505
  };
506
+ decoders.ChannelPushPreferences = (input) => {
507
+ const typeMappings = {
508
+ disabled_until: { type: 'DatetimeType', isSingle: true },
509
+ };
510
+ return decode(typeMappings, input);
511
+ };
506
512
  decoders.ChannelResponse = (input) => {
507
513
  const typeMappings = {
508
514
  created_at: { type: 'DatetimeType', isSingle: true },
@@ -531,6 +537,7 @@ decoders.ChannelStateResponse = (input) => {
531
537
  watchers: { type: 'UserResponse', isSingle: false },
532
538
  channel: { type: 'ChannelResponse', isSingle: true },
533
539
  membership: { type: 'ChannelMember', isSingle: true },
540
+ push_preferences: { type: 'ChannelPushPreferences', isSingle: true },
534
541
  };
535
542
  return decode(typeMappings, input);
536
543
  };
@@ -546,6 +553,7 @@ decoders.ChannelStateResponseFields = (input) => {
546
553
  watchers: { type: 'UserResponse', isSingle: false },
547
554
  channel: { type: 'ChannelResponse', isSingle: true },
548
555
  membership: { type: 'ChannelMember', isSingle: true },
556
+ push_preferences: { type: 'ChannelPushPreferences', isSingle: true },
549
557
  };
550
558
  return decode(typeMappings, input);
551
559
  };
@@ -680,7 +688,6 @@ decoders.EntityCreator = (input) => {
680
688
  last_engaged_at: { type: 'DatetimeType', isSingle: true },
681
689
  revoke_tokens_issued_before: { type: 'DatetimeType', isSingle: true },
682
690
  updated_at: { type: 'DatetimeType', isSingle: true },
683
- push_notifications: { type: 'PushNotificationSettings', isSingle: true },
684
691
  };
685
692
  return decode(typeMappings, input);
686
693
  };
@@ -688,12 +695,12 @@ decoders.EntityCreatorResponse = (input) => {
688
695
  const typeMappings = {
689
696
  created_at: { type: 'DatetimeType', isSingle: true },
690
697
  updated_at: { type: 'DatetimeType', isSingle: true },
691
- devices: { type: 'DeviceResponse', isSingle: false },
692
698
  ban_expires: { type: 'DatetimeType', isSingle: true },
693
699
  deactivated_at: { type: 'DatetimeType', isSingle: true },
694
700
  deleted_at: { type: 'DatetimeType', isSingle: true },
695
701
  last_active: { type: 'DatetimeType', isSingle: true },
696
702
  revoke_tokens_issued_before: { type: 'DatetimeType', isSingle: true },
703
+ devices: { type: 'DeviceResponse', isSingle: false },
697
704
  push_notifications: {
698
705
  type: 'PushNotificationSettingsResponse',
699
706
  isSingle: true,
@@ -754,10 +761,6 @@ decoders.FullUserResponse = (input) => {
754
761
  deleted_at: { type: 'DatetimeType', isSingle: true },
755
762
  last_active: { type: 'DatetimeType', isSingle: true },
756
763
  revoke_tokens_issued_before: { type: 'DatetimeType', isSingle: true },
757
- push_notifications: {
758
- type: 'PushNotificationSettingsResponse',
759
- isSingle: true,
760
- },
761
764
  };
762
765
  return decode(typeMappings, input);
763
766
  };
@@ -1051,8 +1054,9 @@ decoders.MessageModerationResult = (input) => {
1051
1054
  decoders.MessageReadEvent = (input) => {
1052
1055
  const typeMappings = {
1053
1056
  created_at: { type: 'DatetimeType', isSingle: true },
1057
+ channel_last_message_at: { type: 'DatetimeType', isSingle: true },
1054
1058
  thread: { type: 'ThreadResponse', isSingle: true },
1055
- user: { type: 'UserResponse', isSingle: true },
1059
+ user: { type: 'UserResponseCommonFields', isSingle: true },
1056
1060
  };
1057
1061
  return decode(typeMappings, input);
1058
1062
  };
@@ -1119,12 +1123,6 @@ decoders.MuteResponse = (input) => {
1119
1123
  };
1120
1124
  return decode(typeMappings, input);
1121
1125
  };
1122
- decoders.NullTime = (input) => {
1123
- const typeMappings = {
1124
- value: { type: 'DatetimeType', isSingle: true },
1125
- };
1126
- return decode(typeMappings, input);
1127
- };
1128
1126
  decoders.OwnUser = (input) => {
1129
1127
  const typeMappings = {
1130
1128
  created_at: { type: 'DatetimeType', isSingle: true },
@@ -1136,7 +1134,7 @@ decoders.OwnUser = (input) => {
1136
1134
  deleted_at: { type: 'DatetimeType', isSingle: true },
1137
1135
  last_active: { type: 'DatetimeType', isSingle: true },
1138
1136
  last_engaged_at: { type: 'DatetimeType', isSingle: true },
1139
- push_notifications: { type: 'PushNotificationSettings', isSingle: true },
1137
+ push_preferences: { type: 'PushPreferences', isSingle: true },
1140
1138
  };
1141
1139
  return decode(typeMappings, input);
1142
1140
  };
@@ -1151,10 +1149,7 @@ decoders.OwnUserResponse = (input) => {
1151
1149
  deleted_at: { type: 'DatetimeType', isSingle: true },
1152
1150
  last_active: { type: 'DatetimeType', isSingle: true },
1153
1151
  revoke_tokens_issued_before: { type: 'DatetimeType', isSingle: true },
1154
- push_notifications: {
1155
- type: 'PushNotificationSettingsResponse',
1156
- isSingle: true,
1157
- },
1152
+ push_preferences: { type: 'PushPreferences', isSingle: true },
1158
1153
  };
1159
1154
  return decode(typeMappings, input);
1160
1155
  };
@@ -1226,13 +1221,13 @@ decoders.PushNotificationFields = (input) => {
1226
1221
  };
1227
1222
  return decode(typeMappings, input);
1228
1223
  };
1229
- decoders.PushNotificationSettings = (input) => {
1224
+ decoders.PushNotificationSettingsResponse = (input) => {
1230
1225
  const typeMappings = {
1231
1226
  disabled_until: { type: 'DatetimeType', isSingle: true },
1232
1227
  };
1233
1228
  return decode(typeMappings, input);
1234
1229
  };
1235
- decoders.PushNotificationSettingsResponse = (input) => {
1230
+ decoders.PushPreferences = (input) => {
1236
1231
  const typeMappings = {
1237
1232
  disabled_until: { type: 'DatetimeType', isSingle: true },
1238
1233
  };
@@ -1418,8 +1413,6 @@ decoders.ReviewQueueItem = (input) => {
1418
1413
  actions: { type: 'ActionLog', isSingle: false },
1419
1414
  bans: { type: 'Ban', isSingle: false },
1420
1415
  flags: { type: 'Flag2', isSingle: false },
1421
- completed_at: { type: 'NullTime', isSingle: true },
1422
- reviewed_at: { type: 'NullTime', isSingle: true },
1423
1416
  assigned_to: { type: 'User', isSingle: true },
1424
1417
  entity_creator: { type: 'EntityCreator', isSingle: true },
1425
1418
  feeds_v2_reaction: { type: 'Reaction', isSingle: true },
@@ -1691,6 +1684,12 @@ decoders.UpsertModerationTemplateResponse = (input) => {
1691
1684
  };
1692
1685
  return decode(typeMappings, input);
1693
1686
  };
1687
+ decoders.UpsertPushPreferencesResponse = (input) => {
1688
+ const typeMappings = {
1689
+ user_preferences: { type: 'PushPreferences', isSingle: false },
1690
+ };
1691
+ return decode(typeMappings, input);
1692
+ };
1694
1693
  decoders.UpsertPushProviderResponse = (input) => {
1695
1694
  const typeMappings = {
1696
1695
  push_provider: { type: 'PushProviderResponse', isSingle: true },
@@ -1707,7 +1706,6 @@ decoders.User = (input) => {
1707
1706
  last_engaged_at: { type: 'DatetimeType', isSingle: true },
1708
1707
  revoke_tokens_issued_before: { type: 'DatetimeType', isSingle: true },
1709
1708
  updated_at: { type: 'DatetimeType', isSingle: true },
1710
- push_notifications: { type: 'PushNotificationSettings', isSingle: true },
1711
1709
  };
1712
1710
  return decode(typeMappings, input);
1713
1711
  };
@@ -1741,12 +1739,12 @@ decoders.UserResponse = (input) => {
1741
1739
  const typeMappings = {
1742
1740
  created_at: { type: 'DatetimeType', isSingle: true },
1743
1741
  updated_at: { type: 'DatetimeType', isSingle: true },
1744
- devices: { type: 'DeviceResponse', isSingle: false },
1745
1742
  ban_expires: { type: 'DatetimeType', isSingle: true },
1746
1743
  deactivated_at: { type: 'DatetimeType', isSingle: true },
1747
1744
  deleted_at: { type: 'DatetimeType', isSingle: true },
1748
1745
  last_active: { type: 'DatetimeType', isSingle: true },
1749
1746
  revoke_tokens_issued_before: { type: 'DatetimeType', isSingle: true },
1747
+ devices: { type: 'DeviceResponse', isSingle: false },
1750
1748
  push_notifications: {
1751
1749
  type: 'PushNotificationSettingsResponse',
1752
1750
  isSingle: true,
@@ -1754,9 +1752,21 @@ decoders.UserResponse = (input) => {
1754
1752
  };
1755
1753
  return decode(typeMappings, input);
1756
1754
  };
1755
+ decoders.UserResponseCommonFields = (input) => {
1756
+ const typeMappings = {
1757
+ created_at: { type: 'DatetimeType', isSingle: true },
1758
+ updated_at: { type: 'DatetimeType', isSingle: true },
1759
+ deactivated_at: { type: 'DatetimeType', isSingle: true },
1760
+ deleted_at: { type: 'DatetimeType', isSingle: true },
1761
+ last_active: { type: 'DatetimeType', isSingle: true },
1762
+ revoke_tokens_issued_before: { type: 'DatetimeType', isSingle: true },
1763
+ };
1764
+ return decode(typeMappings, input);
1765
+ };
1757
1766
  decoders.WSEvent = (input) => {
1758
1767
  const typeMappings = {
1759
1768
  created_at: { type: 'DatetimeType', isSingle: true },
1769
+ channel_last_message_at: { type: 'DatetimeType', isSingle: true },
1760
1770
  channel: { type: 'ChannelResponse', isSingle: true },
1761
1771
  created_by: { type: 'UserResponse', isSingle: true },
1762
1772
  me: { type: 'OwnUserResponse', isSingle: true },
@@ -4002,26 +4012,35 @@ class ChatApi extends BaseApi {
4002
4012
  (_43 = decoders.PollVotesResponse) === null || _43 === void 0 ? void 0 : _43.call(decoders, response.body);
4003
4013
  return Object.assign(Object.assign({}, response.body), { metadata: response.metadata });
4004
4014
  });
4005
- this.queryBannedUsers = (request) => __awaiter(this, void 0, void 0, function* () {
4015
+ this.updatePushNotificationPreferences = (request) => __awaiter(this, void 0, void 0, function* () {
4006
4016
  var _44;
4017
+ const body = {
4018
+ preferences: request === null || request === void 0 ? void 0 : request.preferences,
4019
+ };
4020
+ const response = yield this.sendRequest('POST', '/api/v2/chat/push_preferences', undefined, undefined, body);
4021
+ (_44 = decoders.UpsertPushPreferencesResponse) === null || _44 === void 0 ? void 0 : _44.call(decoders, response.body);
4022
+ return Object.assign(Object.assign({}, response.body), { metadata: response.metadata });
4023
+ });
4024
+ this.queryBannedUsers = (request) => __awaiter(this, void 0, void 0, function* () {
4025
+ var _45;
4007
4026
  const queryParams = {
4008
4027
  payload: request === null || request === void 0 ? void 0 : request.payload,
4009
4028
  };
4010
4029
  const response = yield this.sendRequest('GET', '/api/v2/chat/query_banned_users', undefined, queryParams);
4011
- (_44 = decoders.QueryBannedUsersResponse) === null || _44 === void 0 ? void 0 : _44.call(decoders, response.body);
4030
+ (_45 = decoders.QueryBannedUsersResponse) === null || _45 === void 0 ? void 0 : _45.call(decoders, response.body);
4012
4031
  return Object.assign(Object.assign({}, response.body), { metadata: response.metadata });
4013
4032
  });
4014
4033
  this.search = (request) => __awaiter(this, void 0, void 0, function* () {
4015
- var _45;
4034
+ var _46;
4016
4035
  const queryParams = {
4017
4036
  payload: request === null || request === void 0 ? void 0 : request.payload,
4018
4037
  };
4019
4038
  const response = yield this.sendRequest('GET', '/api/v2/chat/search', undefined, queryParams);
4020
- (_45 = decoders.SearchResponse) === null || _45 === void 0 ? void 0 : _45.call(decoders, response.body);
4039
+ (_46 = decoders.SearchResponse) === null || _46 === void 0 ? void 0 : _46.call(decoders, response.body);
4021
4040
  return Object.assign(Object.assign({}, response.body), { metadata: response.metadata });
4022
4041
  });
4023
4042
  this.querySegments = (request) => __awaiter(this, void 0, void 0, function* () {
4024
- var _46;
4043
+ var _47;
4025
4044
  const body = {
4026
4045
  filter: request === null || request === void 0 ? void 0 : request.filter,
4027
4046
  limit: request === null || request === void 0 ? void 0 : request.limit,
@@ -4030,29 +4049,29 @@ class ChatApi extends BaseApi {
4030
4049
  sort: request === null || request === void 0 ? void 0 : request.sort,
4031
4050
  };
4032
4051
  const response = yield this.sendRequest('POST', '/api/v2/chat/segments/query', undefined, undefined, body);
4033
- (_46 = decoders.QuerySegmentsResponse) === null || _46 === void 0 ? void 0 : _46.call(decoders, response.body);
4052
+ (_47 = decoders.QuerySegmentsResponse) === null || _47 === void 0 ? void 0 : _47.call(decoders, response.body);
4034
4053
  return Object.assign(Object.assign({}, response.body), { metadata: response.metadata });
4035
4054
  });
4036
4055
  this.deleteSegment = (request) => __awaiter(this, void 0, void 0, function* () {
4037
- var _47;
4056
+ var _48;
4038
4057
  const pathParams = {
4039
4058
  id: request === null || request === void 0 ? void 0 : request.id,
4040
4059
  };
4041
4060
  const response = yield this.sendRequest('DELETE', '/api/v2/chat/segments/{id}', pathParams, undefined);
4042
- (_47 = decoders.Response) === null || _47 === void 0 ? void 0 : _47.call(decoders, response.body);
4061
+ (_48 = decoders.Response) === null || _48 === void 0 ? void 0 : _48.call(decoders, response.body);
4043
4062
  return Object.assign(Object.assign({}, response.body), { metadata: response.metadata });
4044
4063
  });
4045
4064
  this.getSegment = (request) => __awaiter(this, void 0, void 0, function* () {
4046
- var _48;
4065
+ var _49;
4047
4066
  const pathParams = {
4048
4067
  id: request === null || request === void 0 ? void 0 : request.id,
4049
4068
  };
4050
4069
  const response = yield this.sendRequest('GET', '/api/v2/chat/segments/{id}', pathParams, undefined);
4051
- (_48 = decoders.GetSegmentResponse) === null || _48 === void 0 ? void 0 : _48.call(decoders, response.body);
4070
+ (_49 = decoders.GetSegmentResponse) === null || _49 === void 0 ? void 0 : _49.call(decoders, response.body);
4052
4071
  return Object.assign(Object.assign({}, response.body), { metadata: response.metadata });
4053
4072
  });
4054
4073
  this.deleteSegmentTargets = (request) => __awaiter(this, void 0, void 0, function* () {
4055
- var _49;
4074
+ var _50;
4056
4075
  const pathParams = {
4057
4076
  id: request === null || request === void 0 ? void 0 : request.id,
4058
4077
  };
@@ -4060,21 +4079,21 @@ class ChatApi extends BaseApi {
4060
4079
  target_ids: request === null || request === void 0 ? void 0 : request.target_ids,
4061
4080
  };
4062
4081
  const response = yield this.sendRequest('POST', '/api/v2/chat/segments/{id}/deletetargets', pathParams, undefined, body);
4063
- (_49 = decoders.Response) === null || _49 === void 0 ? void 0 : _49.call(decoders, response.body);
4082
+ (_50 = decoders.Response) === null || _50 === void 0 ? void 0 : _50.call(decoders, response.body);
4064
4083
  return Object.assign(Object.assign({}, response.body), { metadata: response.metadata });
4065
4084
  });
4066
4085
  this.segmentTargetExists = (request) => __awaiter(this, void 0, void 0, function* () {
4067
- var _50;
4086
+ var _51;
4068
4087
  const pathParams = {
4069
4088
  id: request === null || request === void 0 ? void 0 : request.id,
4070
4089
  target_id: request === null || request === void 0 ? void 0 : request.target_id,
4071
4090
  };
4072
4091
  const response = yield this.sendRequest('GET', '/api/v2/chat/segments/{id}/target/{target_id}', pathParams, undefined);
4073
- (_50 = decoders.Response) === null || _50 === void 0 ? void 0 : _50.call(decoders, response.body);
4092
+ (_51 = decoders.Response) === null || _51 === void 0 ? void 0 : _51.call(decoders, response.body);
4074
4093
  return Object.assign(Object.assign({}, response.body), { metadata: response.metadata });
4075
4094
  });
4076
4095
  this.querySegmentTargets = (request) => __awaiter(this, void 0, void 0, function* () {
4077
- var _51;
4096
+ var _52;
4078
4097
  const pathParams = {
4079
4098
  id: request === null || request === void 0 ? void 0 : request.id,
4080
4099
  };
@@ -4086,11 +4105,11 @@ class ChatApi extends BaseApi {
4086
4105
  filter: request === null || request === void 0 ? void 0 : request.filter,
4087
4106
  };
4088
4107
  const response = yield this.sendRequest('POST', '/api/v2/chat/segments/{id}/targets/query', pathParams, undefined, body);
4089
- (_51 = decoders.QuerySegmentTargetsResponse) === null || _51 === void 0 ? void 0 : _51.call(decoders, response.body);
4108
+ (_52 = decoders.QuerySegmentTargetsResponse) === null || _52 === void 0 ? void 0 : _52.call(decoders, response.body);
4090
4109
  return Object.assign(Object.assign({}, response.body), { metadata: response.metadata });
4091
4110
  });
4092
4111
  this.queryThreads = (request) => __awaiter(this, void 0, void 0, function* () {
4093
- var _52;
4112
+ var _53;
4094
4113
  const body = {
4095
4114
  limit: request === null || request === void 0 ? void 0 : request.limit,
4096
4115
  member_limit: request === null || request === void 0 ? void 0 : request.member_limit,
@@ -4102,11 +4121,11 @@ class ChatApi extends BaseApi {
4102
4121
  user: request === null || request === void 0 ? void 0 : request.user,
4103
4122
  };
4104
4123
  const response = yield this.sendRequest('POST', '/api/v2/chat/threads', undefined, undefined, body);
4105
- (_52 = decoders.QueryThreadsResponse) === null || _52 === void 0 ? void 0 : _52.call(decoders, response.body);
4124
+ (_53 = decoders.QueryThreadsResponse) === null || _53 === void 0 ? void 0 : _53.call(decoders, response.body);
4106
4125
  return Object.assign(Object.assign({}, response.body), { metadata: response.metadata });
4107
4126
  });
4108
4127
  this.getThread = (request) => __awaiter(this, void 0, void 0, function* () {
4109
- var _53;
4128
+ var _54;
4110
4129
  const queryParams = {
4111
4130
  reply_limit: request === null || request === void 0 ? void 0 : request.reply_limit,
4112
4131
  participant_limit: request === null || request === void 0 ? void 0 : request.participant_limit,
@@ -4116,11 +4135,11 @@ class ChatApi extends BaseApi {
4116
4135
  message_id: request === null || request === void 0 ? void 0 : request.message_id,
4117
4136
  };
4118
4137
  const response = yield this.sendRequest('GET', '/api/v2/chat/threads/{message_id}', pathParams, queryParams);
4119
- (_53 = decoders.GetThreadResponse) === null || _53 === void 0 ? void 0 : _53.call(decoders, response.body);
4138
+ (_54 = decoders.GetThreadResponse) === null || _54 === void 0 ? void 0 : _54.call(decoders, response.body);
4120
4139
  return Object.assign(Object.assign({}, response.body), { metadata: response.metadata });
4121
4140
  });
4122
4141
  this.updateThreadPartial = (request) => __awaiter(this, void 0, void 0, function* () {
4123
- var _54;
4142
+ var _55;
4124
4143
  const pathParams = {
4125
4144
  message_id: request === null || request === void 0 ? void 0 : request.message_id,
4126
4145
  };
@@ -4131,26 +4150,26 @@ class ChatApi extends BaseApi {
4131
4150
  user: request === null || request === void 0 ? void 0 : request.user,
4132
4151
  };
4133
4152
  const response = yield this.sendRequest('PATCH', '/api/v2/chat/threads/{message_id}', pathParams, undefined, body);
4134
- (_54 = decoders.UpdateThreadPartialResponse) === null || _54 === void 0 ? void 0 : _54.call(decoders, response.body);
4153
+ (_55 = decoders.UpdateThreadPartialResponse) === null || _55 === void 0 ? void 0 : _55.call(decoders, response.body);
4135
4154
  return Object.assign(Object.assign({}, response.body), { metadata: response.metadata });
4136
4155
  });
4137
4156
  this.unreadCounts = () => __awaiter(this, void 0, void 0, function* () {
4138
- var _55;
4157
+ var _56;
4139
4158
  const response = yield this.sendRequest('GET', '/api/v2/chat/unread', undefined, undefined);
4140
- (_55 = decoders.WrappedUnreadCountsResponse) === null || _55 === void 0 ? void 0 : _55.call(decoders, response.body);
4159
+ (_56 = decoders.WrappedUnreadCountsResponse) === null || _56 === void 0 ? void 0 : _56.call(decoders, response.body);
4141
4160
  return Object.assign(Object.assign({}, response.body), { metadata: response.metadata });
4142
4161
  });
4143
4162
  this.unreadCountsBatch = (request) => __awaiter(this, void 0, void 0, function* () {
4144
- var _56;
4163
+ var _57;
4145
4164
  const body = {
4146
4165
  user_ids: request === null || request === void 0 ? void 0 : request.user_ids,
4147
4166
  };
4148
4167
  const response = yield this.sendRequest('POST', '/api/v2/chat/unread_batch', undefined, undefined, body);
4149
- (_56 = decoders.UnreadCountsBatchResponse) === null || _56 === void 0 ? void 0 : _56.call(decoders, response.body);
4168
+ (_57 = decoders.UnreadCountsBatchResponse) === null || _57 === void 0 ? void 0 : _57.call(decoders, response.body);
4150
4169
  return Object.assign(Object.assign({}, response.body), { metadata: response.metadata });
4151
4170
  });
4152
4171
  this.sendUserCustomEvent = (request) => __awaiter(this, void 0, void 0, function* () {
4153
- var _57;
4172
+ var _58;
4154
4173
  const pathParams = {
4155
4174
  user_id: request === null || request === void 0 ? void 0 : request.user_id,
4156
4175
  };
@@ -4158,7 +4177,7 @@ class ChatApi extends BaseApi {
4158
4177
  event: request === null || request === void 0 ? void 0 : request.event,
4159
4178
  };
4160
4179
  const response = yield this.sendRequest('POST', '/api/v2/chat/users/{user_id}/event', pathParams, undefined, body);
4161
- (_57 = decoders.Response) === null || _57 === void 0 ? void 0 : _57.call(decoders, response.body);
4180
+ (_58 = decoders.Response) === null || _58 === void 0 ? void 0 : _58.call(decoders, response.body);
4162
4181
  return Object.assign(Object.assign({}, response.body), { metadata: response.metadata });
4163
4182
  });
4164
4183
  }