getstream 4.2.0__tar.gz → 5.0.0__tar.gz

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 (119) hide show
  1. {getstream-4.2.0 → getstream-5.0.0}/PKG-INFO +2 -2
  2. {getstream-4.2.0 → getstream-5.0.0}/getstream/chat/async_channel.py +23 -2
  3. {getstream-4.2.0 → getstream-5.0.0}/getstream/chat/async_rest_client.py +36 -2
  4. {getstream-4.2.0 → getstream-5.0.0}/getstream/chat/channel.py +23 -2
  5. {getstream-4.2.0 → getstream-5.0.0}/getstream/chat/rest_client.py +36 -2
  6. {getstream-4.2.0 → getstream-5.0.0}/getstream/common/async_rest_client.py +44 -9
  7. {getstream-4.2.0 → getstream-5.0.0}/getstream/common/rest_client.py +44 -9
  8. {getstream-4.2.0 → getstream-5.0.0}/getstream/exceptions.py +5 -5
  9. {getstream-4.2.0 → getstream-5.0.0}/getstream/feeds/rest_client.py +10 -6
  10. {getstream-4.2.0 → getstream-5.0.0}/getstream/models/__init__.py +1575 -35
  11. {getstream-4.2.0 → getstream-5.0.0}/getstream/moderation/async_rest_client.py +96 -5
  12. {getstream-4.2.0 → getstream-5.0.0}/getstream/moderation/rest_client.py +88 -5
  13. {getstream-4.2.0 → getstream-5.0.0}/getstream/tests/test_webhook.py +6 -0
  14. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/async_rest_client.py +11 -0
  15. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rest_client.py +11 -0
  16. {getstream-4.2.0 → getstream-5.0.0}/getstream/webhook.py +3 -0
  17. {getstream-4.2.0 → getstream-5.0.0}/pyproject.toml +1 -1
  18. {getstream-4.2.0 → getstream-5.0.0}/uv.lock +5 -1
  19. {getstream-4.2.0 → getstream-5.0.0}/.cursor/worktrees.json +0 -0
  20. {getstream-4.2.0 → getstream-5.0.0}/.env.example +0 -0
  21. {getstream-4.2.0 → getstream-5.0.0}/.github/actions/python-uv-setup/action.yml +0 -0
  22. {getstream-4.2.0 → getstream-5.0.0}/.github/workflows/ci.yml +0 -0
  23. {getstream-4.2.0 → getstream-5.0.0}/.github/workflows/release.yml +0 -0
  24. {getstream-4.2.0 → getstream-5.0.0}/.github/workflows/run_tests.yml +0 -0
  25. {getstream-4.2.0 → getstream-5.0.0}/.github/workflows/stream-py.code-workspace +0 -0
  26. {getstream-4.2.0 → getstream-5.0.0}/.gitignore +0 -0
  27. {getstream-4.2.0 → getstream-5.0.0}/.gitmodules +0 -0
  28. {getstream-4.2.0 → getstream-5.0.0}/.pre-commit-config.yaml +0 -0
  29. {getstream-4.2.0 → getstream-5.0.0}/AGENTS.md +0 -0
  30. {getstream-4.2.0 → getstream-5.0.0}/CHANGELOG.md +0 -0
  31. {getstream-4.2.0 → getstream-5.0.0}/DEVELOPMENT.md +0 -0
  32. {getstream-4.2.0 → getstream-5.0.0}/LICENSE.md +0 -0
  33. {getstream-4.2.0 → getstream-5.0.0}/MIGRATION_v2_to_v3.md +0 -0
  34. {getstream-4.2.0 → getstream-5.0.0}/Makefile +0 -0
  35. {getstream-4.2.0 → getstream-5.0.0}/README.md +0 -0
  36. {getstream-4.2.0 → getstream-5.0.0}/dev.py +0 -0
  37. {getstream-4.2.0 → getstream-5.0.0}/docs/migration-from-stream-chat-python/01-setup-and-auth.md +0 -0
  38. {getstream-4.2.0 → getstream-5.0.0}/docs/migration-from-stream-chat-python/02-users.md +0 -0
  39. {getstream-4.2.0 → getstream-5.0.0}/docs/migration-from-stream-chat-python/03-channels.md +0 -0
  40. {getstream-4.2.0 → getstream-5.0.0}/docs/migration-from-stream-chat-python/04-messages-and-reactions.md +0 -0
  41. {getstream-4.2.0 → getstream-5.0.0}/docs/migration-from-stream-chat-python/05-moderation.md +0 -0
  42. {getstream-4.2.0 → getstream-5.0.0}/docs/migration-from-stream-chat-python/06-devices.md +0 -0
  43. {getstream-4.2.0 → getstream-5.0.0}/docs/migration-from-stream-chat-python/README.md +0 -0
  44. {getstream-4.2.0 → getstream-5.0.0}/generate.sh +0 -0
  45. {getstream-4.2.0 → getstream-5.0.0}/generate_webrtc.sh +0 -0
  46. {getstream-4.2.0 → getstream-5.0.0}/getstream/__init__.py +0 -0
  47. {getstream-4.2.0 → getstream-5.0.0}/getstream/base.py +0 -0
  48. {getstream-4.2.0 → getstream-5.0.0}/getstream/chat/__init__.py +0 -0
  49. {getstream-4.2.0 → getstream-5.0.0}/getstream/chat/async_client.py +0 -0
  50. {getstream-4.2.0 → getstream-5.0.0}/getstream/chat/client.py +0 -0
  51. {getstream-4.2.0 → getstream-5.0.0}/getstream/common/__init__.py +0 -0
  52. {getstream-4.2.0 → getstream-5.0.0}/getstream/common/async_client.py +0 -0
  53. {getstream-4.2.0 → getstream-5.0.0}/getstream/common/client.py +0 -0
  54. {getstream-4.2.0 → getstream-5.0.0}/getstream/common/telemetry.py +0 -0
  55. {getstream-4.2.0 → getstream-5.0.0}/getstream/config.py +0 -0
  56. {getstream-4.2.0 → getstream-5.0.0}/getstream/feeds/__init__.py +0 -0
  57. {getstream-4.2.0 → getstream-5.0.0}/getstream/feeds/client.py +0 -0
  58. {getstream-4.2.0 → getstream-5.0.0}/getstream/feeds/feeds.py +0 -0
  59. {getstream-4.2.0 → getstream-5.0.0}/getstream/generic.py +0 -0
  60. {getstream-4.2.0 → getstream-5.0.0}/getstream/logging_utils.py +0 -0
  61. {getstream-4.2.0 → getstream-5.0.0}/getstream/meta.py +0 -0
  62. {getstream-4.2.0 → getstream-5.0.0}/getstream/moderation/__init__.py +0 -0
  63. {getstream-4.2.0 → getstream-5.0.0}/getstream/moderation/async_client.py +0 -0
  64. {getstream-4.2.0 → getstream-5.0.0}/getstream/moderation/client.py +0 -0
  65. {getstream-4.2.0 → getstream-5.0.0}/getstream/rate_limit.py +0 -0
  66. {getstream-4.2.0 → getstream-5.0.0}/getstream/stream.py +0 -0
  67. {getstream-4.2.0 → getstream-5.0.0}/getstream/stream_response.py +0 -0
  68. {getstream-4.2.0 → getstream-5.0.0}/getstream/tasks.py +0 -0
  69. {getstream-4.2.0 → getstream-5.0.0}/getstream/utils/__init__.py +0 -0
  70. {getstream-4.2.0 → getstream-5.0.0}/getstream/utils/event_emitter.py +0 -0
  71. {getstream-4.2.0 → getstream-5.0.0}/getstream/version.py +0 -0
  72. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/__init__.py +0 -0
  73. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/async_call.py +0 -0
  74. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/async_client.py +0 -0
  75. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/call.py +0 -0
  76. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/client.py +0 -0
  77. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/openai.py +0 -0
  78. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/README.md +0 -0
  79. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/__init__.py +0 -0
  80. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/audio_track.py +0 -0
  81. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/connection_manager.py +0 -0
  82. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/connection_utils.py +0 -0
  83. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/coordinator/__init__.py +0 -0
  84. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/coordinator/backoff.py +0 -0
  85. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/coordinator/errors.py +0 -0
  86. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/coordinator/ws.py +0 -0
  87. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/encoders_patches.py +0 -0
  88. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/g711.py +0 -0
  89. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/location_discovery.py +0 -0
  90. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/models.py +0 -0
  91. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/network_monitor.py +0 -0
  92. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/participants.py +0 -0
  93. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/pb/__init__.py +0 -0
  94. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/pb/stream/__init__.py +0 -0
  95. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/pb/stream/video/__init__.py +0 -0
  96. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/pb/stream/video/sfu/__init__.py +0 -0
  97. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/pb/stream/video/sfu/event/__init__.py +0 -0
  98. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/pb/stream/video/sfu/event/events_pb2.py +0 -0
  99. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/pb/stream/video/sfu/event/events_pb2.pyi +0 -0
  100. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/pb/stream/video/sfu/models/__init__.py +0 -0
  101. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/pb/stream/video/sfu/models/models_pb2.py +0 -0
  102. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/pb/stream/video/sfu/models/models_pb2.pyi +0 -0
  103. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/pb/stream/video/sfu/signal_rpc/__init__.py +0 -0
  104. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/pb/stream/video/sfu/signal_rpc/signal_pb2.py +0 -0
  105. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/pb/stream/video/sfu/signal_rpc/signal_pb2.pyi +0 -0
  106. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/pb/stream/video/sfu/signal_rpc/signal_twirp.py +0 -0
  107. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/pc.py +0 -0
  108. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/peer_connection.py +0 -0
  109. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/reconnection.py +0 -0
  110. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/recording.py +0 -0
  111. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/signaling.py +0 -0
  112. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/stats_reporter.py +0 -0
  113. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/stats_tracer.py +0 -0
  114. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/tracer.py +0 -0
  115. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/track_util.py +0 -0
  116. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/tracks.py +0 -0
  117. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/twirp_client_wrapper.py +0 -0
  118. {getstream-4.2.0 → getstream-5.0.0}/getstream/video/rtc/utils.py +0 -0
  119. {getstream-4.2.0 → getstream-5.0.0}/pytest.ini +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: getstream
3
- Version: 4.2.0
3
+ Version: 5.0.0
4
4
  Summary: GetStream Python SDK - Build scalable activity feeds, chat, and video calling applications
5
5
  Author-email: sachaarbonel <sacha.arbonel@hotmail.fr>, tbarbugli <tbarbugli@gmail.com>
6
6
  License-File: LICENSE.md
@@ -38,6 +38,12 @@ class Channel:
38
38
  messages_limit: Optional[int] = None,
39
39
  members_limit: Optional[int] = None,
40
40
  watchers_limit: Optional[int] = None,
41
+ messages_id_lt: Optional[str] = None,
42
+ messages_id_lte: Optional[str] = None,
43
+ messages_id_gt: Optional[str] = None,
44
+ messages_id_gte: Optional[str] = None,
45
+ messages_id_around: Optional[str] = None,
46
+ user_id: Optional[str] = None,
41
47
  ) -> StreamResponse[ChannelStateResponse]:
42
48
  response = await self.client.get_channel(
43
49
  type=self.channel_type,
@@ -46,6 +52,12 @@ class Channel:
46
52
  messages_limit=messages_limit,
47
53
  members_limit=members_limit,
48
54
  watchers_limit=watchers_limit,
55
+ messages_id_lt=messages_id_lt,
56
+ messages_id_lte=messages_id_lte,
57
+ messages_id_gt=messages_id_gt,
58
+ messages_id_gte=messages_id_gte,
59
+ messages_id_around=messages_id_around,
60
+ user_id=user_id,
49
61
  )
50
62
  self._sync_from_response(response.data)
51
63
  return response
@@ -236,6 +248,8 @@ class Channel:
236
248
  self,
237
249
  message: MessageRequest,
238
250
  force_moderation: Optional[bool] = None,
251
+ include_channel_context: Optional[bool] = None,
252
+ include_mentioned_members: Optional[bool] = None,
239
253
  keep_channel_hidden: Optional[bool] = None,
240
254
  pending: Optional[bool] = None,
241
255
  skip_enrich_url: Optional[bool] = None,
@@ -247,6 +261,8 @@ class Channel:
247
261
  id=self.channel_id,
248
262
  message=message,
249
263
  force_moderation=force_moderation,
264
+ include_channel_context=include_channel_context,
265
+ include_mentioned_members=include_mentioned_members,
250
266
  keep_channel_hidden=keep_channel_hidden,
251
267
  pending=pending,
252
268
  skip_enrich_url=skip_enrich_url,
@@ -258,10 +274,13 @@ class Channel:
258
274
 
259
275
  @attach_channel_cid_async
260
276
  async def get_many_messages(
261
- self, ids: List[str]
277
+ self, ids: List[str], member_custom_include: Optional[List[str]] = None
262
278
  ) -> StreamResponse[GetManyMessagesResponse]:
263
279
  response = await self.client.get_many_messages(
264
- type=self.channel_type, id=self.channel_id, ids=ids
280
+ type=self.channel_type,
281
+ id=self.channel_id,
282
+ ids=ids,
283
+ member_custom_include=member_custom_include,
265
284
  )
266
285
  self._sync_from_response(response.data)
267
286
  return response
@@ -272,6 +291,7 @@ class Channel:
272
291
  hide_for_creator: Optional[bool] = None,
273
292
  state: Optional[bool] = None,
274
293
  thread_unread_counts: Optional[bool] = None,
294
+ member_custom_include: Optional[List[str]] = None,
275
295
  data: Optional[ChannelInput] = None,
276
296
  members: Optional[PaginationParams] = None,
277
297
  messages: Optional[MessagePaginationParams] = None,
@@ -283,6 +303,7 @@ class Channel:
283
303
  hide_for_creator=hide_for_creator,
284
304
  state=state,
285
305
  thread_unread_counts=thread_unread_counts,
306
+ member_custom_include=member_custom_include,
286
307
  data=data,
287
308
  members=members,
288
309
  messages=messages,
@@ -212,6 +212,7 @@ class ChatRestClient(AsyncBaseClient):
212
212
  predefined_filter: Optional[str] = None,
213
213
  state: Optional[bool] = None,
214
214
  user_id: Optional[str] = None,
215
+ member_custom_include: Optional[List[str]] = None,
215
216
  sort: Optional[List[SortParamRequest]] = None,
216
217
  filter_conditions: Optional[Dict[str, object]] = None,
217
218
  filter_values: Optional[Dict[str, object]] = None,
@@ -226,6 +227,7 @@ class ChatRestClient(AsyncBaseClient):
226
227
  predefined_filter=predefined_filter,
227
228
  state=state,
228
229
  user_id=user_id,
230
+ member_custom_include=member_custom_include,
229
231
  sort=sort,
230
232
  filter_conditions=filter_conditions,
231
233
  filter_values=filter_values,
@@ -313,6 +315,7 @@ class ChatRestClient(AsyncBaseClient):
313
315
  hide_for_creator: Optional[bool] = None,
314
316
  state: Optional[bool] = None,
315
317
  thread_unread_counts: Optional[bool] = None,
318
+ member_custom_include: Optional[List[str]] = None,
316
319
  data: Optional[ChannelInput] = None,
317
320
  members: Optional[PaginationParams] = None,
318
321
  messages: Optional[MessagePaginationParams] = None,
@@ -325,6 +328,7 @@ class ChatRestClient(AsyncBaseClient):
325
328
  hide_for_creator=hide_for_creator,
326
329
  state=state,
327
330
  thread_unread_counts=thread_unread_counts,
331
+ member_custom_include=member_custom_include,
328
332
  data=data,
329
333
  members=members,
330
334
  messages=messages,
@@ -362,6 +366,12 @@ class ChatRestClient(AsyncBaseClient):
362
366
  messages_limit: Optional[int] = None,
363
367
  members_limit: Optional[int] = None,
364
368
  watchers_limit: Optional[int] = None,
369
+ messages_id_lt: Optional[str] = None,
370
+ messages_id_lte: Optional[str] = None,
371
+ messages_id_gt: Optional[str] = None,
372
+ messages_id_gte: Optional[str] = None,
373
+ messages_id_around: Optional[str] = None,
374
+ user_id: Optional[str] = None,
365
375
  ) -> StreamResponse[ChannelStateResponse]:
366
376
  query_params = build_query_param(
367
377
  **{
@@ -369,6 +379,12 @@ class ChatRestClient(AsyncBaseClient):
369
379
  "messages_limit": messages_limit,
370
380
  "members_limit": members_limit,
371
381
  "watchers_limit": watchers_limit,
382
+ "messages_id_lt": messages_id_lt,
383
+ "messages_id_lte": messages_id_lte,
384
+ "messages_id_gt": messages_id_gt,
385
+ "messages_id_gte": messages_id_gte,
386
+ "messages_id_around": messages_id_around,
387
+ "user_id": user_id,
372
388
  }
373
389
  )
374
390
  path_params = {
@@ -645,6 +661,8 @@ class ChatRestClient(AsyncBaseClient):
645
661
  id: str,
646
662
  message: MessageRequest,
647
663
  force_moderation: Optional[bool] = None,
664
+ include_channel_context: Optional[bool] = None,
665
+ include_mentioned_members: Optional[bool] = None,
648
666
  keep_channel_hidden: Optional[bool] = None,
649
667
  pending: Optional[bool] = None,
650
668
  skip_enrich_url: Optional[bool] = None,
@@ -658,6 +676,8 @@ class ChatRestClient(AsyncBaseClient):
658
676
  json = SendMessageRequest(
659
677
  message=message,
660
678
  force_moderation=force_moderation,
679
+ include_channel_context=include_channel_context,
680
+ include_mentioned_members=include_mentioned_members,
661
681
  keep_channel_hidden=keep_channel_hidden,
662
682
  pending=pending,
663
683
  skip_enrich_url=skip_enrich_url,
@@ -673,9 +693,15 @@ class ChatRestClient(AsyncBaseClient):
673
693
 
674
694
  @telemetry.operation_name("getstream.api.chat.get_many_messages")
675
695
  async def get_many_messages(
676
- self, type: str, id: str, ids: List[str]
696
+ self,
697
+ type: str,
698
+ id: str,
699
+ ids: List[str],
700
+ member_custom_include: Optional[List[str]] = None,
677
701
  ) -> StreamResponse[GetManyMessagesResponse]:
678
- query_params = build_query_param(**{"ids": ids})
702
+ query_params = build_query_param(
703
+ **{"ids": ids, "member_custom_include": member_custom_include}
704
+ )
679
705
  path_params = {
680
706
  "type": type,
681
707
  "id": id,
@@ -695,6 +721,7 @@ class ChatRestClient(AsyncBaseClient):
695
721
  hide_for_creator: Optional[bool] = None,
696
722
  state: Optional[bool] = None,
697
723
  thread_unread_counts: Optional[bool] = None,
724
+ member_custom_include: Optional[List[str]] = None,
698
725
  data: Optional[ChannelInput] = None,
699
726
  members: Optional[PaginationParams] = None,
700
727
  messages: Optional[MessagePaginationParams] = None,
@@ -708,6 +735,7 @@ class ChatRestClient(AsyncBaseClient):
708
735
  hide_for_creator=hide_for_creator,
709
736
  state=state,
710
737
  thread_unread_counts=thread_unread_counts,
738
+ member_custom_include=member_custom_include,
711
739
  data=data,
712
740
  members=members,
713
741
  messages=messages,
@@ -1105,17 +1133,21 @@ class ChatRestClient(AsyncBaseClient):
1105
1133
  channels: List[ChannelExport],
1106
1134
  clear_deleted_message_text: Optional[bool] = None,
1107
1135
  export_users: Optional[bool] = None,
1136
+ format: Optional[str] = None,
1108
1137
  include_soft_deleted_channels: Optional[bool] = None,
1109
1138
  include_truncated_messages: Optional[bool] = None,
1110
1139
  version: Optional[str] = None,
1140
+ include_fields: Optional[List[str]] = None,
1111
1141
  ) -> StreamResponse[ExportChannelsResponse]:
1112
1142
  json = ExportChannelsRequest(
1113
1143
  channels=channels,
1114
1144
  clear_deleted_message_text=clear_deleted_message_text,
1115
1145
  export_users=export_users,
1146
+ format=format,
1116
1147
  include_soft_deleted_channels=include_soft_deleted_channels,
1117
1148
  include_truncated_messages=include_truncated_messages,
1118
1149
  version=version,
1150
+ include_fields=include_fields,
1119
1151
  ).to_dict()
1120
1152
  return await self.post(
1121
1153
  "/api/v2/chat/export_channels", ExportChannelsResponse, json=json
@@ -1519,6 +1551,7 @@ class ChatRestClient(AsyncBaseClient):
1519
1551
  id_lt: Optional[str] = None,
1520
1552
  id_around: Optional[str] = None,
1521
1553
  sort: Optional[List[SortParamRequest]] = None,
1554
+ member_custom_include: Optional[List[str]] = None,
1522
1555
  ) -> StreamResponse[GetRepliesResponse]:
1523
1556
  query_params = build_query_param(
1524
1557
  **{
@@ -1529,6 +1562,7 @@ class ChatRestClient(AsyncBaseClient):
1529
1562
  "id_lt": id_lt,
1530
1563
  "id_around": id_around,
1531
1564
  "sort": sort,
1565
+ "member_custom_include": member_custom_include,
1532
1566
  }
1533
1567
  )
1534
1568
  path_params = {
@@ -38,6 +38,12 @@ class Channel:
38
38
  messages_limit: Optional[int] = None,
39
39
  members_limit: Optional[int] = None,
40
40
  watchers_limit: Optional[int] = None,
41
+ messages_id_lt: Optional[str] = None,
42
+ messages_id_lte: Optional[str] = None,
43
+ messages_id_gt: Optional[str] = None,
44
+ messages_id_gte: Optional[str] = None,
45
+ messages_id_around: Optional[str] = None,
46
+ user_id: Optional[str] = None,
41
47
  ) -> StreamResponse[ChannelStateResponse]:
42
48
  response = self.client.get_channel(
43
49
  type=self.channel_type,
@@ -46,6 +52,12 @@ class Channel:
46
52
  messages_limit=messages_limit,
47
53
  members_limit=members_limit,
48
54
  watchers_limit=watchers_limit,
55
+ messages_id_lt=messages_id_lt,
56
+ messages_id_lte=messages_id_lte,
57
+ messages_id_gt=messages_id_gt,
58
+ messages_id_gte=messages_id_gte,
59
+ messages_id_around=messages_id_around,
60
+ user_id=user_id,
49
61
  )
50
62
  self._sync_from_response(response.data)
51
63
  return response
@@ -236,6 +248,8 @@ class Channel:
236
248
  self,
237
249
  message: MessageRequest,
238
250
  force_moderation: Optional[bool] = None,
251
+ include_channel_context: Optional[bool] = None,
252
+ include_mentioned_members: Optional[bool] = None,
239
253
  keep_channel_hidden: Optional[bool] = None,
240
254
  pending: Optional[bool] = None,
241
255
  skip_enrich_url: Optional[bool] = None,
@@ -247,6 +261,8 @@ class Channel:
247
261
  id=self.channel_id,
248
262
  message=message,
249
263
  force_moderation=force_moderation,
264
+ include_channel_context=include_channel_context,
265
+ include_mentioned_members=include_mentioned_members,
250
266
  keep_channel_hidden=keep_channel_hidden,
251
267
  pending=pending,
252
268
  skip_enrich_url=skip_enrich_url,
@@ -258,10 +274,13 @@ class Channel:
258
274
 
259
275
  @attach_channel_cid
260
276
  def get_many_messages(
261
- self, ids: List[str]
277
+ self, ids: List[str], member_custom_include: Optional[List[str]] = None
262
278
  ) -> StreamResponse[GetManyMessagesResponse]:
263
279
  response = self.client.get_many_messages(
264
- type=self.channel_type, id=self.channel_id, ids=ids
280
+ type=self.channel_type,
281
+ id=self.channel_id,
282
+ ids=ids,
283
+ member_custom_include=member_custom_include,
265
284
  )
266
285
  self._sync_from_response(response.data)
267
286
  return response
@@ -272,6 +291,7 @@ class Channel:
272
291
  hide_for_creator: Optional[bool] = None,
273
292
  state: Optional[bool] = None,
274
293
  thread_unread_counts: Optional[bool] = None,
294
+ member_custom_include: Optional[List[str]] = None,
275
295
  data: Optional[ChannelInput] = None,
276
296
  members: Optional[PaginationParams] = None,
277
297
  messages: Optional[MessagePaginationParams] = None,
@@ -283,6 +303,7 @@ class Channel:
283
303
  hide_for_creator=hide_for_creator,
284
304
  state=state,
285
305
  thread_unread_counts=thread_unread_counts,
306
+ member_custom_include=member_custom_include,
286
307
  data=data,
287
308
  members=members,
288
309
  messages=messages,
@@ -210,6 +210,7 @@ class ChatRestClient(BaseClient):
210
210
  predefined_filter: Optional[str] = None,
211
211
  state: Optional[bool] = None,
212
212
  user_id: Optional[str] = None,
213
+ member_custom_include: Optional[List[str]] = None,
213
214
  sort: Optional[List[SortParamRequest]] = None,
214
215
  filter_conditions: Optional[Dict[str, object]] = None,
215
216
  filter_values: Optional[Dict[str, object]] = None,
@@ -224,6 +225,7 @@ class ChatRestClient(BaseClient):
224
225
  predefined_filter=predefined_filter,
225
226
  state=state,
226
227
  user_id=user_id,
228
+ member_custom_include=member_custom_include,
227
229
  sort=sort,
228
230
  filter_conditions=filter_conditions,
229
231
  filter_values=filter_values,
@@ -307,6 +309,7 @@ class ChatRestClient(BaseClient):
307
309
  hide_for_creator: Optional[bool] = None,
308
310
  state: Optional[bool] = None,
309
311
  thread_unread_counts: Optional[bool] = None,
312
+ member_custom_include: Optional[List[str]] = None,
310
313
  data: Optional[ChannelInput] = None,
311
314
  members: Optional[PaginationParams] = None,
312
315
  messages: Optional[MessagePaginationParams] = None,
@@ -319,6 +322,7 @@ class ChatRestClient(BaseClient):
319
322
  hide_for_creator=hide_for_creator,
320
323
  state=state,
321
324
  thread_unread_counts=thread_unread_counts,
325
+ member_custom_include=member_custom_include,
322
326
  data=data,
323
327
  members=members,
324
328
  messages=messages,
@@ -356,6 +360,12 @@ class ChatRestClient(BaseClient):
356
360
  messages_limit: Optional[int] = None,
357
361
  members_limit: Optional[int] = None,
358
362
  watchers_limit: Optional[int] = None,
363
+ messages_id_lt: Optional[str] = None,
364
+ messages_id_lte: Optional[str] = None,
365
+ messages_id_gt: Optional[str] = None,
366
+ messages_id_gte: Optional[str] = None,
367
+ messages_id_around: Optional[str] = None,
368
+ user_id: Optional[str] = None,
359
369
  ) -> StreamResponse[ChannelStateResponse]:
360
370
  query_params = build_query_param(
361
371
  **{
@@ -363,6 +373,12 @@ class ChatRestClient(BaseClient):
363
373
  "messages_limit": messages_limit,
364
374
  "members_limit": members_limit,
365
375
  "watchers_limit": watchers_limit,
376
+ "messages_id_lt": messages_id_lt,
377
+ "messages_id_lte": messages_id_lte,
378
+ "messages_id_gt": messages_id_gt,
379
+ "messages_id_gte": messages_id_gte,
380
+ "messages_id_around": messages_id_around,
381
+ "user_id": user_id,
366
382
  }
367
383
  )
368
384
  path_params = {
@@ -639,6 +655,8 @@ class ChatRestClient(BaseClient):
639
655
  id: str,
640
656
  message: MessageRequest,
641
657
  force_moderation: Optional[bool] = None,
658
+ include_channel_context: Optional[bool] = None,
659
+ include_mentioned_members: Optional[bool] = None,
642
660
  keep_channel_hidden: Optional[bool] = None,
643
661
  pending: Optional[bool] = None,
644
662
  skip_enrich_url: Optional[bool] = None,
@@ -652,6 +670,8 @@ class ChatRestClient(BaseClient):
652
670
  json = SendMessageRequest(
653
671
  message=message,
654
672
  force_moderation=force_moderation,
673
+ include_channel_context=include_channel_context,
674
+ include_mentioned_members=include_mentioned_members,
655
675
  keep_channel_hidden=keep_channel_hidden,
656
676
  pending=pending,
657
677
  skip_enrich_url=skip_enrich_url,
@@ -667,9 +687,15 @@ class ChatRestClient(BaseClient):
667
687
 
668
688
  @telemetry.operation_name("getstream.api.chat.get_many_messages")
669
689
  def get_many_messages(
670
- self, type: str, id: str, ids: List[str]
690
+ self,
691
+ type: str,
692
+ id: str,
693
+ ids: List[str],
694
+ member_custom_include: Optional[List[str]] = None,
671
695
  ) -> StreamResponse[GetManyMessagesResponse]:
672
- query_params = build_query_param(**{"ids": ids})
696
+ query_params = build_query_param(
697
+ **{"ids": ids, "member_custom_include": member_custom_include}
698
+ )
673
699
  path_params = {
674
700
  "type": type,
675
701
  "id": id,
@@ -689,6 +715,7 @@ class ChatRestClient(BaseClient):
689
715
  hide_for_creator: Optional[bool] = None,
690
716
  state: Optional[bool] = None,
691
717
  thread_unread_counts: Optional[bool] = None,
718
+ member_custom_include: Optional[List[str]] = None,
692
719
  data: Optional[ChannelInput] = None,
693
720
  members: Optional[PaginationParams] = None,
694
721
  messages: Optional[MessagePaginationParams] = None,
@@ -702,6 +729,7 @@ class ChatRestClient(BaseClient):
702
729
  hide_for_creator=hide_for_creator,
703
730
  state=state,
704
731
  thread_unread_counts=thread_unread_counts,
732
+ member_custom_include=member_custom_include,
705
733
  data=data,
706
734
  members=members,
707
735
  messages=messages,
@@ -1093,17 +1121,21 @@ class ChatRestClient(BaseClient):
1093
1121
  channels: List[ChannelExport],
1094
1122
  clear_deleted_message_text: Optional[bool] = None,
1095
1123
  export_users: Optional[bool] = None,
1124
+ format: Optional[str] = None,
1096
1125
  include_soft_deleted_channels: Optional[bool] = None,
1097
1126
  include_truncated_messages: Optional[bool] = None,
1098
1127
  version: Optional[str] = None,
1128
+ include_fields: Optional[List[str]] = None,
1099
1129
  ) -> StreamResponse[ExportChannelsResponse]:
1100
1130
  json = ExportChannelsRequest(
1101
1131
  channels=channels,
1102
1132
  clear_deleted_message_text=clear_deleted_message_text,
1103
1133
  export_users=export_users,
1134
+ format=format,
1104
1135
  include_soft_deleted_channels=include_soft_deleted_channels,
1105
1136
  include_truncated_messages=include_truncated_messages,
1106
1137
  version=version,
1138
+ include_fields=include_fields,
1107
1139
  ).to_dict()
1108
1140
  return self.post(
1109
1141
  "/api/v2/chat/export_channels", ExportChannelsResponse, json=json
@@ -1507,6 +1539,7 @@ class ChatRestClient(BaseClient):
1507
1539
  id_lt: Optional[str] = None,
1508
1540
  id_around: Optional[str] = None,
1509
1541
  sort: Optional[List[SortParamRequest]] = None,
1542
+ member_custom_include: Optional[List[str]] = None,
1510
1543
  ) -> StreamResponse[GetRepliesResponse]:
1511
1544
  query_params = build_query_param(
1512
1545
  **{
@@ -1517,6 +1550,7 @@ class ChatRestClient(BaseClient):
1517
1550
  "id_lt": id_lt,
1518
1551
  "id_around": id_around,
1519
1552
  "sort": sort,
1553
+ "member_custom_include": member_custom_include,
1520
1554
  }
1521
1555
  )
1522
1556
  path_params = {
@@ -44,6 +44,7 @@ class CommonRestClient(AsyncBaseClient):
44
44
  before_message_send_hook_url: Optional[str] = None,
45
45
  cdn_expiration_seconds: Optional[int] = None,
46
46
  channel_hide_members_only: Optional[bool] = None,
47
+ chat_primary_use_case: Optional[str] = None,
47
48
  custom_action_handler_url: Optional[str] = None,
48
49
  disable_auth_checks: Optional[bool] = None,
49
50
  disable_permissions_checks: Optional[bool] = None,
@@ -55,6 +56,7 @@ class CommonRestClient(AsyncBaseClient):
55
56
  guest_user_creation_disabled: Optional[bool] = None,
56
57
  image_moderation_enabled: Optional[bool] = None,
57
58
  max_aggregated_activities_length: Optional[int] = None,
59
+ member_custom_on_messages_enabled: Optional[bool] = None,
58
60
  migrate_permissions_to_v2: Optional[bool] = None,
59
61
  moderation_analytics_enabled: Optional[bool] = None,
60
62
  moderation_enabled: Optional[bool] = None,
@@ -104,6 +106,7 @@ class CommonRestClient(AsyncBaseClient):
104
106
  before_message_send_hook_url=before_message_send_hook_url,
105
107
  cdn_expiration_seconds=cdn_expiration_seconds,
106
108
  channel_hide_members_only=channel_hide_members_only,
109
+ chat_primary_use_case=chat_primary_use_case,
107
110
  custom_action_handler_url=custom_action_handler_url,
108
111
  disable_auth_checks=disable_auth_checks,
109
112
  disable_permissions_checks=disable_permissions_checks,
@@ -115,6 +118,7 @@ class CommonRestClient(AsyncBaseClient):
115
118
  guest_user_creation_disabled=guest_user_creation_disabled,
116
119
  image_moderation_enabled=image_moderation_enabled,
117
120
  max_aggregated_activities_length=max_aggregated_activities_length,
121
+ member_custom_on_messages_enabled=member_custom_on_messages_enabled,
118
122
  migrate_permissions_to_v2=migrate_permissions_to_v2,
119
123
  moderation_analytics_enabled=moderation_analytics_enabled,
120
124
  moderation_enabled=moderation_enabled,
@@ -159,9 +163,14 @@ class CommonRestClient(AsyncBaseClient):
159
163
 
160
164
  @telemetry.operation_name("getstream.api.common.list_block_lists")
161
165
  async def list_block_lists(
162
- self, team: Optional[str] = None
166
+ self,
167
+ team: Optional[str] = None,
168
+ cursor: Optional[str] = None,
169
+ limit: Optional[int] = None,
163
170
  ) -> StreamResponse[ListBlockListResponse]:
164
- query_params = build_query_param(**{"team": team})
171
+ query_params = build_query_param(
172
+ **{"team": team, "cursor": cursor, "limit": limit}
173
+ )
165
174
  return await self.get(
166
175
  "/api/v2/blocklists", ListBlockListResponse, query_params=query_params
167
176
  )
@@ -177,6 +186,8 @@ class CommonRestClient(AsyncBaseClient):
177
186
  is_substring_matching_enabled: Optional[bool] = None,
178
187
  team: Optional[str] = None,
179
188
  type: Optional[str] = None,
189
+ user_id: Optional[str] = None,
190
+ user: Optional[UserRequest] = None,
180
191
  ) -> StreamResponse[CreateBlockListResponse]:
181
192
  json = CreateBlockListRequest(
182
193
  name=name,
@@ -187,14 +198,31 @@ class CommonRestClient(AsyncBaseClient):
187
198
  is_substring_matching_enabled=is_substring_matching_enabled,
188
199
  team=team,
189
200
  type=type,
201
+ user_id=user_id,
202
+ user=user,
190
203
  ).to_dict()
191
204
  return await self.post("/api/v2/blocklists", CreateBlockListResponse, json=json)
192
205
 
206
+ @telemetry.operation_name("getstream.api.common.import_block_list")
207
+ async def import_block_list(
208
+ self, id: str, items: List[str], chunk_size: Optional[int] = None
209
+ ) -> StreamResponse[ImportBlockListResponse]:
210
+ path_params = {
211
+ "id": id,
212
+ }
213
+ json = ImportBlockListRequest(items=items, chunk_size=chunk_size).to_dict()
214
+ return await self.post(
215
+ "/api/v2/blocklists/{id}/import",
216
+ ImportBlockListResponse,
217
+ path_params=path_params,
218
+ json=json,
219
+ )
220
+
193
221
  @telemetry.operation_name("getstream.api.common.delete_block_list")
194
222
  async def delete_block_list(
195
- self, name: str, team: Optional[str] = None
223
+ self, name: str, team: Optional[str] = None, user_id: Optional[str] = None
196
224
  ) -> StreamResponse[Response]:
197
- query_params = build_query_param(**{"team": team})
225
+ query_params = build_query_param(**{"team": team, "user_id": user_id})
198
226
  path_params = {
199
227
  "name": name,
200
228
  }
@@ -229,7 +257,9 @@ class CommonRestClient(AsyncBaseClient):
229
257
  is_plural_check_enabled: Optional[bool] = None,
230
258
  is_substring_matching_enabled: Optional[bool] = None,
231
259
  team: Optional[str] = None,
260
+ user_id: Optional[str] = None,
232
261
  words: Optional[List[str]] = None,
262
+ user: Optional[UserRequest] = None,
233
263
  ) -> StreamResponse[UpdateBlockListResponse]:
234
264
  path_params = {
235
265
  "name": name,
@@ -240,7 +270,9 @@ class CommonRestClient(AsyncBaseClient):
240
270
  is_plural_check_enabled=is_plural_check_enabled,
241
271
  is_substring_matching_enabled=is_substring_matching_enabled,
242
272
  team=team,
273
+ user_id=user_id,
243
274
  words=words,
275
+ user=user,
244
276
  ).to_dict()
245
277
  return await self.put(
246
278
  "/api/v2/blocklists/{name}",
@@ -502,9 +534,12 @@ class CommonRestClient(AsyncBaseClient):
502
534
 
503
535
  @telemetry.operation_name("getstream.api.common.upsert_importer_external_storage")
504
536
  async def upsert_importer_external_storage(
505
- self, type: str, aws_s3: Optional[UpsertExternalStorageAWSS3Request] = None
537
+ self,
538
+ type: str,
539
+ aws_s3: Optional[UpsertExternalStorageAWSS3Request] = None,
540
+ gcs: Optional[UpsertExternalStorageGCSRequest] = None,
506
541
  ) -> StreamResponse[UpsertExternalStorageResponse]:
507
- json = UpsertExternalStorageRequest(type=type, aws_s3=aws_s3).to_dict()
542
+ json = UpsertExternalStorageRequest(type=type, aws_s3=aws_s3, gcs=gcs).to_dict()
508
543
  return await self.put(
509
544
  "/api/v2/imports/v2/external-storage",
510
545
  UpsertExternalStorageResponse,
@@ -789,9 +824,8 @@ class CommonRestClient(AsyncBaseClient):
789
824
 
790
825
  @telemetry.operation_name("getstream.api.common.get_poll_option")
791
826
  async def get_poll_option(
792
- self, poll_id: str, option_id: str, user_id: Optional[str] = None
827
+ self, poll_id: str, option_id: str
793
828
  ) -> StreamResponse[PollOptionResponse]:
794
- query_params = build_query_param(**{"user_id": user_id})
795
829
  path_params = {
796
830
  "poll_id": poll_id,
797
831
  "option_id": option_id,
@@ -799,7 +833,6 @@ class CommonRestClient(AsyncBaseClient):
799
833
  return await self.get(
800
834
  "/api/v2/polls/{poll_id}/options/{option_id}",
801
835
  PollOptionResponse,
802
- query_params=query_params,
803
836
  path_params=path_params,
804
837
  )
805
838
 
@@ -908,6 +941,7 @@ class CommonRestClient(AsyncBaseClient):
908
941
  android: Optional[bool] = None,
909
942
  ios: Optional[bool] = None,
910
943
  web: Optional[bool] = None,
944
+ unity: Optional[bool] = None,
911
945
  endpoints: Optional[str] = None,
912
946
  ) -> StreamResponse[GetRateLimitsResponse]:
913
947
  query_params = build_query_param(
@@ -916,6 +950,7 @@ class CommonRestClient(AsyncBaseClient):
916
950
  "android": android,
917
951
  "ios": ios,
918
952
  "web": web,
953
+ "unity": unity,
919
954
  "endpoints": endpoints,
920
955
  }
921
956
  )